Software Processes Overview
48 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

Which activity is involved in the software process?

  • Marketing the software
  • Sales forecasting
  • Validation (correct)
  • Customer feedback

What characterizes plan-driven processes?

  • Activities are reactive rather than proactive
  • Activities are based solely on customer feedback
  • Activities are unplanned and spontaneous
  • Activities are planned in advance (correct)

Which of the following is NOT typically included in process descriptions?

  • Products
  • Input metrics (correct)
  • Pre- and post-conditions
  • Roles

What is the main focus of agile processes?

<p>Incremental planning and flexibility (C)</p> Signup and view all the answers

Which of the following is a feature of the waterfall model?

<p>Separate and distinct phases (A)</p> Signup and view all the answers

What is an abstract representation of a software process called?

<p>Software process model (A)</p> Signup and view all the answers

In which development approach are specification, development, and validation interleaved?

<p>Incremental development (D)</p> Signup and view all the answers

Which of the following statements is true regarding software processes?

<p>Most processes incorporate elements of both plan-driven and agile approaches (C)</p> Signup and view all the answers

What is the primary focus of system testing?

<p>Examining the entire system using real data (C)</p> Signup and view all the answers

Which stage of testing focuses on the behavior of individual software components?

<p>Component testing (C)</p> Signup and view all the answers

What does customer testing primarily assess?

<p>How well the system meets the customer’s needs (D)</p> Signup and view all the answers

What is a key challenge in large software projects?

<p>Inevitability of change in system requirements (D)</p> Signup and view all the answers

How does change anticipation help in software development?

<p>By identifying potential changes before they necessitate rework (B)</p> Signup and view all the answers

What is meant by change tolerance in software processes?

<p>Accommodating changes at a relatively low cost through incremental development (C)</p> Signup and view all the answers

Why is the distinction between development and evolution in software becoming less relevant?

<p>Software must continually evolve due to changing requirements and technologies (D)</p> Signup and view all the answers

What is an example of a method used to reduce the costs of rework?

<p>Developing a prototype to illustrate key system functions (C)</p> Signup and view all the answers

What is a major drawback of the waterfall model?

<p>It is difficult to accommodate changes once a phase is complete. (B)</p> Signup and view all the answers

Which scenario is the waterfall model most suitable for?

<p>Long-term projects involving multiple sites. (D)</p> Signup and view all the answers

What is a characteristic of incremental development?

<p>It reduces the cost of accommodating changing requirements. (B)</p> Signup and view all the answers

What problem is associated with incremental development?

<p>System structure degradation as new increments are added. (C)</p> Signup and view all the answers

In what condition is the waterfall model likely to be ineffective?

<p>When changes in requirements occur frequently during development. (D)</p> Signup and view all the answers

Which benefit is primarily associated with incremental development?

<p>More rapid delivery of useful software to customers. (B)</p> Signup and view all the answers

Which of the following is a phase in the waterfall model?

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

Why might managers prefer a structured phase approach in software development?

<p>It allows for easier tracking of project progress. (C)</p> Signup and view all the answers

What is the primary purpose of system prototyping?

<p>To quickly demonstrate concepts and test design options (C)</p> Signup and view all the answers

How does incremental delivery differ from traditional system delivery?

<p>It breaks down delivery into multiple parts called increments (B)</p> Signup and view all the answers

What is one of the main benefits of using a prototype in the requirements engineering process?

<p>It aids in requirements elicitation and validation (B)</p> Signup and view all the answers

Which aspect is typically excluded from a prototype's development?

<p>Error checking and recovery features (C)</p> Signup and view all the answers

What is a crucial step when developing increments in an incremental delivery model?

<p>User requirements are frozen after each increment is started (D)</p> Signup and view all the answers

In what way does prototyping lead to improved system usability?

<p>By providing a closer match to users' real needs (C)</p> Signup and view all the answers

Which factor is emphasized during prototype development, especially in unclear areas?

<p>Focused exploration of functional requirements (B)</p> Signup and view all the answers

How does incremental delivery support changes in user requirements?

<p>By prioritizing the highest requirement changes for early increments (A)</p> Signup and view all the answers

