2.19 Растущие сложные системы
Современные вычислительные системы используют известные технологии, основе которых находятся не менее известные платформы .NET: Windows Presentation Foundation , ASP.NET Silverlight и др.
Многие факторы внутреннего качества связаны с теми сложностями, которые возникают при развитии программной системы. Лишь небольшое количество программ создается однажды, передается заказчику и никогда более не модифицируется. Большая часть программных систем развивается на фоне изменяющихся требований, условий эксплуатации и круга задач, решаемых системой.
Из довольно небольшой программы может развиться весьма крупный проект.
Это создает много проблем, поскольку изначально нельзя предугадать всех превратностей, ожидающих систему на жизненном пути, как и всех ошибок, совершаемых при ее создании.
Большую систему весьма трудно развивать и поддерживать хотя бы потому, что одному человеку не удержать в голове всех ее особенностей. Поэтому необходимо следовать определенным правилам (как «в большом», так и «в малом»), чтобы в дальнейшем система была достаточно гибкой.
Одна из причин существования таких огромных проектов (bloatware; например, Microsoft Word) связана с тем, что такой внешний фактор качества ПО, как функциональность, трудно определить однозначно. Здесь в силу вступает так называемый закон 80/20: «80% пользователей используют только 20% функций системы».
Почему бы не оставить только 20% и не выкинуть остальные 80%? Дело в том, что для каждого пользователя эти 20% могут состоять из разной функциональности [7].
Эта проблема касается в основном коробочных продуктов, создаваемых не для конкретного заказчика, а для широкого круга пользователей.
Так или иначе, большинство программ представляют собой неуклонно растущие сложные системы[16], которые нужно расширять, развивать и выпускать вовремя, и в этом в значительной степени помогает хороший дизайн.