У каждого программного продукта есть две разные ценности: поведение и структура. Помимо прочего это означает, что сделать ПО более ценным можно не только с помощью изменения его поведения (новых фич, цвета кожи смайликов и т.п.) :)
Поведение
Поведение - это то, что продукт делает прямо сейчас - это совокупность реализованных функциональных требований и существующих дефектов (отклонений от требуемого поведения). Поведение создает экономическую ценность ПО напрямую, поэтому многие программисты и их менеджеры ошибочно полагают, что их работа заключается только в реализации поведения.
Поведение определяется составом функциональных компонент продукта и может быть описано через входы-выходы (т.е. описания алгоритмов расчетов) и инварианты (описания статичных отношений в системе).
Внешняя оценка качества системы1 - это оценка поведения пользователями. Они хотят быстро получать корректные результаты, хотят, чтобы система была надежной, легкой в использовании, эффективной и т.п.
Ценность поведения может быть выражена с помощью дисконтированных денежных потоков, т.к. мы можем предположить, сколько заработаем на том или ином поведении и в какой момент начнем получать выручку.
Структура
Структура - это заложенная в ПО гибкость (или “мягкость”, soft in software). Это лёгкость внесения изменений, точнее, зависимость требуемых усилий от масштаба изменений, а не от их “формы”.
Это архитектура программного продукта, это то, из каких конструктивных модулей он состоит.
Внутренняя оценка качества системы - это оценка структуры разработчиками. Они хотят, чтобы систему можно было легко изменять и расширять, просто понимать и тестировать, чтобы система содержала переиспользуемые части, была совместима с другими системами и т.п.
Ценность структуры выражается с помощью колл-опционов2. Поведение, которое можно будет реализовать в будущем - это базовый актив. Стоимость дизайна сегодня - это премия.
Бизнес-менеджеры утверждают, что поведение системы важнее, чем её структура. Однако они же утверждают, что возможность внесения изменений тоже очень важна.
Анализ экстремумов: идеально работающая, но неизменяемая система против абсолютно не работающей, но легко изменяемой системы. Вторая явно выживет в долгосрочном периоде.