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

Содержание

Слайд 2

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

Структура вещества

Структура персонального компьютера

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

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

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

Слайд 3

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

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

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

Слайд 4

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

Структура вещества

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

1. Сложность часто представляется в виде иерархии Структура вещества Структура социальных институтов

Слайд 5

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

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

Слайд 6

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

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

Слайд 7

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

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

Слайд 8

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

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

Структура вещества

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

Слайд 9

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

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

Слайд 10

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

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

Слайд 11

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

Большие системы терабайты и петабайты данных, сотни и тысячи пользователей
Сложные

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

Слайд 12

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

Сложность проблемы (предметной области), изменение требований
Сложность управления процессом

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

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

Слайд 13

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

Создать иллюзию простоты и защитить пользователей от сложности описываемого

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

Слайд 14

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

Главная причина проблем: физическая ограниченность возможностей человека при работе

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

Слайд 15

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

Способы преодоления сложности:

Внесение порядка в хаос Способы преодоления сложности:

Слайд 16

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

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

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

Слайд 17

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

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

глаголы

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

Слайд 18

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

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

существительные

Виды декомпозиции: объектно-ориентированная Объекты Классы Модули Компоненты Подсистемы существительные

Слайд 19

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

Опыт показывает, что полезнее начинать с объектной

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

Слайд 20

Абстракция

Абстракция

Слайд 21

Абстракция

Роль абстракции: выделение важных деталей сложной системы
Абстракция (от лат. abstractio отвлечение) —

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

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

Слайд 22

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

Монитор

Системный блок

Клавиатура

Мышь

Обычный пользователь

Системный администратор

процессор

Мат.плата

Видео- адаптер

RAM

HDD

USB

Примеры абстракций Монитор Системный блок Клавиатура Мышь Обычный пользователь Системный администратор процессор

Слайд 23

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

Конкретизация

Абстрагирование

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

Слайд 24

Иерархия

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

Иерархия Роль иерархии: упорядочение родственных абстракций по уровням
Имя файла: Сложность-программных-систем.pptx
Количество просмотров: 48
Количество скачиваний: 0