- ✓System design translates what the system must do (requirements) into how it will do it (architecture and detailed design).
- ✓High-level design decisions including technology stack, data storage approach, and integration patterns have long-lasting consequences and must be made carefully.
- ✓Data flow diagrams model how data moves through a system, identifying processes, data stores, external entities, and the flows between them.
- ✓Interface design ensures that the system communicates effectively with users and with other systems it interacts with.
- ✓Design documentation provides the blueprint for implementation and is an essential reference throughout testing and maintenance.
Listen to the full episode inside the course. Enrol to access all 80 episodes, plus assignments, tutor support and Student Finance funding.
Start learning →Alex: Today we're covering how to design a system that genuinely meets requirements. Sam, what's the art of good systems design?
Sam: Good systems design is about making the right decisions at the right level of detail, in the right order, and documenting those decisions so that they can be understood, reviewed, and implemented by others. It's both a technical and a communication discipline. The design must be technically sound, but it also has to be expressible in a way that stakeholders can validate and developers can implement.
Alex: What's the starting point for design?
Sam: The requirements. Every design decision should be traceable back to a requirement. If you can't point to a requirement that justifies a design element, you should question whether that element needs to be there. This traceability is particularly important when the system is evaluated against its requirements, which happens in testing and user acceptance.
Alex: What are the different levels of design?
Sam: There are typically three levels. Conceptual design establishes the high-level architecture: what the major components are and how they relate to each other. At this level you're making decisions like 'this will be a three-tier web application with a React front end, a Python API layer, and a PostgreSQL database'. Logical design adds detail: the data model, the API specification, the user interface wireframes, the authentication and authorisation model. Physical design gets down to implementation specifics: which server, which cloud region, which specific framework versions.
Alex: How do data flow diagrams support design?
Sam: Data flow diagrams, or DFDs, are a powerful tool for understanding and communicating how data moves through a system. They show processes, data stores, external entities, and the flows of data between them. A context diagram, the highest-level DFD, shows the system as a single process with all its external inputs and outputs. Decomposing this into lower-level diagrams reveals the internal processes and data stores. DFDs help analysts and designers understand and communicate the data processing logic before committing to specific implementation decisions.
Alex: And interface design?
Sam: Interface design covers both user interfaces and system interfaces. User interface design, or UX design, focuses on making the system usable and intuitive for the people who will interact with it directly. Wireframes and mockups are the primary tools. System interface design covers how the system will interact with other systems: the format and protocol of API calls, the structure of data exchanges, and the error handling between systems.
Alex: What makes design documentation genuinely useful?
Sam: Clarity, consistency, and completeness. Ambiguous design documentation leads to developers making assumptions that may not align with the intended design. Inconsistent notation or terminology within the same document creates confusion. Missing information forces developers to make decisions that should have been made at the design stage. Good design documentation anticipates the questions that implementers will have and answers them.
Alex: Thanks Sam. Next we look at requirements elicitation and specification.