Объектно Ориентированный Анализ и...

Preview:

Citation preview

Объектно-Ориентированный Анализ и Дизайн

Copyright © Мухортов В. В., Няньчук-Татарский Н. А., 2001-2005

Copyright © ООО «Интекс», 2003-2005

Контакты

Мигинский Денис Сергеевич

dmiginsky@gmail.com

http://ccfit.nsu.ru/~shadow/OOAD

Цели курса

Получить навык работы в формальном процессе разработки: пройти полный путь от постановки задачи, через анализ и проектирование, до реализации программной системы

Выработать понимание целей и принципов проектирования программных систем

Научиться применять стандартные приемы и решения в проектировании

Анализ требований и системный анализ

UML – унифицированный язык моделирования

Проектная модель, модель реализации и размещения

Принципы и метрики проектирования

Образцы проектирования

Объектно-Ориентированный Анализ и Дизайн

Программа курса:

«Идеальный архитектор должен быть писателем, математиком, знать историю, быть знатоком философии, понимать музыку, обладать знаниями в области медицины, юриспруденции и астрономии»

Витрувий, 25 г до н.э.

“Работа архитектора это серии суб-оптимальных решений, сделанных под давлением в обстановке неуверенности и нехватки информации”.

Rational Unified Process

Ожидаемый результат

Архитектор / System Architect

Задача: автоматизация физ. эксперимента

Пропускная способность

Отказоустойчивость

Корректность

Соответствие требованиям эксперимента

Высокая скорость обработки данных

Большой объем хранимых данных

~ 10-100 Мб/сек

~ 100-1000 Тб

Задача: автоматизация предприятия

О т д е л к о н т р о л я

О т д е л к а д р о в

О т д е л п р о д а ж

П р о и з в о д с т в е н н ы й

о т д е л

С к л а д с к о й у ч е т

Н И С$

M IC R O S O F T C O R P O R A T IO N

Ф и н а н с о в ы й о т д е л

О т д е л д о с т а в к и

А д м и н и с т р а ц и я

О т д е л с н а б ж е н и я

П л а н о в ы й о т д е л

К л и е н т

Высокая композиционная сложность

Наличие большого количества ролей и разветвляющихся процессов

Необходимость интеграции с существующими системами

Постоянно изменяющиеся требования связанные с развитием организации и оптимизацией процессов

Интеграция решений задач

Финансовых

АСУ

Планирования

Управления персоналом

«Самолет представляет собой совокупность вещей, каждая из которых по отдельности стремится упасть на землю, но вместе, во взаимодействии, они преодолевают эту тенденцию»

Современным ИС присущи как функциональная так и композиционная сложность.

Основными способами преодоления сложности являются моделирование и декомпозиция

Современные парадигмы программирования

Структурное

Функциональное (аппликативное)

Логическое/недетерминированное

Объектно-ориентированное

Аспектно-ориентированное

Метапрограммирование

Объектно-ориентированный подход: основные положения

Модель системы состоит из взаимодействующих объектов

Каждый объект обладает:

Поведением

Состоянием

Индивидуальностью

Схожие объекты объединяются в классы

Объектно-ориентированный подход: основные положения

Абстракция

Инкапсуляция

Иерархия

Модульность

Полиморфизм

Объектно-ориентированный подход (доп. положения)

Типизация

Параллелизм

Сохраняемость

Отношения между классами

Зависимость Dependency Ассоциация Association Агрегация Aggregation Композиция Composition Генерализация Generalization Реализация Realization

Dependency

Отношение зависимости

Обладает ролью и множественностью Server зависит от Query, так как использует этот класс в

качестве параметра метода

Server также зависит от ResultSet, поскольку возвращает значение этого типа

Association

Ассоциация - отношение взаимодействия

Обладает 2-мя ролями

Роль обладает множественностью (1, n, *, 0..n, 1..n, 1..*)

Пример: сотрудник может занимать несколько должностей, на

одной должности находится не более одного сотрудника

Position Employee

0..11..n

+person+position

0..11..n

Association

Ассоциация может иметь выделенное направление

Должность связана базовым тарифом оплаты

Тариф оплаты никак не связан с конкретной должностью

BasicRatePosition

11

-rate

Aggregation

Агрегация – отношение часть-целое

Magazine Article

1..*1..*1..* 1..*

+articles

Composition

Композиция – частный случай агрегации

Жизненный цикл частей и целого совпадают

Отделы не существуют без компании

Часть принадлежит только одному целому

Company Department

0..*1 0..*

+departments+company

1

Generalization

Генерализация (наследование, обобщение) –отношение частное-общее Отдел кадров – частный случай отдела

HR Department

EmployeeDepartment

n1

+employee

n1

Realization

Реализация – отношение выполнения соглашения Треугольник и квадрат реализуют алгоритм вращения,

специфицированный абстрактной сущностью «Фигура»

Процесс разработки ПО

Design and programming are human activities. Forget it – and all is lost.

B. Stroustrup, 1991

Методологии разработки ПО

OMT - Object Modeling Technique (Rumbaugh)

RDD - Responsibility Driven Design (Beck, Cunningham, Wirfs-Brock)

Objectory (Rational Software)

Crystal (Cockburn)

RUP (Booch, Rumbaugh, Jacobson)

XP (Beck, Cunningham, Martin, Fowler, Cockburn)

Составные части процесса разработки ПО

Может быть эффективен при наличии общих концепций и единой методологии лежащей в основе всех

составляющих процесса.

Анализ требований и предметной области

Системный анализ

Проектирование и реализация

Сопровождение и развитие

Анализ требований и предметной области

Уточнение и формализация предметной области

Определение рамок задачи

Формализация требований, анализ их непротиворечивости, полноты и выполнимости

Оценка трудозатрат и рисков

Системный анализ

Определение общей логики работы системы

Выбор технических средств

Планирование работ

(Исследования, прототипирование, …)

Проектирование и реализация

Создание программной системы (кода) удовлетворяющей требованиям

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

Сопровождение и развитие

Повышение качества системы

Расширение функциональности

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

Способы описания программных систем

CRC-карты (Class-Responsibilities-Collaborators)

UML (Unified Modeling Language)

CRC-карты

Класс

Student

Ответственность

Учиться

Сдать экзамены

Коллаборанты

Teacher

Unified Modeling Language

Язык моделирования

Определяет нотацию и ее семантику

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

Обладает возможностью к расширению стандартной семантики

Case-средства для UML

ChangeVision Astah (Jude)

IBM Rational Rose

IBM Rational Architect/Modeler

Visual Architect (Sparx Systems)

MetaMill

ArgoUML (Tigris)

Poseidon (Metaware)

Recommended