Software engineering c2_241007_080600

SOFTWARE PROCESS MODELS

  • A software process model is a simplified representation of the software process.

THE WATERFALL MODEL

  • Represents fundamental process activities such as:

    • Requirements specification

    • Software design

    • Implementation

    • Testing

  • Activities are separated into distinct phases.

INCREMENTAL DEVELOPMENT

  • Interleaves specification, development, and validation activities.

  • Develops the system in versions (increments), where each version adds functionality to the previous one.

Incremental Development vs Waterfall Model

  • Advantages of Incremental Development:

    • Reduced cost for accommodating changing customer requirements.

    • Less analysis and documentation required compared to the waterfall model.

    • Easier to obtain customer feedback from demonstrations rather than design documents.

    • Rapid delivery and deployment, allowing customers to use early versions of the software, creating early value.

Incremental Development Details

  • Most common approach for developing application systems today.

  • Can be:

    • Plan-driven (increments identified in advance)

    • Agile (early increments defined, later based on progress and priorities)

  • Management Perspective Challenges:

    • Visibility issues during the process.

    • Potential degradation of system structure.

Large, Complex Systems Concerns

  • Specifically challenging for large systems due to:

    • Different teams working on various parts.

    • Necessity of a stable architecture and clear team responsibilities defined in advance.

REUSE-ORIENTED SOFTWARE ENGINEERING

  • Focuses on integrating existing reusable components instead of developing new ones from scratch.

PROCESS ACTIVITIES: SOFTWARE SPECIFICATION

  • Requirements engineering processes include:

    • Feasibility Study: Assessing user needs against current technologies for cost-effectiveness and feasibility.

    • Requirements Elicitation and Analysis: Deriving system requirements through various analyses, discussions, and observations.

    • Requirements Specification: Documenting user and system requirements clearly.

    • Requirements Validation: Ensuring that the requirements are realistic, consistent, and complete.

Requirements Engineering Details

  • Feasibility Reports relate to how the system can operate within budgetary and technological constraints.

  • Requirements Documents summarize user (abstract statements) and system (detailed functionalities) requirements.

PROCESS ACTIVITIES: SOFTWARE DESIGN AND IMPLEMENTATION

  • Implementation involves converting specifications into an executable system.

PROCESS ACTIVITIES: SOFTWARE VALIDATION

  • Validation ensures that software conforms to specifications and meets customer expectations.

Alpha vs Beta Testing

  • Alpha Testing: Continuous testing for custom systems until agreement on functionality between developer and client.

  • Beta Testing: Involves releasing the system to potential customers to detect unforeseen errors and gather problem reports before general availability.

V-MODEL

  • Model indicating detailed connections between requirements and testing activities at various stages:

    • Requirements Specification to Testing Plans and System Integration.

PROCESS ACTIVITIES: SOFTWARE EVOLUTION

  • Evolution processes to manage system changes include:

    • Define system

    • Assess existing systems

    • Propose modifications

    • Implement changes

COPING WITH CHANGE

  • Change management must address inevitable adjustments in large projects due to:

    • External pressures and changing priorities.

    • Change Avoidance: Focus on activities that anticipate required changes.

    • Change Tolerance: Make processes adaptable to accommodate changes at a lower cost.

PROTOTYPING

  • Involves creating preliminary models to define and evaluate system objectives prior to actual development.

INCREMENTAL DELIVERY

  • System development proceeds by outlining, assigning, designing, validating, and integrating incremental components until a full system is achieved.

BOEHM'S SPIRAL MODEL

  • A risk-driven model that emphasizes:

    • Identifying objectives and constraints.

    • Risk analysis and evaluations at various iterations.

    • Operational prototypes to verify requirements progressively.