What does incremental development primarily allow for during the software development process?

<p>Evaluation of each increment before progressing (C)</p> Signup and view all the answers

Which of the following is NOT an advantage of incremental delivery?

<p>Increased risk of overall project failure (B)</p> Signup and view all the answers

What is a significant challenge associated with incremental delivery?

<p>Basic facilities required by different increments may be hard to identify (C)</p> Signup and view all the answers

Why is it suggested that throw-away prototypes should not be used as a basis for production systems?

<p>They are not tuned to meet non-functional requirements (B)</p> Signup and view all the answers

What common requirement can hinder the incremental delivery process?

<p>The need for multiple basic facilities across increments (B)</p> Signup and view all the answers

In which scenario is incremental delivery particularly challenging?

<p>When the system being replaced has similar functionality (A)</p> Signup and view all the answers

What is a common goal of software process improvement initiatives?

<p>To enhance software quality while reducing costs (A)</p> Signup and view all the answers

Why are prototypes often discarded after development?

<p>They are difficult to maintain over time (C)</p> Signup and view all the answers

What characterizes the 'Initial' capability maturity level?

<p>Processes are essentially uncontrolled (D)</p> Signup and view all the answers

Which process is primarily concerned with transforming a requirements specification into an executable software system?

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

Which of the following best describes software validation?

<p>Ensuring the system meets user needs and specifications (B)</p> Signup and view all the answers

What do general process models in software engineering describe?

<p>The organization of software processes (C)</p> Signup and view all the answers

What is a key aspect of the 'Managed' maturity level?

<p>Quality management strategies are defined and used (C)</p> Signup and view all the answers

Which approach focuses on reducing process overheads?

<p>Agile approaches (D)</p> Signup and view all the answers

Why is software evolution necessary?

<p>To accommodate new user requirements and remain useful (B)</p> Signup and view all the answers

What is an important activity in software processes to cope with change?

<p>Using prototyping and incremental delivery (C)</p> Signup and view all the answers

Flashcards

Software Process

A structured set of activities needed to create a software system.

Software Process Model

An abstract representation of the software process.

Plan-driven Process

A process where all activities are planned in advance, and progress is measured against the plan.

Agile Process

A process where planning is incremental and changes are easily incorporated to the project.

Signup and view all the flashcards

Waterfall Model

A plan-driven model with separate, distinct phases for development.

Signup and view all the flashcards

Incremental Development

A model where the specification, development, and validation happen together, not separately.

Signup and view all the flashcards

Integration and Configuration

The process of putting the software together using existing components.

Signup and view all the flashcards

Process Activities

The specific actions taken within a software process

Signup and view all the flashcards

Waterfall Model Phases

The Waterfall Model is divided into distinct phases: Requirements, Design, Implementation, Testing, Deployment, and Maintenance.

Signup and view all the flashcards

Waterfall Model Drawback

The waterfall model struggles to adapt to changes in customer requirements identified after the initial phase, hence inflexible.

Signup and view all the flashcards

Incremental Development Advantages

Incremental development lets customers provide feedback and adjustments easily; it's faster, and allows them to gain value early.

Signup and view all the flashcards

Waterfall Model Application

Suitable for large-scale systems engineering projects where the development happens in various locations, and the plan-driven nature aids coordination.

Signup and view all the flashcards

Changing Requirements (Waterfall)

In the Waterfall Model, adjusting customer requirements after project initiation is a difficult and costly process.

Signup and view all the flashcards

Incremental Development Flexibility

Incremental development has the advantage that it is easier and less expensive to change customer requirements during the development process compared to the waterfall model.

Signup and view all the flashcards

Incremental Development Visibility

Incremental development might lack clear documentation and visibility of the overall system structure during the development process, because it is not cost effective to do every iteration of the system.

Signup and view all the flashcards

System Testing

Testing the entire system using real data, based on its specifications.

Signup and view all the flashcards

Component Testing

Testing individual parts (functions, objects) of a system.

Signup and view all the flashcards

Customer Testing

Testing with customer data to ensure the system meets their needs.

Signup and view all the flashcards

Software Evolution

Software's ability to adapt to changing business needs.

