Software Reuse and Configuration Management
40 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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?

  • 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?

  • Object level (correct)
  • Abstraction level
  • Component level
  • System level
  • What is meant by 'host-target development' in software implementation?

    <p>Developing software on a separate environment from where it will run (B)</p> Signup and view all the answers

    Which of the following levels of reuse involves reusing entire application systems?

    <p>System level (C)</p> Signup and view all the answers

    What did the substantial use of programming language libraries enable in software development from the 1960s to 1990s?

    <p>Improved efficiency through limited reuse (C)</p> Signup and view all the answers

    What necessitated a shift towards reuse in software development?

    <p>The growing complexity of software systems (B)</p> Signup and view all the answers

    Which aspect is NOT generally considered a part of configuration management?

    <p>Managing coding standards and best practices (A)</p> Signup and view all the answers

    What are the costs associated with software reuse primarily concerned with?

    <p>Time spent assessing reusable software (D)</p> Signup and view all the answers

    What is the primary goal of configuration management?

    <p>To support the system integration process (B)</p> Signup and view all the answers

    Which of the following activities is NOT a part of configuration management?

    <p>User experience design (D)</p> Signup and view all the answers

    What does version management ensure in a software development environment?

    <p>Tracking of different versions of software components (A)</p> Signup and view all the answers

    Which statement best describes the concept of host-target development?

    <p>Software is developed on one machine while it runs on another. (C)</p> Signup and view all the answers

    What is the role of problem tracking in configuration management?

    <p>To report bugs and track their resolution (A)</p> Signup and view all the answers

    Which of the following best summarizes the costs of adapting reusable software?

    <p>Significant costs associated with tailoring it to specific requirements (B)</p> Signup and view all the answers

    Which of the following is an important aspect of system integration?

    <p>Defining component versions for system builds (C)</p> Signup and view all the answers

    What is included in a development platform?

    <p>The installed operating system and other supporting software (D)</p> Signup and view all the answers

    Which of the following is not typically a part of development platform tools?

    <p>Operating system management (A)</p> Signup and view all the answers

    What is the primary function of a language debugging system in the context of development platforms?

    <p>To identify and fix errors in the code (B)</p> Signup and view all the answers

    What characteristic defines an integrated development environment (IDE)?

    <p>It supports various aspects of software development within a common framework (B)</p> Signup and view all the answers

    Which deployment factor is necessary if a component is designed for specific hardware?

    <p>Deployment on a matching hardware and software platform (D)</p> Signup and view all the answers

    What might be a rationale for deploying components on more than one platform?

    <p>To provide high availability in case of platform failure (A)</p> Signup and view all the answers

    When is it beneficial to deploy components on the same platform?

    <p>When there is a high level of communications traffic between components (D)</p> Signup and view all the answers

    What is a common characteristic of IDEs developed for programming languages?

    <p>They may be specialized or based on general-purpose IDEs with specific tools (C)</p> Signup and view all the answers

    What is the primary principle of open source development?

    <p>Source code must be freely available for examination and modification. (B)</p> Signup and view all the answers

    What is an example of a widely known open source product?

    <p>Linux operating system (C)</p> Signup and view all the answers

    What is a common business model for companies utilizing open source development?

    <p>Providing support and services for the open source product. (C)</p> Signup and view all the answers

    Which organization advocates that source code should not be proprietary?

    <p>Free Software Foundation (D)</p> Signup and view all the answers

    Why do companies believe involving the open source community is beneficial?

    <p>To develop software more cheaply and quickly. (A)</p> Signup and view all the answers

    In open source licensing, what is true about source code ownership?

    <p>Developers retain ownership of the code they create. (B)</p> Signup and view all the answers

    Which of the following technologies is NOT listed as a significant open source product?

    <p>Python (A)</p> Signup and view all the answers

    What issue must be considered when developing a software product?

    <p>Whether to use open source components or an open source development approach. (A)</p> Signup and view all the answers

    What is a characteristic of the GNU General Public License (GPL)?

    <p>It is a reciprocal license requiring software created with it to remain open source. (C)</p> Signup and view all the answers

    What distinguishes the GNU Lesser General Public License (LGPL) from the GPL?

    <p>It allows linking to open source code without disclosing the component's source. (A)</p> Signup and view all the answers

    Which license type allows modifications without the need to republish changes or modifications?

    <p>Berkeley Standard Distribution (BSD) License (C)</p> Signup and view all the answers

    What is a recommended practice for managing open source software components?

    <p>Educate staff about the implications of open source usage. (C)</p> Signup and view all the answers

    How do open source developers differ in their views on the use of their software?

    <p>Some developers allow proprietary usage while others do not. (C)</p> Signup and view all the answers

    What should you be aware of before using an open-source component?

    <p>The licensing terms that govern its use. (B)</p> Signup and view all the answers

    What aspect of software design process is emphasized in an object-oriented design?

    <p>Detailing the system architecture and identifying objects. (D)</p> Signup and view all the answers

    Which of the following describes a main principle of license management for open source components?

    <p>Maintain accurate records of software usage. (D)</p> 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.

    Quiz Team

    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.

    More Like This

    Use Quizgecko on...
    Browser
    Browser