5 Шаг – Анализ вариантов использования

5 Шаг – Анализ вариантов использования

Анализ вариантов использования выполняется проектировщиками и включает в себя:

• идентификацию классов, участвующих в реализации потоков событий варианта использования;

• определение атрибутов и ассоциаций классов;

Идентификацию классов, участвующих в реализации потоков событий варианта использования

На данном этапе определяются классы, участвующие в каждом варианте использования. Классам присваиваются уникальные имена

Классы анализа отражают функциональные требования к системе и моделируют объекты предметной области. Совокупность классов анализа представляет собой начальную концептуальную модель системы.

Атрибуты классов анализа определяются, исходя из знаний о предметной области, требований к системе, глоссария и бизнес-модели. Атрибуты должны быть простыми, т.е. выразимыми с помощью простых типов данных (одной из распространенных ошибок является моделирование сложного понятия предметной области в виде атрибута).

Связи между классами (ассоциации) определяются в два этапа:

1. Начальный набор связей определяется на основе анализа вариантов использования (сценариев)

2. Анализируются и уточняются ассоциации между классами. Задаются мощности ассоциаций, подвиды ассоциации.

Следует избегать использования избыточных ассоциаций и сосредоточиться на тех ассоциациях, для которых данные о связи должны сохраняться в течение некоторого времени. Это достаточно важный момент. Если модель содержит N различных классов анализа, то между ними можно установить N*(N-1) ассоциацию, большинство из которых будет просто создавать «визуальный шум» и ухудшать наглядность диаграмм. Поэтому при добавлении ассоциаций нужно придерживаться принципа минимализма.

Установив связи между классами, мы получаем диаграммы классов. На данном этапе они создаются для каждого варианта использования

6 Шаг – Проектируется модель предметной области

Порядок и цель проведения объектно-ориентированного проектирования

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

Объектно-ориентированное проектирование включает

Проектирование архитектуры системы

Проектирование элементов системы

Создание диаграммы классов уровня проектирования для каждого варианта использования и общая диаграмма классов

Создание логической модели данных уровня проектирования с атрибутами и связями

Шаг 1 - ПРОЕКТИРОВАНИЕ АРХИТЕКТУРЫ СИСТЕМЫ

Проектирование архитектуры системы выполняется архитектором системы и включает в себя:

• идентификацию архитектурных решений и механизмов, необходимых для проектирования системы;

• анализ взаимодействий между классами анализа, выявление подсистем и интерфейсов;

• формирование архитектурных уровней;

• проектирование структуры потоков управления;

• проектирование конфигурации системы.

Идентификация архитектурных решений и механизмов

В процессе проектирования определяются детали реализации архитектурных механизмов, обозначенных в процессе анализа. Поскольку практически все механизмы — это некоторые типовые решения (образцы), они документируются в проекте (модели) с помощью кооперации со стереотипом «mechanism», при этом структурная часть механизма описывается с помощью диаграмм классов, а поведение — с помощью диаграмм взаимодействия.

Выявление подсистем и интерфейсов

Декомпозиция системы на подсистемы реализует принцип модульности. Целями такой декомпозиции являются:

• повышение уровня абстракции системы;

• декомпозиция системы на части, которые могут независимо: конфигурироваться или поставляться; разрабатываться (при условии стабильности интерфейсов); размещаться в распределенной среде; изменяться без воздействия на остальные части системы;

• разделение системы на части из соображений ограничения доступа к основным ресурсам;

• представление существующих продуктов или внешних систем (компонентов), которые не подлежат изменениям.

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

Формирование архитектурных уровней

В процессе анализа было принято предварительное решение о выделении архитектурных уровней. В процессе проектирования все элементы системы должны быть распределены поданным уровням. В сложной системе архитектурные уровни могут разбиваться на подуровни, количество и структура которых, как было сказано выше, зависят от сложности предметной области и среды реализации. Подуровни могут формироваться, исходя из следующих критериев:

• группировка элементов с максимальной связанностью;

• распределение в соответствии со структурой организации (обычно это касается верхних уровней архитектуры);

• распределение в соответствии с различными областями компетенции разработчиков (предметная область, сети, коммуникации, базы данных, безопасность и др.);

• группировка отдельных компонентов распределенной системы;

• распределение в соответствии с различной степенью безопасности и секретности.

Проектирование структуры потоков управления

Проектирование структуры потоков управления выполняется при наличии в системе параллельных процессов (параллелизма).

Цель проектирования — выявление существующих в системе процессов, характера их взаимодействия, создания, уничтожения и отображения в среду реализации. Требование параллелизма возникает в следующих случаях:

• необходимо распределение обработки между различными процессорами или узлами;

• система управляется потоком событий (event-driven system);

• вычисления в системе обладают высокой интенсивностью;

• в системе одновременно работает много пользователей.

Поток (thread) — это облегченный поток управления, который может выполняться параллельно с другими потоками в рамках одного и того же процесса в общем адресном пространстве.

Реализация процессов и потоков обеспечивается средствами операционной системы.

Проектирование конфигурации системы

Если создаваемая система является распределенной, то необходимо спроектировать ее конфигурацию в вычислительной среде, т.е. описать вычислительные ресурсы, коммуникации между ними и использование ресурсов различными системными процессами.

Распределенная сетевая конфигурация системы моделируется с помощью диаграммы размещения.

Распределение процессов, составляющих структуру потоков управления, по узлам сети производится с учетом следующих факторов:

