Software Development and Configuration Management

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 main advantage of deploying components on the same platform or physically close platforms?

  • Improved hardware compatibility for components.
  • Enhanced security by isolating components.
  • Reduced communication delays between components. (correct)
  • Simplified software installation processes.

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

  • Development is typically driven by a single organization. (correct)
  • Volunteers contribute to the software's development.
  • The focus is on collaborative improvement and innovation.
  • Source code is freely available for modification and distribution.

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

  • To ensure that all developers have access to the latest version of the project code.
  • To track and manage the changes made to the project code.
  • To provide a centralized platform for bug reporting and problem resolution.
  • To streamline the creation and deployment of software systems. (correct)

What is the primary goal of the Free Software Foundation?

<p>To ensure that software source code is readily available for users to examine and modify. (D)</p> Signup and view all the answers

What is a key function of version management in configuration management?

<p>Tracking the changes made by individual programmers. (D)</p> Signup and view all the answers

Which of these is an example of an open source operating system?

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

Which configuration management activity focuses on defining the specific versions of components used in a system build?

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

In the context of software development, what is the primary purpose of configuration management?

<p>To track and manage different versions of software components. (B)</p> Signup and view all the answers

Which of these systems is NOT considered an open source product?

<p>Microsoft Office (B)</p> Signup and view all the answers

What is the role of problem tracking in configuration management?

<p>Reporting and tracking bugs and other issues encountered in software development. (D)</p> Signup and view all the answers

What is the definition of a 'development platform' in the context of host-target development?

<p>The environment where developers create and test the software. (A)</p> Signup and view all the answers

Which of these is NOT a cost associated with software reuse?

<p>The cost of developing new features for the reusable software. (D)</p> Signup and view all the answers

What is a key element of an IDE?

<p>A set of tools to support testing and debugging. (B)</p> Signup and view all the answers

What is a key difference between a development platform and an execution platform in host-target development?

<p>The development platform often has different software configurations. (C)</p> Signup and view all the answers

What is the main reason for the emergence of software reuse as a dominant development approach?

<p>The desire to reduce development costs and time. (A)</p> Signup and view all the answers

What does the acronym IDE stand for?

<p>Integrated Development Environment (A)</p> Signup and view all the answers

Which level of software reuse involves directly incorporating objects from a library into your software?

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

Which of the following scenarios would benefit from deploying components on separate platforms?

<p>Components that require high availability and redundancy. (C)</p> Signup and view all the answers

Which of the following is NOT a typical tool found within a development platform?

<p>A database management system optimized for production environments (D)</p> Signup and view all the answers

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

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

What is the purpose of a testing tool like Junit within a development platform?

<p>To execute a set of predefined tests on a new version of a program (B)</p> Signup and view all the answers

Which among these is NOT a factor to consider during component deployment?

<p>Availability of open source libraries (A)</p> Signup and view all the answers

What is a common concern when considering the use of open source components in a project?

<p>Potential licensing restrictions. (A)</p> Signup and view all the answers

What is the most significant advantage of using software reuse within a development project?

<p>Reduced development costs and time. (C)</p> Signup and view all the answers

What is the main advantage of grouping software development tools into an integrated development environment (IDE)?

<p>Improved workflow and productivity by providing a unified development environment (C)</p> Signup and view all the answers

Which of the following is NOT an example of how configuration management is used in software development?

<p>Documenting the design and architecture of a software system. (C)</p> Signup and view all the answers

Which of the following is NOT considered a key benefit of configuration management in software development?

<p>Guaranteed software compatibility across different operating systems (B)</p> Signup and view all the answers

If you are using reusable components from different sources, what is a potential challenge you might face?

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

In the past, why was development from scratch the predominant approach to software development?

<p>There were limited programming languages and libraries available. (D)</p> Signup and view all the answers

Which level of software reuse would involve using a pre-built accounting software package for your company?

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

What is a key characteristic of open source development?

<p>Source code can be freely used and modified, but the original developer retains ownership. (A)</p> Signup and view all the answers

