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
andProcess 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
- Measurement – collect baseline data
- Analysis – identify weaknesses, bottlenecks
- Change – introduce process changes
- 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:
Level | Description |
---|---|
Initial | Essentially uncontrolled |
Repeatable | Basic project management defined & used |
Defined | Process management strategies established |
Managed | Quality management strategies established |
Optimizing | Continuous process improvement strategies implemented |
graph TD A[Initial] --> B[Repeatable] --> C[Defined] --> D[Managed] --> E[Optimizing]