The large problem (school management system) is broken down into smaller, more manageable sub-problems [1], for example: student records, timetabling, attendance tracking, staff payroll [1]. Each sub-problem can then be solved individually and independently [1], making the whole system easier to design, code, and test.