Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шпоры по ТООМ

.doc
Скачиваний:
109
Добавлен:
02.05.2014
Размер:
1.37 Mб
Скачать

1-АБСЭБ- 22

1.Диаграммы взаимодействия объектов (Collaboration diagram).

Вторым видом диаграммы взаимодействия является кооперативная

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

по времени, а кооперативные диаграммы больше внимания заостряют

на связях между объектами. На рисунке приведена кооперативная

диаграмма, описывающая, как клиент снимает деньги со счета.

Как видно из рисунка, здесь представлена вся та информация, которая

была и на диаграмме последовательности, но кооперативная диаграмма

по-другому описывает поток событий. Из нее легче понять связи

между объектами, однако, труднее уяснить последовательность событий.

По этой причине часто для какого-либо сценария создают диаграммы

обоих типов. Хотя они служат одной и той же цели и содержат одну

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

На кооперативной диаграмме так же, как и на диаграмме

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

осуществляется в рамках данного варианта использования. Их временнáя

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

2. Диаграммы классов и объектов. Атрибуты и операции классов.

Диаграмма классов определяет типы классов системы и различного

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

Диаграмма классов для варианта использования «Снять деньги» показана на рисунке

В этом процессе

задействованы четыре класса: Card Reader1 (устройство для чтения

карточек), Account (счет), ATM Screen (экран АТМ) и Cash Dispenser

(кассовый аппарат). Каждый класс на диаграмме выглядит в виде

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

Связывающие классы линии отражают взаимодействие между классами. Так, класс Account связан с классом ATM Screen (экран АТМ), потому что они непосредственно сообщаются и взаимодействуют друг с другом. Класс Card Reader (устройство для чтения карточек) не связан с классом Cash Dispenser (кассовый аппарат), поскольку они не сообщаются друг с другом непосредственно.

Атрибут – это элемент информации, связанный с классом. Например, у класса Company (компания) могут быть атрибуты Name (Название), Address (Адрес) и NumberOfEmployees (Число служащих).

Так как атрибуты содержатся внутри класса, они скрыты от других классов. В связи с этим может понадобиться указать, какие классы имеют право читать и изменять атрибуты. Это свойство называется видимостью атрибута (attribute visibility).

В общем случае, атрибуты рекомендуется делать закрытыми или защищенными. Это позволяет лучше контролировать сам атрибут и код.

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

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

Параметры – это аргументы, получаемые операцией «на входе». Тип возвращаемого значения относится к результату действия операции. На диаграмме классов можно показывать как имена операций, так и имена операций вместе с их параметрами и типом возвращаемого значения. Чтобы уменьшить загруженность диаграммы, полезно бывает на некоторых из них показывать только имена операций, а на других их

полную сигнатуру.

В языке UML операции имеют следующую нотацию:

Имя Операции (аргумент1 : тип данных аргумента1, аргумент2 :

тип данных аргумента2, ...) : тип возвращаемого значения

Следует рассмотреть четыре различных типа операций.

Операции реализации Операции реализации (implementor operations) реализуют некоторые бизнес-функции.

Операции управления Операции управления (manager operations) управляют созданием и уничтожением объектов. В эту категорию попадают конструкторы и деструкторы классов.

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

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

1-АБСЭБ- 23

1 .Разработка Web- приложений с использованием UML.

Интернет-магазин позволяет делать покупки с доставкой на дом. Клиенты магазина при помощи программы-браузера имеют доступ к каталогу продаваемых товаров, поддержку которого осуществляет Интернет-магазин. По окончании выбора товаров производится оформление заказа и регистрация покупателя. Клиент указывает в регистрационной форме свою фамилию, имя и отчество, адрес доставки заказа и телефон, по которому с ним можно связаться для подтверждения сделанного заказа. Заказы передаются для обработки в систему автоматизации торговли. Проверка наличия товаров на складе и их резервирование Интернет-магазином не производятся. Дополнительно требуется разработать схему базы данных, хранящей заказы. Следует определиться, по какому архитектурному шаблону будет строиться Web-приложение («тонкий клиент» или «толстый клиент»). В соответствии с выбранным шаблоном следует построить модели клиентской части магазина и серверной части, промоделировать связи между частями приложения.

Для Web-приложений типичными являются следующие классы:

клиентская Web-страница;

серверная Web-страница (например, CGI-скрипт);

HTML-форма;

объект JavaScript.

Дополнительные связи между классами Web-приложений:

link – ссылка с одной страницы на другую;

build – связь между CGI-скриптом и клиентской страницей, генерируемой при его выполнении;

submit – связь между формой и серверной Web-страницей, принимающей данные из формы.

Типичные компоненты:

