Функциональность и архитектура
Функциональность и атрибуты качества ортогональны. Это утверждение, кото¬рое поначалу может показаться излишне смелым, на самом деле совершенно спра-ведливо — по-другому просто не может быть. Если бы функциональность и атри¬буты качества не были ортогональны, уровень защиты, производительности, готовности или практичности определялся бы выбранной функцией. Очевид¬но, что устанавливать нужный уровень этих характеристик можно произвольно. Мы не имеем в виду, что любая функция дает возможность реализовать любой атрибут качества на любом уровне. Операции обработки сложных графических данных или сортировки огромной базы данных сложны по определению и, сле¬довательно, не позволяют достичь молниеносной производительности. Сомне¬нию не подлежит лишь то, что в отношении любой из этих функций относитель¬ный уровень качества определяется решениями, которые принимает архитектор. Некоторые архитектурные решения способствуют повышению производитель¬ности, иные же приводят к обратному эффекту. В этом контексте целью настоя¬щей главы, как и любой хорошей архитектуры, является разделение задач.
Мы разберем все важные атрибуты качества по порядку и покажем, как их структу¬рировать. Что такое функциональность? Это способность системы выполнять те задачи, которые на нее возложены. Для выполнения любой задачи элементы системы — все или некоторые — должны работать согласованно; аналогичным образом в хо¬де строительства дома взаимодействуют монтажники, электрики, кровельщики, штукатуры, маляры и отделочники. Таким образом, если обязанности между эле-ментами распределены неправильно или если у них нет средств координации с другими элементами (они требуются для того, чтобы элементы могли своевре¬менно приступать к исполнению своих обязанностей), система не сможет обеспе¬чить надлежащую функциональность.
Для обеспечения функциональности существует множество разных структур. Если бы функциональность была единственным требованием, систему можно было бы организовать в виде единичного монолитного модуля безо всякой внутренней структуры. В действительности системы разлагаются на модули, которые делают ее более понятной и поддерживают решение ряда других задач. Функциональ¬ность, таким образом, не сильно зависит от структуры. Когда существенную роль начинают играть другие атрибуты качества, программная архитектура ограничивает распространение функциональности по структурам. К примеру, во многих случа¬ях декомпозиция структур проводится таким образом, чтобы их конструировани¬ем могли заниматься сразу несколько специалистов (помимо прочего, такое ре¬шение оптимизирует срок выхода продукта на рынок, хотя в этом ключе оно рассматривается весьма редко). Очень важно, как функциональность пересекает¬ся с другими атрибутами качества и одновременно ограничивает их.
Do'stlaringiz bilan baham: |