ТОР 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 – Классы, реализующие интерфейс подсистемы
Рисунок 2.25 – Диаграмма последовательности
Рисунок 2.26 – Диаграмма последовательности
Чтобы поместить зависимость между пакетами на диаграмму классов: 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 – Преобразование обобщения Не нашли, что искали? Воспользуйтесь поиском:
|