Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Пример выполнения лабораторной работы. Выделим архитектурные уровни:




Выделим архитектурные уровни:

· Application Layer – содержит элементы прикладного уровня (пользовательский интерфейс);

· Business Services Layer – содержит элементы, реализующие бизнес-логику приложений (наиболее устойчивая часть системы);

· Middleware Layer – обеспечивает сервисы, независимые от платформы.

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

 

 

Рисунок 2.21 – Выделения архитектурных уровней

 

Данное представление отражает следующие решения, принятые архитектором:

· выделены три архитектурных уровня (созданы три пакета со стереотипом <<layer>>);

· в пакете Application создан пакет Registration, куда включены граничные и управляющие классы;

· граничный класс CourseCatalogSystem преобразован в подсистему (пакет CourseCatalogSystem со стереотипом <<subsystem>>);

· в пакет Business Services, помимо подсистемы CourseCatalogSystem, включены еще два пакета: пакет External System Interfaces включает интерфейс с подсистемой CourseCatalogSystem (класс ICourseCatalogSystem со стереотипом <<Interface>>), а пакет University Artifacts – все классы-сущности.

Структура и диаграммы пакета (подсистемы) CourseCatalogSystem показаны на рисунках 2.22-2.26.

 

Рисунок 2.22 – Структура пакета CourseCatalogSystem

 

 

Рисунок 2.23 – Зависимости между подсистемой и другими пакетами (диаграмма классов CourseCatalogSystem Dependencies)

 

 

 

Рисунок 2.24 – Классы, реализующие интерфейс подсистемы
(диаграмма классов ICourseCatalogSystem)

 

 

 

 

Рисунок 2.25 – Диаграмма последовательности
ICourseCatalogSystem::getCourse Offerings

 

 

Рисунок 2.26 – Диаграмма последовательности
ICourseCatalogSystem: initialize

 

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

1) нажмите кнопку Dependency панели инструментов;

2) проведите линию зависимости от зависимого пакета к тому, от которого он зависит.

Класс DBCourseOfferring отвечает за взаимодействие с БД каталога курсов.

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

· узел (node) – вычислительный ресурс (процессор, дисковая память, контроллеры различных устройств и т. д.). Для узла можно задать выполняющиеся на нем процессы;

· соединение (connection) – канал взаимодействия узлов (сеть). Пример: сетевая конфигурация системы регистрации (без процессов).

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

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

· время отклика;

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

· мощность узла;

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

Пример распределения процессов по узлам приведен на рисунке 2.28.

 

 

 

Рисунок 2.27 – Сетевая конфигурация системы регистрации

 

Рисунок 2.28 – Сетевая конфигурация системы регистрации
с распределением процессов по узлам

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

Чтобы поместить на диаграмму процессор:

1) на панели инструментов диаграммы нажмите кнопку Processor;

2) щелкните на диаграмме размещения в том месте, куда хотите его поместить;

3) введите имя процессора.

В спецификации процессора можно ввести информацию о его стереотипе, характеристиках и планировании. Стереотипы применяются для классификации процессоров (например, компьютеров под управлением UNIX). Характеристики процессора – это его физическое описание. Оно может, в частности, включать скорость процессора и объем памяти. Поле планирования (scheduling) процессора содержит описание того, как осуществляется планирование его процессов:

1) preemptive (с приоритетом). Высокоприоритетные процессы имеют преимущество перед низкоприоритетными;

2) non preemptive (без приоритета) – у процессов не имеется приоритета. Текущий процесс выполняется до его завершения, после чего начинается следующий;

3) cyclic (циклический) – управление передается между процессами по кругу. Каждому процессу дается определенное время на его выполнение, затем управление переходит к следующему процессу;

4) executive (исполнительный) – существует некоторый вычислительный алгоритм, который и управляет планированием процессов;

5) manual (вручную) – процессы планируются пользователем.

Чтобы назначить процессору стереотип:

1) откройте окно спецификации процессора.

2) перейдите на вкладку General.

