15 страница из 25
Тема
существовала и в науке.

Большинство университетов и исследовательских институтов организованы именно в виде таких колодцев. Физики работают бок о бок с другими физиками, биологи – с биологами, а математики – с математиками. Это привело к фрагментации науки и распространению туннельного зрения среди ученых и исследователей. Различные научные дисциплины настолько изолированы друг от друга, что ученые обычно не знают, над чем работают их коллеги [Waldrop 1992: 61].

Организационные колодцы в науке – это проблема, поскольку многие явления из разных научных областей часто похожи друг на друга. Например, некоторое время назад экономисты не могли понять природу такого явления, как «локальное равновесие», в то время как физикам уже была известна природа его физического аналога [Waldrop 1992: 139]. Фазовые переходы в физике подозрительно напоминают случаи периодически нарушаемого равновесия в эволюционной биологии. Биологи заметили, что математики могут помочь им в анализе экологии видов [Gleick 1987: 59]. А некоторые «открытия» математиков, как выясняется, были за годы до того сделаны метеорологами [Gleick 1987: 31].

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

Как и гибкие методики разработки ПО, теория сложности подразумевает междисциплинарный подход к решению проблем. Мышление в категориях сложных систем – это противоядие от излишней специализации в науке. Оно предполагает существование общих закономерностей в поведении систем, исследуемых различными научными дисциплинами, и продвигает подход к решению проблем, базирующийся на концепциях из различных наук. Однако теория сложности далеко не первая попытка синтеза различных предметных областей. Давайте бросим беглый взгляд на историю вопроса.

Общая теория систем

В конце 1940-х годов усилиями группы ученых и исследователей, возглавляемых Людвигом фон Берталанфи, была создана область науки, получившая название общая теория систем (иногда ее называют просто теория систем). В своих исследованиях эти ученые исходили из представления, что большинство явлений во Вселенной можно рассматривать как сеть взаимодействий между элементами определенной системы. При этом независимо от того, будут ли данные системы биологическими, химическими или социальными по своей природе, их поведению присущи общие закономерности, исследование которых может пролить свет на поведение систем в целом. Основной целью теории систем, таким образом, было создать общий междисциплинарный понятийный аппарат и язык, при помощи которых можно было бы описывать сходные явления во всех областях науки.

Одним из достижений теории систем, развитие которой продолжалось вплоть до 1970-х годов, был перенос фокуса с элементов системы как таковых на организацию этих элементов. Тем самым было признано, что взаимоотношения между элементами системы – динамические, а не статические. Ученые идентифицировали и изучили такие явления, как аутопоэзис (самопостроение или способы, которыми системы конструируют сами себя), идентичность (каким образом системы можно опознать), гомеостаз (способность систем поддерживать свою стабильность) и проницаемость (то, как системы взаимодействуют с окружающей их средой) [Mitchell 2009: 297].

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

К сожалению, объединение этих первоначально разрозненных концепций не было доведено до конца (что не должно удивлять тех разработчиков ПО, которые пытались соединить различные практики или технологии). И тем не менее наследие общей теории систем весьма значительно. Почти все законы этой теории применимы и к сложным системам [Richardson 2004a: 75], и в целом эта теория продвинулась дальше, чем попытки унифицирования в области разработки программных продуктов.

Кибернетика

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

Кибернетика изучает сложные управляемые системы, имеющие цели и взаимодействующие с окружающей средой через механизмы обратной связи. Задача кибернетики – изучение процессов, происходящих в управляемых системах. Эти процессы состоят из многократных итерацийкакого-либо действия (которое вызывает изменения во внешней среде), получения информации о состоянии среды (данные о реакции внешней среды на совершенное действие), оценки (сравнение текущего состояния с целевым) и возврата на этой основе к совершению нового действия. Для кибернетики этот циклический процесс фундаментален.

Из кибернетики мы позаимствовали представление, что команда разработчиков представляет, по сути, ориентированную на определенную цель систему, саморегулирующуюся посредством различных циклов обратной связи. Мы поняли, что в саморегулирующейся системе, которой является команда разработчиков, наиболее важными факторами будут информация, коммуникация и целеполагание (в отличие, скажем, от силы и энергии). Кибернетика также помогла осознать решающую роль обратной связи в эволюции поведения сложных систем [Mitchell 2009: 296].

Многие путают общую теорию систем и кибернетику. Это неудивительно, поскольку они очень сильно повлияли друг на друга. Обе они имеют не вполне прозрачные названия, обе ставили себе целью создание единой научной теории, описывающей поведение систем. И ни той, ни другой не удалось реализовать первоначальные цели. И тем не менее кибернетика и общая теория систем продвинули данную область знания вперед, заложив фундамент, на котором были созданы позднейшие теории.

Теория динамических систем

Если рассматривать общую теорию систем и кибернетику как ноги некоего человека, символизирующего собой всю массу знаний о поведении систем, то одной из его рук, бесспорно, будет теория динамических систем.

Возникнув из прикладной математики в 1960-х годах, теория динамических систем говорит о том, что системам свойственно много состояний и одни из них устойчивы, а другие нестабильны. Если отдельные компоненты системы не меняются со временем или же, подвергнувшись тем или иным возмущениям, всегда возвращаются к исходным значениям, мы говорим, что такие устойчивые состояния выступают в роли аттракторов.

Актуальность теории динамических систем для разработки программных продуктов состоит в том, что она помогает объяснить, почему некоторые проекты устойчивы, а другие нет. И почему иногда невозможно изменить организацию, имеющую устойчивую тенденцию возвращаться к своему исходному состоянию.

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

Добавить цитату