• используемые образцы распределения (трехзвенная клиент-серверная конфигурация, «толстый» клиент, «тонкий» клиент, равноправные узлы (peer-to-peer) и т.д.);

• минимизация сетевого трафика;

• надежность оборудования и коммуникаций.

Шаг 2 - Проектирование элементов системы

Проектирование элементов системы включает:

уточнение описания вариантов использования;

проектирование баз данных.

Уточнение описания вариантов использования

Уточнение описания вариантов использования заключается в модификации их диаграмм взаимодействия и диаграмм классов с учетом вновь появившихся на шаге проектирования классов и подсистем, а также проектных механизмов.

Создание диаграммы последовательности

Задачи моделирования взаимодействий

Распределить поведение между граничными, сущностными и управляющими объектами

Детально показать взаимодействия между объектами, участвующими в каждом прецеденте

Закончить распределение операций по классам

Этапы создания диаграмм последовательности

1. Скопируйте текст прецедента из спецификации. Вставьте его в левой поле страницы.

2. Добавьте сущностные объекты.

3. Добавьте граничные объекты и актеров.

4. Определите, какие методы в какие классы поместить.

Проектирование классов включает следующие действия:

уточнение операций и атрибутов;

моделирование состояний для классов;

уточнение связей между классами.

Уточнение операций и атрибутов;

Обязанности классов, определенные в процессе анализа и документированные в виде «операций анализа», преобразуются в операции, которые будут реализованы в коде.

• каждой операции присваивается краткое имя, характеризующее ее результат;

• определяется полная сигнатура операции (в соответствии с нотацией, принятой в языке UML;

• создается краткое описание операции, включая смысл всех ее параметров;

• определяется видимость операции: public, private или protected;

• определяется область действия операции: экземпляр (операция объекта) или классификатор (операция класса);

• может быть составлено описание алгоритма выполнения операции (с использованием диаграмм деятельности в виде блок-схем, а также диаграмм взаимодействия различных объектов при выполнении операции).

Уточнение атрибутов классов заключается в следующем:

• кроме имени атрибута, задается его тип и значение по умолчанию (необязательное);

• учитываются соглашения по именованию атрибутов, принятые в проекте и языке реализации;

• задается видимость атрибутов: public, private или protected;

• при необходимости определяются производные (вычисляемые) атрибуты.

Моделирование состояний для классов.

Если некоторый объект всегда одинаково реагирует на событие, то он считается независимым от состояния по отношению к этому событию. В отличие от него зависимые от состояния объекты по-разному реагируют на одно и то же событие в зависимости от своего состояния.

Обычно в экономических ИС содержится очень мало объектов, зависимых от состояния, а системы управления технологическими процессами (системы реального времени) зачастую содержат множество таких объектов.

Если в системе присутствуют зависимые от состояния объекты со сложной динамикой поведения, то для них можно построить модель, описывающую состояния объектов и переходы между ними. Эта модель представляется в виде диаграмм состояний.

Построение диафамм состояний может оказать следующее воздействие на описание классов:

• события могут отображаться в операции класса

• особенности конкретных состояний могут повлиять на детали выполнения операций;

• описание состояний и переходов может помочь при определении атрибутов класса

Уточнение связей между классами.

В процессе проектирования связи между классами (ассоциации, агрегации и обобщения) подлежат уточнению.

Ассоциации между граничными и управляющими классами отражают связи, динамически возникающие между соответствующими объектами в потоке управления. Для таких связей достаточно обеспечить видимость классов, поэтому они преобразуются в зависимости.

Если для некоторых ассоциаций нет необходимости в двунаправленной связи, то вводятся направления навигации.

Агрегации, обладающие свойствами композиции, преобразуются в связи композиции.

Проектирование базы данных

Проектирование БД зависит от типа используемой для хранения данных СУБД — объектной или реляционной. Для объектных БД никакого проектирования не требуется, поскольку классы-сущности непосредственно отображаются в БД. Для реляционных БД классы-сущности объектной модели должны быть отображены в таблицы реляционной БД.

Совокупность таблиц и связей между ними может быть представлена в виде диаграммы классов, которая по существу является ER-диаграммой. Набор правил, применяемых при отображении классов в таблицы БД, фактически совпадает с правилами преобразования сущностей и связей.

В технологии RUP, в частности, для такого отображения используется специальный инструмент - Data Modeler. Он выполняет преобразование классов-сущностей в классы-таблицы с последующей генерацией описания БД на SQL.

Совокупность таблиц и связей между ними может быть представлена в виде диаграммы классов, которая, по существу, является диаграммой «сущность – связь».

Набор правил, применяемых при отображении классов в таблицы БД:

Каждая простая сущность, не являющаяся подтипом и не имеющая подтипов, превращается в таблицу. Имя сущности становится именем таблицы.

Каждый атрибут становится возможным столбцом с тем же именем; может выбираться более точный формат.

Уникальный идентификатор сущности превращается в первичный ключ таблицы.

Если тип связи между сущностями - один-к-одному и класс принадлежности обеих сущностей является обязательным, то из двух связанных сущностей формируется одна таблица.

Если тип связи - один-ко-многим и класс принадлежности сущности с мощностью "n" является обязательным, то формируются две таблицы, при этом идентификатор каждой сущности должен служить первичным ключом соответствующей таблицы. Кроме того, идентификатор сущности с мощностью "1" добавляется в качестве атрибута в таблицу, выделенную для сущности с мощностью "n".

Если тип связи - многие-ко-многим, то формируются три таблицы: по одной для каждой сущности и одна для связи.

📎📎📎📎📎📎📎📎📎📎