Design and Development
Core concepts
The design and development domain covers how a digital solution moves from a stated need to a tested product. Candidates must understand the software development life cycle stages: requirements analysis, design, implementation, testing, deployment and maintenance, and that these are iterative rather than strictly linear. Know how to write functional requirements (what the system must do) and non-functional requirements (performance, usability, security, portability).
Design tools you must recognise include data flow diagrams (external entities, processes, data stores, data flows), structure charts, flowcharts (terminator, process, decision, input/output symbols), wireframes and user stories. Be able to explain modularity, cohesion (how focused a module is) and coupling (how dependent modules are): good design aims for high cohesion and low coupling. Also know top-down versus bottom-up development and the role of prototyping.
Testing types are frequently examined: unit, integration, system and acceptance testing, plus black-box versus white-box approaches. Maintenance categories (corrective, adaptive, perfective) often appear.
Traps
- Treating the SDLC as strictly sequential; requirements commonly change after testing.
- Mixing up cohesion and coupling, or assuming low coupling means no interfaces at all.
- Confusing a flowchart decision symbol (diamond) with a process symbol (rectangle).
- Calling user acceptance testing the same as system testing; acceptance is done against user needs.
- Forgetting that documentation and evaluation are part of development, not optional extras.
Worked example
A school wants an app to book equipment. Functional requirement: "A student can reserve an item for a chosen date." Non-functional requirement: "The reservation list loads within two seconds on a school laptop." Rule of thumb: if a requirement cannot be tested, rewrite it until it can.