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?
Which of the following is NOT a characteristic of open source development?
Which of the following is NOT a characteristic of open source development?
What is the primary goal of configuration management in software development?
What is the primary goal of configuration management in software development?
What is the primary goal of the Free Software Foundation?
What is the primary goal of the Free Software Foundation?
Signup and view all the answers
What is a key function of version management in configuration management?
What is a key function of version management in configuration management?
Signup and view all the answers
Which of these is an example of an open source operating system?
Which of these is an example of an open source operating system?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
Which of these systems is NOT considered an open source product?
Which of these systems is NOT considered an open source product?
Signup and view all the answers
What is the role of problem tracking in configuration management?
What is the role of problem tracking in configuration management?
Signup and view all the answers
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?
Signup and view all the answers
Which of these is NOT a cost associated with software reuse?
Which of these is NOT a cost associated with software reuse?
Signup and view all the answers
What is a key element of an IDE?
What is a key element of an IDE?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
What does the acronym IDE stand for?
What does the acronym IDE stand for?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
Which among these is NOT a factor to consider during component deployment?
Which among these is NOT a factor to consider during component deployment?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
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)?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
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?
Signup and view all the answers
What is a key characteristic of open source development?
What is a key characteristic of open source development?
Signup and view all the answers
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)?
Signup and view all the answers
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?
Signup and view all the answers
What is a crucial aspect of open source license management?
What is a crucial aspect of open source license management?
Signup and view all the answers
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?
Signup and view all the answers
What is the primary focus of implementation, besides programming?
What is the primary focus of implementation, besides programming?
Signup and view all the answers
What is the main purpose of testing individual classes during implementation?
What is the main purpose of testing individual classes during implementation?
Signup and view all the answers
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?
Signup and view all the answers
Which of the following is NOT a key concept related to implementation?
Which of the following is NOT a key concept related to implementation?
Signup and view all the answers
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?
Signup and view all the answers
What is the key difference between 'software design' and 'implementation'?
What is the key difference between 'software design' and 'implementation'?
Signup and view all the answers
How does the concept of code reuse impact software development?
How does the concept of code reuse impact software development?
Signup and view all the answers
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?
Signup and view all the answers
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.
Related Documents
Description
This quiz covers key concepts in software development, particularly focusing on configuration management and open source development. Test your understanding of topics such as version management, problem tracking, and the characteristics of open source operating systems.