940 likes | 1.15k Views
Процесс разработки. “Design and programming are human activities. Forget it and all is lost.” B.Stroustrup, 1991. Фазы процесса. Начало Уточнение Разработка Развитие. Методы. OMT ( Object Modeling Technique, Rumbaugh ) RDD (Responsibility Driven Design) Objectory
E N D
Процесс разработки “Design and programming are human activities. Forget it and all is lost.” B.Stroustrup, 1991
Фазы процесса • Начало • Уточнение • Разработка • Развитие
Методы • OMT(Object Modeling Technique, Rumbaugh) • RDD (Responsibility Driven Design) • Objectory • RUP(Booch, Rumbaugh, Jacobson) Способ моделирования Артефакты фаз процесса
UML Unified Modeling Language CASE- средства: Rational Rose Together ArgoUML
UML Язык моделирования Не является языком программирования Определяет нотацию Имеет метамодель, выраженную на нем самом
История 1988 – 1995 работы Mellor, Booch, Rambough, Jacobson, Koad, Jordan, Shlaer… 1995 – UML 0.8 (Grady Booch, Jim Rambough) 1997 – UML 1.0 (Grady Booch, Jim Rambough, Ivar Jacobson) Rational Software
Нотация • Сущности • Структурные • Поведенческие • Группирующие • аннотационные • Отношения • Зависимость • Ассоциация • Обобщение • Реализация
Нотация • Диаграммы • Вариантов использования • Состояний • Деятельностей • Классов • Объектов • Последовательностей и кооперации • Компонентов • Размещения
Варианты использования • Actor – внешнее по отношению к системе действующее лицо, некто или нечто взаимодействующее с системой, роль. • Use case – некая последовательность действий системы, представляющая ценность для Actor-а, вариант использования системы (Ivar Jacobson). Use-case описывает, что делает система, но не указывает как.
Пример: Экзамен Teacher принимает экзамен у Student.
Включаемые use-cases • Stereotype: <<include>> • Различные use-cases могут иметьобщие части • abstract use-caseне активируется actor-ами
Генерализация actor-ов Различные actors могут играть одну и те-же общую рольвнекотором use-case
Расширение use-cases Stereotype: <<extend>> Некоторые use-cases могут вызываться в контексте других только при некоторых условиях
Tips • Use-case должен описывать ЧТО делает система, но НЕКАК • => Глубокие иерархии use-cases чаще всего бесполезны и ведут к функциональной декомпозиции • => Большое количество мелких use-case не прибавят понимания того, что делает система
Диаграммы состояний • Описывают состояния объекта и переходы между состояниями • State – некое состояние объекта • Event – событие, вызывающее переход • Transition – переход в новое состояние • Condition – условие перехода (true|false) • Action – мгновенное непрерываемое действие, сопровождающее переход • Activity – деятельность, связанная с состоянием
Пример: вложенные состояния Применение: группировка состояний и упрощение диаграммы Имеют не более одного начального и конечного состояний
Пример: состояния с историей Н – недавнее историческое состояние Н* - глубокое историческое состояние
Диаграммы деятельностей • Описывают последовательности действий • используются для описания операций и вариантов использования • Activity - деятельность • Transition – переходы между деятельностями • Guard condition – условие перехода • Decision – блок принятия решения • Concurrent threads – параллельные деятельности • Synchronization bar – линейка синхронизации параллельных деятельностей
Классы • Class – набор объектов с общей структурой и поведением • Interface – базовый класс, задающий только поведение, имеет стереотип <<interface>> • Abstract class – базовый класс, не имеющий экземпляров • Parameterized class – параметризованный класс, шаблон • Instantiated class – депараметризованный шаблон
Атрибуты классов • Attribute–атрибут (поле) • Class attribute – атрибут класса (static) • Derived attribute–производный атрибут • Export control –доступ(public, protected, private) • Containment – способ включения (value, reference) • Syntax:<role_name>:<class_name><=default_value>
Атрибуты классов name, birth_date – аттрибуты age – производный аттрибут (вычисляется через birth_date)
Атрибуты классов name, birth_date и age - аттрибуты класса
Методы(операции) • Method (operation) – метод • Class method – метод класса (static) • Export control – public, protected, private • Syntax: <stereotype> name(<parameters>) : <return type> • Parameter: parameter_name : type
Диаграмма классов - определяет типы объектов системы и статические связи между ними
Dependency • Отношение зависимости • Обладает ролью и множественностью • Может иметь стереотип
Association • Ассоциация - отношение взаимодействия • Обладает 2-мя ролями • Роль обладает множественностью (1, n, *, 0..n, 1..n, 1..*) • Пример:работник может занимать несколько должностей, на одной должности находится не более одного работника
Association • Ассоциация может иметь выделенное направление • Должность связана базовым тарифом оплаты • Тариф оплаты никак не связан с конкретной должностью
Aggregation • Агрегация – отношение часть-целое • Часть принадлежит только одному целому • Сотрудник относится к одному и только одному отделу
Composition • Композиция – частный случай агрегации • Жизненный цикл частей и целого совпадают • Отделы не существуют безкомпании
Generalization • Генерализация (наследование, обобщение) – отношение частное-общее • Отдел кадров – частный случай отдела
Realization • Реализация – отношение детализации • Треугольник и квадрат – реализации абстрактной фигуры
Диаграммы пакетов • Package – пакет. Общий механизм организации элементов модели в группы • Имеет имя • Определяет пространство имен • Может быть импортирован другим пакетом
стереотипы пакетов • system – вся система • subsystem– подсистема • facade – представление другого пакета • Например, пакет внешних интерфейсов подсистемы • framework – набор шаблонов • stub – заместитель другого пакета • Созданный, например, для тестирования
Диаграммы взаимодействия • Последовательностей - Sequence diagrams • Коллабораций - Collaboration diagrams • Отражают динамические аспекты поведения объектов • Семантически эквивалентны • Содержат: • Объекты • Связи • Сообщения • Потоки данных
Диаграммы компонент • Показывают связи между компонентами системы • стереотипы компонент: • executable - исполняемый компонент • library- библиотека • table - таблица базы данных • file - файл данных • document- документ
component • Компонент – физическая упаковка логической сущности • Может реализовывать несколько классов и интерфейсов • Использует другие компоненты