Programs, life cycles, and laws of software evolution | Synapse