Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ProgBasics_lec04_systems_complexity

.pdf
Скачиваний:
14
Добавлен:
14.04.2015
Размер:
467 Кб
Скачать
☆

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

Неприятная особенность:

Обычно программные системы очень сложны.

Исключая системы, созданные одним человеком:

•новичком или профессионалом высокого класса

•сопровождаются и используются им же

•область применения сильно ограничена

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

Представьте, как устроены:

•самолёт

–двигатель самолёта

•компьютер

–GPU

•атомная электростанция

–ядерный реактор

Сложность управления процессом разработки

Следование ряду необходимостей:

•создание «иллюзии простоты»

•соответствие новым требованиям

•организация коллективной разработки

Гибкость программного обеспечения

•свобода, позволяющая творить всё

–может привести к созданию «велосипеда»

Сложность описания поведения больших

дискретных систем

•части системы минимально влияют друг на друга

•наличие множества состояний – главная необходимость тестирования

•чем сложнее система – тем проще её разрушить

Пример сложной системы: CPU

 

 

 

 

 

 

диоды

 

 

 

 

 

 

 

 

регистры

 

 

 

 

 

 

 

 

CPU

 

 

 

 

 

транзисторы

 

 

 

 

 

 

 

 

 

 

 

 

схемы

 

 

 

 

 

 

 

 

управления

 

 

 

 

 

конденсаторы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сложная система: растение

Корни Листья Стебли

Корневые

Эпидермис

…

отростки

 

 

Верхушка Сосудистая

корня ткань

1.Сложные системы обычно иерархические

–состоят из взаимосвязанных подсистем

•которые тоже состоят из подсистем, и т.д.

2.Выбор элементарного компонента – на усмотрение исследователя

–зависит от уровня абстракции

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

4.Сложные системы содержат одинаковые структурные части

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

Декомпозиция сложных систем

Алгоритмическая

•разделение алгоритмов

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

•разделение системы на объекты

Алгоритмическая декомпозиция

Работа с банкоматом

Обработка

Работа со

Выдача

Выдача чека

карточки

счётом

наличных

 

Открытие

Снятие

счёта

денег

Проверка

Вычет

наличия

суммы со

суммы

счёта

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

Устройство

чтения

карточки

Принтер

Экран ATM

для чеков

 

ATM

Кассовый

Счёт

аппарат

клиента