Software Engineering · Cluster
Requirements and Design
Turning problems into specified behavior.
- 01 Preconditions and Postconditions as the Function Contract How a function contract divides obligations between caller and implementer, what a runtime check costs, and where frame conditions and aliasing break the guarantee.
- 02 Specifying Behaviour as a State Machine with Guards Why a transition table beats prose for event-driven behaviour, how guards resolve overlapping transitions, and what unreachable states reveal about a specification.
- 03 Inductive Invariants Over Reachable States Why an invariant that holds initially and is preserved by every step still needs an induction hypothesis, and how the strengthening problem makes proofs fail.
- 04 Specifying Partial Failure, Atomicity, and Retry Semantics How a contract states what survives a crash mid-operation, why idempotency keys must be chosen by the caller, and where at-least-once delivery forces deduplication.
- 05 Liveness and Fairness in Temporal Specifications Why safety properties need only one bad state to fail while liveness needs an infinite execution, and how a fairness assumption turns a starving scheduler into a specification bug.
- 06 Refinement: When an Implementation Satisfies a Specification How refinement relates an abstract specification to concrete behaviour, why stuttering steps and history variables make the relation provable, and where refinement forbids implementation freedom.
- 07 Quantifier Scope and Undefined Terms in Requirement Statements Why "all users can see their orders" admits several incompatible readings, how scope ambiguity survives review, and what a rewrite into explicit quantifiers costs.
- 08 Exhaustive State Exploration and What a Bounded Model Proves How model checking enumerates reachable states, why a bound is a parameter of the claim rather than a shortcut, and how to read a counterexample as a requirement defect.
- 09 Decision Tables and Rule Completeness in Policy Specifications How a decision table exposes overlapping and missing rules in eligibility logic, why hit policies change behaviour, and what completeness costs as conditions multiply.
- 10 Conformance Testing from a Specification: Distinguishing Sequences How a finite-state specification yields a test suite with a completeness argument, why a distinguishing sequence is necessary, and what the method assumes about the implementation.