Сложность программных систем
Примеры сложных систем
Признаки сложной системы (по Саймону)
1. Сложность часто представляется в виде иерархии
2. Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен (на усмотрение наблюдателя)
3. Внутрикомпонентная связь обычно сильнее, чем связь между компонентами
4. Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных
4. Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных
5. Работающая сложная система является результатом развития работавшей простой системы
Пример: структура ПК
Промышленные программные системы
Причины сложности разработки программной системы
Задача разработчиков программной системы
Зачем бороться со сложностью?
Внесение порядка в хаос
Декомпозиция
Виды декомпозиции: процедурная
Виды декомпозиции: объектно-ориентированная
Какая декомпозиция лучше: алгоритмическая или объектно-ориентированная?
Абстракция
Абстракция
Примеры абстракций
Уровни абстракции
Иерархия
Резюме: рассмотренные вопросы
3.92M
Категория: ИнформатикаИнформатика

Сложность программных систем

1. Сложность программных систем

1. Признаки сложных систем
2. Причины сложности разработки программных систем
3. Способы борьбы со сложностью: абстракция, декомпозиция,
иерархия
Преподаватель:
Ботов Дмитрий Сергеевич

2. Примеры сложных систем

Структура
персонального
компьютера
Структура живых
организмов
Структура вещества
Структура
социальных
институтов
2

3. Признаки сложной системы (по Саймону)

1. Сложность часто представляется в виде иерархии
2. Выбор, какие компоненты в данной системе считаются
элементарными, относительно произволен (на усмотрение
наблюдателя)
3. Внутрикомпонентная связь обычно сильнее, чем связь между
компонентами
4. Иерархические системы обычно состоят из немногих типов
подсистем, по-разному скомбинированных и организованных
5. Работающая сложная система является
результатом развития работавшей
простой системы
3

4. 1. Сложность часто представляется в виде иерархии

Структура вещества
Структура социальных институтов
4

5. 2. Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен (на усмотрение наблюдателя)

5

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

6

7. 4. Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных

7

8. 4. Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных

Структура живых организмов
Структура вещества
8

9. 5. Работающая сложная система является результатом развития работавшей простой системы

9

10. Пример: структура ПК

10

11. Промышленные программные системы

• Большие системы
терабайты и петабайты данных,
сотни и тысячи пользователей
• Сложные системы
тысячи файлов, десятки подсистем,
сотни компонент
• Качественные системы
надежность, безопасность,
отказоустойчивость, эргономика,
многократное использование,
документация, сопровождаемость
• Сложная архитектура
клиентская и серверная часть,
базы данных, веб-сервисы,
распределенность,
масштабируемость
• Создаются командами
разработчиков
11

12. Причины сложности разработки программной системы

«Сложность программного обеспечения –
отнюдь неслучайное его свойство»
(Ф. Брукс)
• Сложность проблемы (предметной области),
изменение требований
• Сложность управления процессом разработки
• Сложность обеспечения гибкости конечного программного
продукта
• Сложность самой программной системы,
описания поведения отдельных подсистем
12

13. Задача разработчиков программной системы

Создать иллюзию простоты
и защитить пользователей от
сложности описываемого
предмета или процесса
(Г. Буч)
13

14. Зачем бороться со сложностью?

Главная причина проблем:
физическая ограниченность
возможностей человека при
работе со сложными
системами
Человеческий мозг может
одновременно следить
за 7 ± 2 объектами
14

15. Внесение порядка в хаос

Способы преодоления сложности:
Декомпозиция
Абстракция
Иерархия
15

16. Декомпозиция

Роль декомпозиции: разделение сложной системы на простые части
– Алгоритмическая декомпозиция
– Объектно-ориентированная декомпозиция
16

17. Виды декомпозиции: процедурная


Действия
Процессы
Процедуры
Алгоритмы
Функции
Этапы/Блоки
глаголы
17

18. Виды декомпозиции: объектно-ориентированная


Объекты
Классы
Модули
Компоненты
Подсистемы
существительные
18

19. Какая декомпозиция лучше: алгоритмическая или объектно-ориентированная?

Опыт показывает, что полезнее начинать с объектной
декомпозиции:
• объектная декомпозиция уменьшает размер
программных систем за счет повторного использования
общих механизмов
• объектно-ориентированные системы более гибки и
проще эволюционируют со временем
• объектная декомпозиция помогает
нам разобраться
в сложной программной системе
19

20. Абстракция

20

21. Абстракция

Роль абстракции: выделение важных деталей сложной системы
Абстракция (от лат. abstractio отвлечение) — форма познания,
основанная на мысленном выделении существенных свойств и связей
предмета и отвлечении от других, частных его свойств и связей
• Любая система (окружающий мир) у человека
представляется в виде некоторой абстракции
Абстракция – существенные характеристики некоторого объекта,
которые отличают его от других видов объектов и, таким образом,
четко определяют особенности данного объекта с точки зрения
дальнейшего рассмотрения и анализа (Г. Буч).
21

22. Примеры абстракций

Обычный пользователь
Системный
администратор
Монитор
процессор
Системный
блок
Видеоадаптер
Мат.плата
RAM
Мышь
HDD
USB
Клавиатура
22

23. Уровни абстракции

Конкретизация
Абстрагирование
23

24. Иерархия

Роль иерархии: упорядочение родственных абстракций по уровням
24

25. Резюме: рассмотренные вопросы

1. Какие общие признаки можно выделить
у сложных систем?
2. В чем заключается сложность разработки программного
обеспечения?
3. Какие существуют способы борьбы со сложностью?
4. В чем заключается роль абстракции, декомпозиции и
иерархии в борьбе со сложностью?
5. В чем отличие процедурной и объектноориентированной декомпозиции?
25
English     Русский Правила