3) введите стереотип в поле Stereotype.

Чтобы ввести характеристики и планирование процессора:

1) откройте окно спецификации процессора;

2) перейдите на вкладку Detail;

3) введите характеристики в поле характеристик;

4) укажите один из типов планирования.

Чтобы показать планирование на диаграмме:

1) щелкните правой кнопкой мыши на процессоре;

2) в открывшемся меню выберите пункт Show Scheduling.

Чтобы добавить связь на диаграмму:

1) на панели инструментов нажмите кнопку Connection;

2) щелкните на узле диаграммы;

3) проведите линию связи к другому узлу.

Чтобы назначить связи стереотип:

1) откройте окно спецификации связи;

2) перейдите на вкладку General;

3) введите стереотип в поле Stereotype (Стереотип).

Чтобы добавить процесс:

1) щелкните правой кнопкой мыши на процессоре в браузере;

2) в открывшемся меню выберите пункт меню New -> Process;

3) введите имя нового процесса.

Чтобы показать процессы на диаграмме:

1) щелкните правой кнопкой мыши на процессоре;

2) в открывшемся меню выберите пункт Show Processes.

Далее необходимо классы анализа преобразовать в проектные классы:

· проектирование граничных классов – зависит от возможностей среды разработки пользовательского интерфейса (GUI Builder);

· проектирование классов-сущностей – с учетом соображений производительности (выделение в отдельные классы атрибутов с различной частотой использования);

· проектирование управляющих классов – удаление классов, реализующих простую передачу информации от граничных классов к сущностям;

· идентификация устойчивых (persistent) классов, содержащих хранимую информацию.

Обязанности классов, определенные в процессе анализа, преобразуются в операции. Каждой операции присваивается имя, характеризующее ее результат. Определяется полная сигнатура операции: operationName(parameter:class,…):returnType. Создается краткое описание операции, включая смысл всех ее параметров. Определяется видимость операции: public, private, protected. Определяется область действия (scope) операции: экземпляр или классификатор.

Определяются (уточняются) атрибуты классов:

· кроме имени, задается тип и значение по умолчанию (необязательное): attributeName:Type = Default;

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

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

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

Определим атрибуты и операции для класса Student (рисунок 2.29).

Рисунок 2.29 – Класс Student с полностью определенными

операциями и атрибутами

 

Чтобы задать тип данных, значение по умолчанию и видимость атрибута:

1) щелкните правой кнопкой мыши на атрибуте в браузере;

2) в открывшемся меню выберите пункт Open Specification;

3) укажите тип данных в раскрывающемся списке типов или введите собственный тип данных;

4) в поле Initial Field (Первоначальное значение) введите значение атрибута по умолчанию;

5) в поле Export Control выберите видимость атрибута: Public, Protected, Private или Implementation. По умолчанию видимость всех атрибутов соответствует Private.

Чтобы изменить нотацию для обозначения видимости:

1) в меню модели выберите пункт меню Tools -> Options;

2) перейдите на вкладку Notation;

3) пометьте контрольный переключатель Visibility as Icons, чтобы использовать нотацию Rose, или снимите пометку, чтобы использовать нотацию UML.

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

Чтобы задать тип возвращаемого значения, стереотип и видимость операции:

1) щелкните правой кнопкой мыши на операции в браузере;

2) откройте окно спецификации класса этой операции;

3) укажите тип возвращаемого значения в раскрывающемся списке или введите свой тип;

4) укажите стереотип в соответствующем раскрывающемся списке или введите новый;

5) в поле Export Control укажите значение видимости операции: Public, Protected, Private или Implementation. По умолчанию видимость всех операций установлена в public.

Чтобы добавить к операции аргумент:

1) откройте окно спецификации операции;

2) перейдите на вкладку Detail;

3) щелкните правой кнопкой мыши в области аргументов, в открывшемся меню выберите Insert;

4) введите имя аргумента;

5) щелкните на колонке Data type и введите туда тип данных аргумента;

