Більшість програмних систем змінюються з плином часу. Причин цьому - безліч. Очікування змін є однією з рушійних сил конструювання програмного забезпечення. Програмне забезпечення не є ізольованим від зовнішнього оточення (як системного, так і з точки зору галузі діяльності, для автоматизації задач і проблем якого воно застосовується). Більш того, програмні системи є частиною середовища, що змінюється, і повинні змінюватися разом з нею, а, іноді, і бути джерелом змін самого середовища.
Очікування змін підтримується рядом технік кодування.
Конструювання з можливістю перевірки (Constructing for Verification)
"Конструювання для перевірки" (а саме такий сенс закладений в оригінальній назві даної підтеми) припускає, що побудова програмних систем повинна вестися таким чином, щоб сама програмна система допомагала вести пошук причин збоїв, будучи прозорою для застосування різних методів перевірки (і, до речі, внесення необхідних змін), як на стадії незалежного тестування (наприклад, інженерами-тестувальниками), так і в процесі операційної діяльності - експлуатації, коли особливо важлива можливість швидкого виявлення та виправлення помилок що виникають.
Серед технік, спрямованих на досягнення такого результату конструювання:
· Огляд, оцінка коду (code review)
· Модульне тестування (unit-testing)
· Структурування коду для і спільно з застосуванням автоматизованих засобів тестування (automated testing)
· Обмежене застосування складних або важких для розуміння мовних структур