Problem Specification: Pinning Down the Problem Before Designing a Solution
A problem specification is a written account of the problem a solution must solve, produced before any design or code exists.
It is what turns a vague complaint into something a programmer can build against and a client can check.
A full specification usually covers six elements:
Problem statement
Constraints and limitations
Objectives and goals
Input specifications
Output specifications
Evaluation criteria
Tip
Every line of a specification should be checkable by someone other than its author.
If a client cannot tell whether a statement has been met, it is not ready to go in yet.
The repair is almost always a number: a time, a count, a percentage or a deadline.
Problem Statement: Naming the Fault and Its Cost
A problem statement says exactly what is going wrong and why that matters.
A strong statement is concise and specific, and it answers both the what and the why of the problem.
It also quantifies the impact, so the size of the problem is on record and can be compared against the finished system.
Example
Weak: “Our school’s database system is outdated.”
“Outdated” could mean slow queries, a poor interface, no integration with other systems, or too little storage.
It also gives no reason why being outdated is harmful.
Strong: “Teachers spend an average of 15 minutes generating each student’s progress report because the database does not support automated report templates, which makes term reports late and student records unreliable.”
This names the precise fault (no automated templates), measures the impact (15 minutes per report), and states the consequence for the client.
Also strong: “Students sign in on paper attendance sheets that staff then enter by hand, delaying attendance records by up to 24 hours and introducing data entry errors.”
The measurable 24-hour delay is what makes this testable later: either the new system records attendance in minutes or it does not.
Constraints and Limitations: What the Solution Is Not Allowed to Do
A constraint is a restriction or boundary that limits what the solution can be.
They are what make the incoming data compatible with the processing that follows.
A usable specification names the source of each field, its data type and format, and any validation rule it has to pass.
Example
Input: usage logs and written feedback from an online learning platform.
Formats: numerical values such as average session length in minutes, categorical values such as login success or failure, and open-ended text comments.
Characteristics: every field relates to system performance or user experience, and each record carries a user account reference so support can be targeted.
This is enough for a developer to choose data types and write validation before a single record arrives.
Output Specifications: The Results Coming Out
Output specifications state what information the system produces and in what form.
Common formats are dashboards, reports, alerts and charts.
They also record who each output is for, since teachers and students rarely need the same view of the same data.
Example
An online revision platform sends weekly reports to students and teachers.
Dashboards show questions attempted, time spent per subject, and scores against the class average.
Written summaries name recurring weaknesses, such as repeated errors in rearranging equations.
Alerts fire automatically when a student’s performance drops sharply, so a teacher can step in within days rather than at the end of term.
Teachers can filter any report by subject, timeframe or student group, which is why the same stored data serves both audiences.
Evaluation Criteria: How Success Will Be Judged
Evaluation criteria are the benchmarks used to decide whether the finished system solved the problem it was built for.
Five criteria cover most solutions:
Effectiveness: does the system do the job described in the problem statement?
Usability: can the intended users work it without training?
Maintainability: can it be updated when the requirements change?
Example
A school launches a digital homework submission system and fixes its benchmarks before switching it on.
Effectiveness: students upload assignments reliably and teachers mark them in place.
Efficiency: the system handles dozens of submissions in the minutes before a deadline without timing out.
Accuracy: automated marking applies the correct rubric every time.
Usability: teachers and students rate the interface without needing a training session.
Maintainability: IT staff can update it when coursework requirements change.
Worked Specification: A School Canteen Pre-Order System
The canteen throws food away most days and runs out of the hot option before the second lunch sitting.
Written out as a full specification, the same situation looks like this.
Problem statement
“The canteen prepares a fixed 400 meals a day, discards an average of 70 unsold meals, and sells out of the hot option before the second sitting on three days in five, so around 18% of food is wasted while some students get no choice at all.”
Constraints and limitations
No new hardware: students order on their own phones through the school login that already exists.
Orders close at 09:30, because the kitchen needs two hours of preparation before the first sitting.
Objectives and goals
Objective: cut canteen food waste while giving every student the meal they chose.
Goal: bring discarded meals from 70 down to under 20 a day within one term, with the hot option still available at the second sitting on at least four days in five.
Input specifications
Student ID as an integer, meal choice as one of four categories, order timestamp, and a dietary flag as a Boolean.
One order per student per day, with a later submission overwriting the earlier one.
Output specifications
A kitchen report at 09:30 listing the count of each meal category, on screen and printed.
A confirmation message to each student, and an alert to the canteen manager if any category passes its prepared maximum.
Evaluation criteria
Effectiveness: waste falls below 20 meals a day.
Efficiency: the 09:30 report generates in under five seconds for 400 orders.
Accuracy: the category counts in the report match the stored orders exactly.
Usability: a student can place an order in under 30 seconds.
Maintainability: adding a fifth meal category needs no change to the reporting code.
Common Mistake
The commonest fault is a specification built from opinions rather than measurements.
“The system should be fast” cannot be tested, while “the report generates in under five seconds for 400 orders” can.
The second fault is goals that never mention the core function of the solution.
A canteen pre-order system whose goals only promise a nicer interface has lost sight of the wasted food it exists to fix.
The third fault is filing a constraint as an objective.
A fixed $8,000 budget is a boundary on the solution, not something the solution is trying to achieve.
Answering a Specification Question in the Exam
B1.1.1’s command term is Construct, so the marks are for writing a specification, not for describing what one is.
Answer inside the scenario in the stem, naming the organisation, its data and its figures, because a specification that would fit any school earns nothing.
Give each element one sentence a client could sign, and make every figure in a goal traceable to a figure in the problem statement.
Active recall
Name the six elements of a problem specification.
What is the difference between an objective and a goal?
Rewrite “the system should be easy to use” as a testable evaluation criterion.
Which three groups do constraints usually fall into?
Why must an input specification give a data format and not just a data source?