Как и гибкие методики разработки ПО, теория сложности подразумевает междисциплинарный подход к решению проблем. Мышление в категориях сложных систем – это противоядие от излишней специализации в науке. Оно предполагает существование общих закономерностей в поведении систем, исследуемых различными научными дисциплинами, и продвигает подход к решению проблем, базирующийся на концепциях из различных наук. Однако теория сложности далеко не первая попытка синтеза различных предметных областей. Давайте бросим беглый взгляд на историю вопроса.
В конце 1940-х годов усилиями группы ученых и исследователей, возглавляемых Людвигом фон Берталанфи, была создана область науки, получившая название общая теория систем(иногда ее называют просто теория систем ). В своих исследованиях эти ученые исходили из представления, что большинство явлений во Вселенной можно рассматривать как сеть взаимодействий между элементами определенной системы. При этом независимо от того, будут ли данные системы биологическими, химическими или социальными по своей природе, их поведению присущи общие закономерности, исследование которых может пролить свет на поведение систем в целом. Основной целью теории систем, таким образом, было создать общий междисциплинарный понятийный аппарат и язык, при помощи которых можно было бы описывать сходные явления во всех областях науки.
Одним из достижений теории систем, развитие которой продолжалось вплоть до 1970-х годов, был перенос фокуса с элементов системы как таковых на организацию этих элементов. Тем самым было признано, что взаимоотношения между элементами системы – динамические, а не статические. Ученые идентифицировали и изучили такие явления, как аутопоэзис(самопостроение или способы, которыми системы конструируют сами себя), идентичность(каким образом системы можно опознать), гомеостаз(способность систем поддерживать свою стабильность) и проницаемость(то, как системы взаимодействуют с окружающей их средой) [Mitchell 2009: 297].
Именно общей теории систем мы обязаны пониманием, что группы разработчиков представляют собой системы, которым свойственна способность к самопостроению, а также к созданию и поддержанию собственной идентичности. Таким группам необходимо взаимодействовать с внешней средой, а взаимодействия между членами группы столь же важны, сколь и характеристики отдельных членов группы (или даже важнее).
К сожалению, объединение этих первоначально разрозненных концепций не было доведено до конца (что не должно удивлять тех разработчиков ПО, которые пытались соединить различные практики или технологии). И тем не менее наследие общей теории систем весьма значительно. Почти все законы этой теории применимы и к сложным системам [Richardson 2004a: 75], и в целом эта теория продвинулась дальше, чем попытки унифицирования в области разработки программных продуктов.
Примерно в то же время, когда концепции общей теории систем разрабатывались группами биологов, психологов, экономистов и других исследователей, столь же разношерстная группа нейрофизиологов, психиатров, антропологов и инженеров создала новую область исследований, которая получила название кибернетика. Наиболее известной фигурой, представлявшей данное направление, был математик Норберт Винер.
Кибернетика изучает сложные управляемые системы, имеющие целии взаимодействующие с окружающей средой через механизмы обратной связи. Задача кибернетики – изучение процессов, происходящих в управляемых системах. Эти процессы состоят из многократных итераций какого-либо действия (которое вызывает изменения во внешней среде), получения информации о состоянии среды (данные о реакции внешней среды на совершенное действие), оценки (сравнение текущего состояния с целевым) и возврата на этой основе к совершению нового действия. Для кибернетики этот циклический процесс фундаментален.
Из кибернетики мы позаимствовали представление, что команда разработчиков представляет, по сути, ориентированную на определенную цель систему, саморегулирующуюся посредством различных циклов обратной связи. Мы поняли, что в саморегулирующейся системе, которой является команда разработчиков, наиболее важными факторами будут информация, коммуникация и целеполагание (в отличие, скажем, от силы и энергии). Кибернетика также помогла осознать решающую роль обратной связи в эволюции поведения сложных систем [Mitchell 2009: 296].
Читать дальше
Конец ознакомительного отрывка
Купить книгу