Архитектура и атрибуты качества
Вопросы воплощения атрибутов качества решаются в периоды проектирования, реализации и развертывания. Не существует ни одного атрибута качества, кото¬рый зависел бы исключительно от какого-то отдельного этапа. Для достижения оптимальных результатов требуется правильность в общем (в архитектуре) и в частностях (в реализации).
♦ Практичность имеет как архитектурные, так и не архитектурные аспекты. Среди последних — обеспечение ясности и простоты применения пользо-вательского интерфейса. Что следует предпочесть: переключатель или фла-жок? Какая схема размещения информации на экране наиболее интуитив¬на? Какая гарнитура шрифта отображается четче других? Все эти вещи имеют существенное значение для конечного пользователя и влияют на практичность, но при этом, являя собой локальные дизайнерские решения, они не имеют отношения к архитектуре. Архитектура в данном случае — это возможность отменять операции, возвращаться к предыдущему состо¬янию и повторно обращаться к ранее введенным данным. Для реализации этих требований необходимо взаимодействие множества элементов.
♦ Модифицируемость определяется тем, каким образом происходит разделе¬ние функциональности (архитектурный аспект) и методик кодирования в рамках отдельного модуля (неархитектурный аспект). Так, назвать систе¬му модифицируемой можно лишь в том случае, если для внесения измене¬ний требуется наименьшее количество отдельных элементов. Именно на этом строится структура декомпозиции модулей системы А-7Е, описанной в главе 3. Чем менее структурирован код, тем хуже система поддается мо-дифицированию.
♦ Производительность также зависит от архитектурных и неархитектурных факторов. Отчасти она зависит от объема информации, передающейся между компонентами (это архитектурный аспект), от распределения функциональ-ности между компонентами (архитектурный аспект), распределения со¬вместно используемых ресурсов (архитектурный аспект), выбранных для реализации функциональности алгоритмов (неархитектурный аспект) и ко¬дирования этих алгоритмов (также неархитектурный аспект).
В этом разделе мы хотим сделать упор на двух моментах:
1. Архитектура определяет возможность реализации предполагаемых атрибу¬тов качества системы; проектирование и оценку этих атрибутов следует проводить на архитектурном уровне.
2. Сама по себе архитектура не реализует никаких атрибутов качества, но она образует основу для достижения качества — впрочем, если не уделять долж-ного внимания деталям, пользы от этой основы не будет никакой.
Реализовать ряд атрибутов качества по отдельности в сложной системе невоз-можно. Реализация одного такого атрибута всегда каким-то образом — иногда положительно, а иногда и отрицательно — влияет на реализацию других. К при¬меру, такие атрибуты качества, как безопасность и надежность, обычно конфлик¬туют между собой. У самой защищенной системы наименьшее количество точек отказа — как правило, они концентрируются в ядре безопасности. У самой на¬дежной системы их, напротив, наибольшее количество — как правило, это ряд резервируемых процессов или процессоров, причем отказ одного из них не при¬водит к отказу системы в целом. Другой пример конфликта между атрибутами качества очевиден — практически любой атрибут качества негативно отражается на производительности. Взять хотя бы переносимость. Лучший способ обеспе¬чить переносимость программного продукта — это изолировать системные зави¬симости. Такое решение увеличивает непроизводительные издержки в ходё ис* полнения системы (обычно на границах процессов или процедур), а следовательно, снижает производительность.
Теперь приступим к обзору атрибутов качества. Они делятся на три класса:
1. Атрибуты качества системы. Из них мы рассмотрим готовность, модифицируемость, производительность, безопасность, контролепригодность и прак-тичность. '
2. Коммерческие атрибуты качества (например, срок вывода продукта на J рынок), реализация которых обусловливается архитектурой.
3. Атрибуты качества самой архитектуры (например, концептуальная целост-ность), которые косвенно влияют на другие качества — например, модифи-цируемость.
Do'stlaringiz bilan baham: |