Материал: Лабораторные_Архитерктура ИС

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
background image

83

классами

построим

три

новых

диаграмм

классов

в

кооперации

 Register for

Courses 

пакета

 Use-Case Realization – Register for Courses (

рис

. 3.

1

4 – 3.

1

6).

Рис

. 3.

1

4. 

Диаграмма

 Entity Classes (

классы

-

сущности

)

Добавлены

два

новых

класса

 – 

подклассы

 FulltimeStudent (

студент

очного

отделения

и

 ParttimeStudent (

студент

вечернего

отделения

).

Рис

. 3.

1

5. 

Диаграмма

 CourseOfferingInfo

FulltimeStudent

  gradDate

<<entity>>

ParttimeStudent

maxNumCourses

<<entity>>

Student

name

address

studentID

<<entity>>

Schedule

<<entity>>

0..n

1

0..n

1

CourseOffering

<<entity>>

0..n

0..4

0..n

+primaryCourses

0..4

0..n

0..2

0..n

+alternateCourses

0..2

Schedule

<<entity>>

CourseOffering

<<entity>>

0..n

0..4

0..n

+primaryCourses

0..4

0..n

0..2

0..n

+alternateCourses

0..2

PrimaryScheduleOfferingInfo

grade

// is enrolled in?()
// mark as enrolled in()
// mark as committed()

<<entity>>

ScheduleOfferingInfo

status

// mark as selected()
// mark as cancelled()

// is selected?()

<<entity>>

background image

84

На

данной

диаграмме

показаны

классы

ассоциаций

описывающие

связи

между

классами

 Schedule 

и

 CourseOffering 

и

добавлен

суперкласс

ScheduleOfferingInfo. 

Данные

и

операции

содержащиеся

в

этом

классе

(status – 

курс

включен

в

график

или

отменен

), 

относятся

как

к

основным

,

так

и

к

альтернативным

курсам

в

то

время

как

оценка

 (grade) 

и

окончательное

включение

курса

в

график

могут

иметь

место

только

для

основных

курсов

.

Рис

. 3.

1

6. 

Полная

диаграмма

классов

 VOPC (

без

атрибутов

и

операций

)

Создание

ассоциаций

Ассоциации

создают

непосредственно

на

диаграмме

классов

Панель

инструментов

диаграммы

классов

содержит

кнопки

для

создания

как

одно

-

так

и

двунаправленных

ассоциаций

Чтобы

на

диаграмме

классов

создать

ассоциацию

:

1

.

Нажмите

на

панели

инструментов

кнопку

 Association.

2.

Проведите

мышью

линию

ассоциации

от

одного

класса

к

другому

.

Чтобы

задать

возможности

навигации

по

ассоциации

:

1

.

Щелкните

правой

кнопкой

мыши

на

связи

с

того

конца

на

котором

хотите

показать

стрелку

.

2.

В

открывшемся

меню

выберите

пункт

 Navigable.

PrimaryScheduleOfferingInfo

<<entity>>

ScheduleOfferingInfo

<<entity>>

 CourseOffering

<<entity>>

RegisterForCoursesForm

<<boundary>>

Student

<<entity>>

Schedule

<<entity>>

0..n

1

0..n

1

0..n

0..4

0..n

+primaryCourses

0..4

0..n

0..2

0..n

+alternateCourses

0..2

RegistrationController

<<control>>

1

1

1

1

0..

1

0..

1

0..

1

+registrant

0..

1

0..

1

0..

1

0..

1

+currentSchedule

CourseCatalogSystem

<<boundary>>

0..n

1

0..n

1

FulltimeStudent

<<entity>>

ParttimeStudent

<<entity>>

background image

85

Чтобы

создать

рефлексивную

ассоциацию

:

1

.

На

панели

инструментов

диаграммы

нажмите

кнопку

 Association.

2.

Проведите

линию

ассоциации

от

класса

до

какого

-

нибудь

места

вне

класса

.

3.

Отпустите

кнопку

мыши

.

4.

Проведите

линию

ассоциации

назад

к

классу

.

Создание

агрегаций

1

.

Нажмите

кнопку

 Aggregation 

панели

инструментов

.

2.

Проведите

линию

агрегации

от

класса

-

части

к

целому

.

Чтобы

поместить

на

диаграмму

классов

рефлексивную

агрегацию

:

1

.

На

панели

инструментов

диаграммы

нажмите

кнопку

 Aggregation.

2.

Проведите

линию

агрегации

от

класса

до

какого

-

нибудь

места

вне

класса

.

3.

Отпустите

кнопку

мыши

.

4.

Проведите

линию

агрегации

назад

к

классу

.

Создание

обобщений

При

создании

обобщения

может

потребоваться

перенести

некоторые

атрибуты

или

операции

из

одного

класса

в

другой

Если

например

,

понадобится

перенести

их

из

подкласса

в

суперкласс

 Employee, 

в

браузере

для

этого

достаточно

просто

перетащить

атрибуты

или

операции

из

одного

класса

в

другой

Не

забудьте

удалить

другую

копию

атрибута

из

второго

подкласса

если

он

имеется

.

Чтобы

поместить

обобщение

на

диаграмму

классов

:

1

.

Нажмите

кнопку

 Generalization 

панели

инструментов

.

2.

Проведите

линию

обобщения

от

подкласса

к

суперклассу

.

Спецификации

связей

Спецификации

связей

касаются

имен

ассоциаций

ролевых

имена

,

множественности

и

классов

ассоциаций

.

Чтобы

задать

множественность

связи

:

1

.

Щелкните

правой

кнопкой

мыши

на

одном

конце

связи

.

2.

В

открывшемся

меню

выберите

пункт

 Multiplicity.

3.

Укажите

нужную

множественность

.

4.

Повторите

то

же

самое

для

другого

конца

связи

.

background image

86

Чтобы

задать

имя

связи

:

1

.

Выделите

нужную

связь

.

2.

Введите

ее

имя

.

Чтобы

задать

связи

ролевое

имя

:

1

.

Щелкните

правой

кнопкой

мыши

на

ассоциации

с

нужного

конца

.

2.

В

открывшемся

меню

выберите

пункт

 role Name.

3.

Введите

ролевое

имя

.

Чтобы

задать

элемент

связи

 (

класс

ассоциаций

):

1

.

Откройте

окно

спецификации

требуемой

связи

.

2.

Перейдите

на

вкладку

 Detail.

3.

Задайте

элемент

связи

в

поле

 Link Element.

Задание

для

самостоятельной

работы

Выполнить

анализ

варианта

использования

 Close Registration 

и

построить

соответствующие

диаграммы

взаимодействия

и

классов

.

3.6. 

Проектирование

системы

3.6.1. 

Проектирование

архитектуры

Цели

проектирования

архитектуры

системы

:

анализ

взаимодействий

между

классами

анализа

выявление

подсистем

и

интерфейсов

;

уточнение

архитектуры

с

учетом

возможностей

повторного

использования

;

идентификация

архитектурных

решений

и

механизмов

,

необходимых

для

проектирования

системы

.

Вводятся

глобальные

пакеты

:

базисные

 (foundation) 

классы

 (

списки

очереди

и

т

.

д

.);

обработчики

ошибок

 (error handling classes);

математические

библиотеки

;

утилиты

;

библиотеки

других

поставщиков

.

Определяются

проектные

классы

 (design classes):

background image

87

класс

анализа

отображается

в

проектный

класс

если

он

простой

или

представляет

единственную

логическую

абстракцию

;

сложный

класс

анализа

может

быть

разбит

на

несколько

классов

,

преобразован

в

пакет

или

в

подсистему

.

Примеры

возможных

подсистем

:

классы

обеспечивающие

сложный

комплекс

услуг

  (

например

,

обеспечение

безопасности

и

защита

);

граничные

классы

реализующие

сложный

пользовательский

интерфейс

или

интерфейс

с

внешними

системами

;

различные

продукты

коммуникационное

ПО

 (middleware,

поддержка

 COM/CORBA), 

доступ

к

базам

данных

типы

и

структуры

данных

  (

стеки

списки

очереди

), 

общие

утилиты

(

математические

библиотеки

), 

различные

прикладные

продукты

.

Принятие

решения

о

преобразовании

класса

в

подсистему

определяется

опытом

и

знаниями

архитектора

проекта

.

Соглашения

по

проектированию

интерфейсов

:

Имя

интерфейса

короткое

 (

одно

-

два

слова

), 

отражающее

его

роль

в

системе

.

Описание

интерфейса

должно

отражать

его

обязанности

 (

размер

 –

небольшой

абзац

).

Описание

операций

имя

отражающее

результат

операции

,

ключевые

алгоритмы

возвращаемое

значение

параметры

с

типами

.

Документирование

  

интерфейса

характер

использования

операций

и

порядок

их

выполнения

  (

показывается

с

помощью

диаграмм

последовательности

), 

тестовые

планы

и

сценарии

и

так

далее

.

Вся

эта

информация

объединяется

в

специальный

пакет

со

стереотипом

 <<subsystem>>, 

который

содержит

элементы

,

образующие

подсистему

диаграммы

последовательности

и

/

или

кооперативные

диаграммы

описывающие

взаимодействие

элементов

при

реализации

операций

интерфейса

и

другие

диаграммы

.

Источник: https://files.student-it.ru/previewfile/15390