Track progress, take quizzes and save notes on this lesson.

Free forever · no card needed

Start free
Intermediate

Systematic Software Development

4.13.1 Aspects of software development

Aligned to the AQA 7517 specification

Level
Intermediate
Reading time
7 min
Published
13 June 2026
Updated
1 July 2026
On this page
  1. 1.The Software Development Cycle
  2. 2.Analysis
  3. 3.Design
  4. 4.Implementation
  5. 5.Testing
  6. 6.Evaluation
  7. 7.Common Exam Mistakes

Key takeaways

  • Systematic software development has five phases: analysis, design, implementation, testing and evaluation, and agile approaches iterate through the cycle repeatedly rather than completing it once.
  • Analysis defines the problem and establishes requirements, and the AQA spec explicitly includes prototyping and the agile approach as part of this phase.
  • Implementation should solve the critical path first: the features that all other features depend on, such as the database connection, authentication and core data model.
  • Test data falls into three categories: normal (typical valid values), boundary (values at the edges of the valid range and just beyond), and erroneous (invalid data to detect and reject).
  • Acceptance testing is conducted by the intended users, not the developers, to verify the finished system meets the original specification.

The Software Development Cycle

Systematic software development breaks the process of building a computer system into five distinct phases. Each phase informs the next, and modern agile approaches iterate through the cycle repeatedly rather than completing it once.

PhaseCore question
AnalysisWhat does the system need to do?
DesignHow will the system do it?
ImplementationBuild it
TestingDoes it work correctly?
EvaluationDoes it meet the requirements well?

The phases are not always strictly sequential. Agile and iterative approaches cycle through design → implementation → testing repeatedly, delivering working software in increments and refining requirements as understanding grows.

Analysis

The analysis phase defines the problem and establishes what the system must do.

Activities:

  • Define the problem — clarify the situation and identify what a computer system could solve
  • Establish requirements — interview or observe the intended users; document what the system must do (functional requirements) and how it must perform (non-functional requirements: speed, security, usability)
  • Create a data model — identify the entities, attributes, and relationships the system will manage (feeds directly into design of data structures and databases)
  • Prototyping — a prototype (partial, working model) can be shown to users early to check that requirements have been understood correctly

Agile context: in agile development, requirements are not fixed at the start. The analysis phase is revisited at the start of each sprint as understanding deepens and user feedback arrives.

A thorough analysis prevents the most expensive errors — those discovered only after the system has been built.

Design

The design phase decides how the system will work before any code is written.

What must be designed:

Design areaPurpose
Data structuresDecide how data will be organised in memory (arrays, stacks, queues, hash tables, trees)
AlgorithmsSpecify the logic for each task — search, sort, calculate — before implementing
Modular structureBreak the system into subroutines/modules; define interfaces between them
User interfaceWireframes or mock-ups showing layout, inputs, and navigation

Why design before implementing?

Discovering a structural flaw at the design stage costs a diagram. Discovering the same flaw in 5,000 lines of code costs a rewrite. Design separates the "what" from the "how" at a stage where changes are cheap.

Iterative/agile design: design is revisited each iteration. The design for the next increment is done just before implementation begins, not months in advance.

Implementation

The implementation phase translates the design into working code.

Key principles:

  • Implement models and algorithms as code — each algorithm designed in the previous phase is coded, each data structure is declared
  • Iterative process — code is written, tested, and refined in small cycles; errors found early are fixed before they propagate
  • Solve the critical path first — the critical path consists of the features that all other features depend on (e.g. the database connection, authentication, core data model). Implementing these first ensures that blocks are identified early and that dependent work can proceed

Good implementation practices:

  • Use meaningful variable and function names
  • Keep functions small and single-purpose (supports maintainability)
  • Handle edge cases identified during design
  • Write code that is readable by a future developer, not just functional today

Implementation without design produces code that solves the wrong problem efficiently.

Studying this for an exam?

Generate a personalised learning path for this subject. Free to get started.

Create a learning path

Testing

The testing phase verifies that the system works correctly across a wide range of inputs.

Test data categories

CategoryDefinitionExample (age input, valid 0–120)
NormalTypical valid values the system should accept and process correctly25, 40, 67
BoundaryValues at the extreme edges of the valid range (and just beyond)0, 1, 119, 120, 121, −1
ErroneousInvalid data the system should detect and reject"abc", −50, 999, blank

