Software Engineering Chapter 5 - Implementation
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 does the term "implementation" refer to in the context of software engineering?

  • The process of creating a detailed plan and blueprint for the software system.
  • The process of transforming the software design into an executable system. (correct)
  • The process of defining the functionalities and features of the software system.
  • The process of evaluating the performance and functionality of the software system.
  • What is the key difference between the "design" and "implementation" phases of software development?

  • Design is a theoretical process, while implementation is a practical and hands-on process.
  • Design is about creating the blueprint, while implementation is about building the system based on that blueprint. (correct)
  • Design focuses on functional requirements, while implementation focuses on technical details.
  • Design involves creating a visual representation of the system, while implementation involves writing code.
  • What does the text suggest about the relationship between design and implementation in software engineering?

  • Design and implementation often overlap and are interleaved. (correct)
  • Implementation is a minor aspect that follows design directly.
  • These phases are distinct and independent of each other.
  • Design is completed before implementation begins.
  • When is it more beneficial to purchase a commercially available system (COTS) instead of developing one from scratch?

    <p>When the development resources are limited and time is a critical factor. (A)</p> Signup and view all the answers

    What is the primary focus of the implementation phase, according to the text?

    <p>Writing efficient and clear code. (B)</p> Signup and view all the answers

    What is the primary objective of testing during the implementation phase?

    <p>To ensure each class matches its expected behavior. (A)</p> Signup and view all the answers

    What is the main reason for embracing software reuse in development?

    <p>It allows for faster development cycles by leveraging existing code. (D)</p> Signup and view all the answers

    What is a significant challenge in software reuse related to costs?

    <p>The cost of adapting and configuring reusable software components to meet specific requirements is a major concern. (A)</p> Signup and view all the answers

    What does the term "reuse" refer to in the context of implementation issues?

    <p>All of the above. (D)</p> Signup and view all the answers

    Why is it generally advantageous to reuse existing software components?

    <p>All of the above. (D)</p> Signup and view all the answers

    What level of reuse involves utilizing knowledge of successful abstractions in the design phase?

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

    What kind of software reuse involves directly utilizing objects from a library?

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

    What level of reuse involves reusing entire application systems?

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

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

    <p>To track and control the changes made to the software system during development. (D)</p> Signup and view all the answers

    What is the main difference between host and target systems in software development?

    <p>The host system is used for development, while the target system is used for deploying the software. (B)</p> Signup and view all the answers

    What is the main challenge associated with reusing software components from different sources?

    <p>These components may have different programming languages, leading to compatibility issues. (D)</p> Signup and view all the answers

    Which of the following is NOT a core activity of configuration management?

    <p>User interface design (A)</p> Signup and view all the answers

    What is the primary purpose of version management in configuration management?

    <p>To track and manage changes made to software components (B)</p> Signup and view all the answers

    What is the main benefit of using a configuration management system for system integration?

    <p>It enables developers to build a system by using specific versions of components, ensuring consistency and reproducibility. (C)</p> Signup and view all the answers

    How does problem tracking support the development process?

    <p>It provides a centralized platform for developers to report, track, and resolve issues (A)</p> Signup and view all the answers

    What is the difference between a development platform and an execution platform?

    <p>A development platform includes tools for software development, while an execution platform runs the developed software (A)</p> Signup and view all the answers

    Which of the following is NOT considered a part of a development platform?

    <p>User interface design tools (A)</p> Signup and view all the answers

    What is the primary benefit of an integrated development environment (IDE)?

    <p>It provides a single interface for all development tasks, improving efficiency (C)</p> Signup and view all the answers

    Which of the following tools is NOT typically included in a development platform?

    <p>A web server (B)</p> Signup and view all the answers

    What is an Integrated Development Environment (IDE)?

    <p>A software tool supporting multiple aspects of software development within a common framework (B)</p> Signup and view all the answers

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

    <p>Exclusive rights owned by a single company (C)</p> Signup and view all the answers

    What is the core principle behind open source development?

    <p>Allowing free access and collaborative development of software (D)</p> Signup and view all the answers

    Which of the following is NOT an example of an open source product?

    <p>Microsoft Windows operating system (D)</p> Signup and view all the answers

    What is the primary reason for deploying components on multiple platforms in a high-availability system?

    <p>To provide redundancy in case of system failure (C)</p> 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?

    <p>To reduce communication delays (C)</p> Signup and view all the answers

    Which of the following factors can necessitate deploying a component on a specific hardware architecture?

    <p>All of the above (D)</p> 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?

    <p>The ease of integrating the proprietary component into the project (A)</p> Signup and view all the answers

    What is a fundamental principle of open-source development?

    <p>Source code should be freely available. (B)</p> Signup and view all the answers

    What does a 'reciprocal' open source license like the GNU General Public License (GPL) require?

    <p>Using open-source software under the GPL requires the developer to publish the source code of any software created using it. (D)</p> Signup and view all the answers

    What is the main advantage of using a non-reciprocal open source license like the BSD license?

    <p>It allows developers to use open-source code in proprietary systems. (D)</p> Signup and view all the answers

    Identify the main differences between the GPL and LGPL licenses.

    <p>The LGPL allows developers to write and link components to open-source code without publishing the source code of these components, whereas the GPL does not. (A)</p> Signup and view all the answers

    What is a key aspect of license management in open-source development?

    <p>Establishing a system to track open-source components downloaded and used. (A)</p> Signup and view all the answers

    Which of these practices is recommended to foster a positive open-source environment?

    <p>Participating in the open-source community. (C)</p> Signup and view all the answers

    What is the main rationale for companies shifting towards an open-source approach for development?

    <p>To develop software more cheaply and quickly, while also establishing a user community. (B)</p> 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?

    <p>Software design and implementation are inter-leaved activities. (C)</p> Signup and view all the answers

    Flashcards

    Implementation

    The process of realizing the design as a program.

    Software Design

    A creative activity identifying components and their relationships based on requirements.

    COTS

    Commercial off-the-shelf systems that can be adapted for user needs.

    SDLC Phases

    Stages in software development lifecycle: Requirements, Analysis, Design, Implementation, Testing.

    Signup and view all the flashcards

    Class Implementation

    Each class is implemented as per the design document and tested for behavior.

    Signup and view all the flashcards

    Reuse in Development

    Making use of existing components when constructing new software.

    Signup and view all the flashcards

    Integration

    Combining classes to produce the final system after individual testing.

    Signup and view all the flashcards

    Implementation Issues

    Challenges that arise during software implementation beyond programming tasks.

    Signup and view all the flashcards

    Configuration Management

    The process of managing changes in a software system.

    Signup and view all the flashcards

    Host-Target Development

    Developing software on one computer (host) and running it on another (target).

    Signup and view all the flashcards

    Software Reuse

    Using existing software components instead of developing from scratch to save time and costs.

    Signup and view all the flashcards

    Reuse Levels

    Levels at which software can be reused, including abstraction, object, component, and system levels.

    Signup and view all the flashcards

    Abstraction Level

    A level of reuse where knowledge of successful designs informs new software creation.

    Signup and view all the flashcards

    Object Level

    Directly reusing specific objects from libraries instead of writing code.

    Signup and view all the flashcards

    Component Level

    Reusing collections of objects and classes to build applications.

    Signup and view all the flashcards

    Reuse Costs

    Costs incurred in finding, assessing, adapting, and integrating reusable software components.

    Signup and view all the flashcards

    Version Management

    A system that tracks different versions of software components.

    Signup and view all the flashcards

    System Integration

    Support for defining and building versions of a system from its components.

    Signup and view all the flashcards

    Problem Tracking

    A system that allows users to report bugs and track fixes by developers.

    Signup and view all the flashcards

    Development Platform

    The environment including hardware and software where software is developed.

    Signup and view all the flashcards

    Integrated Development Environment (IDE)

    A collection of software tools that facilitates software development.

    Signup and view all the flashcards

    Development Platform Tools

    Tools such as compilers, debuggers, and testing tools used during development.

    Signup and view all the flashcards

    IDE

    Integrated Development Environment; software tools for coding.

    Signup and view all the flashcards

    Specific Language IDE

    IDE designed for a specific programming language like Java.

    Signup and view all the flashcards

    Component Deployment

    Placing software components on required hardware/software platforms.

    Signup and view all the flashcards

    High Availability Systems

    Systems designed to operate continuously without failure.

    Signup and view all the flashcards

    Open Source Development

    Development approach where source code is publicly shared for collaboration.

    Signup and view all the flashcards

    Free Software Foundation

    Organization advocating that source code should be free to use and modify.

    Signup and view all the flashcards

    Linux Operating System

    Popular open source OS used as servers and desktops.

    Signup and view all the flashcards

    Open Source Issues

    Considerations regarding using open source components in development.

    Signup and view all the flashcards

    Open Source Business Model

    A model focusing on selling support rather than software.

    Signup and view all the flashcards

    Open Source Licensing

    Legal agreements that define how open source code can be used.

    Signup and view all the flashcards

    Reciprocal License

    License requiring derived software to also be open source.

    Signup and view all the flashcards

    Non-Reciprocal License

    License allowing modifications without enforcing open access.

    Signup and view all the flashcards

    GNU General Public License (GPL)

    A license that mandates open sourcing of derivative works.

    Signup and view all the flashcards

    GNU Lesser General Public License (LGPL)

    A variant of GPL allowing closed source linkages.

    Signup and view all the flashcards

    License Management

    System for tracking and managing open source licenses used.

    Signup and view all the flashcards

    Open Source Community Participation

    Engagement with the community to enhance software development.

    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.

    Quiz Team

    Related Documents

    Chapter 5 –Implementation PDF

    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.

    More Like This

    Use Quizgecko on...
    Browser
    Browser