Сложность
Вместо вступления l l Врач, строитель и программистка спорили о том, чья профессия древнее. Врач заметил: "В Библии сказано, что Бог сотворил Еву из ребра Адама. Такая операция может быть проведена только хирургом, поэтому я по праву могу утверждать, что моя профессия самая древняя в мире". Тут вмешался строитель и сказал: "Но еще раньше в Книге Бытия сказано, что Бог сотворил из хаоса небо и землю. Это было первое и, несомненно, наиболее выдающееся строительство. Поэтому, дорогой доктор, вы не правы. Моя профессия самая древняя в мире". Программистка при этих словах откинулась в кресле и с улыбкой произнесла: "А кто же по-вашему сотворил хаос? " 2
l l «В мире очень мало гениев, и не надо думать, будто в среде программистов их доля выше средней» Петерс «Сложность программного обеспечения - отнюдь не случайное его свойство» Ф. Брукс 3
Причины сложности l l Сложность реального мира Трудность управления процессом разработки Необходимость обеспечить достаточную гибкость программы Проблемы описания поведения больших дискретных систем 4
Признаки сложной системы l l l Иерархичность Относительность выделения элементарных компонентов Относительная независимость отдельных частей системы Ограниченное число типов подсистем Эволюция из простой системы 5
Способы борьбы со сложностью l l l Декомпозиция Абстракция Иерархия 6
Декомпозиция l l l «Способ управления сложными системами был известен еще в древности - divide et impera (разделяй и властвуй)» Дейкстра Алгоритмическая декомпозиция Объектно-ориентированная декомпозиция 7
Алгоритмическая декомпозиция 8
ОО декомпозиция 9
Абстракция l «Люди развили чрезвычайно эффективную технологию преодоления сложности. Мы абстрагируемся от нее. Будучи не в состоянии полностью воссоздать сложный объект, мы просто игнорируем не слишком важные детали и, таким образом, имеем дело с обобщенной, идеализированной моделью объекта» Вулф 10
Иерархия l l сложные системы содержат много разных иерархий Иерархия первого типа – «has a» «быть частью» Иерархия второго типа – «is a» классификация Совокупность иерархий – архитектура системы 11
Источники информации l Гради Буч. Объектноориентированный анализ и проектирование. http: //www. isuct. ru/~ivt/books/IS/buch /index. HTM 12