SLIDE 1
CSZone.co.uk
Click to advance · Arrow keys also work
AQA 8525 · Section 3.8 · Software Development

Analysis
& Design

Problem Decomposition · Requirements · Design · Algorithms · Structure Charts

CSZoneAQA GCSE Computer Science 8525
Analysis — Understanding the Problem

Before Writing a Single Line of Code

Decomposition — breaking a complex problem into smaller, manageable sub-problems that can be solved individually
Identifying requirements — what must the software do? Gathered through interviews, surveys, and observation of existing systems
Functional requirements — what the system must do (e.g. "allow users to log in")
Non-functional requirements — how it must perform (e.g. "must load in under 2 seconds", "must work on mobile")
Design — Planning the Solution

Designing Before Building

Structure charts — show how a problem is decomposed into modules/subroutines. Hierarchical diagram showing relationships between sub-tasks.
Algorithms — designed using pseudocode or flowcharts before coding begins. Allows logic to be checked without worrying about syntax.
UI design / wireframes — sketch out the user interface. Shows layout before any programming.
Why design first?Fixing problems in design is much cheaper than fixing them in finished code.
Computational Thinking in Analysis

Breaking Problems Down

Decomposition — split the problem into parts (e.g. login system = input, validation, database check, session management)
Abstraction — focus on essential details, ignore irrelevant ones. What data is needed? What can be ignored?
Pattern recognition — identify parts of the problem that are similar to problems solved before (reuse solutions)
Algorithmic thinking — design a step-by-step solution that a computer can follow
Exam Practice

Have a go at this question

AQA-style question
Explain what is meant by decomposition and why it is a useful technique when solving programming problems.
3 marks
Decomposition means breaking a complex problem into smaller, more manageable sub-problems [1]. Each sub-problem can then be solved independently [1], making the overall problem easier to understand and allowing different team members to work on different parts simultaneously [1].
Key Takeaways

What to Remember

Analysis: understand the problem; gather functional and non-functional requirements
Design: structure charts, pseudocode algorithms, UI wireframes — plan before coding
Decomposition: break complex problems into smaller parts
Abstraction: focus on what matters, ignore unnecessary detail