Software Engineering and System Analysis and Design
Core concepts
Understand the software development life cycle (SDLC): requirements, analysis, design, implementation, testing, deployment, maintenance. Compare process models: waterfall, iterative, spiral (risk-driven), prototype, and agile (Scrum, XP, Kanban). Know requirement types (functional versus non-functional) and elicitation techniques (interviews, questionnaires, observation, joint application design).
System analysis tools include data flow diagrams (context, level 0, level 1), entity-relationship diagrams, use case diagrams, class diagrams, and the data dictionary. Study cohesion and coupling: high cohesion and low coupling are desirable. Testing knowledge covers unit, integration, system, acceptance, black-box versus white-box, and verification versus validation. Estimation and metrics (function points, COCOMO, critical path in PERT/CPM) often appear.
Traps to watch
- Confusing verification (building it right) with validation (building the right thing).
- Assuming waterfall forbids revisiting earlier phases in practice.
- Mixing up DFD levels; a level-0 diagram is not the context diagram.
- Forgetting that non-functional requirements cover performance, security, and usability.
Worked example
If a project has tasks A(3 days), B(4 days) after A, and C(2 days) after A, with D(1 day) after both B and C, the critical path is A-B-D at 8 days. Rule of thumb: the critical path is the longest path through the network and determines minimum project duration.