Software Engineering Fundamentals Quiz
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

What is the first step in the requirements engineering process?

  • Software design
  • Requirements validation
  • Requirements elicitation and analysis (correct)
  • Requirements specification
  • Software design and implementation are separate, unrelated activities.

    False

    What is the purpose of software validation?

    To ensure that a system conforms to its specification and meets the requirements.

    The activity of finding program faults and correcting them is known as ______.

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

    Match the following design activities with their descriptions:

    <p>Architectural design = Identifying the overall structure of the system Database design = Designing the system data structures Interface design = Defining the interfaces between components Component selection and design = Searching for reusable components or designing new ones</p> Signup and view all the answers

    Which of the following is a key part of requirements specification?

    <p>Defining the requirements in detail</p> Signup and view all the answers

    In software processes, programming is considered to have a standard process.

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

    What activity involves checking the validity of requirements?

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

    What is the main drawback of the waterfall model?

    <p>It is inflexible in responding to changing customer requirements.</p> Signup and view all the answers

    The incremental development process allows for faster delivery of software.

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

    Name the first phase of the waterfall model.

    <p>Requirements analysis and definition</p> Signup and view all the answers

    The _____ model is only appropriate when the requirements are well-understood.

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

    Match the following terms to their descriptions:

    <p>Waterfall Model = Phases are distinct and sequential Incremental Development = Allows for customer feedback Requirements Analysis = First phase of the waterfall model Integration Testing = Combining and testing complete modules</p> Signup and view all the answers

    In which scenario is the waterfall model mostly used?

    <p>For large systems engineering projects</p> Signup and view all the answers

    Incremental development eliminates the need for documentation.

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

    What is a potential problem with incremental development?

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

    What is the primary focus of system testing?

    <p>Testing the system as a whole with real data</p> Signup and view all the answers

    Change is irrelevant in all large software projects.

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

    What is one method to reduce the costs of rework in software projects?

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

    The process of testing with customer data to ensure the system meets their needs is called _____ testing.

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

    Match the following stages of testing with their descriptions:

    <p>Component testing = Testing of individual components independently System testing = Testing of the system as a whole Customer testing = Testing with customer data Testing of emergent properties = Focus on how components interact as a complete system</p> Signup and view all the answers

    Which phase allows for the incremental development of software?

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

    Software evolution refers to the ability of software to remain unchanged over time.

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

    What must be tested during system testing to ensure the overall quality of the software?

    <p>Emergent properties</p> Signup and view all the answers

    What is the primary purpose of system prototyping?

    <p>To demonstrate concepts and try out design options</p> Signup and view all the answers

    Incremental delivery allows for the system to be delivered as a single complete product.

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

    What is one benefit of prototyping?

    <p>Improved usability</p> Signup and view all the answers

    A prototype may involve leaving out certain ______ to focus on essential features.

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

    Match the types of development approaches with their purposes:

    <p>System prototyping = Supports change anticipation Incremental delivery = Supports change avoidance and tolerance Prototyping in requirements engineering = Helps with requirements elicitation and validation Prototype focus = Emphasizes functional rather than non-functional requirements</p> Signup and view all the answers

    What is emphasized during prototype development?

    <p>Functional requirements</p> Signup and view all the answers

    User requirements can evolve even after the development of an increment has started.

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

    Name a rapid development approach often used in prototype development.

    <p>Rapid prototyping languages or tools</p> Signup and view all the answers

    What is a primary benefit of incremental delivery?

    <p>Customer value can be delivered with each increment</p> Signup and view all the answers

    Incremental development is typically used in traditional waterfall methodologies.

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

    What is the purpose of using early increments in incremental delivery?

    <p>To help elicit requirements for later increments</p> Signup and view all the answers

    Incremental delivery can be challenging for __________ systems because increments often possess less functionality than the existing system.

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

    Match the following types of prototypes with their characteristics:

    <p>Throw-away prototypes = Should be discarded after development due to poor documentation Incremental prototypes = Developed gradually and refined through user feedback Evolutionary prototypes = Serve as the basis for a production system</p> Signup and view all the answers

    What is a common issue faced when determining requirements in incremental development?

    <p>Common facilities may be difficult to identify</p> Signup and view all the answers

    Software process improvement is often adopted to increase software quality and reduce costs.

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

    Name one reason why throw-away prototypes are not suitable for production systems.

    <p>They are often undocumented</p> Signup and view all the answers

    What are the capability maturity levels described in the SEI capability maturity model?

    <p>Initial, Repeatable, Defined, Managed, Optimizing</p> Signup and view all the answers

    Software validation is the process of ensuring that the system meets its specification and user needs.

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

    What are the two principal approaches to process improvement?

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

    The process of developing a software specification is known as ______.

    <p>requirements engineering</p> Signup and view all the answers

    Match the following software processes with their descriptions:

    <p>Requirements Engineering = Developing a software specification Software Validation = Ensuring system conformance to specifications Software Evolution = Changing existing software systems Design and Implementation = Transforming specifications into executable systems</p> Signup and view all the answers

    Which of the following best describes 'iterative development'?

    <p>Processes structured for change without disrupting the overall system</p> Signup and view all the answers

    The waterfall model is an example of a general software process model.

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

    Incremental delivery promotes the ______ of changes in a software system.

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

    Study Notes

    Software Processes

    • Software processes are the activities required to produce a software system.
    • 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.
    • Design and implementation processes transform requirements into an executable system.
    • Software validation verifies the system's adherence to specifications and user needs.
    • Software evolution is the modification of existing systems to meet new requirements.
    • Processes need activities like prototyping and incremental delivery to cope with change.
    • Processes can be structured for iterative development so changes do not disrupt the whole system.
    • Key improvement approaches are agile, geared towards reducing overhead, and maturity-based, relying on better process management and good software engineering practices.
    • The SEI process maturity framework defines maturity levels, correlating with good software engineering practices.

    Key Process Stages

    • Requirements specification: Defines the system's services and constraints.
    • Software discovery and evaluation: Identifies available components or systems.
    • Requirements refinement: Specifies the requirements in detail.
    • Application system configuration: Configures existing systems to meet needs.
    • Component adaptation and integration: Adapts and integrates reusable components.

    Waterfall Model

    • A plan-driven model.
    • Separate and distinct phases: specification, development, validation, and evolution.
    • Phases must be complete before the next begins.
    • Difficult to accommodate changes during development.
    • Suitable for projects with stable requirements.

    Incremental Development

    • Specification, development, and validation are interleaved.
    • Plan-driven or agile.
    • Easier to accommodate changes.
    • Enables early delivery of customer value.
    • Visible process and feedback.
    • System structure can degrade over time.
    • Difficult to measure progress.
    • Time or money must be spent on refactoring to improve structure.
    • Less effective for large projects and complex systems.

    Integration and Configuration

    • Relies on software reuse from existing components or systems (COTS).
    • Used for business systems.
    • Configuring reusable components to fit user needs.
    • Advantages include reduced cost and risk, faster delivery.
    • Disadvantages include requirement compromises and loss of system evolution control.
    • Types of reusable software include stand-alone applications, collections of objects, and web services.

    System Implementation

    • Implementing the designed software.
    • Programming is a core individual activity within this stage.
    • Design and implementation are often interleaved.

    Software Validation

    • Verifies that the system meets the specification and user requirements.
    • Methods include checking, review processes, and testing.
    • System testing involves executing the system with real data.
    • Testing is a significant part of validation.

    Stages of Testing

    • Component testing (individual components, independent).
    • System testing (complete system, emergent properties, important).
    • Customer testing (real customer data, system meets customer needs).

    Software Evolution

    • Software is inherently flexible.
    • Requirements change based on business circumstances.
    • Software must evolve to support these changes.

    Coping with Change

    • Change is inevitable in large software projects (business changes, new technologies, changing platforms).
    • Change leads to rework and new costs, including cost of re-analysis, and implementation.
    • Techniques for handling change include: change anticipation (e.g., prototyping), and change tolerance (e.g., incremental development).

    Coping with Changing Requirements

    • System prototyping: quickly check requirements and design feasibility.
    • Incremental delivery: provide system increments for feedback and experimentation.

    Software Prototyping

    • Initial version of a system to demonstrate concepts and design options.
    • Used in requirements engineering (elicitation and validation), and in design (explore design options and develop UI design).
    • Benefits include: improved system usability, closer match to needs, improved design quality, improved maintainability, and reduced development effort.
    • Types of Prototyping include throwaway.

    Prototype Development

    • Steps involved in prototype creation: (establishing objectives, defining functionality, developing, evaluating).
    • Prototyping may be based on rapid prototyping tools or languages.
    • Prototyping may involve leaving out functionality not well understood, or error checking/recovery.
    • Focus is on functional (required behavior) requirements, not necessarily non-functional (reliability, security).

    Incremental Delivery

    • Delivers system in increments rather than as a whole.
    • User requirements are prioritized.
    • Requirements are often frozen once an increment starts.
    • Benefits include earlier customer value and lower risk of project failure.
    • Easier to adopt and make changes.
    • Disadvantage: Hard to identify common system facilities.
    • Needs a flexible procurement model to handle changing requirements after increments are deployed.

    Process Improvement

    • Enhancing software quality, reducing costs, or accelerating development
    • Method: understanding existing processes, making changes to boost product quality and reduce time.

    Approaches to Improvement

    • Process maturity: focuses on improving process and project management (using better software engineering practices).
    • Agile approach: iterative development reduces overhead (faster delivery of functionality, responsiveness to change).

    Process Improvement Cycle

    • Continuous Cycle: Measure, Analyze, Change.

    Process Improvement Activities

    • Process measurement: baseline metrics to track improvements.
    • Process analysis: identify and address weaknesses, bottlenecks.
    • Process change: implement proposed changes systematically.

    Process Measurement

    • Collecting quantitative process data.
    • Needs clear process standards to measure/determine what to collect.
    • Quantifiable metrics like time taken to complete activities, resources required (effort), defects found.

    Capability Maturity Model (CMM)

    • Levels of maturity in software development processes: from initial (uncontrolled) to optimizing (continuous improvement). (Level 1 to 5).
    • Framework for assessing and improving software development processes.

    Key Points Summary

    • Software processes involve activities to build systems. Models abstract these processes.
    • General process models (e.g., waterfall, incremental, reuse-oriented) structure activities.
    • Requirements engineering defines software specifications.
    • Design and implementation convert specifications into executable code.
    • Software validation checks the system against specifications and user needs.
    • Software evolution allows adjustments to meet changing demands.
    • Coping with change involves prototyping and incremental delivery to handle evolving specifications.
    • Process improvement enhances software quality and development efficiency.

    Studying That Suits You

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

    Quiz Team

    Related Documents

    Description

    This quiz tests your knowledge on the fundamentals of software engineering, including requirements engineering, software validation, and various development models like the waterfall and incremental models. Evaluate your understanding of key concepts and terminology in software processes.

    More Like This

    Requirements Validation Quiz
    10 questions
    Requirements Validation and Verification
    28 questions
    Use Quizgecko on...
    Browser
    Browser