Note

These notes are taken after the fact based on the slides. Anything mentioned only in lecture is not included. Covers Week 1 material (Software Processes and Process Improvement).

Software Processes

General Process Models

  • Abstract representations of how software is produced
  • Three main models:
    • Waterfall model
    • Incremental development
    • Reuse-oriented development

Waterfall Model

  • Sequential phases: requirements → design → implementation → verification → maintenance
  • Strengths: easy to manage, clear documentation
  • Weaknesses: inflexible to change, late delivery of working software
flowchart TD
    R[Requirements] --> D[Design]
    D --> I[Implementation]
    I --> V[Verification]
    V --> M[Maintenance]

Incremental Development

  • System delivered in small, usable increments
  • Each increment builds on the last
  • Benefits: early delivery, user feedback, reduced risk
  • Drawback: difficult to design common facilities when requirements evolve
flowchart TD
    A[Increment 1] --> B[Increment 2] --> C[Increment 3] --> D[Final System]

Reuse-Oriented Development

  • Build systems from pre-existing components
  • Stages: specification → component discovery/evaluation → requirements refinement → configuration → adaptation/integration
  • Requires strong component libraries

Requirements Engineering Process

  • Activities:
    • Requirements elicitation
    • Requirements specification
    • Requirements validation
  • Produces a requirements document that guides design & implementation
flowchart LR
    E[Elicitation] --> S[Specification] --> V[Validation]

Design Process

  • Transform requirements → software architecture + detailed design
  • Activities:
    • Abstract design (architecture, modules)
    • Interface specification
    • Component design

Testing

  • Stages of testing:
    • Unit testing (individual components)
    • Integration testing (combined components)
    • System testing (whole system)
    • Acceptance testing (with users)
  • Plan-driven processes emphasize phased, structured testing
flowchart TD
    U[Unit] --> I[Integration] --> S[System] --> A[Acceptance]

Software Evolution

  • Systems must evolve to remain useful
  • Evolution activities:
    • Bug fixing
    • Enhancements
    • Adaptation to new environments
  • Often costs more than initial development

Software Prototyping

  • Prototype: early version of system used to test ideas
  • Uses:
    • Help elicit/validate requirements
    • Explore design options (esp. UI)
    • Test critical functionality
  • Benefits:
    • Improved usability
    • Closer alignment with user needs
    • Better design quality
    • Reduced development effort
  • Drawbacks:
    • Can mislead stakeholders if mistaken for the final system

Incremental Delivery

  • Deliver system in increments, each with partial functionality
  • Prioritize high-value requirements in early increments
  • Advantages:
    • Early value delivery
    • Acts as prototype for feedback
    • Lower project failure risk
  • Problems:
    • Hard to identify shared facilities without full specification
    • Procurement/contracts often expect complete specs up front

Process Improvement

Motivation

  • Improve quality, reduce costs, speed up development
  • Approaches:
    • Process maturity: better project management + engineering practices
    • Agile approach: iterative, lightweight, responsive to change

The Process Improvement Cycle

  1. Measurement – collect baseline data
  2. Analysis – identify weaknesses, bottlenecks
  3. Change – introduce process changes
  4. Repeat (continuous improvement)
flowchart TD
    M[Measurement] --> A[Analysis] --> C[Change] --> M

Process Measurement

  • Collect quantitative data where possible:
    • Time (calendar time/effort)
    • Resources (person-days, hardware use)
    • Events (number of defects found)
  • Use measurements to assess improvements, but organizational goals should drive changes (not metrics alone)

Capability Maturity Model (SEI)

Levels of process maturity:

LevelDescription
InitialEssentially uncontrolled
RepeatableBasic project management defined & used
DefinedProcess management strategies established
ManagedQuality management strategies established
OptimizingContinuous process improvement strategies implemented
graph TD
    A[Initial] --> B[Repeatable] --> C[Defined] --> D[Managed] --> E[Optimizing]