Boundary testing is critical because off-by-one errors are among the most common bugs. Testing 0 and 120 (the limits) as well as 1 and 119 (just inside) and −1 and 121 (just outside) catches errors that typical test data misses.

Acceptance testing

Acceptance testing is conducted by the intended users (not the developers) to verify that the finished system meets the original specification. It tests whether the system does what was agreed at the analysis stage, from the user's perspective.

Acceptance testing is the final quality gate before a system is deployed.

Evaluation

The evaluation phase assesses how well the completed system meets its goals. It is not simply "does it work?" — it measures quality across multiple dimensions.

Evaluation criteria:

CriterionWhat is assessed
FunctionalityDoes the system do everything the specification required? Are all features present and correct?
EfficiencyDoes the system use computational resources (time, memory) appropriately? Does it respond quickly enough for the intended use case?
UsabilityCan intended users operate the system without excessive training? Is the interface clear, consistent, and accessible?
MaintainabilityHow easily can the system be modified to fix bugs or add features? Is the code well-structured and documented?

Evaluation findings feed back into the development cycle. A system rated poorly on usability returns to the design phase for UI revisions. A system found inefficient returns to implementation for algorithmic improvement.

Common Exam Mistakes

1. Describing boundary data as "just outside the valid range"

Boundary data includes values at both edges and just beyond each edge. For an input range 1–100: boundary values are 0, 1, 100, and 101. Testing only the valid extremes (1 and 100) misses the just-outside values, which often reveal off-by-one errors in conditional logic.

2. Confusing acceptance testing with developer testing

Acceptance testing is done by the intended users, not the developers, to check the system meets the specification. Developer testing (unit testing, integration testing) checks that the code works. Acceptance testing checks that the right system was built.

3. Omitting agile/prototyping from the analysis phase

The AQA spec explicitly lists prototyping and the agile approach as part of analysis. Answers describing analysis as purely "gathering requirements" without mentioning iterative/prototyping approaches are incomplete.

4. Treating evaluation as the same as testing

Testing checks correctness (does it produce the right output?). Evaluation judges quality across multiple criteria — functionality, efficiency, usability, maintainability — including aspects that have no pass/fail answer. A system can pass all tests and still be rated poor on usability or maintainability.

Key terms

Analysis
The phase that defines the problem and establishes requirements, including data modelling, prototyping and the agile approach.
Design
The phase that decides how the system will work before code is written, covering data structures, algorithms, modular structure and the user interface.
Implementation
The phase that translates the design into working code, ideally solving the critical path first.
Testing
The phase that verifies the system works correctly across a wide range of inputs using normal, boundary and erroneous data.
Evaluation
The phase that assesses how well the completed system meets its goals across functionality, efficiency, usability and maintainability.
Critical path
The features that all other features depend on, such as the database connection, authentication and core data model, implemented first.
Normal data
Typical valid values the system should accept and process correctly.
Boundary data
Values at the extreme edges of the valid range and just beyond each edge, used to catch off-by-one errors.
Erroneous data
Invalid data the system should detect and reject.
Acceptance testing
Testing conducted by the intended users, not the developers, to verify the finished system meets the original specification.

Frequently asked questions

Normal data is typical valid values the system should accept and process correctly. Boundary data is values at the extreme edges of the valid range and just beyond them. Erroneous data is invalid data the system should detect and reject. For a valid range 0–120, boundary values include 0, 1, 119, 120, 121 and −1.

Acceptance testing is done by the intended users, not the developers, to check the finished system meets the specification agreed at analysis. Developer testing, such as unit and integration testing, checks that the code works. Acceptance testing checks that the right system was built.

Testing checks correctness, that is whether the system produces the right output. Evaluation judges quality across multiple criteria, functionality, efficiency, usability and maintainability, including aspects with no pass/fail answer. A system can pass all tests yet still be rated poor on usability or maintainability.

Generate revision on any topic you study

Type any topic you're studying and Aicademy generates a complete lesson, quiz, and flashcard set, personalised to your level.

Lessons on anything

Structured, level-matched lessons on any topic you study

Practice quizzes

Find out what you actually know before the exam does

Flashcard sets

Lock in key concepts with instant revision cards

Ask Aica

Stuck on something? Get a clear explanation, any time

Prev

Functional Programming in Practice

Related lessons

7 min

6 min

Top students don’t revise more. They revise what counts.

Start revising free

Free to start. No card needed.