Web-страница (HTML-файл),

Active Server Page (ASP),

Java Server Page (JSP),

сервлет,

библиотека скриптов (например, подключаемый файл с Javascript-функциями).

2. Отношения ассоциации, их атрибуты, роли, мощность и стереотипы. Примеры отношений.

Классы могут иметь взаимосвязи, называемые отношениями.

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

Мощность отношений (multiplicity) указывается для классов и определяет допустимое количество объектов, участвующих в отношении с каждой стороны. ( 0; 0..1; 0..n; 1;1..n; n )

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

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

Стереотипы

<<association>>

Объекты вступают в отношение ассоциации. Один объект содержит ссылку на другой объект.

<<parameter>>

Один объект является параметром одной из операций другого объекта.

<<local>>

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

<<global>>

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

<<self>>

Объект посылает сообщение самому себе.

Квалификатор

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

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

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

1-АБСЭБ- 24

2. Примеры использования UML для построения визуальных моделей. Модель выбора учебного курса.

Стереотипы классов

Отношения

Разработка диаграмм классов

Диаграммы взаимодействия объектов

Диаграмма состояний класса «Учебный курс»

2. Необходимость архитектуры системы. Описание архитектуры системы c использованием пакетов

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

Вводятся глобальные пакеты:

• базисные (foundation) классы (списки, очереди и т.д.);

• обработчики ошибок (error handling classes);

• математические библиотеки;

• утилиты;

• библиотеки других поставщиков.

Определяются проектные классы (design classes):

• класс анализа отображается в проектный класс, если он простой

или представляет единственную логическую абстракцию;

• сложный класс анализа может быть разбит на несколько классов,

преобразован в пакет или в подсистему.

Примеры возможных подсистем:

• классы, обеспечивающие сложный комплекс услуг (например,

обеспечение безопасности и защита);

• граничные классы, реализующие сложный пользовательский

интерфейс или интерфейс с внешними системами;

• различные продукты: коммуникационное ПО (middleware,

поддержка COM/CORBA), доступ к базам данных, типы и

структуры данных (стеки, списки, очереди), общие утилиты

(математические библиотеки), различные прикладные продукты.

Принятие решения о преобразовании класса в подсистему

определяется опытом и знаниями архитектора проекта.

Соглашения по проектированию интерфейсов:

• Имя интерфейса: короткое (одно-два слова), отражающее его роль

в системе.

• Описание интерфейса: должно отражать его обязанности (размер –

небольшой абзац).

• Описание операций: имя, отражающее результат операции,

ключевые алгоритмы, возвращаемое значение, параметры

с типами.

• Документирование интерфейса: характер использования операций

и порядок их выполнения (показывается с помощью диаграмм

последовательности), тестовые планы и сценарии и так далее.

Вся эта информация объединяется в специальный пакет

со стереотипом <<subsystem>>, который содержит элементы,

образующие подсистему, диаграммы последовательности и/или

кооперативные диаграммы, описывающие взаимодействие

элементов при реализации операций интерфейса, и другие

диаграммы.

• Класс <<subsystem proxy>> непосредственно реализует интерфейс

и управляет реализацией его операций.

• Все интерфейсы должны быть полностью определены в процессе

проектирования архитектуры, поскольку они будут служить

в качестве точек синхронизации при параллельной разработке.

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

Application Layer – содержит элементы прикладного уровня

(пользовательский интерфейс);

Business Services Layer – содержит элементы, реализующие бизнес-

логику приложений (наиболее устойчивая часть системы);

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

от платформы.

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

архитектором:

• Выделены три архитектурных уровня (созданы три пакета

со стереотипом <<layer>>);

• В пакете Application создан пакет Registration, куда включены

граничные и управляющие классы;

• Граничный класс CourseCatalogSystem преобразован в подсистему

(пакет CourseCatalogSystem со стереотипом <<subsystem>>)

• В пакет Business Services, помимо подсистемы

CourseCatalogSystem, включены еще два пакета: пакет External

System Interfaces включает интерфейс с подсистемой

CourseCatalogSystem (класс ICourseCatalogSystem со стереотипом

<<Interface>>), а пакет University Artifacts – все классы-сущности.

Рис. 3.19. Зависимости между подсистемой и другими пакетами

(диаграмма классов CourseCatalogSystem Dependencies)

1-АБСЭБ- 25

1.Примеры использования UML для построения визуальных моделей.

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

Диаграммы классов (англ. – class diagrams). Диаграммы классов описывают статическую структуру классов. На детальном уровне (уровне спецификаций и уровне реализаций) диаграммы определяют структуру программных классов. Моделирование описания свойств объектов предметной области и отношений между объектами необходимо производить в соответствии с принципами абстракции, инкапсуляции, наследования, полиморфизма [37-42].

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

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

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

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

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

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

