Software Processes Chapter 2
45 Questions
2 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 a significant consequence of not spending time and money on refactoring software?

  • Development of new features becomes easier.
  • Software becomes more user-friendly.
  • Documentation becomes more comprehensive.
  • System structure degrades and further changes become costly. (correct)
  • Which of the following best describes COTS systems?

  • Proprietary systems not available for public use.
  • All custom applications designed from scratch.
  • Commercial-off-the-shelf systems reused in particular environments. (correct)
  • Software developed specifically for a unique user requirement.
  • Which key process stage involves assessing existing software components for reuse?

  • Requirements specification
  • Application system configuration
  • Component adaptation
  • Software discovery and evaluation (correct)
  • What is a major advantage of reuse-oriented software engineering?

    <p>Reduced costs and risks due to less software development from scratch.</p> Signup and view all the answers

    What is one of the inevitable compromises when reusing software components?

    <p>Potential mismatch with real user requirements.</p> Signup and view all the answers

    Which type of software reuse is implemented through web services?

    <p>Services developed adhering to service standards for remote use.</p> Signup and view all the answers

    What does the loss of control over reused system elements imply?

    <p>More dependencies on external development cycles.</p> Signup and view all the answers

    Which of the following process activities involves defining user needs?

    <p>Requirements specification</p> Signup and view all the answers

    What is the purpose of process measurement in the software improvement cycle?

    <p>To measure the effectiveness of process improvements</p> Signup and view all the answers

    Which of the following activities is NOT part of the process improvement cycle?

    <p>Process marketing</p> Signup and view all the answers

    What should drive the improvements in a software process?

    <p>The organizational objectives</p> Signup and view all the answers

    Which of the following is a type of process metric?

    <p>Time taken for process activities</p> Signup and view all the answers

    In order to collect quantitative process data effectively, what is often needed?

    <p>Clearly defined process standards</p> Signup and view all the answers

    What is the primary goal of the software specification process?

    <p>To define the services required and constraints on the system</p> Signup and view all the answers

    In which development process are the activities of specification, development, validation, and evolution organized sequentially?

    <p>Waterfall model</p> Signup and view all the answers

    Which of the following best describes requirements validation?

    <p>Checking the validity of the requirements</p> Signup and view all the answers

    What is an activity involved in architectural design?

    <p>Identifying the overall structure of the system</p> Signup and view all the answers

    What characterizes the relationship between design and implementation in software development?

    <p>Design and implementation activities are interleaved</p> Signup and view all the answers

    What is the focus of requirements elicitation and analysis?

    <p>Understanding stakeholder expectations about the system</p> Signup and view all the answers

    What is the main purpose of debugging in the software implementation process?

    <p>Finding and correcting program faults</p> Signup and view all the answers

    Which design aspect deals with the representation of data in a system?

    <p>Database design</p> Signup and view all the answers

    What does change anticipation in software processes aim to achieve?

    <p>Identifying potential changes before they require major rework.</p> Signup and view all the answers

    Which approach involves delivering system increments for customer feedback?

    <p>Incremental delivery</p> Signup and view all the answers

    How does system prototyping support change anticipation?

    <p>It presents an initial version to assess requirements quickly.</p> Signup and view all the answers

    Which of the following is a benefit of software prototyping?

    <p>Improved usability and a closer match to user needs.</p> Signup and view all the answers

    What is a characteristic of change tolerance in software development?

    <p>Changes can be accommodated at a relatively low cost.</p> Signup and view all the answers

    What role does a prototype play in the testing process?

    <p>It is used to run back-to-back tests for validation.</p> Signup and view all the answers

    Which option describes the purpose of developing prototypes during requirements engineering?

    <p>To help with requirements elicitation and validation.</p> Signup and view all the answers

    What is an effect of improved maintainability gained from prototyping?

    <p>Simplified code structure leading to easier updates.</p> Signup and view all the answers

    What characterizes the 'Initial' maturity level in the SEI capability maturity model?

    <p>Essentially uncontrolled processes.</p> Signup and view all the answers

    Which of the following models describes the organization of software processes?

    <p>Waterfall model.</p> Signup and view all the answers

    What is the main focus of the requirements engineering process?

    <p>To develop a software specification.</p> Signup and view all the answers

    What does software validation primarily check for?

    <p>That the system meets the users' real needs.</p> Signup and view all the answers

    Which approach to process improvement is primarily focused on minimizing overheads?

    <p>Agile approaches.</p> Signup and view all the answers

    What is a key characteristic of processes structured for iterative development?

    <p>They allow changes without disrupting the entire system.</p> Signup and view all the answers

    In the SEI capability maturity model, what indicates progression to the 'Managed' level?

    <p>Defined and used quality management strategies.</p> Signup and view all the answers

    Which of the following activities is essential for software evolution?

    <p>Prototyping and incremental delivery.</p> Signup and view all the answers

    What is the primary purpose of verification and validation in software processes?

    <p>To confirm the system meets customer requirements</p> Signup and view all the answers

    Which stage of testing focuses on evaluating individual components independently?

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

    What type of testing is specifically conducted with customer data?

    <p>Customer testing</p> Signup and view all the answers

    Why is software evolution considered essential in modern software development?

    <p>To accommodate changing business requirements</p> Signup and view all the answers

    What is a consequence of change in large software projects?

    <p>Increased costs due to rework</p> Signup and view all the answers

    What aspect of testing is particularly emphasized in system testing?

    <p>Testing of emergent properties</p> Signup and view all the answers

    What does the V-model in the plan-driven software process emphasize?

    <p>The connection between development and testing phases</p> Signup and view all the answers

    How are new technologies affecting software evolution?

    <p>They open up new possibilities for improvements</p> Signup and view all the answers

    Study Notes

    Chapter 2 - Software Processes

    • Software processes are the activities involved in producing software systems.
    • Software process models are abstract representations of these processes.
    • General process models outline the organization of software processes.
    • Examples include the waterfall model, incremental development, and reuse-oriented development.
    • Requirements engineering is the process of defining software specifications.
    • Design and implementation processes convert the specification into an executable system.
    • Software validation checks if the system meets the specification and user needs.
    • Software evolution occurs when the software changes to meet new requirements.
    • Processes should include activities like prototyping and incremental delivery to handle change.
    • Processes can be structured for iterative development, allowing changes without disrupting the overall system.
    • Key process improvement approaches include agile methods (reducing overhead) and maturity-based methods.
    • The SEI process maturity framework has levels related to good software engineering practice.

    Topics Covered

    • Software process models (e.g., waterfall, incremental, reuse-oriented)
    • Process activities (specification, development, validation, evolution)
    • Coping with change (change anticipation, change tolerance)
    • Process improvement (process maturity, agile approaches)

    The Software Process

    • A structured set of activities to develop a software system.
    • All software processes involve:
      • Specification: Defining what the system should do.
      • Design and implementation: Defining the system's structure and implementing it.
      • Validation: Checking if the system meets user needs.
      • Evolution: Modifying the system in response to changing needs.

    Software Process Descriptions

    • Descriptions usually focus on activities (e.g., data model, UI design) and their order.
    • Process descriptions can include these elements:
      • Products: Outcomes of process activities.
      • Roles: Responsibilities of involved people.
      • Pre- and post-conditions: Statements about the state of the process before and after an activity.

    Plan-driven and Agile Processes

    • Plan-driven processes plan all activities beforehand, and progress is measured against this plan.
    • Agile processes use incremental planning, making it easier to adapt to changing customer needs.
    • Practical processes often combine elements of both plan-driven and agile approaches.
    • No single 'right' or 'wrong' software process.

    Software Process Models

    • Waterfall model: Plan-driven; separate and distinct phases for specification and development.
    • Incremental development: Specification, development, and validation are interleaved. Can be either plan-driven or agile.
    • Integration and configuration: Systems assembled from configurable components; can be plan-driven or agile.
    • Most large systems use a process combining elements of these.

    Waterfall Model Phases

    • Requirements definition
    • System and software design
    • Implementation and unit testing
    • Integration and system testing
    • Operation and maintenance

    Waterfall Model Problems

    • Inflexible partitioning makes it difficult to adapt to changing requirements.
    • Well-suited for large systems where requirements are stable and changes are limited.

    Incremental Development Benefits

    • Reduced costs of accommodating changing requirements.
    • Easier to get customer feedback.
    • Faster delivery of working software.
    • Customers gain value from the software earlier.

    Incremental Development Problems

    • Process is not visible to managers.
    • System structure can degrade over time if changes aren't managed effectively.

    Integration and Configuration

    • Software reuse is a vital aspect.
    • Components or systems from a library or existing systems (sometimes called COTS) are integrated to build systems.
    • Reused elements are configured to meet specific user requirements
    • Now a standard approach for many types of business systems.

    Types of Reusable Software

    • Stand-alone application systems (configured for a specific environment).
    • Collections of objects integrated into frameworks (e.g., .NET, J2EE).
    • Web services (using service standards for remote invocation).

    Reuse-Oriented Software Engineering

    • Key process stages: requirements specification, software discovery, requirements refinement, application system configuration, and component adaptation/integration.
    • Advantages: reduced costs and faster delivery.
    • Disadvantages: compromises on requirements and loss of control over evolution.

    Process Activities

    • Software development is a chain of overlapping technical, collaborative, and managerial activities.
    • Basic activities (specification, development, validation, and evolution) are organized differently in different processes (e.g., waterfall vs. incremental).

    The Requirements Engineering Process

    • Eliciting information from stakeholders.
    • Defining the system's requirements in detail.
    • Validating these requirements.

    Software Specification

    • The act of defining the services and constraints of a system.
    • Essential for guiding development.

    Software Design and Implementation

    • Transforming the system specification into an executable system.
    • Software design and implementation often occur iteratively.

    Design Activities

    • Architectural design (system structure, components, relationships).
    • Database design (data structures).
    • Interface design (interfaces between components).
    • Component selection/design (reuse of available components).

    System Implementation

    • Implementing the software using programs or pre-existing application systems.
    • Design and implementation frequently occur concurrently.
    • Debugging is crucial to addressing errors.

    Software Validation (Verification and Validation)

    • Demonstrating that a system conforms to its specification and user needs.
    • Typically involves checking and review processes and system testing. System testing executes the system using real data and test cases derived from the specification. Testing is a key method of validation (V&V).

    Testing Stages

    • Component testing (individual components).
    • System testing (the entire system).
    • Customer testing (confirmation that the system meets customer's requirements).

    Software Evolution

    • Software is flexible and adapts to changing needs.
    • Re-implementation (maintenance) of software to meet new requirements is common.

    Coping With Change

    • Change is a core feature related to software production.
    • Processes should be geared to anticipating change and accommodating it effectively.
    • Techniques include change anticipation (e.g., prototyping), change tolerance (e.g., iterative development).

    System Prototyping

    • Prototyping is a useful way to visualize the system and elicit feedback.
    • Advantages: improved system usability, improved design/maintainability.

    Throw-Away Prototypes

    • Prototypes are discarded since they aren't a direct basis for a finished product.
    • Used for elicitation & validation.

    ,### Incremental Delivery

    • Delivers software functionality in increments rather than as a complete system.
    • Prioritizes development, and requirements "freeze" after development starts.

    Incremental Development and Delivery

    • Develops and evaluates system increments.
    • Uses common agile methods.
    • Deploys increments and gains end-user feedback.

    Incremental Delivery Advantages

    • Early delivery of customer value in increments.
    • Early increments help with requirements elicitation.
    • Lower risk of overall project failure.

    Incremental Delivery Problems

    • Defining common system facilities can be difficult.
    • Iterative processes conflict with common procurement models that require complete specifications at the start.

    Process Improvement

    • Improving software processes to enhance quality, reduce costs, or speed development.
    • Understanding and changing existing processes to increase product quality & reduce development time.

    Approaches to Improvement

    • Process maturity approach (improve process/project management and good software engineering practices).
    • Agile approach (iterative development and reduced overheads).

    Process Improvement Cycle

    • Measure process characteristics.
    • Analyze process problems.
    • Change the process.

    Process Improvement Activities

    • Process measurement: Establish a baseline for determining if changes had a positive effect.
    • Process analysis: Identify areas for improvement (weaknesses, bottlenecks).
    • Process change: Implement changes to address identified weaknesses.

    Process Metrics

    • Time taken for process activities.
    • Resources required for processes.
    • Number of occurrences of events (like discovered defects).

    Capability Maturity Levels

    • A framework (5 levels: Initial, Repeatable, Defined, Managed, Optimizing) to assess process maturity reflecting good practice.

    SEI Capability Maturity Model (CMM)

    • A framework for evaluating the process maturity of software development organizations. Initial, Repeatable, Defined, Managed, and Optimized characterize the levels.

    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 fundamentals of software processes as detailed in Chapter 2. Explore various software process models, including waterfall and iterative development, as well as the stages of requirements engineering, design, implementation, and validation. Test your knowledge on how these processes adapt to evolving software requirements.

    More Like This

    Software Engineering SWE-390 Quiz
    4 questions
    Software Engineering Processes
    24 questions
    Use Quizgecko on...
    Browser
    Browser