Осознавайте последствия изменений Дуг Кроуфорд

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

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

Изменения могут проявляться в разных формах:

• Изменения функциональных требований

• Ужесточение требований к масштабируемости

• Модификация интерфейсов системы

• Приход и уход членов команды

• и так далее…

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

Задача архитектора — не столько управлять изменениями, сколько позаботиться об их управляемости.

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

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

К счастью, существует целый ряд инструментов и методов, позволяющих смягчить воздействие изменений:

• Вносите небольшие, поэтапные изменения

• Создавайте воспроизводимые тестовые сценарии и часто запускайте их

• Упрощайте построение тестовых сценариев

• Отслеживайте зависимости

• Действуйте и реагируйте систематично

• Автоматизируйте повторяющиеся задачи

Архитектор должен оценить воздействие изменений на различные аспекты масштаба проекта, времени и бюджета и быть готовым уделить больше внимания тем областям, которые способны оказать наиболее сильное влияние, став той самой «выбоиной на дороге». Оценка рисков — полезный инструмент для принятия решения о том, на что следует расходовать ваше драгоценное время.

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


Дуг Кроуфорд (Doug Crawford) руководит командой разработчиков промежуточного программного обеспечения для телекоммуникационной компании в Южной Африке. Последние 10 лет он с успехом совмещал несовместимое и принимал самое непосредственное участие в проектах по интеграции приложений в разнообразных отраслях: рекламе, банковском обслуживании крупного бизнеса, страховании и образовании.

Загрузка...