Закоулки мозга

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

Поведение

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

Поведение определяется составом функциональных компонент продукта и может быть описано через входы-выходы (т.е. описания алгоритмов расчетов) и инварианты (описания статичных отношений в системе).

Внешняя оценка качества системы1 - это оценка поведения пользователями. Они хотят быстро получать корректные результаты, хотят, чтобы система была надежной, легкой в использовании, эффективной и т.п.

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

Структура

Структура - это заложенная в ПО гибкость (или “мягкость”, soft in software). Это лёгкость внесения изменений, точнее, зависимость требуемых усилий от масштаба изменений, а не от их “формы”.

Это архитектура программного продукта, это то, из каких конструктивных модулей он состоит.

Внутренняя оценка качества системы - это оценка структуры разработчиками. Они хотят, чтобы систему можно было легко изменять и расширять, просто понимать и тестировать, чтобы система содержала переиспользуемые части, была совместима с другими системами и т.п.

Ценность структуры выражается с помощью колл-опционов2. Поведение, которое можно будет реализовать в будущем - это базовый актив. Стоимость дизайна сегодня - это премия.


Бизнес-менеджеры утверждают, что поведение системы важнее, чем её структура. Однако они же утверждают, что возможность внесения изменений тоже очень важна.

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