Software Engineering
Software Engineering
Software engineering is the disciplined approach to designing, developing, testing, and maintaining software systems. A-Level covers the lifecycle models, methodologies, and quality assurance processes that ensure software meets its requirements reliably and maintainably.
Topics Covered
Software Development Lifecycle
- Waterfall model — sequential phases: requirements design implementation testing deployment maintenance
- Agile methodologies — iterative development, sprints, stand-ups, user stories
- Spiral model — risk-driven, iterative with prototyping
- Rapid Application Development (RAD) — quick prototyping and iterative feedback
- Comparison of models — when each is appropriate; trade-offs between rigour and flexibility
Requirements and Design
- Functional and non-functional requirements — what the system does vs. how well it does it
- User stories and use cases — capturing requirements from the user’s perspective
- Structure charts — top-down design, decomposition
- Data flow diagrams (DFDs) — modelling how data moves through a system
Testing
- Testing types — unit, integration, system, acceptance
- Black-box testing — testing from specifications; equivalence partitioning, boundary value analysis
- White-box testing — testing from code; statement coverage, branch coverage
- Test data — normal, boundary, erroneous, extreme data
- Traceability — linking test cases back to requirements
Development Practices
- Version control — tracking changes, branching, merging
- Code review — peer review for quality and knowledge sharing
- Documentation — user guides, technical documentation, maintenance manuals
- Maintenance types — corrective, adaptive, perfective
Study Tips
- Compare lifecycle models with specific scenarios — e.g., “A safety-critical medical system” suits waterfall; “A startup app with changing requirements” suits agile.
- Learn testing types by example — given a function, identify which tests are unit, integration, etc.
- Practise equivalence partitioning and boundary value analysis — exam questions often provide a specification and ask you to design test cases.
- Understand the maintenance types — corrective (fixing bugs), adaptive (new environment), perfective (new features). Know which is which.
- Draw structure charts and DFDs — visual design tools are frequently examined.
How to Use These Notes
Start with the software development lifecycle, then move to testing. Each page provides definitions, comparison tables, worked examples, and exam-style questions.