Законы изменений

We use cookies. Read the Privacy and Cookie Policy

Фразу «постоянны только изменения» приписывают древнегреческому философу Гераклиту. Также часто говорят, что выживают только те, кто способен «приветствовать изменения». Кент Бек использует эту фразу в качестве подзаголовка к своему бестселлеру «Экстремальное программирование» (Extrame Programming) [Beck 2005].

Программные продукты часто приходится адаптировать к изменениям во внешней среде. Введение евро в качестве официальной валюты Европейского союза потребовало от компаний на всем континенте инвестировать миллионы французских франков, немецких марок, итальянских лир, испанских песет, австрийских шиллингов, португальских эскудо и голландских гульденов, чтобы внести соответствующие изменения в программное обеспечение.

Некоторые авторы утверждают, что успешное программное обеспечение требует больше технической поддержки, чем неудачное [Brooks 2005, Glass 2003]. Одна из причин – стремление людей использовать любимое ПО в неожиданных ситуациях. Например, в Африке те, у кого нет банковских счетов, рассчитываются друг с другом, переводя деньги с мобильных телефонов. Еще одна причина состоит в том, что успешное ПО часто живет дольше, чем то поколение «железа» и бизнес-процессы, для которых оно первоначально предназначалось. Так, например, ожидалось, что многие программные продукты не переживут XX век, поскольку их придется серьезно модифицировать в связи с проблемой 2000 года (ее еще часто неправильно называют «ошибка миллениума»).

Необходимость учитывать изменения в окружающей среде при разработке ПО настолько фундаментальна, что рано или поздно в литературе мне должны были попасться соответствующие законы. Их предложил профессор Меир Леман:

1. Непрерывные изменения: система, используемая в изменяющейся среде, нуждается в постоянной модернизации, в противном случае удовлетворенность пользователей будет прогрессивно снижаться.

2. Увеличение сложности: если не предпринимать усилий по ее упрощению, то по мере своего развития система будет становиться все сложнее.

3. Саморегулирование: эволюция системы – саморегулируемый процесс, при этом темпы изменения атрибутов системы в течение ее жизненного цикла близки к нормальному распределению.

4. Влияние организационной стабильности: среднее количество усилий, прилагаемых при поддержании развивающейся системы, в течение ее жизненного цикла остается примерно постоянным.

5. Сохранение преемственности: в то время как система развивается, все связанные с ней люди должны обеспечивать господство ее содержания для достижения удовлетворительной эволюции.

6. Непрерывный рост: чтобы удовлетворенность пользователей не снижалась на протяжении жизненного цикла системы, ее функциональные возможности должны постоянно расширяться.

7. Ухудшение качества: воспринимаемое качество системы будет снижаться, если не предпринимать специальных мер по ее сопровождению и адаптации к изменениям во внешней среде.

8. Система обратной связи: эволюционные процессы представляют собой сложные системы обратной связи и должны рассматриваться как таковые для достижения значительных улучшений.

У меня имеются мелкие разногласия с некоторыми из законов Лемана (в особенности с третьим[91]), но в любом случае их смысл понятен и верен: система должна постоянно изменяться, иначе ее эффективность снижается. А когда система изменяется, то она становится более сложной, если не предпринимать мер по ее упрощению.

Может быть, самое интересное наблюдение Лемана состоит в том, что количество усилий по внесению изменений в систему и ее адаптации остается (приблизительно) постоянным в течение всего жизненного цикла. Мы вернулись к тому, что постоянны только изменения…