Software Engineering and System Development
Software Engineering and System Development tests the life cycle: requirements, design notation, testing strategy and change management.
Core rules
- Waterfall is sequential with frozen requirements; agile delivers in iterations and welcomes late change. Neither is universally better - stable, regulated projects often suit plan-driven models.
- Functional requirements say what the system does; non-functional requirements constrain it (performance, security, usability, availability).
- UML: use-case diagrams show actors and goals; class diagrams show attributes, methods, associations and multiplicity; sequence diagrams show time-ordered messages; activity diagrams show control flow.
- Testing levels: unit → integration → system → acceptance. The V-model pairs each level with a design stage.
- Black-box techniques: equivalence partitioning and boundary values. White-box: statement and branch coverage.
- Verification asks “did we build it right”, validation “did we build the right thing”.
- Git: commit locally, push and pull to a remote, branch to isolate work, merge and resolve conflicts.
Worked example
grade(p) returns A for 90–100, B for 75–89, C for 0–74 and an error otherwise. Partition and boundary tests: −1, 0, 74, 75, 89, 90, 100, 101. Reasoning: one representative per partition plus each boundary catches the classic off-by-one between > and >=, which testing only typical values such as 50 and 95 would miss.
Traps
- Testing only happy paths and no boundaries.
- Treating a successful test run as proof of correctness - it only shows absence of detected faults.
- Confusing unit tests (one function) with integration tests (interfaces between modules).
- Thinking UML is code, or that agile means no documentation or no design.
- Swapping verification and validation in exam wording.