Законы Лемана

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Законы Лемана — восемь принципов эволюции программного обеспечения, которые сформулировал Меир Мэнни Леман с 1974 по 1996 год. Этому поспособствовали как его опыт работы в IBM и других компаниях, так и исследовательская деятельность в университетах Великобритании. Законы в целом описывают баланс между силами, из которых одни обеспечивают, а другие тормозят развитие информационных систем.

Контекст[править | править код]

В статье 1976 года[1] Леман в соавторстве с Л. А. Белади пишет о том, что в первую очередь речь идёт о больших многофункциональных программах, требующих постоянной поддержки и улучшения. Позже в связи с этим Леман выделил[2] три категории программ:

  • S-программы, написанные в строгом соответствии со спецификацией того, что программа может делать;
  • P-программы, реализующие процедуры, полностью определяющие их поведение (например, компьютерные шахматы);
  • E-программы, осуществляющие работу в условиях реального мира, то есть существенно зависящие от среды своего функционирования, а потому нуждающиеся в адаптации к тем или иным внешним требованиям.

Исходя из этого, законы эволюции программного обеспечения применимы только к Е-программам. Например, к ERP-системам.

Законы[править | править код]

Полная формулировка всех восьми законов, представленная ниже, опубликована Леманом в 1996 году.[3]

  1. (1974) Непрерывное изменение — используемая Е-программа должна быть непрерывно адаптируемой, иначе она будет становиться всё менее удовлетворительной.
  2. (1974) Увеличение сложности — по мере того, как программа эволюционирует, её сложность растёт, если не производится работ по стабилизации и уменьшению сложности.
  3. (1974) Саморегулирование — процесс эволюции программы является саморегулируемым, с близким к нормальному распределению масштабом атрибутов продукта и процесса.
  4. (1978) Сохранение организационной стабильности (неизменная скорость работы) — средний эффективный глобальный уровень активности в эволюционирующей системе инвариантен к времени жизни продукта.
  5. (1978) Сохранение осведомлённости — в течение активной жизни эволюционирующей программы основное содержание последующих релизов статистически неизменно.
  6. (1991) Непрерывное развитие — функциональное содержание программы должно постоянно расширяться на протяжении жизненного цикла, чтобы поддерживать удовлетворённость пользователей.
  7. (1996) Ухудшение качества — качество программ Е-типа будет восприниматься как ухудшающееся, если они не сопровождаются должным образом и не адаптируются к операционной среде.
  8. (1996) Система обратной связи — процессы программирования Е-типа вместе составляют многоконтурные, многоуровневые системы обратной связи и должны рассматриваться как таковые, чтобы успешно изменяться и улучшаться.

Примечания[править | править код]

  1. Belady, L. A., Lehman, M. M. A model of large program development (англ.) // IBM Systems Journal. — 1976. — Iss. 15. — No. 3. — P. 225—252. — DOI:10.1147/sj.153.0225.
  2. Lehman, M. M. Programs, life cycles, and laws of software evolution (англ.) // Proceedings of the IEEE. — 1980. — Iss. 68. — No. 9. — P. 1060—1076. — DOI:10.1109/PROC.1980.11805.
  3. Lehman, M. M. Laws of software evolution revisited (англ.) // Software process technology. — Springer Berlin Heidelberg, 1996. — P. 108—124. — DOI:10.1007/BFb0017737.

Ссылки[править | править код]