Design by contract
Filosofia de programação: toda função tem pré-condições, pós-condições e invariantes formais.
Bertrand Meyer (a linguagem Eiffel, 1986). Asserções sobre "o que precisa ser verdade antes de começar" + "o que garantimos depois". Impõe um pensamento explícito sobre contratos. Migrou para linguagens modernas via sistemas de tipos e testes baseados em propriedades.