Podcast
Questions and Answers
What is the main advantage of deploying components on the same platform or physically close platforms?
What is the main advantage of deploying components on the same platform or physically close platforms?
- Improved hardware compatibility for components.
- Enhanced security by isolating components.
- Reduced communication delays between components. (correct)
- Simplified software installation processes.
Which of the following is NOT a characteristic of open source development?
Which of the following is NOT a characteristic of open source development?
- Development is typically driven by a single organization. (correct)
- Volunteers contribute to the software's development.
- The focus is on collaborative improvement and innovation.
- Source code is freely available for modification and distribution.
What is the primary goal of configuration management in software development?
What is the primary goal of configuration management in software development?
- To ensure that all developers have access to the latest version of the project code.
- To track and manage the changes made to the project code.
- To provide a centralized platform for bug reporting and problem resolution.
- To streamline the creation and deployment of software systems. (correct)
What is the primary goal of the Free Software Foundation?
What is the primary goal of the Free Software Foundation?
What is a key function of version management in configuration management?
What is a key function of version management in configuration management?
Which of these is an example of an open source operating system?
Which of these is an example of an open source operating system?
Which configuration management activity focuses on defining the specific versions of components used in a system build?
Which configuration management activity focuses on defining the specific versions of components used in a system build?
In the context of software development, what is the primary purpose of configuration management?
In the context of software development, what is the primary purpose of configuration management?
Which of these systems is NOT considered an open source product?
Which of these systems is NOT considered an open source product?
What is the role of problem tracking in configuration management?
What is the role of problem tracking in configuration management?
What is the definition of a 'development platform' in the context of host-target development?
What is the definition of a 'development platform' in the context of host-target development?
Which of these is NOT a cost associated with software reuse?
Which of these is NOT a cost associated with software reuse?
What is a key element of an IDE?
What is a key element of an IDE?
What is a key difference between a development platform and an execution platform in host-target development?
What is a key difference between a development platform and an execution platform in host-target development?
What is the main reason for the emergence of software reuse as a dominant development approach?
What is the main reason for the emergence of software reuse as a dominant development approach?
What does the acronym IDE stand for?
What does the acronym IDE stand for?
Which level of software reuse involves directly incorporating objects from a library into your software?
Which level of software reuse involves directly incorporating objects from a library into your software?
Which of the following scenarios would benefit from deploying components on separate platforms?
Which of the following scenarios would benefit from deploying components on separate platforms?
Which of the following is NOT a typical tool found within a development platform?
Which of the following is NOT a typical tool found within a development platform?
What is the main difference between a host system and a target system in software development?
What is the main difference between a host system and a target system in software development?
What is the purpose of a testing tool like Junit within a development platform?
What is the purpose of a testing tool like Junit within a development platform?
Which among these is NOT a factor to consider during component deployment?
Which among these is NOT a factor to consider during component deployment?
What is a common concern when considering the use of open source components in a project?
What is a common concern when considering the use of open source components in a project?
What is the most significant advantage of using software reuse within a development project?
What is the most significant advantage of using software reuse within a development project?
What is the main advantage of grouping software development tools into an integrated development environment (IDE)?
What is the main advantage of grouping software development tools into an integrated development environment (IDE)?
Which of the following is NOT an example of how configuration management is used in software development?
Which of the following is NOT an example of how configuration management is used in software development?
Which of the following is NOT considered a key benefit of configuration management in software development?
Which of the following is NOT considered a key benefit of configuration management in software development?
If you are using reusable components from different sources, what is a potential challenge you might face?
If you are using reusable components from different sources, what is a potential challenge you might face?
In the past, why was development from scratch the predominant approach to software development?
In the past, why was development from scratch the predominant approach to software development?
Which level of software reuse would involve using a pre-built accounting software package for your company?
Which level of software reuse would involve using a pre-built accounting software package for your company?
What is a key characteristic of open source development?
What is a key characteristic of open source development?
How does the GNU Lesser General Public License (LGPL) differ from the GNU General Public License (GPL)?
How does the GNU Lesser General Public License (LGPL) differ from the GNU General Public License (GPL)?
Which of these is NOT a benefit of using an open source approach for product development?
Which of these is NOT a benefit of using an open source approach for product development?
What is a crucial aspect of open source license management?
What is a crucial aspect of open source license management?
What is a key takeaway from the information provided on open source software design and implementation?
What is a key takeaway from the information provided on open source software design and implementation?
What is the primary focus of implementation, besides programming?
What is the primary focus of implementation, besides programming?
What is the main purpose of testing individual classes during implementation?
What is the main purpose of testing individual classes during implementation?
In what situation would a 'build or buy' approach for software development be most suitable?
In what situation would a 'build or buy' approach for software development be most suitable?
Which of the following is NOT a key concept related to implementation?
Which of the following is NOT a key concept related to implementation?
How does the design process change when using a 'build or buy' approach?
How does the design process change when using a 'build or buy' approach?
What is the key difference between 'software design' and 'implementation'?
What is the key difference between 'software design' and 'implementation'?
How does the concept of code reuse impact software development?
How does the concept of code reuse impact software development?
Which of the following is a key benefit of implementing individual classes before integrating them?
Which of the following is a key benefit of implementing individual classes before integrating them?
Flashcards
Software Design
Software Design
The creative process of identifying software components based on requirements.
Implementation
Implementation
The process of turning a design into an executable program.
COTS
COTS
Commercial Off-The-Shelf software systems that can be customized.
SDLC Phases
SDLC Phases
Signup and view all the flashcards
Class Implementation
Class Implementation
Signup and view all the flashcards
Integration
Integration
Signup and view all the flashcards
Reuse in Software
Reuse in Software
Signup and view all the flashcards
Implementation Issues
Implementation Issues
Signup and view all the flashcards
Open Source Business Model
Open Source Business Model
Signup and view all the flashcards
Open Source Licensing
Open Source Licensing
Signup and view all the flashcards
GNU General Public License (GPL)
GNU General Public License (GPL)
Signup and view all the flashcards
GNU Lesser General Public License (LGPL)
GNU Lesser General Public License (LGPL)
Signup and view all the flashcards
License Management
License Management
Signup and view all the flashcards
IDE
IDE
Signup and view all the flashcards
Language-Specific IDE
Language-Specific IDE
Signup and view all the flashcards
Deployment Factors
Deployment Factors
Signup and view all the flashcards
High Availability Systems
High Availability Systems
Signup and view all the flashcards
Communication Traffic
Communication Traffic
Signup and view all the flashcards
Open Source Development
Open Source Development
Signup and view all the flashcards
Free Software Foundation
Free Software Foundation
Signup and view all the flashcards
Linux
Linux
Signup and view all the flashcards
Important Open Source Products
Important Open Source Products
Signup and view all the flashcards
Considerations in Open Source
Considerations in Open Source
Signup and view all the flashcards
Configuration Management
Configuration Management
Signup and view all the flashcards
Version Management
Version Management
Signup and view all the flashcards
System Integration
System Integration
Signup and view all the flashcards
Problem Tracking
Problem Tracking
Signup and view all the flashcards
Host-Target Development
Host-Target Development
Signup and view all the flashcards
Development Platform
Development Platform
Signup and view all the flashcards
Execution Platform
Execution Platform
Signup and view all the flashcards
Integrated Development Environment (IDE)
Integrated Development Environment (IDE)
Signup and view all the flashcards
Language Debugging System
Language Debugging System
Signup and view all the flashcards
Testing Tools
Testing Tools
Signup and view all the flashcards
Software reuse
Software reuse
Signup and view all the flashcards
Reuse levels
Reuse levels
Signup and view all the flashcards
Abstraction level of reuse
Abstraction level of reuse
Signup and view all the flashcards
Object level of reuse
Object level of reuse
Signup and view all the flashcards
Component level of reuse
Component level of reuse
Signup and view all the flashcards
System level of reuse
System level of reuse
Signup and view all the flashcards
Reuse costs
Reuse costs
Signup and view all the flashcards
Evaluating reusable software
Evaluating reusable software
Signup and view all the flashcards
Study Notes
Chapter 5 - Implementation
- Chapter 5 covers implementation in software development.
- The presenter is Dr. Noorayisahbe Binti Mohd Yaacoub.
- The topics covered include understanding implementation, its concept, issues, and open-source development.
Topics Covered
- What is implementation?
- Implementation Concept
- Implementation Issues
- Open Source Development
Design and Implementation
- Software design and implementation is a stage in software engineering where an executable system is developed.
- Design and implementation activities are interconnected.
- Software design involves identifying software components and their relationships based on customer requirements.
- Implementation involves realizing the design as a program.
Build or Buy
- In many domains, off-the-shelf systems (COTS) can be adapted to user needs.
- Purchasing pre-built systems for medical records, for example, can be faster and cheaper than starting from scratch.
- Using configuration features of purchased systems is part of the design process when implementing these systems.
SDLC Phases
- The software development life cycle (SDLC) includes stages like Requirements, Analysis, Design, Implementation, and Testing.
- Implementation is a crucial step in this cycle.
Implementation Concept
- Each class is implemented according to the design document.
- Each class is tested to ensure expected behavior (correct output for correct input, meeting timing requirements).
- Classes are integrated to produce the final system.
Implementation Issues
- Focuses beyond programming:
- Reuse: Reusing existing components or systems in software development is common practice.
- Configuration management: Keeping track of different versions of software components throughout development.
- Host-target development: Software is often developed on one machine (host) but executed on another (target).
Reuse
- From the 1960s to the 1990s, new software was typically developed from scratch.
- Reuse of functions and objects in libraries was limited.
- Costs and time constraints made a reusable approach increasingly essential.
- Reusing existing software is now central in business and science.
Reuse Levels
- Abstraction level: Reusing knowledge of successful design patterns.
- Object level: Reusing objects from libraries.
- Component level: Reusing collections of objects/object classes in application systems.
- System level: Reusing complete application systems (e.g., COTS).
Software Reuse
- Diagram showing different levels of software reuse (abstraction, object, component, system).
- Systems (COTS)
- Components
- Object
- Programming language libraries
- Abstraction (architectural and design patterns)
Reuse Costs
- Cost of searching/evaluating reusable software.
- Cost of purchasing reusable software (higher for large systems).
- Adapting/configuring reusable components/systems to project requirements.
- Integrating reusable elements with each other and newly developed code.
Configuration Management
- The process of managing evolving software systems, particularly when development is collaborative.
- The goal is to support the integration process (access to code/documents, tracking changes, component compilation/linking) through a system.
- Crucial for managing multiple versions and developer contributions.
Configuration Management Activities
- Version management: Tracking different versions/configurations of components.
- Coordinating development by multiple programmers through version control/management systems.
- System integration: Defining versions/configurations for complete systems and automatically building these systems from component versions.
- Problem tracking: Reporting bugs, identifying who to contact, tracking fixes.
Configuration Management Tool Interaction
- Diagram showing interaction between various components (e.g., change proposals, change management, system versions, release management).
Host-Target Development
- Most software development is host-target.
- Development platform (host) for design/creation, and target platform (e.g. different machine) for execution.
- The software development platform includes operating systems, supporting software (e.g., databases), IDEs, compilers, and testing tools.
Development Platform Tools
- Integrated compiler and syntax-directed editors for code creation/editing/compilation.
- Code debugging support.
- Tools for diagramming (e.g., UMLs).
- Testing tools (e.g., JUnit).
- Tools for managing various projects.
Integrated Development Environments (IDEs)
- IDEs (Integrated Development Environments) group several development tools into a common system.
- They often provide a common framework or user interface supporting multiple facets of software development.
- IDEs can be designed for a specific language (e.g., Java) or have specific language support within a more generic IDE.
Component/System Deployment Factors
- Components need platforms with required hardware/software support.
- High-availability systems often need components on multiple platforms.
- Communications traffic between components favors deploying these components on the same or similar platforms.
Open Source Development
- Approach using published source code; volunteers contribute.
- Rooted in the Free Software Foundation concept.
- Source code is typically not proprietary but available for examination/modification.
- Open source software facilitates wider community involvement through internet-based recruitment of developers/users.
Open Source Systems
- Linux is a well-known open source operating system used broadly as a desktop/server OS.
- Java, Apache web server, and MySQL are other noteworthy open-source products.
Open Source Issues
- Should the development being done use open source components?
- Should an open-source approach be used for the system?
Open Source Business
- Companies increasingly use an open-source approach.
- Business models are now often based on selling support, not just the software itself.
- These companies believe community involvement leads to quicker, cheaper development and greater user participation.
Open Source Licensing
- Open-source requires freely available source code.
- Developers own the code and control (legally) how it's reused.
- Developers can include restrictions in legally binding licenses.
- Open source components can potentially imply open-source implementation for an entire new system; others might just allow use without further imposition. (Evolve from the system they are initially used in.)
License Models
- GPL (General Public License): Reciprocal license–code must be open-source if licensed under the GPL.
- LGPL (Lesser General Public License): Developer might not have to release source code for components linked to open source code.
- BSD (Berkeley Software Distribution) License): Non-reciprocal license (developers aren't obliged to re-open source code for any changes made.)
License Management
- Keep an information system for tracking/managing open-source components.
- Understand different types of licenses.
- Be aware of component evolution.
- Educate people regarding open-source.
- Implement auditing systems.
- Participate in open-source community.
Key Points
- Software design and implementation are interlinked.
- Detail in design depends on whether plan-driven or agile approach used.
- Reusing existing software (components, services, full systems) is often wise.
- Configuration management (essential for collaborative development) is necessary when making adjustments to a system.
- Host-target development (using IDE on a host machine, transferring software to a target execution machine) is the usual setup for software production.
- Open-source development (making source code public) allows broader participation from the community for suggestion/improvement.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.