Software Implementation Issues
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 goal of open source development?

  • To minimize the use of volunteers in development
  • To enforce restrictions on code modification
  • To create proprietary software products
  • To publish source code and invite community participation (correct)
  • What is included in a platform besides hardware?

  • Operating system and supporting software (correct)
  • Training materials and documentation
  • Hardware and user manuals
  • Only the operating system
  • What is one way open source projects extend their reach in development?

  • By using the Internet to recruit volunteer developers (correct)
  • Through the use of traditional marketing strategies
  • By limiting development to paid professionals
  • By prioritizing profit generation from software sales
  • Which tool is NOT typically found in a development platform environment?

    <p>User experience research tool</p> Signup and view all the answers

    Which of the following products is considered a best-known example of open source software?

    <p>Linux Operating System</p> Signup and view all the answers

    What is becoming increasingly popular among product companies regarding software development?

    <p>Adopting an open source approach</p> Signup and view all the answers

    What is the main purpose of an Integrated Development Environment (IDE)?

    <p>To support various aspects of software development</p> Signup and view all the answers

    How do companies typically generate revenue with open source products?

    <p>Through selling support services for the product</p> Signup and view all the answers

    High availability systems may require components to be deployed on how many platforms?

    <p>Two or more platforms</p> Signup and view all the answers

    What fundamental principle distinguishes open-source development from unrestricted code sharing?

    <p>The developer retains ownership of the code</p> Signup and view all the answers

    What might be a reason for deploying components on the same platform?

    <p>To increase communication efficiency</p> Signup and view all the answers

    Which of the following statements is true regarding development platforms?

    <p>They may have different architectures compared to execution platforms.</p> Signup and view all the answers

    Which of the following is NOT a common concern regarding open source development?

    <p>The marketing strategies for open source products</p> Signup and view all the answers

    Which component would NOT be considered part of an IDE?

    <p>A hardware testing framework</p> Signup and view all the answers

    What does the Free Software Foundation advocate for in terms of source code?

    <p>Source code should be available for modification</p> Signup and view all the answers

    In what scenario is it most beneficial to deploy components on platforms that are physically close to each other?

    <p>When handling a high level of communications traffic</p> Signup and view all the answers

    What is the primary purpose of configuration management in software development?

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

    Which of the following is NOT a cost associated with software reuse?

    <p>Time spent developing new original software</p> Signup and view all the answers

    What does version management in configuration management primarily support?

    <p>Keeping track of different versions of software components</p> Signup and view all the answers

    In the context of configuration management, what does 'problem tracking' provide support for?

    <p>Reporting bugs and other problems</p> Signup and view all the answers

    Which statement best describes 'host-target development' in software?

    <p>Developing software on one machine while running it on another</p> Signup and view all the answers

    What is an essential activity of configuration management?

    <p>Version management of software components</p> Signup and view all the answers

    Which of the following best describes the costs associated with integrating reusable software elements?

    <p>Integration costs can be significant, especially when using components from different sources</p> Signup and view all the answers

    What is a major benefit of system integration in configuration management?

    <p>It ensures all developers can access project resources efficiently</p> Signup and view all the answers

    What is the primary requirement of the GNU General Public License (GPL)?

    <p>Any software developed using GPL components must also be open source.</p> Signup and view all the answers

    Which open source license allows you to link to open source code without publishing the source of your own components?

    <p>GNU Lesser General Public License (LGPL)</p> Signup and view all the answers

    Which of the following statements about BSD License is correct?

    <p>It allows inclusion in proprietary systems without publishing changes.</p> Signup and view all the answers

    What is one of the key management practices for handling open-source components?

    <p>Maintaining a system for information about the components used.</p> Signup and view all the answers

    What is the relationship between software design and implementation?

    <p>They are inter-leaved activities with varying detail levels.</p> Signup and view all the answers

    In object-oriented design, which activity is essential for defining the structure of the system?

    <p>Documenting the component interfaces.</p> Signup and view all the answers

    Which of the following best describes the purpose of having auditing systems in open-source software management?

    <p>To ensure compliance with licensing and track component usage.</p> Signup and view all the answers

    What influences the level of detail in the design phase of software development?

    <p>The type of system and development approach used.</p> Signup and view all the answers

    What is an essential aspect of modern software development mentioned?

    <p>Reusing existing components or systems</p> Signup and view all the answers

    What is the role of configuration management in software development?

    <p>To keep track of different versions of software components</p> Signup and view all the answers

    In host-target development, where does the production software usually execute?

    <p>On a separate target system computer</p> Signup and view all the answers

    What characterized software development from the 1960s to the 1990s?

    <p>Developing software entirely from scratch</p> Signup and view all the answers

    Which of the following best describes the object level of reuse?

    <p>Directly reusing objects from a library</p> Signup and view all the answers

    Which level of reuse involves utilizing collections of objects?

    <p>Component level</p> Signup and view all the answers

    What has driven the shift from scratch-based software development to reuse?

    <p>High costs and schedule pressures</p> Signup and view all the answers

    At which level of reuse do developers not directly reuse software but instead leverage successful abstractions?

    <p>Abstraction level</p> Signup and view all the answers

    Study Notes

    Implementation Issues

    • Focus is on implementation issues, not programming, which are often overlooked in programming texts.
    • Reuse: Modern software often reuses existing components or systems. Code reuse is important.
    • Configuration Management: Managing changes to software throughout development is crucial. Track different versions in a system.
    • Host-Target Development: Software development often occurs on one machine (the host) but runs on a separate machine (the target). This allows for separate development and execution environments

    Reuse

    • From the 1960s to the 1990s, most new software was developed from scratch utilizing high-level programming languages. Library functions and objects were also reused.
    • Costs and time constraints made this approach unsuitable for commercial and internet-based systems.
    • A new method emerged—reusing existing software for business and scientific applications.

    Reuse Levels

    • Abstraction: Reuse knowledge of successful abstractions to design software, not by directly reusing code.
    • Object: Reuse objects from a library, writing code directly.
    • Component: Reusing collections of objects and object classes in an application.
    • System: Reusing entire application systems.

    Software Reuse

    • A diagram illustrating the various types of software reuse.

    Reuse Costs

    • Time spent finding and evaluating reusable software.
    • Cost of purchasing reusable software. Which can be expensive for large, off-the-shelf systems.
    • Costs of adapting and configuring reusable software. Adapting to match project requirements.
    • Costs of integration if using different components. Integrating across various systems.

    Configuration Management

    • Configuration management is the general practice of managing a changing software system.
    • Aim is to enable developers to easily access project code, find changes, and compile/link components into systems.

    Configuration Management Activities

    • Version Management: Keeping track of different versions of components; Version control systems coordinate development among multiple developers.
    • System Integration: Developers define component versions for each version of a system for automated builds.
    • Problem Tracking: Managing bugs and issues across the development team. Tracking who is assigned to and when are these issues resolved.

    Configuration Management Tool Interaction

    • A diagram that shows the interaction between configuration management tools.

    Host-Target Development

    • Usually, software is developed on one machine (host) but runs on another (target).
    • Platforms are more than just hardware—they include operating systems and supporting software like databases or development environments.
    • Development and execution platforms often have different software installed (including different architectures).

    Development Platform Tools

    • Integrated compiler and an editor to create, edit, and compile software.
    • Debugging systems.
    • Graphical editing tools (like UML model tools).
    • Testing tools (like JUnit) that automate test runs.
    • Project support tools to organize code across various projects.

    Integrated Development Environments (IDEs)

    • Software development tools grouped into an IDE for various aspects of development.
    • Common framework and user interface.
    • Often tailored toward specific programming languages (like Java).

    Component/System Deployment Factors

    • Components often require specific hardware or software on a target machine to function properly.
    • High availability systems need replication of components across platforms for robustness.
    • Communication-intensive components should be on the same/nearby platforms to minimize latency.

    Open Source Development

    • An approach where source code for a software system is released and volunteers contribute to its development.
    • Roots in the Free Software Foundation (promoting non-proprietary source code).

    Open Source Systems

    • Linux—widely used as a server and desktop environment.
    • Java; Apache Web Server; MySQL Database Management System.

    Open Source Issues

    • Whether to use open source components in a new project.
    • Whether to apply the open source development method to a software project.

    Open Source Business

    • Growing trend of product companies utilizing open source development.
    • Business models focus on selling support, not on direct product sales.
    • Advantages gained involve quicker and cheaper development, plus a larger user base.

    Open Source Licensing

    • Source code availability is crucial but does not mean unrestricted use of the code.
    • Developers own the code, and they can include legal restrictions and conditions for use in the license.
    • Some believe that new systems should match open source components; others allow proprietary systems to use their open source code.

    License Models

    • GNU General Public License (GPL): Reciprocal license meaning if using GPL software, you must also make your software open source.
    • GNU Lesser General Public License (LGPL): Variant of GPL, where linked components don't need to be open source.
    • Berkeley Standard Distribution (BSD) License: Non-reciprocal, allowing code inclusion in proprietary systems without re-publishing.

    License Management

    • Systems for tracking open-source components.
    • Understanding licensing of components before use.
    • Awareness of component evolution paths.
    • Educate staff about open source.
    • Implement auditing systems.
    • Participation in the open-source community.

    Key Points

    • Software design and implementation are intertwined.
    • The level of detail in the design depends on the approach (plan-driven or agile) and type of system.
    • Object-oriented design involves system architecture, object identification, design models, and interface description.
    • Several models (static, dynamic, etc.) are used to describe the design process.
    • Precise interface definition is key for interoperability among different objects/components.
    • Reusability of existing software should always be considered.
    • Configuration management is important for managing changes in evolving systems.
    • Host-target development is a common practice.
    • Utilizing open-source development makes the software public allowing modification and improvement possibilities from many people.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    This quiz focuses on the critical aspects of software implementation, including code reuse and configuration management. It highlights the importance of managing software changes and the distinction between host and target development environments. Test your understanding of these often-overlooked topics in software engineering.

    More Like This

    Use Quizgecko on...
    Browser
    Browser