Ответственность в программной архитектуре

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

Любой, даже начинающий, архитектор ПО знает: архитектура абстрактна и складывается из фундаментальных представлений о проектируемой системе и ее свойств. При этом программная архитектура — или архитектурный дизайн в программной инженерии — рассматривает систему не только через призму взаимосвязей элементов системы друг с другом и с внешней средой, как того требует ANSI/IEEE 1471-2000, но и через разделение ответственности и полномочий между отдельными артефактами, как того требует «проза жизни». Именно здесь происходит все самое интересное.

Наивно полагать, что объектно-ориентированная архитектура системы (она же — архитектура «в малом») занимается только классами, типами (что само по себе не одно и то же!), запросами, сигнатурами и т.д. В действительно сильной архитектуре класс — это не только область видимости с открытым интерфейсом и скрытой реализацией, но и зона ответственности. Недаром принцип единственной ответственности (англ. SRP, Single Responsibility Principle) является одним из столпов проблемно-ориентированного проектирования (англ. DDD, Domain-Driven Design) и входит в знаменитую «пятерку» принципов S.O.L.I.D.!

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

Мысль, которая должна быть лейтмотивом любого серьезного обучения объектному программированию, нетрудно свести к одному-единственному высказыванию: инкапсуляция — это не сокрытие членов класса, а демаркация зоны его ответственности перед его окружением.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.