Podcast
Questions and Answers
What is the primary focus of implementation issues discussed?
What is the primary focus of implementation issues discussed?
Why did the approach of developing software from scratch become less viable?
Why did the approach of developing software from scratch become less viable?
At which level do you directly reuse objects from a library in software development?
At which level do you directly reuse objects from a library in software development?
What is meant by 'host-target development' in software implementation?
What is meant by 'host-target development' in software implementation?
Signup and view all the answers
Which of the following levels of reuse involves reusing entire application systems?
Which of the following levels of reuse involves reusing entire application systems?
Signup and view all the answers
What did the substantial use of programming language libraries enable in software development from the 1960s to 1990s?
What did the substantial use of programming language libraries enable in software development from the 1960s to 1990s?
Signup and view all the answers
What necessitated a shift towards reuse in software development?
What necessitated a shift towards reuse in software development?
Signup and view all the answers
Which aspect is NOT generally considered a part of configuration management?
Which aspect is NOT generally considered a part of configuration management?
Signup and view all the answers
What are the costs associated with software reuse primarily concerned with?
What are the costs associated with software reuse primarily concerned with?
Signup and view all the answers
What is the primary goal of configuration management?
What is the primary goal of configuration management?
Signup and view all the answers
Which of the following activities is NOT a part of configuration management?
Which of the following activities is NOT a part of configuration management?
Signup and view all the answers
What does version management ensure in a software development environment?
What does version management ensure in a software development environment?
Signup and view all the answers
Which statement best describes the concept of host-target development?
Which statement best describes the concept of host-target development?
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
Which of the following best summarizes the costs of adapting reusable software?
Which of the following best summarizes the costs of adapting reusable software?
Signup and view all the answers
Which of the following is an important aspect of system integration?
Which of the following is an important aspect of system integration?
Signup and view all the answers
What is included in a development platform?
What is included in a development platform?
Signup and view all the answers
Which of the following is not typically a part of development platform tools?
Which of the following is not typically a part of development platform tools?
Signup and view all the answers
What is the primary function of a language debugging system in the context of development platforms?
What is the primary function of a language debugging system in the context of development platforms?
Signup and view all the answers
What characteristic defines an integrated development environment (IDE)?
What characteristic defines an integrated development environment (IDE)?
Signup and view all the answers
Which deployment factor is necessary if a component is designed for specific hardware?
Which deployment factor is necessary if a component is designed for specific hardware?
Signup and view all the answers
What might be a rationale for deploying components on more than one platform?
What might be a rationale for deploying components on more than one platform?
Signup and view all the answers
When is it beneficial to deploy components on the same platform?
When is it beneficial to deploy components on the same platform?
Signup and view all the answers
What is a common characteristic of IDEs developed for programming languages?
What is a common characteristic of IDEs developed for programming languages?
Signup and view all the answers
What is the primary principle of open source development?
What is the primary principle of open source development?
Signup and view all the answers
What is an example of a widely known open source product?
What is an example of a widely known open source product?
Signup and view all the answers
What is a common business model for companies utilizing open source development?
What is a common business model for companies utilizing open source development?
Signup and view all the answers
Which organization advocates that source code should not be proprietary?
Which organization advocates that source code should not be proprietary?
Signup and view all the answers
Why do companies believe involving the open source community is beneficial?
Why do companies believe involving the open source community is beneficial?
Signup and view all the answers
In open source licensing, what is true about source code ownership?
In open source licensing, what is true about source code ownership?
Signup and view all the answers
Which of the following technologies is NOT listed as a significant open source product?
Which of the following technologies is NOT listed as a significant open source product?
Signup and view all the answers
What issue must be considered when developing a software product?
What issue must be considered when developing a software product?
Signup and view all the answers
What is a characteristic of the GNU General Public License (GPL)?
What is a characteristic of the GNU General Public License (GPL)?
Signup and view all the answers
What distinguishes the GNU Lesser General Public License (LGPL) from the GPL?
What distinguishes the GNU Lesser General Public License (LGPL) from the GPL?
Signup and view all the answers
Which license type allows modifications without the need to republish changes or modifications?
Which license type allows modifications without the need to republish changes or modifications?
Signup and view all the answers
What is a recommended practice for managing open source software components?
What is a recommended practice for managing open source software components?
Signup and view all the answers
How do open source developers differ in their views on the use of their software?
How do open source developers differ in their views on the use of their software?
Signup and view all the answers
What should you be aware of before using an open-source component?
What should you be aware of before using an open-source component?
Signup and view all the answers
What aspect of software design process is emphasized in an object-oriented design?
What aspect of software design process is emphasized in an object-oriented design?
Signup and view all the answers
Which of the following describes a main principle of license management for open source components?
Which of the following describes a main principle of license management for open source components?
Signup and view all the answers
Study Notes
Implementation Issues
-
Focus is on implementation issues beyond programming, a crucial but often overlooked aspect.
-
Reuse: Modern software is often constructed by reusing existing components or systems. Maximize use of existing code for development.
-
Configuration Management: Throughout development, track various versions of each software component using config management systems.
-
Host-Target Development: Production software often executes on a different computer than the development environment. Develop on a "host" and execute on a "target" machine.
Reuse
- From the 1960s to the 1990s, most software was developed from scratch using high-level programming languages.
- Reuse mainly involved functions and objects in programming language libraries..
- Cost and schedule pressures made the purely "from-scratch" approach increasingly impractical, especially for commercial and web-based systems.
- An approach for development relying on existing software emerged and is now common for business and scientific software.
Reuse Levels
-
Abstraction Level: Reuse knowledge of successful abstractions in design, not the software directly.
-
Object Level: Reuse objects directly from libraries instead of writing code yourself.
-
Component Level: Reuse components which are collections of objects and object classes within application systems.
-
System Level: Reuse entire application systems.
Software Reuse
-
System (Application Systems (COTS)): Top level of software reuse.
-
Abstraction (Architectural and Design Patterns): Lowest level of software reuse.
-
Component (Component Frameworks): Mid level of software reuse.
-
Object (Programming Language Libraries): Mid level of software reuse.
Reuse Costs
-
Time spent locating and assessing reusable software.
-
Costs of purchasing the reusable software especially for off-the-shelf systems.
-
Costs of adapting and configuring the reusable software to match project needs.
-
Costs of integrating reusable software components from different sources with new codebase.
Configuration Management
- Configuration management (CM) is the general term for managing changes in a software system.
- CM ensures all project code and documentation is accessible in a controlled method.
- CM tracks changes and manages compiling and linking of components to create a system.
- Refer to Chapter 25 for more detail.
Configuration Management Activities
-
Version management: Tracking different versions of software components. Version management systems are used to coordinate development by developers.
-
System integration: Defining component versions to build a system. Used to build the system automatically by compiling and linking components.
-
Problem tracking: Reporting and managing bugs and other issues. Developers can see who is working on issues and when they are fixed.
Configuration Management Tool Interaction
- Diagrams illustrate the interaction between various configuration management tools.
Host-Target Development
-
Most software is developed on one machine (the host) and runs on a different machine (the target).
-
This means more than just hardware, it deals with the development platform (e.g., IDE, compilers, testing tools) and the execution platform (e.g., libraries, related systems, databases.)
-
The development platform often has different software and architectures from the execution platform.
Development Platform Tools
-
Integrated compiler & syntax-directed editor: Creating, editing, and compiling code.
-
Language debugging system: Debugging support.
-
Graphical editing tools (e.g., for UML models): Visual modeling tools.
-
Testing tools (e.g., JUnit): Automating test execution.
-
Project support tools: Organizing the codebase for different project phases.
Integrated Development Environments (IDEs)
-
IDEs group development tools to create a coherent environment for software development.
-
IDEs provide common framework and user interface for various development tasks (e.g., coding, compiling, testing).
-
Software tools often created to support a specific language, e.g. Java.
Component/System Deployment Factors
-
Components designed for specific architectures need to be deployed onto platforms supporting them.
-
High-availability systems may need deployment on multiple platforms to ensure continued operation during failure.
-
Frequent communication between components is better served on the same or nearby platforms to reduce communication latency.
Open Source Development
-
Open source development involves publishing the source code of a software system and inviting volunteers to contribute to the development process.
-
The Free Software Foundation (FSF) advocates for free availability of source code and not proprietary software.
-
Open source software allows the use of the internet to recruit large populations of volunteer developers.
Open Source Systems
-
Linux is the most prominent open-source operating system, used as a server and increasingly as a desktop environment.
-
Other prominent open-source products include Java, Apache web server, and MySQL database management system.
Open Source Issues
-
Should existing products use open source components?
-
Should an open source approach be applied to development ?
Open Source Business
-
More companies adopt open-source approaches for software development.
-
Businesses focus on selling support for open-source products rather than the products themselves.
-
Involvement of open-source communities is viewed as enhancing product development in terms of speed, cost, and user base.
Open Source Licensing
-
Open source development embraces accessible source code but does impose legal restrictions (e.g., license requirements).
-
Developers retain ownership of their code.
-
Open source licenses can restrict usage and define how the code can be used legally.
-
Some favor open-source components for developed systems while others allow proprietary systems.
License Models
-
GNU General Public License (GPL): Reciprocal license; if you use GPL software, you must make the software open source.
-
GNU Lesser General Public License (LGPL): Variant of GPL; permite linking to open source code without having publish the source of these components.
-
Berkeley Standard Distribution (BSD) License: Non-reciprocal; you are not obliged to re-publish any changes to the open source code, you can use it in proprietary systems.
License Management
- Maintain information about open-source components.
- Be aware of open-source license types and terms.
- Understand component licensing before use.
- Be aware of evolution pathways for components.
- Educate development team about open-source issues.
- Auditing systems should be in place.
- Active participation in open-source communities.
Key Points (Software Design and Implementation)
- Software design and implementation intertwine directly, and details depend on specific system type (plan-driven vs agile)
- The object-oriented design process involves steps for designing system architecture, identifying objects in systems, describing designs with models, and documenting component interfaces.
- Different models (static, dynamic) aid in object-oriented design process.
- Component interfaces need precise definition for use by other objects (e.g., UML interfaces).
Key Points (General)
- Reuse consideration is important during software development (components, services, or complete systems).
- Configuration management is essential for maintaining consistency in evolving systems, especially when multiple developers are collaborating.
- Most software development now follows the host-target model (development on one computer, execution on another).
- Open-source development involves making source code public, encouraging broader participation and improvements.
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 related to software reuse and configuration management practices in software development. It addresses various levels of reuse, the impact of libraries, and essential configuration management activities. Test your knowledge on these vital topics in the software engineering field.