Untitled Quiz
87 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

Is there a universal software engineering method for different software systems?

  • True
  • False (correct)
  • What are the fundamental software engineering activities?

    Specification, design and implementation, validation, evolution

    What is a software process model?

    An abstract representation of a process

    Activities are complex and involve sub-activities.

    <p>True</p> Signup and view all the answers

    What is the difference between plan-driven and agile processes?

    <p>Agile processes involve incremental planning, while plan-driven processes are more structured.</p> Signup and view all the answers

    In practice, what type of process do most practical software systems use?

    <p>Elements of both plan-driven and agile approaches.</p> Signup and view all the answers

    Which of these is a plan-driven process model?

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

    Incremental development can be either plan-driven or agile.

    <p>True</p> Signup and view all the answers

    Large systems are developed using only one type of process model.

    <p>False</p> Signup and view all the answers

    What are the five phases in the waterfall model?

    <p>Requirements analysis and definition, System and software design, Implementation and unit testing, Integration and system testing, Operation and maintenance.</p> Signup and view all the answers

    The waterfall model is only appropriate when the requirements are well-understood and changes during the design process will be fairly limited.

    <p>True</p> Signup and view all the answers

    What is the main challenge in using the waterfall model?

    <p>Difficult to accommodate change</p> Signup and view all the answers

    The waterfall model is commonly used for large systems engineering projects where a system is developed at several sites.

    <p>True</p> Signup and view all the answers

    What is the key idea behind Incremental Development?

    <p>Developing an initial implementation, exposing it to user comment, and evolving it through several versions.</p> Signup and view all the answers

    Specification, development, and validation activities are interleaved in incremental development.

    <p>True</p> Signup and view all the answers

    What is a key benefit of Incremental Development?

    <p>Reduced cost of accommodating changing customer requirements</p> Signup and view all the answers

    Incremental development is best suited for safety-critical systems, as it allows quick changes.

    <p>False</p> Signup and view all the answers

    What is a problem associated with incremental development?

    <p>The process is not visible</p> Signup and view all the answers

    System structure tends to degrade as new increments are added.

    <p>True</p> Signup and view all the answers

    What is the basis of integration and configuration?

    <p>Software reuse</p> Signup and view all the answers

    Reused elements should never be configured to adapt their behaviour, as doing so can lead to errors.

    <p>False</p> Signup and view all the answers

    What is the standard approach for building modern business systems?

    <p>Use of existing components</p> Signup and view all the answers

    Which of these is NOT a type of reusable software?

    <p>Manual codes</p> Signup and view all the answers

    What is a key advantage of using reusable software?

    <p>Reduced development time</p> Signup and view all the answers

    Requirements compromises are inevitable when using reusable software.

    <p>True</p> Signup and view all the answers

    What is a disadvantage of using reusable software?

    <p>Loss of control over the evolution of reused system elements</p> Signup and view all the answers

    Real software processes are interleaved sequences of technical, collaborative and managerial activities.

    <p>True</p> Signup and view all the answers

    What is the overall goal of software development?

    <p>Specifying, designing, implementing, and testing a software system.</p> Signup and view all the answers

    Which of these is NOT a basic process activity in software development?

    <p>Deployment</p> Signup and view all the answers

    In the waterfall model, the basic process activities are organized sequentially, while in incremental development, they are interleaved.

    <p>True</p> Signup and view all the answers

    What is the process of establishing what services are required and identifying the constraints on the system's operation and development?

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

    What is the primary goal of requirements engineering?

    <p>Developing a software specification</p> Signup and view all the answers

    Software specification is a critical stage in the software development process.

    <p>True</p> Signup and view all the answers

    A feasibility study is conducted after the requirement engineering stage.

    <p>False</p> Signup and view all the answers

    Requirements are typically presented at two levels of detail.

    <p>True</p> Signup and view all the answers

    What are the three main activities involved in requirements engineering?

    <p>Elicitation and analysis, specification, validation</p> Signup and view all the answers

    Requirement elicitation can involve the development of system models and prototypes.

    <p>True</p> Signup and view all the answers

    Requirement specification involves defining the requirements in detail, using information gathered during the analysis stage.

    <p>True</p> Signup and view all the answers

    What are the two types of requirements included in the requirement specification?

    <p>User requirements and system requirements</p> Signup and view all the answers

    What is involved in requirements validation?

    <p>The validation stage scrutinizes the requirements to ensure they align with reality, lack contradictions, and encompass all essential details.</p> Signup and view all the answers

    Software design and implementation are completely separate activities, conducted one after the other.

    <p>False</p> Signup and view all the answers

    What is the process of converting the system specification into an executable system?

    <p>Software design and implementation</p> Signup and view all the answers

    Software design is developed in stages, often involving constant backtracking.

    <p>True</p> Signup and view all the answers

    What does the implementation stage involve?

    <p>Translating the software structure into an executable program</p> Signup and view all the answers

    The activities of software design and implementation are always interleaved.

    <p>False</p> Signup and view all the answers

    Verification and validation aim to ensure that the software meets its specifications and user requirements.

    <p>True</p> Signup and view all the answers

    Which of these is NOT a part of the verification and validation process?

    <p>Requirement analysis</p> Signup and view all the answers

    Which of these is a commonly used Validation technique?

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

    What is the purpose of system testing?

    <p>To test the interactions between components</p> Signup and view all the answers

    What is the purpose of customer testing?

    <p>To ensure the system meets the customer's needs</p> Signup and view all the answers

    In the V-model, testing is driven by a set of plans, and testers work independently from the development team.

    <p>True</p> Signup and view all the answers

    Software is inherently flexible and can change, unlike hardware systems.

    <p>True</p> Signup and view all the answers

    Software development is distinct from software evolution.

    <p>False</p> Signup and view all the answers

    What is a key reason why software evolution is so important in modern software development?

    <p>All of the above</p> Signup and view all the answers

    Software development is not an evolutionary process.

    <p>False</p> Signup and view all the answers

    Change is unavoidable in all large software projects.

    <p>True</p> Signup and view all the answers

    Which of these is NOT a reason for change in large software projects?

    <p>Lack of communication</p> Signup and view all the answers

    Any software process model should be able to accommodate change effectively.

    <p>True</p> Signup and view all the answers

    What are the costs of change in software development?

    <p>Rework costs, such as re-analyzing requirements, and the costs of implementing new functionality.</p> Signup and view all the answers

    What are the two main strategies for reducing rework costs?

    <p>Change anticipation and change tolerance.</p> Signup and view all the answers

    Prototyping is useful for understanding user needs and exploring design options.

    <p>True</p> Signup and view all the answers

    Prototyping is only used in the requirements engineering process.

    <p>False</p> Signup and view all the answers

    Throw-away prototypes are typically designed for long-term use.

    <p>False</p> Signup and view all the answers

    Which of these is NOT a reason why throw-away prototypes are typically discarded?

    <p>They are frequently a good basis for a production system</p> Signup and view all the answers

    What is the main advantage of incremental delivery?

    <p>All of the above</p> Signup and view all the answers

    In incremental delivery, user requirements are prioritized, and the highest priority requirements are delivered in later increments.

    <p>False</p> Signup and view all the answers

    When an increment is started, the requirements for that increment are frozen.

    <p>True</p> Signup and view all the answers

    Architectural design is not necessary before the implementation of increments.

    <p>False</p> Signup and view all the answers

    One advantage of incremental models is their ability to handle change during development.

    <p>True</p> Signup and view all the answers

    With the waterfall model, an error in the requirements might only be noticed during acceptance testing.

    <p>True</p> Signup and view all the answers

    Incremental delivery is effective at identifying requirements errors, as the error may be discovered soon after the relevant code is written.

    <p>True</p> Signup and view all the answers

    Incremental delivery is easy to implement for existing systems, as it doesn't require major changes.

    <p>False</p> Signup and view all the answers

    Identifying common facilities is a challenge in incremental delivery, as requirements are not defined in detail until an increment is to be implemented.

    <p>True</p> Signup and view all the answers

    The process of developing a specification in conjunction with the software is not compatible with most procurement models.

    <p>True</p> Signup and view all the answers

    What does process improvement mean?

    <p>Understanding existing processes and changing them to increase product quality or reduce costs and development time.</p> Signup and view all the answers

    What are the two main approaches to process improvement?

    <p>Agile and Maturity-based</p> Signup and view all the answers

    Agile approaches aim to reduce process overheads and improve process management.

    <p>True</p> Signup and view all the answers

    Maturity-based approaches focus on reducing process overheads and promoting rapid delivery.

    <p>False</p> Signup and view all the answers

    What are the key elements in a process improvement cycle?

    <p>Measure, analyze, change</p> Signup and view all the answers

    Process measurements should be used to drive process improvements.

    <p>False</p> Signup and view all the answers

    What are some examples of process metrics?

    <p>Time taken for activities, resources required, and the number of occurrences of a particular event.</p> Signup and view all the answers

    The SEI's process maturity framework aims to help organizations assess their current maturity level and identify areas for improvement in their software engineering practices.

    <p>True</p> Signup and view all the answers

    Which of these is NOT a capability maturity level identified by the SEI?

    <p>All of the above are SEI capability maturity levels</p> Signup and view all the answers

    The SEI maturity levels indicate how well an organization manages its software development processes, including measurement, use of best practices, and overall management.

    <p>True</p> Signup and view all the answers

    The Rational Unified Process (RUP) is a waterfall model based on UML.

    <p>False</p> Signup and view all the answers

    RUP supports prototyping and incremental delivery, which are important for adapting to change.

    <p>True</p> Signup and view all the answers

    The activities in RUP occur only once during development.

    <p>False</p> Signup and view all the answers

    Study Notes

    Software Processes

    • Software process models are sets of related activities involved in producing a software system.
    • There's no single universal software engineering method for all software system types.
    • Fundamental software engineering activities include:
      • Specification: defining what the software system should do.
      • Design and implementation: defining the system's structure and building it.
      • Validation: confirming the software meets the customer's needs.
      • Evolution: adapting the software in response to changing needs.
    • Software process models are abstract representations of a process, providing descriptions from a particular perspective.
    • Process descriptions often include:
      • Products/deliverables: outcomes of a process activity (e.g., software architecture model).
      • Roles: responsibilities of involved personnel (e.g., project manager, programmer).
      • Pre- and post-conditions: statements about the state of the process before and after an activity.

    Plan-driven and Agile Processes

    • Plan-driven processes meticulously plan all activities in advance, measuring progress against the plan.
    • Agile processes use incremental and continual planning, adapting to changing customer requirements.
    • Safety-critical systems benefit from highly structured processes.
    • Flexible agile processes are better suited for rapidly changing business systems.
    • There aren't universally "right" or "wrong" software processes; often, the best approach combines elements of both plan-driven and agile methodologies.

    Software Process Models

    • Waterfall Model: A plan-driven model with separate, distinct phases of specification and development.
    • Incremental Development: Specification, development, and validation happen concurrently and interleaved. Can be plan-driven or agile.
    • Integration and Configuration: Building systems from existing components (COTS systems). May be plan-driven or agile.
    • Most large systems incorporate elements of various models in practice.

    Waterfall Model Phases

    • Requirements Definition
    • System and Software Design
    • Implementation and Unit Testing
    • Integration and System Testing
    • Operation and Maintenance
    • All activities must be planned and scheduled before development begins.
    • Each phase's result is documented and approved ("signed off").
    • The next phase begins only after the preceding phase is completed.

    Waterfall Model Drawbacks

    • Difficulty accommodating changes once the process is underway.
    • Inflexible response to changing customer requirements.
    • Suitable only for well-understood systems with limited change needs (e.g., safety-critical systems).
    • Few business systems have stable requirements from start to finish.

    Incremental Development Benefits

    • Reduced cost of accommodating changing requirements.
    • Easier for customers to provide feedback throughout the development.
    • Rapid delivery of useful software to the customer.

    Incremental Development Problems

    • Process invisibility to management (with rapid development).
    • System structures tend to degrade as new increments are added.
    • Can lead to messy code.

    Integration and Configuration

    • Based on software reuse: integrating from existing components or applications (COTS).
    • Reused elements usually need to be configured to meet specific user needs.
    • Reuse is a common approach for building business systems.

    Types of Reusable Software

    • Standalone application systems (COTS).
    • Packages of integrated objects using frameworks (.NET, J2EE).
    • Web services adhering to service standards.

    Advantages and Disadvantages of Reuse

    • Advantages: Reduced costs and risks, faster delivery.
    • Disadvantages: Requirements compromises are inevitable, loss of control over reused elements.

    Process Activities

    • Real software processes are interleaved sequences of technical, collaborative, and managerial activities aimed at specifying, designing, implementing, and testing a software system.
    • Core process activities include specification, development, validation, and evolution.
    • These activities are often organized sequentially in methodologies like Waterfall, but concurrently in Incremental methodologies.

    Software Specification

    • Establishing required services and constraints on the system's operation.
    • Requirements engineering is the process of developing this specification.
    • Mistakes during this stage have significant consequences.
    • A feasibility study should be performed first to evaluate market need and technical feasibility.
    • Requirements are usually presented at two levels: general statements from customers; detailed specifications for developers.

    Requirement Engineering Activities

    • Requirements elicitation and analysis: understanding stakeholder needs and gathering information (e.g., through interviews, observation, task analysis).
    • Requirements specification: formally defining the requirements gathered during analysis.
    • Requirements validation: checking the gathered requirements for realism, consistency, and completeness.

    Software Design and Implementation

    • Transforming system specifications into an executable system.
    • Software design focuses on creating a structure that realizes the specified behavior: includes data models, and component interfaces.
    • The design process is often iterative, with design steps evolving and backtracking.
    • Translation (implementation): Design steps are turned into an executable program (code).

    Design Inputs (to the design process)

    • Platform information: existing software environment (operating system, databases, middleware).
    • Requirements specification
    • Data description (how the software's data structure is to be organized and used).

    Design Activities

    • Architectural design: defining overall system structure and component relationships.
    • Database design: modelling the data structures and storage mechanisms.
    • Interface design: specifying communication between software components.
    • Component selection and design: choosing or developing reusable components.

    System Implementation

    • Developing a program or configuring existing system to execute the software.
    • Programming: individual activity with no single standard process.
    • Debugging: identifying and correcting faults.

    Software Validation

    • Verification and Validation (V&V): confirming that the software meets its specifications and customer needs.
    • System testing: evaluating the system as a whole with real data and test cases.
    • Testing is the most common validation approach.

    Testing Stages

    • Component testing: evaluating individual components in isolation.
    • System testing: evaluating the entire system as a whole, including interactions between components.
    • Customer testing: evaluating the system with real data used by its customers (e.g., alpha and beta testing).

    Testing Phases in Plan-driven Process (V-Model)

    • Testing driven by pre-formulated plans (and related activities).
    • Testing occurs in parallel with the software development cycle.

    Software Evolution

    • Software is more adaptable than hardware.
    • Adaptability to changing business needs is required to keep the software performing as desired.
    • Development and maintenance are not discrete phases - instead, they operate in parallel, often as a continuous improvement cycle.

    System Evolution

    • Representing system evolution over its life cycle, focusing on defining requirements, assessing existing systems, proposing changes, and modifying/creating the new version.

    Coping with Change (in software projects)

    • Change is inherent in large software projects.
    • Business changes generate needs for revised software requirements
    • Technological improvements lead to opportunities for enhancement and new functionality.

    Reducing Costs of Rework

    • Change anticipation: Including activities in the process that predict and prepare for future adjustments.
    • Change tolerance: Design the system and process to allow for adjustments at manageable costs, which often involves an incremental approach.

    Software Prototyping

    • Prototype: an initial version of a software system used for demonstrating concepts or validating ideas (e.g., a user interface).
    • Prototyping helps anticipate potential changes and improve user understanding of the intended system, and it allows for feedback cycles during development and testing.
    • Prototypes can help validate requirements, guide the design process, and plan testing efforts.

    Incremental Delivery

    • Delivers the system in increments, providing functional parts to users early.
    • Highest-priority requirements are included in the initial increments.
    • Requirements can evolve during the development cycle, with later iterations often based on feedback from earlier releases.

    Incremental Delivery Advantages

    • Faster delivery of value to the customer.
    • Risk mitigation through stepwise delivery of smaller, testable units.
    • Enhanced adaptation to changing requirements.

    Incremental Delivery Disadvantages

    • Challenging to apply with pre-existing systems.
    • Difficulty in identifying shared functionalities needed by multiple increments.
      This method can require careful consideration in the design and procurement stages of a large project.

    Process Improvement

    • Process improvement: Techniques to enhance existing processes to raise product quality and reduce development costs/time.
    • Many software companies adopt better process management, quality assurance, and good software engineering practice to achieve higher efficiency.
    • Agile approaches promote reduced overhead in the development process, while maturity approaches prioritize better process management and quality standards.

    Approaches to Process Improvement

    • Process Maturity Approach: Emphasizes improving organizational management practices and software engineering techniques.
    • Agile Approach: Stresses iterative development, reducing overhead, and responding to evolving requirements.

    Process Improvement Cycle

    • Measures (of process effectiveness and efficiency).
    • Analyses (to identify development bottlenecks).
    • Changes (to address identified issues)

    Process Measurement

    • Measuring attributes of software process or product.
    • Process measurements help determine the success of process improvement efforts, providing a baseline for comparison to future measures.

    CMM-Based Appraisal

    • Frameworks for analyzing and improving software development processes.
    • Evaluating maturity through standards like ISO 9001 and SPICE which provide guidance for process assessment and improvement.

    Rational Unified Process (RUP)

    • A comprehensive iterative software development process.
    • Hybrid approach combining elements of both Waterfall and Incremental methodologies.
    • Supports incremental development within each of its phases.

    RUP Workflows and Phases

    • RUP Workflow: Organized sets of activities oriented around UML (Unified Modeling Language) models, including conceptual descriptions for Business Modeling, Requirements Modeling, Analysis and Design activities, Implementation, Testing, and Deployment.
    • RUP Phases: iterative activities focused on delivering different levels of deliverables by phase-Inception, Elaboration, Construction, and Transition (with phases also containing many iterative development increments).

    RUP Good Practices

    • Iterative and incremental development with prioritized increments.
    • Well-defined requirements and change management.
    • Component-based architectures and visual modeling.
    • Quality and standard verification.
    • Effective control over software changes.

    Studying That Suits You

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

    Quiz Team

    Related Documents

    More Like This

    Untitled Quiz
    6 questions

    Untitled Quiz

    AdoredHealing avatar
    AdoredHealing
    Untitled Quiz
    19 questions

    Untitled Quiz

    TalentedFantasy1640 avatar
    TalentedFantasy1640
    Untitled Quiz
    55 questions

    Untitled Quiz

    StatuesquePrimrose avatar
    StatuesquePrimrose
    Untitled Quiz
    50 questions

    Untitled Quiz

    JoyousSulfur avatar
    JoyousSulfur
    Use Quizgecko on...
    Browser
    Browser