Signup and view all the flashcards

Change Anticipation

Strategies to predict potential changes in software requirements.

Signup and view all the flashcards

Change Tolerance

Designing the software process to accommodate changes easily.

Signup and view all the flashcards

Testing Phases (V-model)

Testing stages in a planned software development process (e.g., component, system, customer).

Signup and view all the flashcards

Software Costs of Change

The expenses involved in modifying software due to changes in requirements or platforms.

Signup and view all the flashcards

Change avoidance

A strategy used to minimize the impact of changes by focusing on stable requirements and limiting unnecessary modifications.

Signup and view all the flashcards

System prototyping

A software development technique where a simplified version of a system is built to test and validate requirements and design decisions.

Signup and view all the flashcards

Incremental Delivery

A software development approach where the system is built and delivered in small, functional increments, allowing for feedback and adjustments.

Signup and view all the flashcards

Benefits of prototyping

Prototyping offers advantages such as improved usability, better alignment with user needs, enhanced design quality, easier maintenance, and reduced development time.

Signup and view all the flashcards

Prototype Development

The process of creating a prototype can involve rapid prototyping languages, tools, and a focus on key areas of the system that require clarity.

Signup and view all the flashcards

Incremental delivery: Prioritized requirements

In incremental delivery, user requirements are prioritized, and the most important ones are included in the early increments.

Signup and view all the flashcards

Incremental Delivery Advantage: Early Value

Each increment provides value to the user, meaning they get useful functionality sooner.

Signup and view all the flashcards

Incremental Delivery Advantage: Prototype

Early increments act as a prototype to help gather requirements for future increments.

Signup and view all the flashcards

Incremental Delivery Advantage: Less Risk

Lower risk of project failure as each increment is tested and validated.

Signup and view all the flashcards

Incremental Delivery Problem: Common Facilities

Defining basic facilities needed across the system can be difficult as requirements are refined incrementally.

Signup and view all the flashcards

Incremental Delivery Problem: Procurement Models

Incremental development conflicts with traditional contracts where the whole system specification is required upfront.

Signup and view all the flashcards

Throw-away Prototype

A prototype that's discarded after development. Not useful for production systems because it may not meet quality standards.

Signup and view all the flashcards

Capability Maturity Model (CMM)

A framework that evaluates an organization's software development process maturity. It assesses the capabilities of the organization to implement software engineering practices effectively.

Signup and view all the flashcards

Initial CMM Level

The starting point of the CMM where processes are essentially uncontrolled and unpredictable. There is no defined process, and success is dependent on individual efforts.

Signup and view all the flashcards

Repeatable CMM Level

The second level where basic project management procedures are established, and the organization can repeat previous successes. This involves documenting processes and managing risks.

Signup and view all the flashcards

Defined CMM Level

This level establishes standardized processes and procedures across the organization. The organization defines and documents its processes, making them repeatable and consistent.

Signup and view all the flashcards

Managed CMM Level

The organization starts to actively track and control the software development process by using metrics and quality management practices. This promotes process optimization and improvement.

Signup and view all the flashcards

Optimising CMM Level

The highest maturity level where the organization continually analyzes its processes to identify areas for improvement, using continuous process improvement techniques.

Signup and view all the flashcards

Requirements Engineering

The process of defining and documenting the needs and expectations of users for a software system. This involves gathering, analyzing, and documenting user requirements.

Signup and view all the flashcards

Software Validation

The process of verifying that the software system meets its requirements and performs as intended. This involves testing and evaluating the system against its specifications.

Signup and view all the flashcards

Study Notes

Software Processes

  • Software processes are a structured set of activities required to develop a software system.
  • Many different software processes exist, but all involve:
    • Specification: Defining what the system should do.
    • Design and implementation: Defining the system's organization and implementing it.
    • Validation: Checking that the system meets customer requirements.
    • Evolution: Adapting the system to changing customer needs.
  • A software process model is an abstract representation of a process, presenting a description from a specific perspective.

Topics Covered

  • Software process models
  • Process activities
  • Coping with change
  • Process improvement

