Похожие презентации:
SEsem 1 (1)
1. ПРОГРАММНАЯ ИНЖЕНЕРИЯ
РОССИЙСКИЙ УНИВЕРСИТЕТ ДРУЖБЫ НАРОДОВКАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
ПРОГРАММНАЯ
ИНЖЕНЕРИЯ
Иван Валентинович Смирнов
доцент, к.ф.-м.н.
[email protected]
2. План курса
• 15 занятий• Две части
– Объектно-ориентированный анализ и
проектирование
– Программная инженерия
• Лабораторная работа по каждой части
• Домашнее задание
• 0.1* Посещение + 0.2*Лабораторные + 0.6*ДЗ
+ 0.1*Ответ
• Можно сделать доклад (до 20 баллов)
3. ПРОГРАММНАЯ ИНЖЕНЕРИЯ. ЧАСТЬ I. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД К РАЗРАБОТКЕ ПРОГРАММНЫХ СИСТЕМ
Процесс разработки программных систем4. Этапы процесса разработки
1. Постановка проблемы2. Анализ
3. Проектирование
4. Программирование
5. Тестирование
6. Ввод в эксплуатацию
5. Типы моделей жизненного цикла ПС
• Каскадная модель– Все этапы выполняются один раз
6. Типы моделей жизненного цикла ПС
• Спиральная или итеративная модель– Все этапы выполняются итеративно
несколько раз. На каждой итерации
происходит уточнение и доработка
функциональности системы, реализуется
прототип
7. Спиральная модель жизненного цикла
8. Принципы анализа и проектирования
• Анализ - разделение системы на болеемелкие составляющие компоненты
• Синтез – объединение составляющих
компонентов в более крупные
компоненты
• Определение взаимодействия между
компонентами
• Анализ – что? Проектирование – как?
9. Моделирование
• Модель системы – упрощенный взгляд насистему с какой-либо одной точки зрения
• Моделирование – создание моделей –
содержание работ на этапах анализа и
проектирования
• Моделируются все компоненты системы
• Языки моделирования позволяет записывать
и фиксировать модели в диаграммах
10. Анализ
• Модель требований• Модель архитектуры
11. Подходы к моделированию
• Алгоритмический подход. Основным строительным блокомявляется процедура или функция, а внимание уделяется,
прежде всего, вопросам передачи управления и декомпозиции
больших алгоритмов на меньшие. При алгоритмическом
подходе при изменении требований или увеличении размера
системы (что происходит нередко) сопровождение становится
сложнее.
• Объектно-ориентированный подход. В качестве основного
строительного блока выступает объект или класс. В самом
общем смысле объект - это сущность, обычно извлекаемая из
словаря предметной области, а класс является описанием
множества однотипных объектов. Каждый объект обладает
идентичностью (его можно поименовать или как-то по-другому
отличить от прочих объектов), состоянием (обычно с объектом
бывают связаны некоторые данные) и поведением (с ним можно
что-то делать или он сам может что-то делать с другими
объектами).
12. Анализ требований
• Функциональные требования– Что должна выполнять система. Как
взаимодействовать с пользователем или
другими системами
• Модель прецедентов
– Прецедент – вариант использования
системы
– Актер - Участник – пользователь системы,
использующий её функциональность
13. Нотация диаграмм вариантов использования
АктерВариант
Моделируемая
использования
система
Использование
UseCase2
«uses»
System
UseCase1
Actor1
Actor2
Обобщение
«extends»
«extends»
Проверить пароль
Клиент
Коммерческий клиент
Проверить клиента
14. Пример диаграммы прецедентов
Просмотр систематического каталога«uses»
Посетитель библиотеки
«uses»
Заказ книги
15. Анализ требований
• Нефункциональные требования– Масштабируемость
– Надежность
– Требования к документации
– и прочее
• Масштабируемость – способность
системы легко подстроиться под новые
требования или укрупнение
16. Анализ. Архитектура
• Архитектура – состав компонентов системы сописанием их взаимодействия на высоком
уровне.
– Модель логической компонентной
архитектуры. Подсистемы, модули и их
взаимодействие.
– Модель потоков данных. Какие процессы
выполняются и какие данные пересылаются.
– Физическая архитектура. Узлы с
работающими модулями на них.
17. Пример диаграммы компонентов
Learning SystemKnowledge Base
Crawler
Crawler
Frontier
Crawler
Storage
18. Пример диаграммы потоков данных
19. Проектирование
• Для каждого модуля– Модель архитектуры классов – диаграмма
классов
– Модель последовательности действий –
диаграмма последовательности действий
20. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД К РАЗРАБОТКЕ ПРОГРАММНЫХ СИСТЕМ
Кафедра информационных технологийОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ
ПОДХОД К РАЗРАБОТКЕ
ПРОГРАММНЫХ СИСТЕМ
ОБЪЕКТНАЯ МОДЕЛЬ
КЛАССЫ И ОБЪЕКТЫ
21. Стадии разработки ПС
• ООА – выделение сущностей –абстракций предметной области
• OOD – изобретение абстракций и
механизмов, обеспечивающих
требуемое поведение
• OOP – реализация ОО-моделей на ООязыке программирования.
22. Особенности построения объектной модели
При создании объектной модели всегдапомним о следующих принципах:
• Абстрагирование
• Инкапсуляция
• Иерархия (наследование)
23. Абстрагирование
• Выделение существенныххарактеристик некоторого объекта,
отличающих его от всех других видов
объектов
• Определение концептуальных границ
объекта с точки зрения наблюдателя
• Отделение существенных особенностей
поведения объекта от несущественных
24. Абстрагирование поведения
• Существенные характеристики объектавыделяются с точки зрения его
ответственности перед другими объектами поведения.
• Интерфейс объекта – полный набор
операций, которые могут осуществляться над
объектом
Виды абстракций:
• Абстракция сущности предметной области
• Абстракция поведения
25. Инкапсуляция
• Отделение интерфейса объекта от егореализации
• Сокрытие деталей внутреннего
представления абстракции и
реализации поведения
• Сокрытие данных, необходимых для
реализации поведения
26. Иерархия
Упорядочение абстракций, расположениеих по уровням.
Наследование:
• объединяет абстракции отношением
общее-частное («kind of», «is a»,
родитель-потомок);
• позволяет расширять и
модифицировать поведение сущностей.
27. Сущность класса
• Абстракция существенного в объекте• Некоторое множество объектов,
имеющих общую структуру и общее
поведение
• Контракт между абстракцией и теми, кто
использует её
• Объект является экземпляром класса
28. Интерфейс класса
• Выражает обязательства класса• Операции, поддерживаемые
экземплярами классов
• Части интерфейса:
– открытая(public) – видимая всем клиентам
– защищенная(protected) – видимая самому
классу и его подклассам
– закрытая(private) – видимая только самому
классу
29. Реализация операций
• Скрытая (инкапсулированная)реализация операций интерфейса
класса
• Члены-данные класса скрыты от
пользователей и предназначены для
реализации операций класса
30. Типы отношений между классами
• Ассоциация – смысловая связь междуклассами
• Использование – передача в
параметрах операции
• Наследование – иерархия классов
• Агрегация
31. Нотация диаграммы классов
КлассИнтерфейс
Customer
Имя класса
iSecureInformation
name
address
Атрибуты класса
«interface»
phone
iPaint
Операции класса
birthday
buy()
makeComplaint()
Ассоциация
Class A
Роль А Роль Б
Class B
Примечание
(нота)
Имя интерфейса
Наследование
Агрегация
Композиция
Shape
University
University
Зависимость
Class A
1
Class B
1
Кардинальные
числа
1..*
*
Faculty
Student
Реализация
Class A
«interface»
Interface
Rectangle
32. Пример диаграммы классов
КомпанияВуз
1..*
-сотрудник
1
*
*
1
-Начальник
Отдел
name
1..*
Офис
address
voice
Штаб-квартира
Персона
name
employeeID
title
getPhoto()
getSoundBite()
getContactInformation()
getPersonalRecords()
Запись кадрового учета
Студент
name
studentID
1..*
1..*
1..*
1
Контактная информация
0..1
1..*
-посещает
*
*
Курс
name
courseID
1..*
-читает
*
1..*
0..1
-декан
*
1..*
-работает
1
-обучается в
1
Факультет
name
addInstructor()
removeInstructor()
getInstructor()
getAllInstructors()
name
-состоит из
address
phone
1
addStudent()
1..*
removeStudent()
getStudent()
getAllStudents()
addDepartment()
removeDepartment()
getDepartment()
getAllDepartments()
Преподаватель
name
33. Нотация диаграмм последовательности действий
Взаимодействующийобъект
Линия жизни
объекта
Фокус
управления
Уничтожение Ограничение
объекта
Object1
{}
Класс объекта
Вызов
Message4
Синхронное
сообщение
Message3
Асинхронное
сообщение
Сообщение
возврата
Message1
Message2
Отметки
времени
а:
b:
34. Пример диаграммы последовательности действий
s : Caller: Switch
liftReceiver
Время
tone
r : Caller
setDialTone()
* dialDigit(d)
{dialed – tone < 30
sec}
dialed
routeCall(s,n)
"create"
c : Conversation
ring()
liftReceiver
connect(r,s)
connect(r)
После соединения
абоненты r и s
могут обмениваться
информацией
connect(s)
35. Код на языке C++
class Entity{
public:
void SayHello() { printf(“%s
приветствует Вас ”, name); };
Entity(char* _name){ name = _name;};
private:
char * name;
}
36. Пример использования классов
main(){
Entity b(“B”); // создание объекта
Entity a(“A”); // создание объекта
a.SayHello();
b.SayHello();
}
37. Код на языке C++
class Helper{
public:
void SayMyName() { printf(“%s”, name);
};
Helper(char* _name){ name = _name;};
private:
char * name;
}
38. Код на языке C++
class Entity{
public:
void SayHello() { printf(“Объекту %s
помогает объект”, name,);
helper.SayMyName();};
Entity(char* _name, Helper& _helper){ name =
_name; helper = _helper};
private:
char * name;
Helper helper;
}
39. Пример использования классов
main(){
Helper b(“B”); // создание объекта
Entity A(“A”, b); // создание объекта
a.SayHello();
//Объекту А помогает объект B
}
40. Заключение
Анализ и проектирование – важные этапыразработки программных систем
Моделирование – способ лучше понять
будущую систему, выяснить, как она
будет работать
Основная проблема – как правильно
выполнить разбиение системы на
компоненты
41. Заключение
• Абстрагирование, Инкапсуляция,Наследование – основные принципы
создания объектной модели
• Класс описывает поведение множества
объектов в виде интерфейса – набора
операций, реализация которых скрыта
• Объекты – экземпляры классов
42. Литература
• Буч Г. Объектно-ориентированныйанализ и проектирование с примерами
приложений на С++