Software Engineering and System Analysis
What this domain tests
Software Engineering and System Analysis tests lifecycle choices, requirement quality, modeling, and testing. Expect SDLC phases, agile versus plan-driven, use cases, UML, cohesion/coupling, and verification versus validation.
Core rules and concepts
- SDLC: requirements, analysis, design, implementation, testing, deployment, maintenance. Waterfall suits stable, well-understood requirements; agile suits evolving ones through short iterations.
- Functional requirements state behavior; nonfunctional requirements state qualities such as performance, security, usability, and availability.
- A use case has actors, preconditions, main flow, and alternate flows. UML class diagrams show structure; sequence diagrams show message order.
- Good design has high cohesion inside modules and low coupling between them.
- Testing levels: unit, integration, system, acceptance. Verification asks “did we build it right?”; validation asks “did we build the right product?”
Worked example
Requirement: “A student can reset a password by email, and the email must arrive within two minutes.” “Reset by email” is functional: a behavior the system must perform. “Within two minutes” is nonfunctional: a performance/reliability constraint on that behavior. Splitting them matters because they are tested differently-a functional test checks the reset flow; a performance test measures delivery time.
Traps that cost marks
Calling a design decision a requirement. Writing untestable requirements such as “the system shall be user-friendly.” Confusing verification with validation. Ignoring nonfunctional requirements until launch. Testing only at the end instead of at each level.