How does the GNU Lesser General Public License (LGPL) differ from the GNU General Public License (GPL)?

<p>The LGPL allows developers to create proprietary systems by linking only to open source components. (D)</p> Signup and view all the answers

Which of these is NOT a benefit of using an open source approach for product development?

<p>Enhanced software functionality due to exclusive access to code. (A)</p> Signup and view all the answers

What is a crucial aspect of open source license management?

<p>Understanding the licensing terms of each open source component before its use. (D)</p> Signup and view all the answers

What is a key takeaway from the information provided on open source software design and implementation?

<p>Design and implementation are interconnected and often occur concurrently. (D)</p> Signup and view all the answers

What is the primary focus of implementation, besides programming?

<p>Utilizing existing code. (D)</p> Signup and view all the answers

What is the main purpose of testing individual classes during implementation?

<p>To verify their performance against design specifications. (C)</p> Signup and view all the answers

In what situation would a 'build or buy' approach for software development be most suitable?

<p>A software system for which readily available solutions exist. (A)</p> Signup and view all the answers

Which of the following is NOT a key concept related to implementation?

<p>Requirement gathering. (C)</p> Signup and view all the answers

How does the design process change when using a 'build or buy' approach?

<p>It involves configuring existing software to meet requirements. (A)</p> Signup and view all the answers

What is the key difference between 'software design' and 'implementation'?

<p>Software design defines system components, while implementation builds them. (A)</p> Signup and view all the answers

How does the concept of code reuse impact software development?

<p>It reduces development time and risks by leveraging existing components. (A)</p> Signup and view all the answers

Which of the following is a key benefit of implementing individual classes before integrating them?

<p>It enables developers to easily identify and fix bugs in specific code sections. (A)</p> Signup and view all the answers

Flashcards

Software Design

The creative process of identifying software components based on requirements.

Implementation

The process of turning a design into an executable program.

COTS

Commercial Off-The-Shelf software systems that can be customized.

SDLC Phases

The stages in the Software Development Life Cycle: Requirements, Analysis, Design, Implementation, Testing.

Signup and view all the flashcards

Class Implementation

Coding each class based on the design document and testing it for expected behavior.

Signup and view all the flashcards

Integration

Combining individual classes into a functioning software system.

Signup and view all the flashcards

Reuse in Software

Using existing code or components to build new software efficiently.

Signup and view all the flashcards

Implementation Issues

Challenges in implementation beyond programming, like component reuse.

Signup and view all the flashcards

Open Source Business Model

A model where companies sell support instead of software products.

Signup and view all the flashcards

Open Source Licensing

Licenses that dictate how open source code can be used and shared.

Signup and view all the flashcards

GNU General Public License (GPL)

A reciprocal license requiring derived software to also be open source.

Signup and view all the flashcards

GNU Lesser General Public License (LGPL)

Allows linking to open source code without publishing source for components.

Signup and view all the flashcards

License Management

Keeping track of open source components and their licenses used in projects.

Signup and view all the flashcards

IDE

A set of tools for software development in a common framework.

Signup and view all the flashcards

Language-Specific IDE

An IDE developed for a particular programming language, like Java.

Signup and view all the flashcards

Deployment Factors

Conditions affecting where and how software components are deployed.

Signup and view all the flashcards

High Availability Systems

Systems designed to ensure continuous operation, often requiring multiple platforms.

Signup and view all the flashcards

Communication Traffic

The volume of data sent between components, influencing deployment decisions.

Signup and view all the flashcards

Open Source Development

Software development approach where source code is publicly available for modification.

Signup and view all the flashcards

Free Software Foundation

An organization advocating for non-proprietary, freely available source code.

Signup and view all the flashcards

Linux

A widely used open-source operating system, popular for servers and desktops.

Signup and view all the flashcards

Important Open Source Products

Notable software like Java, Apache, and mySQL that are open-source.

Signup and view all the flashcards

Considerations in Open Source

Questions on using open source components or approaches in development.

Signup and view all the flashcards