В языке UML определены 4 типа отношений: зависимость, ассоциация, обобщение, реализация.

Зависимость – это семантическое отношение между двумя сущностями, при котором изменение одной из них, независимой, может повлиять на семантику другой, зависимой. Ассоциация – структурное отношение, описывающее совокупность связей; связь – это соединение между объектами. Отношение обобщения – отношение «специализация/обобщение», при котором объект специализированного элемента (потомок) может быть подставлен вместо объекта обобщенного элемента (родителя или предка). Реализация – это семантическое отношение между классификаторами.

Названия классов на диаграмме выбираются в соответствии с понятиями предметной области. Прием идентификации понятий состоит в выделении существительных из текстовых описаний предметной области и их выборе в качестве «кандидатов» на понятие или атрибут.

2 Средства нотации языка UML для описания сценариев использования моделируемой системы. Диаграммы прецедентов (Use Case diagram) как средство описания взаимодействия моделируемой системы с внешней средой. Средства языка UML для детализации поведения системы, описанного на диаграммах сценариев использования. 

Создатели UML представляют его как язык для определения, представления, проектирования и документирования программных систем, организационно-экономических систем, технических систем и других систем различной природы. UML содержит стандартный набор диаграмм и нотаций самых разнообразных видов. Стандарт UML версии 1.1, принятый OMG в 1997 г., предлагает следующий набор диаграмм для моделирования:

– диаграммы вариантов использования (use case diagrams) – для моделирования бизнес-процессов организации и требований к создаваемой системе);

– диаграммы классов (class diagrams) – для моделирования статической структуры классов системы и связей между ними;

– диаграммы поведения системы (behavior diagrams): диаграммы взаимодействия (interaction diagrams):

– диаграммы последовательности (sequence diagrams) и кооперативные диаграммы (collaboration diagrams) – для моделирования процесса обмена сообщениями между объектами;

– диаграммы состояний (statechart diagrams) – для моделирования поведения объектов системы при переходе из одного состояния в другое;

– диаграммы деятельностей (activity diagrams) – ля моделирования поведения системы в рамках различных вариантов использования, или моделирования деятельностей;

– диаграммы реализации (implementation diagrams): диаграммы компонентов (component diagrams) – для моделирования иерархии компонентов (подсистем) системы;

– диаграммы размещения (deployment diagrams) – для моделирования физической архитектуры системы.

Элемент Use Case - это согласованный блок функциональности, которую представляет система, подсистема или класс. Этот блок описывает последовательности сообщений, которыми обменивается система и один или несколько внешних пользователей (актеров), а также действия, осуществляемые при этом системой [UML]. Прецеденты являются описанием или вариантами использования системы. С помощью прецедента описывается некоторый процесс. К взаимодействию относятся только отношения между системой и актерами; внутреннее поведение и реализация системы скрыты.

Разработка, управляемая прецедентами

В Rational Unified Process "красной нитью", объединяющей систему при выполнении отдельных задач, являются прецеденты, которые определяют поведение системы. Одним из преимуществ Rational Unified Process является его "управляемый прецедентами подход". Это предполагает, что определенный для системы прецедент является основанием для всего процесса разработки.

Прецеденты играют роль в каждом из четырех основных потоков работ процесса: Требования, Анализ и проектирование, Выполнение и Испытание.

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

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

Затем идентифицируются прецеденты:

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

Объединяющая функция прецедентов прослеживается на всем протяжении цикла развития системы. Одна и та же модель прецедентов используется в потоках работ Требования, Анализ и проектирование и Испытания.

Диаграммы Use Cases включают отношения и ассоциации, показывающие взаимодействие между воздействующими объектами и функциями (изображаются в виде стрелок), и примечания (note), которые могут быть привязаны к любому объекту диаграммы Use Cases.

Рис.3.1.Диаграмма использования

Поток событий для прецедента

Поток событий (flow of events) – это последовательность событий, необходимых для обеспечения требуемого поведения. Поток событий описывается в терминах предметной области.

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

Между актером и прецедентом может существовать ассоциативное отношение. Ассоциативная связь может быть односторонней или двусторонней. Направление связи показывает, кто является ее инициатором (актер или прецедент). Существует два типа отношений между прецедентами: включает (include) и дополняет (extend). Отношение «включает» изображается как отношение зависимости , направленное от базового прецедента к используемому.

Отношение дополняет (extend relationship) применяется для отражения: дополнительных режимов; режимов, которые запускаются только при определенных условиях, например сигнала тревоги; альтернативных потоков, которые запускаются по выбору актера.

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