Общие рекомендации по декомпозиции
Создание диаграммы того или иного типа ведет к рассмотрению системы под той или иной проекцией, или, как обычно говорят, под определенным углом зрения. Рассматривая различные диаграммы разработчик тем самым полнее осознает структуру и поведение системы, что ведет к более обдуманным проектным решениям. Таким образом, первая рекомендация по декомпозиции — по возможности, создать и проанализировать как можно больше проекций рассматриваемой системы.
Необходимо помнить, что не существует формальных процедур, ограничивающих проведение декомпозиции в общем виде. Но отсутствие решения в общем виде не значит его отсутствие в частном случае. Таким образом, вторая рекомендация по декомпозиции — перед началом декомпозиции или уже в процессе ее проведения, наметить рамки (границы) декомпозиции, по достижению которых декомпозиция будет считаться проведенной.
Например, проводим декомпозицию до тех пор пока:
Не пройдет отведенный промежуток времени
Более менее станут понятны структура и поведение системы
Будут достигнуты какие-то заданные количественные характеристики
Как бы мы не старались локализовать (инкапсулировать) функциональность в объектах или модулях, суть функционирования системы — взаимодействие ее компонентов. Синергетические качества системы, такие как надежность и производительнсть — будут присущи системе только в том случае, когда ее компоненты взаимодействуют оптимальным образом (и сами при этом отвечают заданным критериям производительности и надежности). По этому, полная независимость в разработке подсистем — наиболее прямолинейный и не самый эффективный подход, таящий в себе ряд негативных качеств, влияющих на итоговые потребительские характеристики системы в целом. Таким образом, третья рекомендация по декомпозиции — нахождение и локализация в одном или нескольких классах или модулях абстрактной функциональности с целью использования ее в других, более специфичных классах/модулях. Абстрактная функциональность, как правило, мало связана с прикладной задачей и выполняет вспомогательные (служебные) функции.
Например, отличный кандидат на вынос в отдельный модуль следующая функциональность:
− Ввод/вывод в файловую систему
− Взаимодействие с базой данных
− Протоколирование работы системы
− Взаимодействие с удаленной системой посредством сети
Дата добавления: 2015-08-21; просмотров: 1135;