ProgBasics_lec04_systems_complexity
.pdfСложность программных систем
Неприятная особенность:
Обычно программные системы очень сложны.
Исключая системы, созданные одним человеком:
•новичком или профессионалом высокого класса
•сопровождаются и используются им же
•область применения сильно ограничена
Сложность реального мира
Представьте, как устроены:
•самолёт
–двигатель самолёта
•компьютер
–GPU
•атомная электростанция
–ядерный реактор
Сложность управления процессом разработки
Следование ряду необходимостей:
•создание «иллюзии простоты»
•соответствие новым требованиям
•организация коллективной разработки
Гибкость программного обеспечения
•свобода, позволяющая творить всё
–может привести к созданию «велосипеда»
Сложность описания поведения больших
дискретных систем
•части системы минимально влияют друг на друга
•наличие множества состояний – главная необходимость тестирования
•чем сложнее система – тем проще её разрушить
Пример сложной системы: CPU
|
|
|
|
|
|
диоды |
|
|
|
|
|
|
|
|
|
регистры |
|
|
|
|
|
|
|
|
|
||
CPU |
|
|
|
|
|
транзисторы |
|
|
|
|
|
||
|
|
|
|
|
||
|
|
схемы |
|
|
|
|
|
|
|
||||
|
|
управления |
|
|
|
|
|
|
конденсаторы |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сложная система: растение
Корни Листья Стебли
Корневые |
Эпидермис |
… |
|
отростки |
|||
|
|
Верхушка Сосудистая
корня ткань
1.Сложные системы обычно иерархические
–состоят из взаимосвязанных подсистем
•которые тоже состоят из подсистем, и т.д.
2.Выбор элементарного компонента – на усмотрение исследователя
–зависит от уровня абстракции
3.Связь внутри компонента сильнее, чем между компонентами
4.Сложные системы содержат одинаковые структурные части
5.Любая сложная система – результат развития более простой системы
Декомпозиция сложных систем
Алгоритмическая
•разделение алгоритмов
Объектно-ориентированная
•разделение системы на объекты
Алгоритмическая декомпозиция
Работа с банкоматом
Обработка |
Работа со |
Выдача |
Выдача чека |
|
карточки |
счётом |
наличных |
||
|
Открытие |
Снятие |
счёта |
денег |
Проверка |
Вычет |
наличия |
суммы со |
суммы |
счёта |
Объектно-ориентированная декомпозиция
Устройство
чтения
карточки
Принтер |
Экран ATM |
|
для чеков |
||
|
ATM
Кассовый |
Счёт |
аппарат |
клиента |