Plan-driven and Agile Processes

  • Plan-driven processes: All process activities are planned in advance, and progress is measured against the plan.
  • Agile processes: Planning is incremental, allowing for easier adjustments to reflect changing customer requirements.
  • Most practical processes incorporate elements of both plan-driven and agile approaches. There is no one "right" process.

The Waterfall Model

  • A plan-driven model with separate and distinct phases of specification and development.
  • Phases:
    • Requirements definition
    • System and software design
    • Implementation and unit testing
    • Integration and system testing
    • Operation and maintenance
  • Difficulty in accommodating changes after the process begins.

Waterfall Model Problems

  • Inflexible partitioning into stages makes responding to changing customer requirements difficult.
  • Works best when requirements are well-understood and changes are limited.
  • Fewer business systems have stable requirements.
  • Suitable for large projects with development at multiple sites, where the planned nature helps coordination.

Incremental Development

  • Specification, development, and validation are interleaved.
  • May be plan-driven or agile.
  • Benefits:
    • Reduced cost of accommodating changing requirements.
    • Easier to get customer feedback.
    • Quicker delivery of usable software.
  • Problems:
    • Process is not always visible to managers.
    • System structure can degrade over time if not carefully managed.

Integration and Configuration

  • Relies on software reuse, integrating systems from existing components or commercial-off-the-shelf (COTS) systems.
  • Configuring reused elements to adapt to user requirements is common.
  • Reuse is the standard approach for many business systems. Detailed information on reuse is in Chapter 15 of the text.

Software Process Descriptions

  • Process descriptions focus on activities like data modeling and user interface design, and the order of these activities.
  • Descriptions should include:
    • Products: Outcomes of a process activity.
    • Roles: Responsibilities of people involved.
    • Pre- and post-conditions: Statements about the state of the process or product before and after an activity.

Key Process Stages (Reuse-Oriented)

  • Requirements specification
  • Software discovery and evaluation
  • Requirements refinement
  • Application system configuration
  • Component adaptation and integration

Advantages/Disadvantages of Reuse-Oriented Development

  • Advantages: reduced costs, faster delivery
  • Disadvantages: compromises in requirements, loss of control over reused elements

Process Activities

  • Real software processes are inter-leaved sequences of technical, collaborative, and managerial activities, aiming to specify, design, implement, and test a software system.
  • Basic process activities (specification, development, validation, evolution) are organized differently in different processes (e.g., sequential in waterfall, interleaved in incremental).

The Requirements Engineering Process

  • Elicitation and analysis, specification, validation, and documentation make up requirements engineering.
  • Understanding user and system requirements is critical.

Software Specification

  • Establishing required services and constraints for system operation and development.
  • Includes requirements elicitation and analysis, specification, and validation.

Software Design and Implementation

  • Converting system specifications into an executable system.
  • Software design: Creating a software structure realizing the specification.
  • Implementation: Translating the structure into an executable program.
  • Activities are closely related and often interleaved.

Design Activities

  • Architectural design: Identifying overall system structure, components, relationships, and distribution.
  • Database design: Designing data structures and their representation in a database.
  • Interface design: Defining interfaces between system components.
  • Component selection and design: Seeking reusable components; designing custom if necessary.

System Implementation

  • Implementing software either through program development or configuration.
  • Design and implementation activities are often interleaved.
  • Programming is often an individual activity without a strict standard process.
  • Debugging is essential for identifying and fixing program errors.

Software Validation

  • Verifying and validating (V&V) that a system meets its specification and user requirements.
  • Includes checking and review processes, along with testing.
  • System testing executes the system with test cases based on specifications and real data.
  • Testing is the most common V&V activity.

Stages of Testing

  • Component testing: Testing individual components (e.g., functions, objects) in isolation.
  • System testing: Testing the entire system as a whole.
  • Customer testing: Testing with real customer data to ensure the system meets customer needs.

Testing Phases in a Plan-Driven Process (V-Model)

  • A detailed view of testing phases in a plan-driven process.

Software Evolution

  • Software is adaptable and must change to meet evolving business requirements.
  • Development and evolution (maintenance) are merging, as few systems are completely new.

System Evolution

  • A process for assessing, proposing changes, and modifying existing software systems to adapt to new needs.

