2.19 Растущие сложные системы

Современные вычислительные системы используют известные технологии, основе которых находятся не менее известные платформы .NET: Windows Presentation Foundation , ASP.NET Silverlight и др.

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

Из довольно небольшой программы может развиться весьма крупный проект.

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

Большую систему весьма трудно развивать и поддерживать хотя бы потому, что одному человеку не удержать в голове всех ее особенностей. Поэтому необходимо следовать определенным правилам (как «в большом», так и «в малом»), чтобы в дальнейшем система была достаточно гибкой.

Одна из причин существования таких огромных проектов (bloatware; например, Microsoft Word) связана с тем, что такой внешний фактор качества ПО, как функциональность, трудно определить однозначно. Здесь в силу вступает так называемый закон 80/20: «80% пользователей используют только 20% функций системы».

Почему бы не оставить только 20% и не выкинуть остальные 80%? Дело в том, что для каждого пользователя эти 20% могут состоять из разной функциональности [7].

Эта проблема касается в основном коробочных продуктов, создаваемых не для конкретного заказчика, а для широкого круга пользователей.

Так или иначе, большинство программ представляют собой неуклонно растущие сложные системы[16], которые нужно расширять, развивать и выпускать вовремя, и в этом в значительной степени помогает хороший дизайн.