On the Criteria To Be Used in Decomposing Systems into Modules
Using the KWIC example, Parnas shows that good modular decomposition hides change-prone design decisions rather than mirroring processing steps.
Using the KWIC example, Parnas shows that good modular decomposition hides change-prone design decisions rather than mirroring processing steps.
Hoare presents an axiomatic framework for proving partial program correctness, then uses it to discuss proofs, language definition, documentation, and portability.
Naur argues that programming is not mainly producing text, but building a theory around the problem and solution that can be explained, extended, and revised.
Brooks distinguishes essential from accidental difficulties in software engineering and explains why no single technology can deliver an order-of-magnitude productivity jump.
Explains why "worse is better" wins in practice: simple implementations, rapid spread, and evolvability often beat perfect design.
A set of system design heuristics on keeping interfaces simple, making systems faster, and balancing fault tolerance against complexity.
A reread of Richard Gabriel's Worse Is Better: why systems that are less perfect but easier to implement and spread often win adoption first, and why mature ecosystems later need The Right Thing to repair them.