421.2 System design

Translate requirements and specifications into a secure software structure that meets user needs and resists vulnerabilities.

Overview

The design phase transforms gathered requirements and defined specifications into a concrete plan for building the software. In secure software development, this phase is crucial for preventing vulnerabilities by incorporating protection mechanisms into the system structure before coding begins.

Effective design ensures that functionality, user experience, and security are considered together. Poor design can introduce flaws that are difficult to fix later and may undermine privacy, trust, or compliance.

Targets

In this topic, students learn to:

  • Describe the role of design in the secure software lifecycle

  • Apply secure design principles to system planning

  • Use modelling tools to represent structure and data flows

  • Evaluate how design choices affect system behaviour and security

Syllabus references

Secure software architecture

Designing software

  • Interpret and apply fundamental software development steps to develop secure code, including: – design

Purpose of secure design

Design decisions affect every layer of a system—from how data flows through components to how users interact with the interface. Key goals include:

  • Organising components logically and efficiently

  • Defining clear data flows and access boundaries

  • Planning for errors, exceptions, and misuse

  • Selecting appropriate tools and structures to mitigate risks

Security-aware design prevents many common vulnerabilities by eliminating ambiguity, enforcing constraints, and limiting exposure.

Modelling techniques

Several modelling tools are used to formalise and communicate design decisions:

  • Data flow diagrams (DFDs) – Show how data moves between components, external entities, and storage

  • Structure charts – Represent program modules and their hierarchical relationships

  • Use case diagrams – Describe system interactions from a user perspective

  • Refinement diagrams – Break down complex problems into smaller, manageable functions

  • Wireframes – Plan the user interface layout and navigation

These tools help uncover hidden risks, such as excessive data exposure, overly complex dependencies, or missing checks.

Designing for security

Secure software design involves:

  • Applying design principles such as least privilege, defence in depth, and secure defaults

  • Identifying potential threats and planning controls (e.g. rate limiting, validation, access controls)

  • Mapping out how errors, unexpected inputs, and edge cases will be handled

  • Considering user capability, accessibility, and behaviours that may introduce risk

Good design balances functionality, usability, and protection.

Output of the design phase

The outcome of this phase is a set of artefacts (often visual and textual) that define:

  • System architecture and component responsibilities

  • Data structures and control flow

  • Security features and trust boundaries

  • Requirements traceability (linking back to earlier stages)

These artefacts guide development and serve as reference points during testing, maintenance, and future upgrades.

Last updated

Was this helpful?