Configuration Management

A process to manage project code and documents for system integration.

Signup and view all the flashcards

Version Management

Maintains and tracks different versions of software components.

Signup and view all the flashcards

System Integration

Supports developers in defining component versions for system creation.

Signup and view all the flashcards

Problem Tracking

Allows users to report bugs and track their resolution.

Signup and view all the flashcards

Host-Target Development

Developing software on one machine (host) while it runs on another (target).

Signup and view all the flashcards

Development Platform

The environment used for developing software, includes hardware and software.

Signup and view all the flashcards

Execution Platform

The environment where software is executed or runs.

Signup and view all the flashcards

Integrated Development Environment (IDE)

A grouping of software tools to aid in software development.

Signup and view all the flashcards

Language Debugging System

Tools used to identify and fix errors in code.

Signup and view all the flashcards

Testing Tools

Software that automatically runs tests on new program versions.

Signup and view all the flashcards

Software reuse

Using existing software components to save time and costs.

Signup and view all the flashcards

Reuse levels

Different levels at which software can be reused: abstraction, object, component, system.

Signup and view all the flashcards

Abstraction level of reuse

Reusing knowledge from successful designs rather than code itself.

Signup and view all the flashcards

Object level of reuse

Directly reuses objects from a library instead of writing them.

Signup and view all the flashcards

Component level of reuse

Reusing collections of objects and classes in applications.

Signup and view all the flashcards

System level of reuse

Reusing entire application systems as a solution.

Signup and view all the flashcards

Reuse costs

Expenses associated with finding, assessing, and integrating reusable software.

Signup and view all the flashcards

Evaluating reusable software

Assessing if existing software meets your needs before reuse.

Signup and view all the flashcards

Study Notes

Chapter 5 - Implementation

  • Chapter 5 covers implementation in software development.
  • The presenter is Dr. Noorayisahbe Binti Mohd Yaacoub.
  • The topics covered include understanding implementation, its concept, issues, and open-source development.

Topics Covered

  • What is implementation?
  • Implementation Concept
  • Implementation Issues
  • Open Source Development

Design and Implementation

  • Software design and implementation is a stage in software engineering where an executable system is developed.
  • Design and implementation activities are interconnected.
  • Software design involves identifying software components and their relationships based on customer requirements.
  • Implementation involves realizing the design as a program.

Build or Buy

  • In many domains, off-the-shelf systems (COTS) can be adapted to user needs.
  • Purchasing pre-built systems for medical records, for example, can be faster and cheaper than starting from scratch.
  • Using configuration features of purchased systems is part of the design process when implementing these systems.

SDLC Phases

  • The software development life cycle (SDLC) includes stages like Requirements, Analysis, Design, Implementation, and Testing.
  • Implementation is a crucial step in this cycle.

Implementation Concept

  • Each class is implemented according to the design document.
  • Each class is tested to ensure expected behavior (correct output for correct input, meeting timing requirements).
  • Classes are integrated to produce the final system.

Implementation Issues

  • Focuses beyond programming:
    • Reuse: Reusing existing components or systems in software development is common practice.
    • Configuration management: Keeping track of different versions of software components throughout development.
    • Host-target development: Software is often developed on one machine (host) but executed on another (target).

Reuse

  • From the 1960s to the 1990s, new software was typically developed from scratch.
  • Reuse of functions and objects in libraries was limited.
  • Costs and time constraints made a reusable approach increasingly essential.
  • Reusing existing software is now central in business and science.

Reuse Levels

  • Abstraction level: Reusing knowledge of successful design patterns.
  • Object level: Reusing objects from libraries.
  • Component level: Reusing collections of objects/object classes in application systems.
  • System level: Reusing complete application systems (e.g., COTS).

Software Reuse

  • Diagram showing different levels of software reuse (abstraction, object, component, system).
  • Systems (COTS)
  • Components
  • Object
  • Programming language libraries
  • Abstraction (architectural and design patterns)