Coping with Change

  • Change is inevitable in software projects.
  • Business changes, new technologies, and platform changes lead to evolving requirements and adaptations.
  • Change leads to rework of existing processes.

Reducing Costs of Rework (Coping with Change)

  • Change anticipation: Including activities to predict potential changes before significant rework becomes necessary. (E.g., prototyping)
  • Change tolerance: Designing processes to accommodate changes at low cost without disrupting the entire system (e.g., incremental development).

Coping with Changing Requirements

  • System prototyping: Quickly developing a version of the system to test requirements and feasibility of design decisions
  • Incremental delivery: Delivering system increments for customer feedback and evaluation.

Software Prototyping

  • Prototypes are initial versions of a system used to demonstrate concepts and test design options.
  • Can help requirements elicitation and validation.

Benefits of Prototyping

  • Improves system usability.
  • Matches user needs closer.
  • Improves design quality.
  • Improves maintainability.
  • Reduces development effort.
  • Process of Prototype Development: Establishing objectives, Defining functionality, Developing prototype, Evaluating prototype

Prototype Development

  • Can use rapid prototyping languages/tools.
  • May leave out non-critical features, focusing on functional areas.
  • Error checking may not be included in initial versions.

Incremental Delivery

  • Delivering the system in a series of increments, each with prioritized features.
  • User requirements are incorporated into early increments.
  • Requirements for later increments can evolve.
  • This approach is very useful during iterative development and is very common in modern software development processes.

Incremental Delivery Advantages

  • Early value delivered to the customer.
  • Prototyping for eliciting requirements for future increments.
  • Reduces risk of overall project failure.
  • Highest priority features receive most testing

Incremental Delivery Problems

  • Defining basic facilities used by different system increments can be challenging.
  • Defining full requirements before development is difficult.
  • Procurement issues can arise in business contracts.

Throw-Away Prototypes

  • Prototypes serve as a tool in the development process but are not intended for ongoing use.
  • They might not meet the non-functional requirements of a production system, are usually not documented, and may contain many errors.

Process Improvement

  • Many companies use process improvement to enhance software quality and reduce costs.
  • Process improvement involves understanding existing processes and adjusting them to enhance quality and reduce development time.

Approaches to Improvement

  • Process maturity approach: Focuses on improved process management and software engineering practices.
  • Agile approach: Iterative development to streamline overhead and respond quickly to changes.

The Process Improvement Cycle

  • A cyclical process: measure, analyze, change, and repeat to continuously improve.

Process Improvement Activities

  • Process measurement: Collecting data on existing processes or products.
  • Process analysis: Identifying process weaknesses and bottlenecks, and creating process models or maps.
  • Process change: Implementing measures to address identified weaknesses and improve efficiency.

Process Measurement

  • Gathering quantitative data on software processes and products.
  • Measurements are used for assessing process improvements and should align with overall organizational objectives.

Process Metrics

  • Examples of process metrics:
    • Time taken for activities
    • Resources required
    • Number of errors

Capability Maturity Levels

  • A framework for describing the maturity levels of software processes.
  • Levels: Initial, Repeatable, Defined, Managed, Optimizing.

The SEI Capability Maturity Model

  • A model that identifies maturity levels of a software process.
  • Levels: Initial, Repeatable, Defined, Managed, Optimizing. The higher the level achieved, the better the software development practices.

Key Points Summary

  • Software processes are crucial activities in software development.
  • Models describe the structure. Requirements engineering clarifies needs, validation checks adherence.
  • Design and implementation turns specifications into executable systems.
  • Validation and testing are critical to ensure quality. Evolution manages changes throughout the life cycle.
  • Iterative/Incremental development enables flexible adaptation to evolving requirements and change.
  • Continuous improvement (process improvement activities) should be ongoing.

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 the essential activities and models that define software processes, including specification, design, validation, and evolution. Explore the differences between plan-driven and agile processes and understand how to cope with change and improve processes effectively.

More Like This

Software Engineering Process Models Quiz
5 questions
Software Process Models Lecture 2
10 questions
Software Development Process Models Quiz
40 questions
Use Quizgecko on...
Browser
Browser