6) если надо, щелкните на колонке default и введите значение аргумента по умолчанию.

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

В качестве примера рассмотрим поведение объекта - класса CourseOffering (рисунок 2.30). Он может находиться в открытом состоянии (возможно добавление нового студента) или в закрытом состоянии (максимальное количество студентов уже записалось на курс).

 

Рисунок 2.30 – Диаграмма состояний для класса CourseOffering

Таким образом, конкретное состояние зависит от количества студентов, связанных с объектом CourseOffering. Рассматривая каждый вариант использования, можно выделить еще два состояния: инициализация (до начала регистрации студентов на курс) и отмена (курс исключается из расписания).

Для создания диаграммы состояний для класса CourseOffering:

1) щелкните правой кнопкой мыши в браузере на нужном классе;

2) в открывшемся меню выберите пункт меню New -> Statechart Diagram.

Чтобы добавить состояние:

1) на панели инструментов нажмите кнопку State;

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

Чтобы добавить деятельность:

1) откройте окно спецификации требуемого состояния;

2) перейдите на вкладку Detail;

3) щелкните правой кнопкой мыши на окне Actions;

4) в открывшемся меню выберите Insert;

5) дважды щелкните на новом действии;

6) введите действие в поле Actions;

7) в окне When укажите Do, чтобы сделать новое действие деятельностью. Чтобы добавить входное действие, в окне When укажите On Entry. Чтобы добавить выходное действие, в окне When укажите On Exit.

Чтобы послать событие:

1) откройте окно спецификации требуемого состояния;

2) перейдите на вкладку Detail;

3) щелкните правой кнопкой мыши на окне Actions;

4) в открывшемся меню выберите Insert;

5) дважды щелкните на новом действии;

6) в качестве типа действия укажите Send Event;

7) в соответствующие поля введите событие (event), аргументы (arguments) и целевой объект (Target).

Чтобы добавить переход:

1) нажмите кнопку Transition панели инструментов;

2) щелкните мышью на состоянии, откуда осуществляется переход;

3) проведите линию перехода до того состояния, где он завершается.

 

Чтобы добавить рефлексивный переход:

1) нажмите кнопку Transition to Self панели инструментов;

2) щелкните на том состоянии, где осуществляется рефлексивный переход.

Чтобы добавить событие, его аргументы, ограждающее условие и действие:

1) дважды щелкните на переходе, чтобы открыть окно его спецификации;

2) перейдите на вкладку General;

3) введите событие в поле Event;

4) введите аргументы в поле Arguments;

5) введите ограждающее условие в поле Condition;

6) введите действие в поле Action.

Чтобы отправить событие:

1) дважды щелкните на переходе, чтобы открыть окно его спецификации;

2) перейдите на вкладку Detail;

3) введите событие в поле Send Event;

4) введите аргументы в поле Send Arguments;

5) задайте цель в поле Send Target.

Для указания начального или конечного состояния:

1) на панели инструментов нажмите кнопку Start State или End State;

2) щелкните мышью на диаграмме состояний в том месте, куда хотите поместить состояние.

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

Чтобы установить преобразование агрегации в композицию:

1) щелкните правой кнопкой мыши на том конце агрегации, который упирается в класс-часть (на рисунке 2.31 – Schedule);

2) в открывшемся меню выберите пункт Containment;

3) укажите метод включения By Value.

Имейте в виду, что значение By Value предполагает, что целое и часть создаются и разрушаются одновременно, что соответствует композиции. Агрегация (By Reference) предполагает, что целое и часть создаются и разрушаются в разное время.

Уточнение обобщений: в случае ситуации с миграцией подклассов (студент может переходить с очной формы обучения на вечернюю) иерархия наследования реализуется так, как показано на рисунке 2.32. Такое решение повышает устойчивость системы (не нужно модифицировать описание объекта).

 

Рисунок 2.31 – Пример преобразования ассоциаций и агрегаций

 

 

Рисунок 2.32 – Преобразование обобщения






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных