КОЛИЧЕСТВЕННЫЙ АНАЛИЗ ДИАГРАММ UML
Методика количественной оценки и сравнения диаграмм U ML основана на присвоении элементам диаграмм оценок, зависящих от их информационной ценности, а также от вносимой ими в диаграмму дополнительной сложности. Ценность отдельных элементов меняется в зависимости от типа диаграммы, на которой они находятся.
Количественную оценку диаграммы можно провести по следующей формуле:
где S — оценка диаграммы, — оценки для элементов диаграммы, — оценки для связей на диаграмме, Obj — число объектов на диаграмме, — число типов объектов на диаграмме, — число типов связей на диаграмме.
Если диаграмма содержит большое число связей одного типа (например, модель предметной области), то число и тип связей можно не учитывать, и формула расчета приводится к виду:
Если на диаграмме классов показаны атрибуты и операции классов, можно учесть их при расчете, при этом оценка прибавляется к оценке соответствующего класса:
где — оценка операций и атрибутов для класса, Op — число операций у класса, Atr - число атрибутов у класса. При этом учитываются только атрибуты и операции, отображенные на диаграмме.
Далее приводятся оценки для различных типов элементов и связей.
Основные элементы языка UML
Тип элемента | Оценка для элемента |
Класс | |
Интерфейс | |
Вариант использования | |
Компонент | |
Узел (node) | |
Процессор | |
Взаимодействие | |
Пакет | |
Состояние | |
Примечание |
Основные типы связей языка UML
Тип связи | Оценка для связи |
Зависимость | |
Ассоциация | |
Агрегация | |
Композиция | |
Обобщение | |
Реализация |
Остальные типы связей должны рассматриваться как ассоциации.
Недостатком диаграммы является как слишком низкая оценка (при этом диаграмма недостаточно информативна), так и слишком высокая оценка (при этом диаграмма обычно слишком сложна для понимания). Далее приведены диапазоны оптимальных оценок для основных типов диаграмм.
Диапазоны оценок для диаграмм UML
Тип диаграммы | Диапазон оценок |
Классов — с атрибутами и операциями | 5-5,5 |
Классов — без атрибутов и операций | 3-3,5 |
Компонентов | 3,5-4 |
Вариантов использования | 2,5-3 |
Размещения | 2-2,5 |
Последовательности | 3-3,5 |
Кооперативная | 3,5-4 |
Пакетов | 3,5-4 |
Состояний | 2,5-3 |
2.6.
ОБРАЗЦЫ
Образцы (patterns) — это одни из важнейших составных частей объектно-ориентированной технологии разработки ПО. Они широко применяются в инструментах анализа, подробно описываются в книгах[20] и часто обсуждаются на конференциях семинарах по объектно-ориентированному проектированию. Существует множество групп и курсов по их изучению. Изучение образцов помогает лучше понять объектно-ориентированный анализ и проектирование.
Объектно-ориентированное проектирование ПО — достаточно сложный процесс, который еще больше усложняется в случае необходимости повторного использования проектных решений. 11еобходимо подобрать подходящие объекты, отнести их к различным классам, соблюдая разумную степень детализации, определить интерфейсы классов и иерархию наследования и установить существенные связи между классами. Проектное решение должно, с одной стороны, соответствовать решаемой задаче, а с другой — быть достаточно общим, чтобы удалось учесть все требования, которые могут возникнуть в будущем. Желательно также избежать или, по крайней мере, свести к минимуму необходимость перепроектирования. Опытные разработчики знают, что обеспечить «правильное», т.е. в достаточной мере гибкое и пригодное для повторного использования решение, с первого раза очень трудно, если вообще возможно. Прежде чем считать цель достигнутой, они обычно пытаются опробовать найденное решение на нескольких задачах и каждый раз модифицируют его.
И все же опытному разработчику удается создать хороший проект системы. Прежде всего ему понятно, что не нужно решать каждую новую задачу с нуля. Вместо этого он старается повторно воспользоваться теми решениями, которые оказались удачными в прошлом. Отыскав хорошее решение один раз, он будет прибегать к нему снова и снова. Именно благодаря накопленному опыту проектировщик и становится экспертом в своей области. Во многих объектно-ориентированных системах можно встретить повторяющиеся проектные решения (образцы), состоящие изклассов и взаимодействующих объектов. С их помощью решаются конкретные задачи проектирования, в результате чего решение становится более гибким, и им можно воспользоваться повторно. Проектировщик, знакомый с образцами, может сразу же применять их к решению новой задачи, не пытаясь каждый раз «изобретать велосипед».
В 1970-х годах Кристофер Александер, профессор архитектуры Калифорнийского университета написал несколько книг, документируя образцы в гражданском строительстве и архитектуре. Разработчики ПО впоследствии заимствовали идею образцов, основываясь на его трудах, тем более, что к тому времени среди программистов уже присутствовал растущий интерес к этим идеям.
По словам Кристофера Александера, «любой образец описывает задачу, которая снова и снова возникает в нашей работе, а также принцип ее решения, причем таким образом, что это решение можно потом использовать миллион раз, ничего не изобретая заново». Хотя Александер имел в виду образцы, возникающие при проектировании зданий и городов, но его слова верны и в отношении образцов объектно-ориентированного проектирования. Решения относительно ПО выражаются в терминах объектов и интерфейсов, а не стен и дверей, но в обоих случаях образец можно определить как общее решение некоторой проблемной ситуации в заданном контексте.Образец состоит из четырех основных элементов:
· имя;
· проблема;
·решение;
·следствия.
Сославшись на имя образца, можно сразу описать проблему проектирования, ее решения и их последствия. Присваивание образцам имен позволяет проектировать на более высоком уровне абстракции. С помощью словаря образцов можно вести обсуждение с коллегами, упоминать образцы в документации, в тонкостях представлять проект системы.
Проблема — это описание решаемой задачи. Необходимо сформулировать задачу и ее контекст. Может описываться конкретная проблема проектирования, например способ представления алгоритмов в виде объектов. Также может включаться перечень условий, при выполнении которых имеет смысл применять данный образец.
Решение— это описание элементов проектного решения, связей между ними ц функций каждого элемента. Конкретное решение или реализация не имеются в виду, поскольку образец — это шаблон, применимый в самых разных ситуациях. Обычно дается абстрактное описание задачи проектирования и того, как она может быть решена с помощью некоего весьма обобщенного сочетания элементов (классов и объектов).
Следствия — это описание области применения, достоинств и недостатков образца. Хотя при описании проектных решений о следствиях часто не упоминают, знать о них необходимо, чтобы можно было выбрать между различными вариантами и оценить преимущества и недостатки применения данного образца. Поскольку в объектно-ориентированном проектировании повторное использование зачастую является важным фактором, то к результатам следует относить и влияние на степень гибкости, расширяемости и переносимости системы.
Образцы могут рассматриваться на различных уровнях абстракции и в различных предметных областях. Наиболее общими категориями образцов ПО являются;
·образцы бизнес-моделирования;
·образцы анализа;
·образцы поведения;
·образцы проектирования;
·архитектурные образцы;
·образцы программирования.
Даже в этом кратком списке категорий присутствует большое количество уровней абстракции и ортогональных систем классификации. Например, под образцом проектирования понимается описание взаимодействия объектов и классов, адаптированных для решения обшей задачи проектирования в конкретном контексте.
В языке UML образец представляется с помощью кооперации со стереотипом «pattern». Кооперация(collaboration) определяется как описание совокупности взаимодействующих объектов, реализующих некоторое поведение (например, в рамках варианта использования или операции класса). Кооперация имеет статическую и динамическую части. В статической части (на диаграмме классов) описываются роли, которые могут играть объекты и связи в экземпляре данной кооперации. Динамическая часть состоит из одной или более диаграмм взаимодействия, показывающих потоки сообщений, которыми обмениваются участники кооперации. Кроме того, любой образец содержит стандартную диаграмму классов под названием «Participants» («Участники»), на которой изображается сам образец в виде кооперации с его именем и набор классов, участвующих в реализации образца.
В качестве примера приведем образец бизнес-моделирования под названием Employment (Занятость).
Проблемазаключается в моделировании различных форм занятости в пределах организации. Данная задача решается в контексте системы планирования ресурсов предприятия.
Решение: занятость моделируется как контракт между личностью и организацией, указывающий выполняемые обязанности, контрактные условия, даты начала и конца работы. Личность характеризуется набором атрибутов (имя, адрес и дата рождения), может занимать более чем одну должность в одной и той же организации.
На рис. 2.60 приведена диаграмма «Участники» для данного образца. Она содержит кооперацию Employment и набор из пяти классов.
· Employee Profile (Служащий) — описание служащего с набором атрибутов.
· Organization Profile (Организация) — описание самой организации.
·Employment (Занятость) — описание связи между служащим и организацией.
·Position (Должность) — описание должности со своими атрибутами (такими, как должностной оклад и должностные инструкции).
·Position Assignment (Назначение на должность) — описание связи между служащим и занимаемыми должностями.
Рис. 2.60. Диаграмма «Участники» для образца Employment
Статическая часть образца (диаграмма классов) показана на рис. 2.61.
Достоинства применения образцов при проектировании ПО заключаются в следующем:
· Возможность многократного использования. Повторное использование решений из уже завершенных успешных проектов позволяет быстро приступить к решению новых проблем и избежать типичных ошибок. Разработчик получает прямую выгоду от использования опыта других разработчиков, избежав необходимости вновь и вновь «изобретать велосипед».
· Применение единой терминологии. Профессиональное общение и работа в группе (команде разработчиков) требует наличия единого базового словаря и единой точки зрения на проблему.
Рис. 2.61. Статическая часть образца Employment
Образцы предоставляют подобную общую точку зрения как на этапе анализа, так и при реализации проекта.
· Повышение эффективности труда отдельных исполнителей и всей группы в целом. Это происходит из-за того, что начинающие члены группы видят на примере более опытных разработчиков, как образцы проектирования могут применяться и какую пользу они приносят. Совместная работа дает новичкам стимул и реальную возможность быстрее изучить и Освоить эти новые концепции.
· Создание модифицируемого и гибкого ПО. Причина состоит в том, что образцы уже испытаны временем, поэтому их использование позволяет создавать структуры, допускающие модификацию в большей степени, чем это возможно в случае решения, первым пришедшего на ум.
· Ограничение пространства решений. Использование образцов создает границы в рамках пространства решений проектирования и реализации. Таким образом, образец настоятельно рекомендует проектировщику границы, которых должна придерживаться реализация. Выход за эти границы нарушает строгое соблюдение образца и проектных решений и может привести к нежелательным последствиям. Тем не менее, образцы не подавляют творчество. Напротив, они описывают структуру или форму на некотором уровне абстракции. Проектировщики и разработчики все еще располагают многими возможностями для реализации образцов в этих границах.
2.7.