Podcast
Questions and Answers
What is the primary focus of implementation issues discussed?
What is the primary focus of implementation issues discussed?
- Overcoming hardware limitations during development
- Selecting appropriate programming languages
- Other implementation aspects beyond programming (correct)
- Programming techniques and coding practices
Why did the approach of developing software from scratch become less viable?
Why did the approach of developing software from scratch become less viable?
- Emergence of new programming languages
- Cost and schedule pressure in commercial environments (correct)
- Decline in software complexity
- Increased availability of hardware resources
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?
- Object level (correct)
- Abstraction level
- Component level
- System level
What is meant by 'host-target development' in software implementation?
What is meant by 'host-target development' in software implementation?
Which of the following levels of reuse involves reusing entire application systems?
Which of the following levels of reuse involves reusing entire application systems?
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?
What necessitated a shift towards reuse in software development?
What necessitated a shift towards reuse in software development?
Which aspect is NOT generally considered a part of configuration management?
Which aspect is NOT generally considered a part of configuration management?
What are the costs associated with software reuse primarily concerned with?
What are the costs associated with software reuse primarily concerned with?
What is the primary goal of configuration management?
What is the primary goal of configuration management?
Which of the following activities is NOT a part of configuration management?
Which of the following activities is NOT a part of configuration management?
What does version management ensure in a software development environment?
What does version management ensure in a software development environment?
Which statement best describes the concept of host-target development?
Which statement best describes the concept of host-target development?
What is the role of problem tracking in configuration management?
What is the role of problem tracking in configuration management?
Which of the following best summarizes the costs of adapting reusable software?
Which of the following best summarizes the costs of adapting reusable software?
Which of the following is an important aspect of system integration?
Which of the following is an important aspect of system integration?
What is included in a development platform?
What is included in a development platform?
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?
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?
What characteristic defines an integrated development environment (IDE)?
What characteristic defines an integrated development environment (IDE)?
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?
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?
When is it beneficial to deploy components on the same platform?
When is it beneficial to deploy components on the same platform?
What is a common characteristic of IDEs developed for programming languages?
What is a common characteristic of IDEs developed for programming languages?
What is the primary principle of open source development?
What is the primary principle of open source development?
What is an example of a widely known open source product?
What is an example of a widely known open source product?
What is a common business model for companies utilizing open source development?
What is a common business model for companies utilizing open source development?
Which organization advocates that source code should not be proprietary?
Which organization advocates that source code should not be proprietary?
Why do companies believe involving the open source community is beneficial?
Why do companies believe involving the open source community is beneficial?
In open source licensing, what is true about source code ownership?
In open source licensing, what is true about source code ownership?
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?
What issue must be considered when developing a software product?
What issue must be considered when developing a software product?
What is a characteristic of the GNU General Public License (GPL)?
What is a characteristic of the GNU General Public License (GPL)?
What distinguishes the GNU Lesser General Public License (LGPL) from the GPL?
What distinguishes the GNU Lesser General Public License (LGPL) from the GPL?
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?
What is a recommended practice for managing open source software components?
What is a recommended practice for managing open source software components?
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?
What should you be aware of before using an open-source component?
What should you be aware of before using an open-source component?
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?
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?
Flashcards
Software Reuse
Software Reuse
Using existing code or components when developing new software.
Configuration Management
Configuration Management
Managing all different versions of software components during development.
Host-Target Development
Host-Target Development
Developing software on one computer (the host) and running it on a different computer (the target).
Reuse
Reuse
Signup and view all the flashcards
Abstraction Level Reuse
Abstraction Level Reuse
Signup and view all the flashcards
Object Level Reuse
Object Level Reuse
Signup and view all the flashcards
Component Level Reuse
Component Level Reuse
Signup and view all the flashcards
System Level Reuse
System Level Reuse
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
Configuration Management Tools
Configuration Management Tools
Signup and view all the flashcards
What is included in a development platform?
What is included in a development platform?
Signup and view all the flashcards
What is an execution platform?
What is an execution platform?
Signup and view all the flashcards
How do development and execution platforms differ?
How do development and execution platforms differ?
Signup and view all the flashcards
What is an Integrated Development Environment (IDE)?
What is an Integrated Development Environment (IDE)?
Signup and view all the flashcards
How are IDEs specialized?
How are IDEs specialized?
Signup and view all the flashcards
Why is deploying components on multiple platforms important in some cases?
Why is deploying components on multiple platforms important in some cases?
Signup and view all the flashcards
Why is proximity important when deploying components?
Why is proximity important when deploying components?
Signup and view all the flashcards
What are the key factors to consider when deploying components?
What are the key factors to consider when deploying components?
Signup and view all the flashcards
Open Source Development
Open Source Development
Signup and view all the flashcards
Open Source Model
Open Source Model
Signup and view all the flashcards
Linux
Linux
Signup and view all the flashcards
Open Source Components
Open Source Components
Signup and view all the flashcards
Using Open Source Components
Using Open Source Components
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
Open Source Code Ownership
Open Source Code Ownership
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
Berkley Standard Distribution (BSD) License
Berkley Standard Distribution (BSD) License
Signup and view all the flashcards
License management
License management
Signup and view all the flashcards
Component Interface Documentation
Component Interface Documentation
Signup and view all the flashcards
Inter-leaved activities
Inter-leaved activities
Signup and view all the flashcards
Object-oriented design
Object-oriented design
Signup and view all the flashcards
Object models
Object models
Signup and view all the flashcards
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.