Engineer Computer System study materials
Engineer Computer System study resources

Engineer Computer System: Programming and Software Engineering

Engineer Computer System · Work through your exam, one topic at a time.

All guide sections

Programming and Software Engineering

Programming and Software Engineering tests lifecycle discipline: requirements, design quality, testing levels, version control, and continuous integration. Questions often ask you to classify a practice or compute a simple design metric.

Core concepts

Requirements should be testable and traceable. Good design favors high cohesion within modules and low coupling between them. Verification asks whether the product was built correctly; validation asks whether the right product was built. Unit tests isolate small units, integration tests check interfaces, system tests check end-to-end behavior, and acceptance tests check user needs. Black-box testing uses specifications; white-box testing uses code structure. Continuous integration runs automated builds and tests on every change.

Worked example

A control-flow graph has 8 nodes, 9 edges, and 1 connected component. Cyclomatic complexity is E − N + 2P = 9 − 8 + 2 = 3. This equals the number of independent paths and, for a structured program, decisions + 1. Three independent paths must be exercised for basis-path coverage, though that alone does not prove the code is correct.

Traps

Do not confuse verification with validation. High statement coverage can still miss data-dependent bugs and missing requirements. Unit tests that depend on a database are really integration tests. Low coupling is not the same as zero communication between modules; interfaces still need contracts.