Reuse Costs

  • Cost of searching/evaluating reusable software.
  • Cost of purchasing reusable software (higher for large systems).
  • Adapting/configuring reusable components/systems to project requirements.
  • Integrating reusable elements with each other and newly developed code.

Configuration Management

  • The process of managing evolving software systems, particularly when development is collaborative.
  • The goal is to support the integration process (access to code/documents, tracking changes, component compilation/linking) through a system.
  • Crucial for managing multiple versions and developer contributions.

Configuration Management Activities

  • Version management: Tracking different versions/configurations of components.
  • Coordinating development by multiple programmers through version control/management systems.
  • System integration: Defining versions/configurations for complete systems and automatically building these systems from component versions.
  • Problem tracking: Reporting bugs, identifying who to contact, tracking fixes.

Configuration Management Tool Interaction

  • Diagram showing interaction between various components (e.g., change proposals, change management, system versions, release management).

Host-Target Development

  • Most software development is host-target.
  • Development platform (host) for design/creation, and target platform (e.g. different machine) for execution.
  • The software development platform includes operating systems, supporting software (e.g., databases), IDEs, compilers, and testing tools.

Development Platform Tools

  • Integrated compiler and syntax-directed editors for code creation/editing/compilation.
  • Code debugging support.
  • Tools for diagramming (e.g., UMLs).
  • Testing tools (e.g., JUnit).
  • Tools for managing various projects.

Integrated Development Environments (IDEs)

  • IDEs (Integrated Development Environments) group several development tools into a common system.
  • They often provide a common framework or user interface supporting multiple facets of software development.
  • IDEs can be designed for a specific language (e.g., Java) or have specific language support within a more generic IDE.

Component/System Deployment Factors

  • Components need platforms with required hardware/software support.
  • High-availability systems often need components on multiple platforms.
  • Communications traffic between components favors deploying these components on the same or similar platforms.

Open Source Development

  • Approach using published source code; volunteers contribute.
  • Rooted in the Free Software Foundation concept.
  • Source code is typically not proprietary but available for examination/modification.
  • Open source software facilitates wider community involvement through internet-based recruitment of developers/users.

Open Source Systems

  • Linux is a well-known open source operating system used broadly as a desktop/server OS.
  • Java, Apache web server, and MySQL are other noteworthy open-source products.

Open Source Issues

  • Should the development being done use open source components?
  • Should an open-source approach be used for the system?

Open Source Business

  • Companies increasingly use an open-source approach.
  • Business models are now often based on selling support, not just the software itself.
  • These companies believe community involvement leads to quicker, cheaper development and greater user participation.

Open Source Licensing

  • Open-source requires freely available source code.
  • Developers own the code and control (legally) how it's reused.
  • Developers can include restrictions in legally binding licenses.
  • Open source components can potentially imply open-source implementation for an entire new system; others might just allow use without further imposition. (Evolve from the system they are initially used in.)

License Models

  • GPL (General Public License): Reciprocal license–code must be open-source if licensed under the GPL.
  • LGPL (Lesser General Public License): Developer might not have to release source code for components linked to open source code.
  • BSD (Berkeley Software Distribution) License): Non-reciprocal license (developers aren't obliged to re-open source code for any changes made.)

License Management

  • Keep an information system for tracking/managing open-source components.
  • Understand different types of licenses.
  • Be aware of component evolution.
  • Educate people regarding open-source.
  • Implement auditing systems.
  • Participate in open-source community.

Key Points

  • Software design and implementation are interlinked.
  • Detail in design depends on whether plan-driven or agile approach used.
  • Reusing existing software (components, services, full systems) is often wise.
  • Configuration management (essential for collaborative development) is necessary when making adjustments to a system.
  • Host-target development (using IDE on a host machine, transferring software to a target execution machine) is the usual setup for software production.
  • Open-source development (making source code public) allows broader participation from the community for suggestion/improvement.

Studying That Suits You

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

Quiz Team

Related Documents

Lecture 5 - Implementation PDF

More Like This

Use Quizgecko on...
Browser
Browser