Know and understand the components that must appear in the technical documentation for a system or programme, as required by Cambridge IGCSE ICT (Section 7.5). The notes also show how each component supports the relevant stage of the Systems Development Life Cycle (SDLC) and how to record an evaluation of the finished solution.
Technical documentation is a written record that describes a system or programme in sufficient detail for developers, users and maintainers to understand, use, test, modify and evaluate it. It is produced during several SDLC stages – mainly Analysis, Design, Development & Testing, Implementation and Evaluation – and is examined in the practical papers.
| SDLC Stage | Documentation Component(s) |
|---|---|
| Analysis | Purpose of the system, Limitations, High‑level System flowchart, Initial evaluation criteria |
| Design | Detailed System flowchart, Hardware & software requirements, File‑structure diagrams, List of variables, Input & output specifications, Validation routine design |
| Development & Testing | Program language, Program listing, Program flowchart/algorithm, Validation routines, Sample runs / test cases |
| Implementation | User documentation (how to install/run), Version control details |
| Evaluation | Evaluation table (performance, usability, security, cost‑benefit), Updated limitations, Recommendations for future development |
| Component | What to Include |
|---|---|
| Purpose of the system / programme | Brief statement of the problem, objectives and scope. Write in plain language and place at the very start. |
| Limitations of the system | Constraints that affect performance, hardware, legal/security, user skill, etc. Present in a table. |
| Program language | Name of the language and exact version (including any required libraries or runtime). |
| Program listing | Full source code, correctly indented, with comments on every module/function and on any complex logic. |
| Program flowchart / algorithm | Standard flow‑chart symbols (process, decision, input/output, connector) or clear pseudo‑code showing the logical sequence. |
| System flowchart | High‑level diagram showing the interaction between the programme, users, hardware, external systems and data stores. |
| Hardware and software requirements | Minimum and recommended specifications in a table – CPU, RAM, disk, OS (including version), required libraries/runtime, and any peripheral devices. |
| File structures | List of all files used and a layout diagram for each (field names, data type, length, delimiter, record length). |
| List of variables | Table of every variable – name, data type, initial value and purpose. |
| Input format | Table specifying each input field – type, length/range, format and validation rule. |
| Output format | Sample screen, report or file layout – headings, column widths, alignment, special characters. |
| Validation routines | Code fragments or pseudo‑code that check each input field for type, range, presence and format. |
| Sample runs / test runs | At least three test cases (normal, boundary, error) showing input, expected output and actual output. |
| User documentation (optional but recommended) | Step‑by‑step guide on installing/running the programme, required inputs, interpreting outputs and handling errors. |
| Evaluation of the solution | Table summarising how well the system meets the original objectives, performance, usability, security and cost‑benefit. Include any new limitations discovered during testing. |
| Version control details | Date, author, revision number and brief description of changes. |
Answer “Why does this system exist?” and “What does it achieve?”.
Purpose: To calculate the monthly payroll for a small business (up to 20 employees). The programme computes gross pay, tax deductions, National Insurance and net pay, and generates a printable payslip for each employee.
List known constraints in a clear table.
| Type | Limitation | Example |
|---|---|---|
| Performance | Maximum records per run | Up to 500 employee records |
| Hardware | Supported OS | Windows 10 (64‑bit) or later |
| Legal / Security | Data protection | Payroll files are stored in plain text – no encryption |
| User skill | Required knowledge | Operator must be familiar with CSV import |
Language: Python 3.11 (IDLE 3.11.4) – requires the datetime standard library.Full, commented source code (indentation shown).
# payroll.py – Python 3.11
# Calculates monthly payroll for a small business
import datetime
# ---------- Validation routines ----------
def validate_name(name):
"""Name must be 1‑30 alphabetic characters (spaces or hyphens allowed)."""
import re
return bool(re.fullmatch(r"[A-Za-z\s\-]{1,30}", name))
def validate_hours(hours):
"""Hours must be a float between 0.0 and 200.0."""
return 0.0 <= hours <= 200.0
def validate_rate(rate):
"""Rate must be a float between £5.00 and £100.00."""
return 5.00 <= rate <= 100.00
# ---------- Core calculation functions ----------
def calculate_gross(hours, rate):
"""Return gross pay for given hours and hourly rate."""
return hours * rate
def calculate_tax(gross):
"""Apply 20 % tax if gross > £1 000, otherwise 10 %."""
return gross * (0.20 if gross > 1000 else 0.10)
# ---------- Main programme ----------
if name == "main":
# Input – with validation
employee = input("Enter employee name: ").strip()
while not validate_name(employee):
print("Invalid name – 1‑30 letters, spaces or hyphens only.")
employee = input("Enter employee name: ").strip()
hrs = float(input("Hours worked: "))
while not validate_hours(hrs):
print("Invalid hours – must be between 0.0 and 200.0.")
hrs = float(input("Hours worked: "))
rate = float(input("Hourly rate (£): "))
while not validate_rate(rate):
print("Invalid rate – must be between £5.00 and £100.00.")
rate = float(input("Hourly rate (£): "))
# Calculations
gross = calculate_gross(hrs, rate)
tax = calculate_tax(gross)
net = gross - tax
# Output – printable payslip
print("\n-------------------------------------------------")
print(f" PAYSLIP – {datetime.date.today():%B %Y}")
print("-------------------------------------------------")
print(f"Employee : {employee}")
print(f"Gross Pay: £{gross:,.2f}")
print(f"Tax ({'20%' if gross > 1000 else '10%'}): £{tax:,.2f}")
print(f"Net Pay : £{net:,.2f}")
print("-------------------------------------------------")
Standard flow‑chart symbols (process, decision, input/output, connector) are used. Below is a concise pseudo‑code version that satisfies the syllabus.
START
READ employee, hours, rate
WHILE name invalid → DISPLAY error → RE‑READ name
WHILE hours invalid → DISPLAY error → RE‑READ hours
WHILE rate invalid → DISPLAY error → RE‑READ rate
gross ← hours × rate
IF gross > 1000 THEN tax ← gross × 0.20
ELSE tax ← gross × 0.10
net ← gross – tax
DISPLAY payslip (employee, gross, tax, net)
END
High‑level diagram (textual representation) showing the interaction between user, programme, files and printer.
[User] ──► (Input screens) ──► [Payroll Programme] ──► (Read/Write) ──► [employees.csv]
│
└─► [payroll.log]
│
└─► (Print) ──► [Printer] → Payslip
| Component | Minimum | Recommended |
|---|---|---|
| CPU | Intel i3 (2 GHz) | Intel i5 (3 GHz) or higher |
| RAM | 4 GB | 8 GB |
| Disk Space | 500 MB | 1 GB |
| Operating System | Windows 10 (64‑bit) | Windows 11 or Ubuntu 22.04 (64‑bit) |
| Runtime / Libraries | Python 3.8, standard library only | Python 3.11, datetime and re modules |
| Peripherals | Keyboard & mouse, printer (optional) | Colour laser printer for high‑quality payslips |
Describe every file and provide a simple layout diagram for each.
[General] and [Paths]. Stores default folder locations.employees.csv layout (ASCII diagram)
+--------------------------------------------------------------+
| Record (1 line) |
+-------------------+-------------------+---------------------+
| EmpID (5 chars) | Name (30 chars) | Hours (5,2) | Rate |
| (e.g., 00001) | (e.g., John Smith)| (e.g., 160.00) | 12.50|
+-------------------+-------------------+---------------------+
Fields are separated by commas:
00001,John Smith,160.00,12.50
payroll.log layout
YYYY‑MM‑DD HH:MM:SS – Processed 23 records – Success
2025‑03‑31 14:22:10 – Processed 23 records – Success
| Variable | Data Type | Initial Value | Purpose |
|---|---|---|---|
| employee | str | "" | Name of the employee being processed. |
| hrs | float | 0.0 | Hours worked in the month. |
| rate | float | 0.0 | Hourly pay rate (£). |
| gross | float | 0.0 | Gross pay before deductions. |
| tax | float | 0.0 | Tax amount to be deducted. |
| net | float | 0.0 | Net pay after deductions. |
| Field | Type | Length / Range | Validation Rule |
|---|---|---|---|
| Employee name | String | 1‑30 characters | Alphabetic, spaces or hyphens only; not blank. |
| Hours worked | Numeric (float) | 0.0‑200.0 | Positive number; ≤ 200.0. |
| Hourly rate | Numeric (float) | £5.00‑£100.00 | Positive number with two decimal places; within range. |
Sample payslip printed to screen (or printer).
-------------------------------------------------
PAYSLIP – March 2025
-------------------------------------------------
Employee : John Smith
Gross Pay: £1 250.00
Tax (20%): £250.00
Net Pay : £1 000.00
-------------------------------------------------
def validate_name(name):
import re
return bool(re.fullmatch(r"[A-Za-z\s\-]{1,30}", name))
def validate_hours(hours):
return 0.0 <= hours <= 200.0
def validate_rate(rate):
return 5.00 <= rate <= 100.00
| Test case | Input | Expected output | Actual output |
|---|---|---|---|
| Normal case | Name: Alice Hours: 160 Rate: 12.50 | Gross £2 000.00, Tax £400.00, Net £1 600.00 | Matches expected |
| Boundary case (max hours) | Name: Bob Hours: 200 Rate: 10.00 | Gross £2 000.00, Tax £400.00, Net £1 600.00 | Matches expected |
| Error case (invalid rate) | Name: Carol Hours: 120 Rate: -5 | Error message “Invalid rate – must be between £5.00 and £100.00.” Programme re‑prompts. | Matches expected |
python --version).payroll.py and place it in a folder together with employees.csv (if you wish to use batch input).payroll.py or run python payroll.py from a command prompt.payroll.log.| Evaluation Criterion | Result | Comments / Recommendations |
|---|---|---|
| Functionality | Met | All required calculations performed correctly. |
| Performance | Met | Processes up to 500 records in < 2 seconds on minimum hardware. |
| Usability | Partly met | Command‑line interface is simple but could be improved with a GUI. |
| Security | Not met | Payroll data stored in plain text; recommend adding AES encryption. |
| Cost‑benefit | Met | Free open‑source tools; low operating cost. |
Date: 05‑01‑2026
Author: A. Teacher
Revision: 1.0
Changes: Initial production of technical documentation for payroll system.
Your generous donation helps us continue providing free Cambridge IGCSE & A-Level resources, past papers, syllabus notes, revision questions, and high-quality online tutoring to students across Kenya.