Podcast
Questions and Answers
What does the term "implementation" refer to in the context of software engineering?
What does the term "implementation" refer to in the context of software engineering?
What is the key difference between the "design" and "implementation" phases of software development?
What is the key difference between the "design" and "implementation" phases of software development?
What does the text suggest about the relationship between design and implementation in software engineering?
What does the text suggest about the relationship between design and implementation in software engineering?
When is it more beneficial to purchase a commercially available system (COTS) instead of developing one from scratch?
When is it more beneficial to purchase a commercially available system (COTS) instead of developing one from scratch?
Signup and view all the answers
What is the primary focus of the implementation phase, according to the text?
What is the primary focus of the implementation phase, according to the text?
Signup and view all the answers
What is the primary objective of testing during the implementation phase?
What is the primary objective of testing during the implementation phase?
Signup and view all the answers
What is the main reason for embracing software reuse in development?
What is the main reason for embracing software reuse in development?
Signup and view all the answers
What is a significant challenge in software reuse related to costs?
What is a significant challenge in software reuse related to costs?
Signup and view all the answers
What does the term "reuse" refer to in the context of implementation issues?
What does the term "reuse" refer to in the context of implementation issues?
Signup and view all the answers
Why is it generally advantageous to reuse existing software components?
Why is it generally advantageous to reuse existing software components?
Signup and view all the answers
What level of reuse involves utilizing knowledge of successful abstractions in the design phase?
What level of reuse involves utilizing knowledge of successful abstractions in the design phase?
Signup and view all the answers
What kind of software reuse involves directly utilizing objects from a library?
What kind of software reuse involves directly utilizing objects from a library?
Signup and view all the answers
What level of reuse involves reusing entire application systems?
What level of reuse involves reusing entire application systems?
Signup and view all the answers
What is the primary purpose of configuration management in software development?
What is the primary purpose of configuration management in software development?
Signup and view all the answers
What is the main difference between host and target systems in software development?
What is the main difference between host and target systems in software development?
Signup and view all the answers
What is the main challenge associated with reusing software components from different sources?
What is the main challenge associated with reusing software components from different sources?
Signup and view all the answers
Which of the following is NOT a core activity of configuration management?
Which of the following is NOT a core activity of configuration management?
Signup and view all the answers
What is the primary purpose of version management in configuration management?
What is the primary purpose of version management in configuration management?
Signup and view all the answers
What is the main benefit of using a configuration management system for system integration?
What is the main benefit of using a configuration management system for system integration?
Signup and view all the answers
How does problem tracking support the development process?
How does problem tracking support the development process?
Signup and view all the answers
What is the difference between a development platform and an execution platform?
What is the difference between a development platform and an execution platform?
Signup and view all the answers
Which of the following is NOT considered a part of a development platform?
Which of the following is NOT considered a part of a development platform?
Signup and view all the answers
What is the primary benefit of an integrated development environment (IDE)?
What is the primary benefit of an integrated development environment (IDE)?
Signup and view all the answers
Which of the following tools is NOT typically included in a development platform?
Which of the following tools is NOT typically included in a development platform?
Signup and view all the answers
What is an Integrated Development Environment (IDE)?
What is an Integrated Development Environment (IDE)?
Signup and view all the answers
Which of the following is NOT a common characteristic of open source development?
Which of the following is NOT a common characteristic of open source development?
Signup and view all the answers
What is the core principle behind open source development?
What is the core principle behind open source development?
Signup and view all the answers
Which of the following is NOT an example of an open source product?
Which of the following is NOT an example of an open source product?
Signup and view all the answers
What is the primary reason for deploying components on multiple platforms in a high-availability system?
What is the primary reason for deploying components on multiple platforms in a high-availability system?
Signup and view all the answers
Why is it beneficial to deploy components with high communication traffic on the same platform or physically close platforms?
Why is it beneficial to deploy components with high communication traffic on the same platform or physically close platforms?
Signup and view all the answers
Which of the following factors can necessitate deploying a component on a specific hardware architecture?
Which of the following factors can necessitate deploying a component on a specific hardware architecture?
Signup and view all the answers
Which of the following is NOT a valid consideration when deciding whether to use open source components in a project?
Which of the following is NOT a valid consideration when deciding whether to use open source components in a project?
Signup and view all the answers
What is a fundamental principle of open-source development?
What is a fundamental principle of open-source development?
Signup and view all the answers
What does a 'reciprocal' open source license like the GNU General Public License (GPL) require?
What does a 'reciprocal' open source license like the GNU General Public License (GPL) require?
Signup and view all the answers
What is the main advantage of using a non-reciprocal open source license like the BSD license?
What is the main advantage of using a non-reciprocal open source license like the BSD license?
Signup and view all the answers
Identify the main differences between the GPL and LGPL licenses.
Identify the main differences between the GPL and LGPL licenses.
Signup and view all the answers
What is a key aspect of license management in open-source development?
What is a key aspect of license management in open-source development?
Signup and view all the answers
Which of these practices is recommended to foster a positive open-source environment?
Which of these practices is recommended to foster a positive open-source environment?
Signup and view all the answers
What is the main rationale for companies shifting towards an open-source approach for development?
What is the main rationale for companies shifting towards an open-source approach for development?
Signup and view all the answers
Which of the following best describes the relationship between software design and implementation in the open-source development context?
Which of the following best describes the relationship between software design and implementation in the open-source development context?
Signup and view all the answers
Flashcards
Implementation
Implementation
The process of realizing the design as a program.
Software Design
Software Design
A creative activity identifying components and their relationships based on requirements.
COTS
COTS
Commercial off-the-shelf systems that can be adapted for user needs.
SDLC Phases
SDLC Phases
Signup and view all the flashcards
Class Implementation
Class Implementation
Signup and view all the flashcards
Reuse in Development
Reuse in Development
Signup and view all the flashcards
Integration
Integration
Signup and view all the flashcards
Implementation Issues
Implementation Issues
Signup and view all the flashcards
Configuration Management
Configuration Management
Signup and view all the flashcards
Host-Target Development
Host-Target Development
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
Abstraction Level
Signup and view all the flashcards
Object Level
Object Level
Signup and view all the flashcards
Component Level
Component Level
Signup and view all the flashcards
Reuse Costs
Reuse Costs
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
Development Platform
Development Platform
Signup and view all the flashcards
Integrated Development Environment (IDE)
Integrated Development Environment (IDE)
Signup and view all the flashcards
Development Platform Tools
Development Platform Tools
Signup and view all the flashcards
IDE
IDE
Signup and view all the flashcards
Specific Language IDE
Specific Language IDE
Signup and view all the flashcards
Component Deployment
Component Deployment
Signup and view all the flashcards
High Availability Systems
High Availability Systems
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 Operating System
Linux Operating System
Signup and view all the flashcards
Open Source Issues
Open Source 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
Reciprocal License
Reciprocal License
Signup and view all the flashcards
Non-Reciprocal License
Non-Reciprocal License
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
Open Source Community Participation
Open Source Community Participation
Signup and view all the flashcards
Study Notes
Chapter 5 - Implementation
- Software design and implementation is the stage in the software engineering process where an executable software system is developed.
- Design and implementation activities are interwoven.
- Software design is a creative process identifying software components and their interrelationships based on customer requirements.
- Implementation is realizing the design as a program.
Topics Covered
- What is implementation
- Implementation Concept
- Implementation issues
- Open source development
Build or Buy
- Off-the-shelf systems (COTS) are adaptable and tailored to user requirements.
- Buying a pre-built system like medical records can be cheaper and faster than building one from scratch.
- The design process focuses on using existing system features to meet requirements when using COTS.
SDLC Phases
- Requirements
- Analysis
- Design
- Implementation
- Testing
Implementation Concept
- Implement each class according to the design document.
- Test each class to ensure expected behaviors are matched.
- The output should be correct given correct input.
- Timing requirements should be met.
- Classes are integrated to form the final system.
Implementation Issues
- Reuse:
- Modern software relies on reusing existing components or systems.
- Existing code should be maximally utilized during development.
- Configuration management:
- Track the many versions of components throughout the development process.
- Maintain a configuration management system.
- Host-target development:
- Production software is developed on one computer (host), but executes on another (target).
Reuse
- From the 1960s to the 1990s, software development frequently involved building from scratch.
- Reuse of functions and objects in programming libraries was limited.
- Increased costs and time pressures made this approach less viable, especially for commercial and internet-based systems.
- Reusing existing software has become a prominent approach in business and scientific software development.
Reuse Levels
- Abstraction:
- Reusing knowledge of successful design patterns, but not directly reusing software.
- Object:
- Reusing objects from libraries without writing the code yourself.
- Component:
- Reusing collections of objects and object classes for application systems.
- System:
- Reusing entire application systems.
Software Reuse
- Diagram depicting relationship of reuse to abstraction, object, component and system levels
Reuse Costs
- Costs of evaluating potential reusable software
- Costs of acquiring reusable software (Can be high for large COTS systems).
- Costs of adapting and configuring the reusable software to meet new system requirements.
- Costs of integrating various reusable components with each other and new developed code.
Configuration Management
- Configuration management is the process of managing changing software systems.
- The objective is to aid system integration by providing controlled access to code and documents for developers.
- Developers can track changes, and compile and link components to create the system.
- Version management, system integration, and problem tracking are crucial activities.
- Diagram to illustrate configuration management tools involved in different stages.
Host-Target Development
- Most software development is characterized by developing on one computer (host) and running on another (target).
- Platforms are more than just hardware; they include operating systems, additional supporting applications, and development environments.
- Development and execution platforms often have differing software setups and architectures.
- A diagram illustrating the roles of Host and Target in software development.
Development Platform tools
- Integrated development environments (IDE) for code creation, editing, compilation, and debugging.
- Graphical tools for creating diagrams such as UML models
- Testing tools supporting automated testing of new software versions.
- Project support tools for organizing development projects.
Integrated Development Environments (IDEs)
- IDEs bring together software development tools with a standardized framework and interface.
- Some IDEs are tailored to specific languages like Java.
- General-purpose IDEs may include specific language-support tools.
Component/System Deployment Factors
- Deployment platforms must support components' hardware and software requirements.
- High Availability systems may require deploying components across multiple platforms for redundancy and failover capabilities.
- Components with high intercommunication may be deployed on the same platform or on platforms physically close to each other to minimize delays.
Open Source Development
- Open-source development is where the software system’s source code is released publicly and developers volunteer to participate in the project.
- It has its roots in the FSF (Free Software Foundation)
- This open access paradigm encourages users to examine, modify, and contribute to the software.
- Open-source software facilitates larger, more diverse developer communities involved in ongoing improvement.
- Example Open Source Systems: Java, Apache web server, mySQL database management system, Linux.
Open Source Issues
- Considering whether a product should make use of open-source components.
- Evaluating if an open-source approach is suitable for product development.
Open Source Business
- Growing number of commercial product companies adopt open-source approaches
- Business models focus on providing support rather than primarily on selling the software itself.
- Enlisting community engagement is perceived as enabling cheaper, faster development of software.
Open Source Licensing
- A key aspect is the open availability of the source code for use, modification, and distribution, while acknowledging rights and stipulations in legal and developer-defined licensing protocols (e.g., GPL, LGPL, BSD).
- Different licenses may be applicable for licensing terms.
License Models
- GNU General Public License (GPL): A reciprocal license (use of open source software necessitates making that software open source).
- GNU Lesser General Public License (LGPL): A variant that allows linking to open-source code without publishing the developer's own component code.
- Berkeley Software Distribution (BSD) License: A non-reciprocal license, permitting incorporation into proprietary software without requiring the code itself to be open-source.
License Management
- Systems for tracking open source components being employed.
- Awareness of various licensing types and a thorough understanding of how to apply licensing before using a component.
- Being aware of evolution paths related to components
- Implementing systems to educate developers about open-source concepts
- Incorporating auditing mechanisms
- Participation in open source community activities.
Key Points
- Software design and implementation are interconnected.
- The depth of design details relates to the chosen approach (plan-driven or agile) and the characteristic of the system.
- Reuse of existing software, as components, services or complete systems should be considered when developing new software.
- Configuration management is managing changes in an ever-evolving software system; crucial for collaborating teams.
- Development/execution (host/target) environment difference for most software.
- Open-source development involves making the program’s source code accessible for community contribution.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
This quiz covers Chapter 5 of Software Engineering, focusing on the implementation phase of the Software Development Life Cycle (SDLC). It discusses software design, the importance of implementation, and considerations for building or buying systems. Test your knowledge on key concepts, issues, and COTS in software implementation.