Концепции представления целостности машина организм 7 уровневая модель сложная система
Теория организации (Вопросы к экзамену)
Теория организации (Вопросы к экзамену)
1. Определение понятия организации.
2. Теория организации как составная часть науки управления. Предмет теории организации.
3. Модель как некоторый образ или прообраз объекта или системы. Понятие теории. Задача анализа и задача синтеза.
4. Системный подход к анализу явлений. Базовые принципы системного подхода.
6. Цели организационной системы
7. Характеристика основных направлений классической теории организации: теория «научного управления» Ф. Тейлора, принципы управления (организации) А. Файоля, принципы бюрократической организации М. Вебера.
8. Школа “Человеческих отношений”. Формирование и развитие.
9. Концепция «социальной системы» в теории организации.
10. Концепция ситуационного управления. (Управления по обстоятельствам).
11. Основные положения теории институтов и институциональных изменений.
12. Современные направления теоретических разработок в теории организации: концепция реинжиниринга; концепция внутренних рынков; теория альянсов; концепция виртуальных продуктов и организаций.
13. Организация как открытая система (система, взаимодействующая с внешней средой). Типы внешней среды.
14. Концепции представления целостности: «машина»; «организм»; 7-уровневая модель; «сложная система».
15. Представление производственной системы организации
16. Жизненный цикл продукта. Этапы жизненного цикла выпуска нового продукта.
17. Декомпозиция производственных функций на основе моделей «состава» и «жизненного цикла».
18. Концепция цепочек поставок. Представление производственной системы в виде цепочек поставок.
20. Особенности организации производства материальных продуктов.
21. Организация как экономическая система. Основные компоненты экономической среды организации.
22. Социальная система организации. Социальные институты, статусы и роли в организации. Социальное управление в организации
23. Окружающая природная среда предприятия. Компоненты Среды. Представление предприятия как экологической системы.
24. Функция организации. Требования к организационной структуре.
25. Должностные связи. Типы связей. Множество потенциально возможных связей.
26. Организационные уровни и диапазоны управления в организации. Закон Доу.
27. Группы факторов, определяющих нагрузку на должностные связи.
28. Группировка видов деятельности в организации. Основные схемы группировки видов деятельности.
29. Линейные и штабные полномочия и их распределение в организации.
31. Стратегии (концепции) проведения изменений.
32. Критерии оценки организационной структуры.
33. Понятия зависимости, закона, закономерности.
34. Потенциалы элементов и потенциал системы (целого).
35. Закон синергии. Синергические эффекты в организации. Особенности проявления закона синергии в организациях.
36. Закон самосохранения. Особенности проявления закона на практике.
37. Философия развития. Модель жизненного цикла организации. Закон развития.
38. Закон композиции и пропорциональности (закон гармонии).
39. Закон информированности и упорядоченности.
Теория организации (Вопросы к экзамену)
Теория организации (Вопросы к экзамену)
1. Определение понятия организации.
2. Теория организации как составная часть науки управления. Предмет теории организации.
3. Модель как некоторый образ или прообраз объекта или системы. Понятие теории. Задача анализа и задача синтеза.
4. Системный подход к анализу явлений. Базовые принципы системного подхода.
6. Цели организационной системы
7. Характеристика основных направлений классической теории организации: теория «научного управления» Ф. Тейлора, принципы управления (организации) А. Файоля, принципы бюрократической организации М. Вебера.
8. Школа “Человеческих отношений”. Формирование и развитие.
9. Концепция «социальной системы» в теории организации.
10. Концепция ситуационного управления. (Управления по обстоятельствам).
11. Основные положения теории институтов и институциональных изменений.
12. Современные направления теоретических разработок в теории организации: концепция реинжиниринга; концепция внутренних рынков; теория альянсов; концепция виртуальных продуктов и организаций.
13. Организация как открытая система (система, взаимодействующая с внешней средой). Типы внешней среды.
14. Концепции представления целостности: «машина»; «организм»; 7-уровневая модель; «сложная система».
15. Представление производственной системы организации
16. Жизненный цикл продукта. Этапы жизненного цикла выпуска нового продукта.
17. Декомпозиция производственных функций на основе моделей «состава» и «жизненного цикла».
18. Концепция цепочек поставок. Представление производственной системы в виде цепочек поставок.
20. Особенности организации производства материальных продуктов.
21. Организация как экономическая система. Основные компоненты экономической среды организации.
22. Социальная система организации. Социальные институты, статусы и роли в организации. Социальное управление в организации
23. Окружающая природная среда предприятия. Компоненты Среды. Представление предприятия как экологической системы.
24. Функция организации. Требования к организационной структуре.
25. Должностные связи. Типы связей. Множество потенциально возможных связей.
26. Организационные уровни и диапазоны управления в организации. Закон Доу.
27. Группы факторов, определяющих нагрузку на должностные связи.
28. Группировка видов деятельности в организации. Основные схемы группировки видов деятельности.
29. Линейные и штабные полномочия и их распределение в организации.
31. Стратегии (концепции) проведения изменений.
32. Критерии оценки организационной структуры.
33. Понятия зависимости, закона, закономерности.
34. Потенциалы элементов и потенциал системы (целого).
35. Закон синергии. Синергические эффекты в организации. Особенности проявления закона синергии в организациях.
36. Закон самосохранения. Особенности проявления закона на практике.
37. Философия развития. Модель жизненного цикла организации. Закон развития.
38. Закон композиции и пропорциональности (закон гармонии).
39. Закон информированности и упорядоченности.
Тема №1.1.Общие представления об организации: системный подход
1) составная часть управления, суть которой заключена в координации действий отдельных элементов системы, достижении взаимного соответствия функционирования ее частей;
2) форма объединения людей для их совместной деятельности в рамках определенной структуры;
Организация также может пониматься как:
А. Способ построения и координации действий отдельных элементов системы.
B. Форма объединения физических или юридических лиц для их совместной коммерческой или общественной деятельности.
C. Учреждение, призванное выполнять заданные функции, решать определенный круг задач, например школа, институт, банк, правительственные учреждения.
В период формирования крупных промышленных корпораций, связанный с промышленным переворотом (конец XIX- начало XX века) организация рассматривалась как большой механизм. При этом понятия «предприятие» и «организация» фактически не различались. Как сложная машина организация состоит из частей, каждая из которых выполняет лишь одну задачу горизонтального, вертикального и вращательного движения, точно так же и организация может быть устроена таким образом, чтобы каждый человек выполнял всего одну простую задачу. Механистический тип организации родился как логическое расширение этой концепции и стал орудием для преобразования большого количества неквалифицированных сельскохозяйственных тружеников в частично квалифицированных промышленных рабочих. Влияние этого простого взгляда на организацию было столь велико, что за одно поколение были созданы условия для производства товаров и услуг, которые превзошли всю предшествующую совокупную производственную мощность человечества. Сущность механистического способа организации в том, что организация представляет собой неразумную систему — у нее нет своей собственной цели. Это инструмент, чью функцию определяет хозяин; орудие владельца для достижения своей цели — получения прибыли[1, с.33].
В 60-70 –е годы XX века возникает, так называемый, органический (органистический) подход согласно организация представляет собой живую систему с единым разумом (в точности как человеческий организм), у которой имеется своя собственная цель. Чтобы выжить, биологические существа должны расти — так подсказывает здравый смысл. А для этого им следует использовать в своих интересах окружающую среду, что поможет им достичь позитивного метаболизма.
В переводе на язык организации это означает следующее: мерой успеха является рост, единственный и наиважнейший показатель эффективности, а прибыль представляет собой средство для его достижения. Таким образом, в отличие от механистической модели, для которой прибыль является самоцелью, в биологической модели это лишь средство для достижения цели [1, с.34].
Органическая модель в том виде, в котором она формулировалась, имеет право на существование, но не выходит за рамки детерминистических взглядов. В связи с этим организации стали рассматриваться в социологическом контексте как добровольный союз целеустремленных членов, самостоятельно определяющих, к чему следует стремиться и какие средства предпочесть для достижения намеченного. Подобные представления устраивали теоретиков, но особо ничего не давали в практическом смысле, по этой причине в конце XX века в менеджменте и теории организации стал использоваться системный подход.
Если обратиться к классическому учебному пособию по менеджменту М. Мескона, то можно утверждать, что под системой понимается «некая общность, состоящая из взаимозависимых элементов, каждый из которых, вносит определённый вклад в характеристики целого»[3, с.66]. Под элементом в данном случае понимается неразложимый далее компонент сложных объектов, явлений и процессов. Однако определение данное классиками менеджмента недостаточно точно характеризует понятие системы, так как не отражает её свойства и характеристики.
В работах профессора Уортонской школы системного анализа (США)Р. Акоффа система рассматривается как целое, определяемое одной или несколькими основными функциями, где под функцией понимается роль, назначение, «миссия» системы. По Акоффу, система состоит из двух или более существенных частей, т.е. частей, без которых она не может выполнять свои функции [2,с.14].
Согласно подходу Р. Акоффу объект (система) должен являться целеустремленным, если он может производить: 1) один и тот же результат различными способами в неизменной среде и 2) различные результаты в той же или иной среде. Способность делать выбор — необходимое условие целеустремленности, но отнюдь не достаточное. Объект, который может реагировать по-разному, но при этом позволяет получать в любой среде лишь один и тот же результат, является самонастраивающимся, а не целеустремленным. Будучи целеустремленной системой, организация является частью такого же (целеустремленного), но более крупного целого — общества. В то же время, ее собственные члены — целеустремленные индивиды. В результате проявляется иерархия целеустремленных систем из трех отдельных уровней, причем настолько тесно взаимосвязанных между собой, что оптимальное решение невозможно обнаружить на каком-либо одном из них, вне зависимости от двух других. Совместить интересы целеустремленных элементов друг с другом и с целым — вот главная задача системы [1,c.36].
С современной точки зрения система — это группа взаимосвязанных и целенаправленно(. )взаимодействующих элементов, каждый из которых, вносит определённый вклад в характеристики целого.
С позиции общепринятого научного подхода для системы характерно наличие существенных связей между элементами, превосходящих по мощности их связи с внешней средой. Открытые системы характеризуются энергетическим, материально-вещественным и информационным обменом с окружающей средой.
Отсюда следует, что система не сводится к простой совокупности элементов и, расчленяя систему на отдельные части, изучая каждую в отдельности, нельзя познать свойства системы в целом (неаддитивность).
Методологическая специфика системного подхода определяется тем, что ориентирует исследование на раскрытие целостности объекта и обеспечивающих её механизмов, на выявление многообразных типов связей сложного объекта и сведение их в единую теоретическую картину.
Рис. 1. Описание простейшей системы.
Основной задачей системного анализа является классификация подцелей системы, на которые подразделяется её главная цель. В целом данная теория опирается на четыре основные аксиомы[4, с.26-27]
1. У системы всегда есть одна постоянная генеральная цель.
2. Цель для системы задаётся извне.
3. Для достижения цели система должна действовать определённым образом
4. Результат действия систем существует независимо от самих систем.
Рис.2.Алгоритм действия системы.
Представим далее модель организации как социотехнической системы. Важнейшим понятием, используемым при построении сложных систем, является обратная связь, которая определяется как воздействие результатов функционирования системы на характер этого функционирования. Если обратная связь усиливает результаты функционирования, то она называется положительной, если ослабляет – отрицательной [2,с.15-16].
Любая системная функциональная единица включает в себя как минимум следующие элементы (рис.3):
1. Фильтр (Z). Выделяет требуемые сигналы внешней среды.
2. Афферентные пути, которые передают информацию с фильтра на анализатор.
3. Анализатор (подсистема управления). На основании информации с фильтра вырабатывает решения об активации исполнительных элементов.
4. Эфферентные пути. Передают управляющие воздействия на исполнительные элементы.
5. Уставка (М). Выдаёт разрешение на действие системы при определённых внешних воздействиях. По отношению к предприятию уставку определяют органы государственной власти, общее собрание акционеров и т.д. Она указывает на связь системы и внешней среды
Организация (предприятие)[2] как сложная система является синтезом следующих подсистем (рис.3):
1. Технической, которая включает оборудование, инструменты и прочие средства труда, преобразующие вход в выход, способом который улучшает экономическую эффективность организации.
2. Технологической. Под технологией в наиболее широком смысле мы будем понимать практическое применение научных и профессиональных знаний выраженное в форме:
а) правил, приёмов, способов и методов производства, обработки и переработки сырья и материалов.
б) использования необходимых специализированных или универсальных средств производства: машин, механизмов, устройств и систем.
На промышленных предприятиях объединение технической и технологической подсистем формируют его производственную систему.
3. Обеспечивающей. Данная подсистема обеспечивает деятельность организации необходимыми ресурсами: трудовыми, капитальными, информационными и т.д.
4. Социальной, которая включает занятых в организации служащих (знания, умения, настрой, ценностные установки, отношение к выполняемым функциям), управленческую структуру, систему мотивации поощрений и социальной поддержки.
5. Финансовой, направленной на поиск источников формирования имущества предприятия и поддержание основных показателей его деятельности на заданном уровне.
6. Целевой подсистемы обеспечивающей достижение всех поставленных краткосрочных и долгосрочных целей по основным видам деятельности организации, включая планирование и управление развитием.
7. Подсистемы управления организацией (блока управления).
8. Подсистемы внешней среды, включающей социальные ценности, социальные и государственные институты с которыми взаимодействует организация, другие организации выступающие конкурентами или находящиеся в других отношениях.
Следует отметить, что при изучении тех или иных подсистем необходимо учитывать их взаимодействие в рамках системы как целого. В зависимости от вида экономической деятельности организации, состав и структура подсистем организации может серьёзно различаться. Однако системный подход позволяет смоделировать процесс функционирования фактически любой организации. Как правило, на практике трудно выделить те или иные подсистемы в чистом виде, так как для реализации тех или иных функций могут создаваться комплексные функциональные подсистемы (подразделения, службы, отделы, бюро и т.д.). При этом одна структурная функциональная единица может выполнять задачи сразу нескольких подсистем (например, кадровая служба может осуществлять подбор персонала, выполняя задачи обеспечивающей подсистемы, но также выполнять все задачи социальной подсистемы и ряд задач целевой).
Рис.3. Модель организации как сложной системы (на примере промышленного предприятия).
1. Гараедаги Дж. Системное мышление: Как управлять хаосом и сложными процессами/пер. с. англ. Е.И. Недбальской.2-е изд.-Минск: Гревцов Букс, 2011.-480 с.
2. Плотинский Ю.М. Модели социальных процессов.-М.: Логос,2001-296 с.
4. Гайдес М.А. Общая теория систем. (системы и системный анализ). издание 2-е исправленное. «ГЛОБУС-ПРЕСС». 2005.-201 с.
5. Артюхов В.В. Общая теория систем: самоорганизация, устойчивость, разнообразие, кризисы.-М.:Книжный дом «ЛИБРОКОМ»,2009.-224 с.
6. Фатхутдинов Р.А. Производственный менеджмент: учебник для вузов.6-е изд.- СПб.: Питер, 2011, 496 с.
[1] Райзберг Б.А., Лозовский Л.Ш., Стародубцева Е.Б.. Современный экономический словарь. — 2-е изд., испр. М.: ИНФРА-М. 479 с.
[2] В данном случае организация понимается как синонимом слова предприятия.
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО
ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ
ГОСУДАРСТВЕННЫЙ ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ»
по программам магистратуры
направление 38.04.02 Менеджмент
Теория менеджмента (история управленческой мысли)
11. Иерархия потребностей по А.Маслоу
12. Двухфакторная теория мотивации Ф.Герцберга
13. Теория Х и теория У. Д.Мак-Грегора
11. Организация как открытая система (система, взаимодействующая с внешней средой). Концепции представления целостности: «машина»;
1. Иванова Т.Ю., Приходько В.И. Теория организации. – М.: КноРус, 2010
2. Лапыгин Ю.Н. Теория организации. – М.: Инфра-М, 2010
3. Мильнер Б.З. Теория организации. Учебник. – М.: Инфра-М, 2010
6.Теория организации: учебник для бакалавров / Г.Р.Латфуллин, А.В.Райченко ;
13. Функциональные стратегии: мотивы, виды, содержание, характеристика
14. Стратегии роста: мотивы, виды, содержание, характеристика
16. Понятие и управление организационными изменениями в процессе стратегического управления. Роль стратегического планирования в системе стратегического управления
Стратегический менеджмент : учеб. по специальности «Менеджмент орг.»
Рекомендуемая литература Багиев, Г.Л. Маркетинг: учебник для вузов / Г.Л. Багиев, В.М. Тарасевич;
Корпоративная социальная ответственность
12. Благотворительность, социальные инвестиции и корпоративное гражданство
13. Социальные коммуникации бизнеса: от манипуляции к социальному партнерству
14. Специфика анализа социальной политики
Рынок труда и управления человеческими ресурсами. В 2-х частях:
Учебное пособие / Под ред. Н.А. Горелова, Л.О. Ильиной. – СПб: Изд-во
«МЕДВЕДЕВА Наталья Геннадьевна ФОРМИРОВАНИЕ ЦЕЛОСТНОЙ КАРТИНЫ МИРА У РЕБЕНКА НА НАЧАЛЬНОЙ СТУПЕНИ ОБУЧЕНИЯ В ПЕДАГОГИЧЕСКОЙ СИСТЕМЕ К.Д. УШИНСКОГО 13.00.01 – общая педагогика, история педагогики и образования АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата педагогических наук Курск – 2009 Работа вы. »
«2012 ВЕСТНИК ПОЛОЦКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА. Серия А УДК 821.111 ВАШИНГТОН ИРВИНГ И ВАЛЬТЕР СКОТТ: К ПРОБЛЕМЕ ВЗАИМОСВЯЗИ О.Ю. КЛОС (Полоцкий государственный университет) Исследуются взаимосвязи двух выдающихся писателей XIX века: Вальтера Скотта и Вашингтона Ирвинга, принадлежащих к разным национальным литератур. »
«LITERARY HISTORY OF THE UNITED STATES REVISED EDITION IN ONE VOLUME 1955—1963 THE MACMILLAN COMPANY NEW YORK ЛИТЕРАТУРНАЯ ИСТОРИЯ СОЕДИНЕННЫХ ШТАТОВ АМЕРИКИ Т О М III Русский текст печатает. »
«Кто такой Вольфганг Амадей Моцарт? Моим детям, Джеймсу и Кэтрин Макдона – Й. З. М. Ричарду, который не сможет увидеть законченную работу, но чей дух в каждой иллюстрации этой книги. Навсегда с любовью – К. Р. УДК 92. »
«КАМЕНСКВОЛОКНО www.aramid.ru КАТАЛОГ ПРОДУКЦИИ ИЗ ПОЛИПРОПИЛЕНА КАМЕНСКВОЛОКНО Продукция АО «Каменскволокно» неотъемлемая часть нашей оборонной промышленнности, космической отрасли и сельского хозяйства. Стандарты качества, применяемые на нашем производстве, обеспечивают высокий уровень качества выпускаемой продукц. »
«Культурология 29 9. Крылов А., Зуенкова О. Брэнд и общество – разделение ценностей (прошлое и будущее взаимовлияние) [Электронный ресурс]. – URL: www.sostav.ru/news/2003/09/23/mnenie/ (дата обращения: 12.10.2016).10. Винсент Л. Леген. »
«Оглавление Глава 1. О потерянном государственном суверенитете Глава 2. О ФРС и Центральном банке не России Глава 3. О Банке Англии и болезненных родственниках «короля-солнца» Глава 4. Шесть историй про шпионов, или. »
«УДК 820 (73) «АМЕРИКАНСКАЯ МЕЧТА» В РОМАНАХ ФИЛИПА РОТА О.Б. Карасик Аннотация: Филип Рот – один из наиболее выдающихся современных писателей США. В своей трилогии, включающей романы «Американская пастораль», «Мой муж – коммунист. »
«Из истории немецких колоний Нашествие киргиз-кайсацких и калмыцких орд После частичных набегов на немецкие колонии разрозненных шаек Пугачева в 1773-1774 годах, подорвавших благосостояние колонистов, к. »
«Пьер Виймар Крестовые походы. Миф и реальность священной войны Аннотация Крестовые походы представляют собой одно из самых головокружительных и привлекательных авантюр мировой истории. Уже сами крестоносцы часто удивлялись своим достижениям. Исследователи до сих пор спорят, чем являли. »
Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 2-3 рабочих дней удалим его.
Концепции представления целостности машина организм 7 уровневая модель сложная система
Лили Томлин (Lily Tomlin)
В поисках признаков разумной жизни во Вселенной
(The Search for Signs of Intelligent Life in the Universe)
Глава 1
Сложность
1.1. Сложность, присущая программному обеспечению
Простые и сложные программные системы
Мы знаем, что не все программные системы сложны. Существует множество программ, которые задумываются, разрабатываются, сопровождаются и используются одним и тем же человеком. Обычно это начинающий программист или профессионал, работающий изолированно. Мы не хотим сказать, что все такие системы плохо сделаны или, тем более, усомниться в квалификации их создателей. Но такие системы, как правило, имеют очень ограниченную область применения и короткое время жизни. Обычно их лучше заменить новыми, чем пытаться повторно использовать, переделывать или расширять. Разработка подобных программ скорее утомительна, чем сложна, так что изучение этого процесса нас не интересует.
Нас интересует разработка того, что мы будем называть промышленными программными продуктами. Они применяются для решения самых разных задач, таких, например, как системы с обратной связью, которые управляют или сами управляются событиями физического мира и для которых ресурсы времени и памяти ограничены; задачи поддержания целостности информации объемом в сотни тысяч записей при параллельном доступе к ней с обновлениями и запросами; системы управления и контроля за реальными процессами (например, диспетчеризация воздушного или железнодорожного транспорта). Системы подобного типа обычно имеют большое время жизни, и большое количество пользователей оказывается в зависимости от их нормального функционирования. В мире промышленных программ мы также встречаем среды разработки, которые упрощают создание приложений в конкретных областях, и программы, которые имитируют определенные стороны человеческого интеллекта.
Конечно, среди нас всегда есть гении, которые в одиночку могут выполнить работу группы обычных людей-разработчиков и добиться в своей области успеха, сравнимого с достижениями Франка Ллойда Райта или Леонардо да Винчи. Такие люди нам нужны как архитекторы, которые изобретают новые идиомы, механизмы и основные идеи, используемые затем при разработке других систем. Однако, как замечает Петерс: «В мире очень мало гениев, и не надо думать, будто в среде программистов их доля выше средней» [2]. Несмотря на то, что все мы чуточку гениальны, в промышленном программировании нельзя постоянно полагаться на божественное вдохновение, которое обязательно поможет нам. Поэтому мы должны рассмотреть более надежные способы конструирования сложных систем. Для лучшего понимания того, чем мы собираемся управлять, сначала ответим на вопрос: почему сложность присуща всем большим программным системам?
Почему программному обеспечению присуща сложность?
Эта внешняя сложность обычно возникает из-за «нестыковки» между пользователями системы и ее разработчиками: пользователи с трудом могут объяснить в форме, понятной разработчикам, что на самом деле нужно сделать. Бывают случаи, когда пользователь лишь смутно представляет, что ему нужно от будущей программной системы. Это в основном происходит не из-за ошибок с той или иной стороны; просто каждая из групп специализируется в своей области, и ей недостает знаний партнера. У пользователей и разработчиков разные взгляды на сущность проблемы, и они делают различные выводы о возможных путях ее решения. На самом деле, даже если пользователь точно знает, что ему нужно, мы с трудом можем однозначно зафиксировать все его требования. Обычно они отражены на многих страницах текста, «разбавленных» немногими рисунками. Такие документы трудно поддаются пониманию, они открыты для различных интерпретаций и часто содержат элементы, относящиеся скорее к дизайну, чем к необходимым требованиям разработки.
Проблема описания поведения больших дискретных систем. Когда мы кидаем вверх мяч, мы можем достоверно предсказать его траекторию, потому что знаем, что в нормальных условиях здесь действуют известные физические законы. Мы бы очень удивились, если бы, кинув мяч с чуть большей скоростью, увидели, что он на середине пути неожиданно остановился и резко изменил направление движения [ Даже простые непрерывные системы могут иметь сложное поведение ввиду наличия хаоса. Хаос привносит случайность, исключающую точное предсказание будущего состояния системы. Например, зная начальное положение двух капель воды в потоке, мы не можем точно предсказать, на каком расстоянии друг от друга они окажутся по прошествии некоторого времени. Хаос проявляется в таких различных системах, как атмосферные процессы, химические реакции, биологические системы и даже компьютерные сети. К счастью, скрытый порядок, по-видимому, есть во всех хаотических системах, в виде так называемых аттракторов ]. В недостаточно отлаженной программе моделирования полета мяча такая ситуация легко может возникнуть.
Внутри большой прикладной программы могут существовать сотни и даже тысячи переменных и несколько потоков управления. Полный набор этих переменных, их текущих значений, текущего адреса и стека вызова для каждого процесса описывает состояние прикладной программы в каждый момент времени. Так как исполнение нашей программы осуществляется на цифровом компьютере, мы имеем систему с дискретными состояниями. Аналоговые системы, такие, как движение брошенного мяча, напротив, являются непрерывными. Д. Парнас [4] пишет: «когда мы говорим, что система описывается непрерывной функцией, мы имеем ввиду, что в ней нет скрытых сюрпризов. Небольшие изменения входных параметров всегда вызовут небольшие изменения выходных». С другой стороны, дискретные системы по самой своей природе имеют конечное число возможных состояний, хотя в больших системах это число в соответствии с правилами комбинаторики очень велико. Мы стараемся проектировать системы, разделяя их на части так, чтобы одна часть минимально воздействовало на другую. Однако переходы между дискретными состояниями не могут моделироваться непрерывными функциями. Каждое событие, внешнее по отношению к программной системе, может перевести ее в новое состояние, и, более того, переход из одного состояния в другое не всегда детерминирован. При неблагоприятных условиях внешнее событие может нарушить текущее состояние системы из-за того, что ее создатели не смогли предусмотреть все возможные варианты. Представим себе пассажирский самолет, в котором система управления полетом и система электроснабжения объединены. Было бы очень неприятно, если бы от включения пассажиром, сидящим на месте 38J, индивидуального освещения самолет немедленно вошел бы в глубокое пике. В непрерывных системах такое поведение было бы невозможным, но в дискретных системах любое внешнее событие может повлиять на любую часть внутреннего состояния системы. Это, очевидно, и является главной причиной обязательного тестирования наших систем; но дело в том, что за исключением самых тривиальных случаев, всеобъемлющее тестирование таких программ провести невозможно. И пока у нас нет ни математических инструментов, ни интеллектуальных возможностей для полного моделирования поведения больших дискретных систем, мы должны удовлетвориться разумным уровнем уверенности в их правильности.
Последствия неограниченной сложности
«Чем сложнее система, тем легче ее полностью развалить» [5]. Строитель едва ли согласится расширить фундамент уже построенного 100-этажного здания. Это не просто дорого: делать такие вещи значит напрашиваться на неприятности. Но что удивительно, пользователи программных систем, не задумываясь, ставят подобные задачи перед разработчиками. Это, утверждают они, всего лишь технический вопрос для программистов.
Как мы можем изменить положение дел? Так как проблема возникает в результате сложности структуры программных продуктов, мы предлагаем сначала рассмотреть способы работы со сложными структурами в других областях. В самом деле, можно привести множество примеров успешно функционирующих сложных систем. Некоторые из них созданы человеком, например: космический челнок Space Shuttle, туннель под Ла-Маншем, большие фирмы типа Microsoft или General Electric. В природе существуют еще более сложные системы, например система кровообращения у человека или растение.
1.2. Структура сложных систем
Примеры сложных систем
Это пример сложной иерархической системы. Персональный компьютер нормально работает благодаря четкому совместному функционированию всех его составных частей. Вместе эти части образуют логическое целое. Мы можем понять, как работает компьютер, только потому, что можем рассматривать отдельно каждую его составляющую. Таким образом, можно изучать устройства монитора и жесткого диска независимо друг от друга. Аналогично можно изучать арифметическую часть ЦП, не рассматривая при этом подсистему памяти.
Дело не только в том, что сложная система ПК иерархична, но в том, что уровни этой иерархии представляют различные уровни абстракции, причем один надстроен над другим и каждый может быть рассмотрен (понят) отдельно. На каждом уровне абстракции мы находим набор устройств, которые совместно обеспечивают некоторые функции более высокого уровня, и выбираем уровень абстракции, исходя из наших специфических потребностей. Например, пытаясь исследовать проблему синхронизации обращений к памяти, можно оставаться на уровне логических элементов компьютера, но этот уровень абстракции не подходит при поиске ошибки в прикладной программе, работающей с электронными таблицами.
Растение состоит из трех основных частей: корни, стебли и листья. Каждая из них имеет свою особую структуру. Корень, например, состоит из корневых отростков, корневых волосков, верхушки корня и т.д. Рассматривая срез листа, мы видим его эпидермис, мезофилл и сосудистую ткань. Каждая из этих структур, в свою очередь, представляет собой набор клеток. Внутри каждой клетки можно выделить следующий уровень, который включает хлоропласт, ядро и т.д. Так же, как у компьютера, части растения образуют иерархию, каждый уровень которой обладает собственной независимой сложностью.
Все части на одном уровне абстракции взаимодействуют вполне определенным образом. Например, на высшем уровне абстракции, корни отвечают за поглощение из почвы воды и минеральных веществ. Корни взаимодействуют со стеблями, которые передают эти вещества листьям. Листья в свою очередь используют воду и минеральные вещества, доставляемые стеблями, и производят при помощи фотосинтеза необходимые элементы.
Для каждого уровня абстракции всегда четко разграничено «внешнее» и «внутреннее». Например, можно установить, что части листа совместно обеспечивают функционирование листа в целом и очень слабо взаимодействуют или вообще прямо не взаимодействуют с элементами корней. Проще говоря, существует четкое разделение функций различных уровней абстракции.
В компьютере транзисторы используются как в схеме ЦП, так и жесткого диска. Аналогично этому большое число «унифицированных элементов» имеется во всех частях растения. Так Создатель достигал экономии средств выражения. Например, клетки служат основными строительными блоками всех структур растения; корни, стебли и листья растения состоят из клеток. И хотя любой из этих исходных элементов действительно является клеткой, существует огромное количество разнообразных клеток. Есть клетки, содержащие и не содержащие хлоропласт, клетки с оболочкой, проницаемой и непроницаемой для воды, и даже живые и умершие клетки.
При изучении морфологии растения мы не выделяем в нем отдельные части, отвечающие за отдельные фазы единого процесса, например, фотосинтеза. Фактически не существует централизованных частей, которые непосредственно координируют деятельность более низких уровней. Вместо этого мы находим отдельные части, которые действуют как независимые посредники, каждый из которых ведет себя достаточно сложно и при этом согласованно с более высокими уровнями. Только благодаря совместным действиям большого числа посредников образуется более высокий уровень функционирования растения. Наука о сложности называет это возникающим поведением. Поведение целого сложнее, чем поведение суммы его составляющих [6].
Жизнь растений и животных поддерживает значительное число механизмов надклеточного уровня, то есть более высокого уровня абстракции. И растения, и животные используют сосудистую систему для транспортировки внутри организма питательных веществ. И у тех, и у других может существовать различие полов внутри одного вида.
Мы опять обнаруживаем общность форм механизмов в этих сложных иерархиях. На самом деле оказывается, что во Вселенной работают всего четыре типа сил: гравитационное, электромагнитное, сильное и слабое взаимодействия. Многие законы физики универсальны, например, закон сохранения энергии и импульса можно применить и к галактикам, и к кваркам.
Структура социальных институтов. Как последний пример сложных систем рассмотрим структуру общественных институтов. Люди объединяются в группы для решения задач, которые не могут быть решены индивидуально. Одни организации быстро распадаются, другие функционируют на протяжении нескольких поколений. Чем больше организация, тем отчетливее проявляется в ней иерархическая структура. Транснациональные корпорации состоят из компаний, которые в свою очередь состоят из отделений, содержащих различные филиалы. Последним принадлежат уже отдельные офисы и т.д. Границы между частями организации могут изменяться, и с течением времени может возникнуть новая, более стабильная иерархия.
Отношения между разными частями большой организации подобны отношениям между компонентами компьютера, растения или галактики. Характерно, что степень взаимодействия между сотрудниками одного учреждения несомненно выше, чем между сотрудниками двух разных учреждений. Клерк, например, обычно не общается с исполнительным директором компании, а в основном обслуживает посетителей. Но и здесь различные уровни имеют единые механизмы функционирования. Работа и клерка и директора оплачивается одной финансовой организацией, и оба они для своих целей используют общую аппаратуру, в частности, телефонную систему компании.
Пять признаков сложной системы
Исходя из такого способа изучения, можно вывести пять общих признаков любой сложной системы. Основываясь на работе Саймона и Эндо, Куртуа предлагает следующее наблюдение [7]:
1. «Сложные системы часто являются иерархическими и состоят из взаимозависимых подсистем, которые в свою очередь также могут быть разделены на подсистемы, и т.д., вплоть до самого низкого уровням.»
Саймон отмечает: «тот факт, что многие сложные системы имеют почти разложимую иерархическую структуру, является главным фактором, позволяющим нам понять, описать и даже «увидеть» такие системы и их части» [8]. В самом деле, скорее всего, мы можем понять лишь те системы, которые имеют иерархическую структуру.
Важно осознать, что архитектура сложных систем складывается и из компонентов, и из иерархических отношений этих компонентов. Речтин отмечает: «Все системы имеют подсистемы, и все системы являются частями более крупных систем. Особенности системы обусловлены отношениями между ее частями, а не частями как таковыми» [9].
Что же следует считать простейшими элементами системы? Опыт подсказывает нам следующий ответ:
2. Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен и в большой степени оставляется на усмотрение исследователя.
Низший уровень для одного наблюдателя может оказаться достаточно высоким для другого.
Саймон называет иерархические системы разложимыми, если они могут быть разделены на четко идентифицируемые части, и почти разложимыми, если их составляющие не являются абсолютно независимыми. Это подводит нас к следующему общему свойству всех сложных систем:
3. «Внутрикомпонентная связь обычно сильнее, чем связь между компонентами. Это обстоятельство позволяет отделять «высокочастотные» взаимодействия внутри компонентов от «низкочастотной» динамики взаимодействия между компонентами» [10].
Это различие внутрикомпонентных и межкомпонентных взаимодействий обуславливает разделение функций между частями системы и дает возможность относительно изолированно изучать каждую часть.
Как мы уже говорили, многие сложные системы организованы достаточно экономными средствами. Поэтому Саймон приводит следующий признак сложных систем:
4. «Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных» [11].
Иными словам и, разные сложные системы содержат одинаковые структурные части. Эти части могут использовать общие более мелкие компоненты, такие как клетки, или более крупные структуры, типа сосудистых систем, имеющиеся и у растений, и у животных.
Выше мы отмечали, что сложные системы имеют тенденцию к развитию во времени. Саймон считает, что сложные системы будут развиваться из простых гораздо быстрее, если для них существуют устойчивые промежуточные формы [12]. Гэлл [13] выражается более эффектно:
5. «Любая работающая сложная система является результатом развития работавшей более простой системы. Сложная система, спроектированная «с нуля», никогда не заработает. Следует начинать с работающей простой системы».
В процессе развития системы объекты, первоначально рассматривавшиеся как сложные, становятся элементарными, и из них строятся более сложные системы. Более того, невозможно сразу правильно создать элементарные объекты: с ними надо сначала повозиться, чтобы больше узнать о реальном поведении системы, и затем уже совершенствовать их.
Организованная и неорганизованная сложность
Каноническая форма сложной системы. Обнаружение общих абстракций и механизмов значительно облегчает понимание сложных систем. Например, опытный пилот, сориентировавшись всего за несколько минут, может взять на себя управление многомоторным реактивным самолетом, на котором он раньше никогда не летал, и спокойно его вести. Определив элементы, общие для всех подобных самолетов (такие, как руль управления, элероны и дроссельный клапан), пилот затем найдет отличия этого конкретного самолета от других. Если пилот уже знает, как управлять одним самолетом определенного типа, ему гораздо легче научиться управлять другим похожим самолетом.
Объединяя понятия структуры классов и структуры объектов с пятью признаками сложных систем, мы приходим к тому, что фактически все сложные системы можно представить одной и той же (канонической) формой, которая показана на рис. 1-1. Здесь приведены две ортогональных иерархии одной системы: классов и объектов. Каждая иерархия является многоуровневой, причем в ней классы и объекты более высокого уровня построены из более простых. Какой класс или объект выбран в качестве элементарного, зависит от рассматриваемой задачи. Объекты одного уровня имеют четко выраженные связи, особенно это касается компонентов структуры объектов. Внутри любого рассматриваемого уровня находится следующий уровень сложности. Отметим также, что структуры классов и объектов не являются независимыми: каждый элемент структуры объектов представляет специфический экземпляр определенного класса. Как видно из рис. 1-1, объектов в сложной системе обычно гораздо больше, чем классов. Показывая обе иерархии, мы демонстрируем избыточность рассматриваемой системы. Если бы мы не знали структуру классов нашей системы, нам пришлось бы повторять одни и те же сведения для каждого экземпляра класса. С введением структуры классов мы размещаем в ней общие свойства экземпляров.
Наш опыт показывает, что наиболее успешны те программные системы, в которых заложены хорошо продуманные структуры классов и объектов и которые обладают пятью признаками сложных систем, описанными выше. Оценим важность этого наблюдения и выразимся более категорично: очень редко можно встретить программную систему, разработанную точно по графику, уложившуюся в бюджет и удовлетворяющую требованиям заказчика, в которой бы не были учтены соображения, изложенные выше.
Структуры классов и объектов системы вместе мы называем архитектурой системы.
Человеческие возможности и сложные системы. Если мы знаем, как должны быть спроектированы сложные программные системы, то почему при создании таких систем мы сталкиваемся с серьезными проблемами? Как показано в главе 2, идея о том, как бороться со сложностью программ (эту идею мы будем называть объектный подход) относительно нова. Существует, однако, еще одна, по-видимому, главная причина: физическая ограниченность возможностей человека при работе со сложными системами.
Рис. 1-1. Каноническая форма сложной системы.
Когда мы начинаем анализировать сложную программную систему, в ней обнаруживается много составных частей, которые взаимодействуют друг с другом различными способами, причем ни сами части системы, ни способы их взаимодействия не обнаруживают никакого сходства. Это пример неорганизованной сложности. Когда мы начинаем организовывать систему в процессе ее проектирования, необходимо думать сразу о многом. Например, в системе управления движением самолетов приходится одновременно контролировать состояние многих летательных аппаратов, учитывая такие их параметры, как местоположение, скорость и курс. При анализе дискретных систем необходимо рассматривать большие, сложные и не всегда детерминированные пространства состояний. К сожалению, один человек не может следить за всем этим одновременно. Эксперименты психологов, например Миллера, показывают, что максимальное количество структурных единиц информации, за которыми человеческий мозг может одновременно следить, приблизительно равно семи плюс-минус два [14]. Вероятно, это связано с объемом краткосрочной памяти у человека. Саймон также отмечает, что дополнительным ограничивающим фактором является скорость обработки мозгом поступающей информации: на восприятие каждой новой единицы информации ему требуется около 5 секунд [15].
Таким образом, мы оказались перед серьезной дилеммой. Сложность программных систем возрастает, но способность нашего мозга справиться с этой сложностью ограничена. Как же нам выйти из создававшегося затруднительного положения?
1.3. Внесение порядка в хаос
Алгоритмическая декомпозиция. Большинство из нас формально обучено структурному проектированию «сверху вниз», и мы воспринимаем декомпозицию как обычное разделение алгоритмов, где каждый модуль системы выполняет один из этапов общего процесса. На рис. 1-2 приведен в качестве примера один из продуктов структурного проектирования: структурная схема, которая показывает связи между различными функциональными элементами системы. Данная структурная схема иллюстрирует часть программной схемы, изменяющей содержание управляющего файла. Она была автоматически получена из диаграммы потока данных специальной экспертной системой, которой известны правила структурного проектирования [18].
Объектно-ориентированная декомпозиция. Предположим, что у этой задачи существует альтернативный способ декомпозиции. На рис. 1-3 мы разделили систему, выбрав в качестве критерия декомпозиции принадлежность ее элементов к различным абстракциям данной проблемной области. Прежде чем разделять задачу на шаги типа Get formatted update (Получить изменения в отформатированном виде) и Add check sum (Прибавить к контрольной сумме), мы должны определить такие объекты как Master File (Основной файл) и Check Sum (Контрольная сумма), которые заимствуются из словаря предметной области.
Опыт показывает, что полезнее начинать с объектной декомпозиции. Такое начало поможет нам лучше справиться с приданием организованности сложности программных систем. Выше этот объектный подход помог нам при описании таких непохожих систем, как компьютеры, растения, галактики и общественные институты. Как будет видно в дальнейшем (в главах 2 и 7), объектная декомпозиция имеет несколько чрезвычайно важных преимуществ перед алгоритмической. Объектная декомпозиция уменьшает размер программных систем за счет повторного использования общих механизмов, что приводит к существенной экономии выразительных средств. Объектно-ориентированные системы более гибки и проще эволюционируют со временем, потому что их схемы базируется на устойчивых промежуточных формах. Действительно, объектная декомпозиция существенно снижает риск при создании сложной программной системы, так как она развивается из меньших систем, в которых мы уже уверены. Более того, объектная декомпозиция помогает нам разобраться в сложной программной системе, предлагая нам разумные решения относительно выбора подпространства большого пространства состояний.
Преимущества объектно-ориентированных систем демонстрируются в главах 8-12 примерами прикладных программ, относящихся к различным областям. Следующая врезка сопоставляет объектно-ориентированное проектирование с более традиционными подходами.
Рис. 1-3. Объектно-ориентированная декомпозиция.
Выше мы ссылались на эксперименты Миллера, в которых было установлено, что обычно человек может одновременно воспринять лишь 7¦2 единицы информации. Это число, по-видимому, не зависит от содержания информации. Как замечает сам Миллер: «Размер нашей памяти накладывает жесткие ограничения на количество информации, которое мы можем воспринять, обработать и запомнить. Организуя поступление входной информации одновременно по нескольким различным каналам и в виде последовательности отдельных порций, мы можем прорвать. этот информационный затор» [35]. В современной терминологии это называют разбиением или выделением абстракций.
Методы проектирования программных систем Методы появились как ответ на растущую сложность программных систем. На заре компьютерной эры очень трудно было написать большую программу, потому что возможности компьютеров были ограничены. Ограничения проистекали из объема оперативной памяти, скорости считывания информации с вторичных носителей (ими служили магнитные ленты) и быстродействия процессоров, тактовый цикл которых был равен сотням микросекунд. В 60-70-е годы эффективность применения компьютеров резко возросла, цены на них стали падать, а возможности ЭВМ увеличились. В результате стало выгодно, да и необходимо создавать все больше прикладных программ повышенной сложности. В качестве основных инструментов создания программных продуктов начали применяться алгоритмические языки высокого уровня. Эти языки расширили возможности отдельных программистов и групп разработчиков, что по иронии судьбы в свою очередь привело к увеличению уровня сложности программных систем. В 60-70-е годы было разработано много методов, помогающих справиться с растущей сложностью программ. Наибольшее распространение получило структурное проектирование по методу сверху вниз. Метод был непосредственно основан на топологии традиционных языков высокого уровня типа FORTRAN или COBOL. В этих языках основной базовой единицей является подпрограмма, и программа в целом принимает форму дерева, в котором одни подпрограммы в процессе работы вызывают другие подпрограммы. Структурное проектирование использует именно такой подход: алгоритмическая декомпозиция применяется для разбиения большой задачи на более мелкие. Метод потоков данных лучше всего описан в ранней работе Джексона [31, 32], а также Варниера и Орра [33]. В этом методе программная система рассматривается как преобразователь входных потоков в выходные. Метод потоков данных, как и структурный метод, с успехом применялся при решении ряда сложных задач, в частности, в системах информационного обеспечения, где существуют прямые связи между входными и выходными потоками системы и где не требуется уделять особого внимания быстродействию. В главе 2 понятие абстракции рассмотрено более детально. Другим способом, расширяющим информационные единицы, является организация внутри системы иерархий классов и объектов. Объектная структура важна, так как она иллюстрирует схему взаимодействия объектов друг с другом, которое осуществляется с помощью механизмов взаимодействия. Структура классов не менее важна: она определяет общность структур и поведения внутри системы. Зачем, например, изучать фотосинтез каждой клетки отдельного листа растения, когда достаточно изучить одну такую клетку, поскольку мы ожидаем, что все остальные ведут себя подобным же образом. И хотя мы рассматриваем каждый объект определенного типа как отдельный, можно предположить, что его поведение будет похоже на поведение других объектов того же типа. Классифицируя объекты по группам родственных абстракций (например, типы клеток растений в противовес клеткам животных), мы четко разделяем общие и уникальные свойства разных объектов, что помогает нам затем справляться со свойственной им сложностью [37]. Определить иерархии в сложной программной системе не всегда легко, так как это требует разработки моделей многих объектов, поведение каждого из которых может отличаться чрезвычайной сложностью. Однако после их определения, структура сложной системы и, в свою очередь, наше понимание ее сразу во многом проясняются. В главе 3 детально рассматривается природа иерархий классов и объектов, а в главе 4 описываются приемы распознавания этих структур. 1.4. О проектировании сложных систем Инженерное дело как наука и искусство На практике любая инженерная дисциплина, будь то строительство, механика, химия, электроника или программирование, содержит в себе элементы и науки, и искусства. Петроски красноречиво утверждает: «Разработка новых структур предполагает и полет фантазии, и синтез опыта и знаний: все то, что необходимо художнику для реализации своего замысла на холсте или бумаге. После того, как этот замысел созрел в голове инженера-художника, он обязательно должен быть проанализирован с точки зрения применимости данного научного метода инженером-ученым со всей тщательностью, присущей настоящему ученому» [38]. Аналогично, Дейкстра отмечает, что «Программная постановка задачи является упражнением в применении абстракции и требует способностей как формального математика, так и компетентного инженера» [39]. Когда разрабатывается совершенно новая система, роль инженера как художника выдвигается на первый план. Это происходит постоянно при проектировании программ. А тем более при работе с системами, обладающими обратной связью, и особенно в случае систем управления и контроля, когда нам приходится писать программное обеспечение, требования к которому нестандартны, и к тому же для специально сконструированного процессора. В других случаях, например, при создании прикладных научных средств, инструментов для исследований в области искусственного интеллекта или даже для систем обработки информации, требования к системе могут быть хорошо и точно определены, но определены таким образом, что соответствующий им технический уровень разработки выходит за пределы существующих технологий. Нам, например, могут предложить создать систему, обладающую большим быстродействием, большей вместимостью или имеющей гораздо более мощные функциональные возможности по сравнению с уже существующими. Во всех этих случаях мы будем стараться использовать знакомые абстракции и механизмы («устойчивые промежуточные формы» в терминах Саймона) как основу новой системы. При наличии большой библиотеки повторно используемых программных компонентов, инженер-программист должен их по-новому скомпоновать, чтобы удовлетворить всем явным и неявным требованиям к системе, точно так же, как художник или музыкант находит новые возможности своего инструмента. Но так как подобных богатых библиотек практически не существует, инженер-программист обычно может использовать, к сожалению, лишь относительно небольшой список готовых модулей. Важность построения модели. Моделирование широко распространено во всех инженерных дисциплинах, в значительной степени из-за того, что оно реализует принципы декомпозиции, абстракции и иерархии [42]. Каждая модель описывает определенную часть рассматриваемой системы, а мы в свою очередь строим новые модели на базе старых, в которых более или менее уверены. Модели позволяют нам контролировать наши неудачи. Мы оцениваем поведение каждой модели в обычных и необычных ситуациях, а затем проводим соответствующие доработки, если нас что-то не удовлетворяет. Как мы уже сказали выше, чтобы понять во всех тонкостях поведение сложной системы, приходится использовать не одну модель. Например, проектируя компьютер на одной плате, инженер-электронщик должен рассматривать систему как на уровне отдельных элементов схемы (микросхем), так и на уровне схемы. Схема помогает инженеру разобраться в совместном поведении микросхем. Схема представляет собой план физической реализации системы микросхем, в котором учтены размер платы, потребляемая мощность и типы имеющихся интегральных микросхем. С этой точки зрения инженер может независимо оценивать такие параметры системы, как температурное распределение и технологичность изготовления. Проектировщик платы может также рассматривать динамические и статические особенности системы. Аналогично, инженер-электронщик использует диаграммы, иллюстрирующие статические связи между различными микросхемами, и временные диаграммы, отражающие поведение элементов во времени. Затем инженер может применить осциллограф или цифровой анализатор для проверки правильности и статической, и динамической моделей. Объектно-ориентированные модели. Существует ли наилучший метод проектирования? На этот вопрос нет однозначного ответа. По сути дела это завуалированный предыдущий вопрос: «Существует ли лучший способ декомпозиции сложной системы?» Если и существует, то пока он никому не известен. Этот вопрос можно поставить следующим образом: «Как наилучшим способом разделить сложную систему на подсистемы?» Еще раз напомним, что полезнее всего создавать такие модели, которые фокусируют внимание на объектах, найденных в самой предметной области, и образуют то, что мы назвали объектно-ориентированной декомпозицией. Так как построение моделей крайне важно при проектировании сложных систем, объектно-ориентированное проектирование предлагает богатый выбор моделей, которые представлены на рис. 1-4. Объектно-ориентированные модели проектирования отражают иерархию и классов, и объектов системы. Эти модели покрывают весь спектр важнейших конструкторских решений, которые необходимо рассматривать при разработке сложной системы, и таким образом вдохновляют нас на создание проектов, обладающих всеми пятью атрибутами хорошо организованных сложных систем. В главе 5 подробно рассмотрен каждый из четырех типов моделей. В главе 6 описан процесс объектно-ориентированного проектирования, представляющий собой цепь последовательных шагов по созданию и развитию моделей. В главе 7 рассмотрена практика управления процессом объектно-ориентированного проектирования. В этой главе мы привели доводы в пользу применения объектно-ориентированного анализа и проектирования для преодоления сложности, связанной с разработкой программных систем. Кроме того, мы определили ряд фундаментальных преимуществ, достигаемых в результате применения такого подхода. Прежде чем мы представим систему обозначений и процесс проектирования, мы должны изучить принципы, на которых этот процесс проектирования основан: абстрагирование, инкапсуляцию, модульность, иерархию, типизацию, параллелизм и устойчивость. Проблемы, связанные с развитием сложных программных систем, были отчетливо описаны в классических работах Брукса (Brooks) [Н 1975] и [Н 1987]. В работах Гласса (Glass) [Н 1982], Defense Science Board [Н 1987], и Joint Service Task Force [Н 1982] можно найти более свежую информацию о современной практике программирования. Эмпирические исследования природы и причин программистских неудач можно найти в работах ван Генучтена (van Genuchten) [Н 1991], Гвиндона (Guindon) и др. [Н 1987], Джонса (Jones) [H1992]. Глейк (Gleik) [I 1987] предложил легко читаемое введение в хаосоведение.
|