Software Engineering
Software engineering tests process models, requirements, design, testing, metrics, estimation, risk, and quality management. Expect definition-based questions plus small calculations such as cyclomatic complexity or effort estimation.
Core rules and concepts
- Waterfall is sequential; incremental and iterative models deliver slices; spiral is risk-driven; agile emphasizes working software and short feedback cycles.
- Verification asks whether the product is being built right; validation asks whether the right product is being built.
- Black-box testing uses specifications; white-box testing uses code structure. Statement, branch, and path coverage increase in strength but not monotonically in fault detection.
- Coupling measures interdependence between modules (aim low); cohesion measures relatedness within a module (aim high).
- Cyclomatic complexity for a connected control-flow graph is E−N+2P, where E is edges, N is nodes, and P is connected components.
Worked example
A control-flow graph has 9 edges, 7 nodes, and 1 connected component. Cyclomatic complexity = 9−7+2=4. This equals the number of independent paths and also the number of binary decisions plus one for a structured graph. A test set must exercise four independent paths to achieve basis-path coverage, though that does not guarantee all data-dependent faults are found.
Traps that cost marks
Equating alpha testing with developer testing and beta with customer testing without checking the definition; treating unit testing as integration testing; assuming 100% statement coverage implies 100% branch coverage; and mixing effort with schedule in COCOMO-style estimates. In design, low cohesion and high coupling are both undesirable.