За время, прошедшее с момента выхода первого номера журнала «Открытые системы», в компьютерном мире произошли колоссальные технологические перемены. Информационные технологии для корпоративных приложений обрели совершенно иное лицо. Однако и в этом «новом сверкающем мире» обнаружились свои новые специфические проблемы. Одну из них можно охарактеризовать как недостаток холистического или системного мышления в ИТ-индустрии. Следствие этого недостатка — неспособность строить достаточно сложные системы, соответствующие требованиям заказчиков. (О том, что такое «системное мышление» и что такое «сложные системы» мы поговорим ниже.) Слово «сложность» сегодня на слуху; отраслевые аналитики и технологические евангелисты всерьез озабочены возрастающей сложностью информационных систем. Одним из первых представителей компаний-производителей о проблеме сложности заговорил вице-президент корпорации IBM по исследованиям и разработкам Пол Хорн. В опубликованном в 2001 году манифесте Autonomic Computing. IBM's Perspective on the State of Information Technology он провозгласил: «Помехой на пути дальнейшего развития является сложность. Преодоление барьера сложности становится одной из важнейших задач ИТ-индустрии. ЭТО НАША НОВАЯ ВЕЛИКАЯ ЦЕЛЬ».
О сложности
«Помехой на пути дальнейшего развития является сложность. Преодоление барьера сложности становится одной из важнейших задач ИТ-индустрии. ЭТО НАША НОВАЯ ВЕЛИКАЯ ЦЕЛЬ», — Пол Хорн |
Недостаток системного мышления, в частности, проявляется в том, что почти каждый компьютерный гуру, обращаясь к проблеме сложности, представляет свои взгляды так, будто он первооткрыватель, и похожие проблемы не возникали в других областях знаний. Между тем, проблема сложности отнюдь не открытие. Сложность — довольно широко используемая категория; в различных отраслях фундаментальной науки выработаны собственные представления о сложности. В теории передачи данных сложность измеряется общим числом свойств, передаваемых объектом и принимаемых обозревателем. В физике сложность определяется вероятностью вектора состояния системы. В математике говорят о вычислительной сложности алгоритмов. В когнитивной психологии сложность проблемы оценивается с точки зрения возможности решения ее человеком.
Наряду с этим есть свое представление о сложности и в Общей теории систем. Перечислим качества, которыми, согласно этой теории, обладают сложные системы.
- Одной из важнейших характеристик по-настоящему сложной системы является непредсказуемость. Образ поведения системы складывается как результат взаимодействия и взаимоотношений между ее компонентами.
- Связи между компонентами сложной системы достаточно коротки. Элемент системы обычно получает информацию от ближайших соседей, а это значит, что по пути следования на большое расстояние она подвергается изменениям.
- Отношения не являются линейными; следовательно, небольшое возмущающее воздействие может вызвать заметный эффект, и наоборот, большой воздействующий импульс может оказаться нерезультативным.
- Отношения между компонентами могут включать обратные связи, причем как положительные (раскачивающие систему), так и отрицательные (демпфирующие) ее.
- Сложная система по определению является открытой; ее границы в зависимости от природы системы должны быть проницаемы или для информации, или для энергии. По этой причине она подвергается изменениям, однако средствами управления ее можно удерживать в стабильном состоянии. Ни один из элементов не обладает полнотой информации о системе в целом. Действительно, если бы таковой существовал, то вся сложность системы была бы сосредоточена в нем; данное обстоятельство отвергает возможность монополии на управление.
- Сложные системы имеют историю, причем небольшие изменения в настоящем могут привести к значительным изменениям в будущем.
- Характерное качество сложных систем - вложенность; скажем, экономика, как система, может состоять из входящих в нее предприятий, являющихся системами, предприятия из отдельных работников, которые тоже являются системами, и т.д.
В 80-е годы сложилась специальная научная дисциплина, названная теорией сложности. В 1984 году был основан Институт Санта Фе в Нью-Мексико, а двумя годами позже — Центр изучения сложных систем в университете штата Иллинойс. Последний возглавляет Стивен Вольфрам, автор бестселлера A new kind of science («Наука нового типа»). Это два крупнейших центра, где профессионально занимаются междисциплинарными исследованиями сложных систем с участием специалистов разных специальностей — экономистов, биологов, физиков и математиков.
Проектирование сложных систем — не только информационных, но имеющих совершенно разную природу — выделяется в отдельную инженерную дисциплину. Главным центром, где изучаются проблемы проектирования сложных систем, является, пожалуй, Отделение технических систем Массачусетского технологического института. Ее сотрудниками подготовлен программный документ, отрывок из которого мы приводим ниже.
«В результате глобализации, появления новых технологий, повышения пользовательских запросов и возникающих новых социальных требований технические системы увеличиваются в размерах, охватывают большее число функций и становятся сложнее. Как следствие, при проектировании возникают качественно новые проблемы, совсем иные, не традиционные. Главное заключается в том, что требуется интегрированный подход, системы следует рассматривать не по частям, а в целом. Природа технических систем нового поколения может быть различной, но при этом они могут обладать близким по характеру поведением. Для лучшего понимания особенностей в поведении новых технических систем и способов их проектирования требуется разработка новых методов и теорий.
Сложность технических особенностей объясняется рядом причин. Например, интеграция различных компонентов или подсистем создает единую систему, обладающую более высокой сложностью, чем ее составляющие. Случается, что каждый из системных компонентов и каждая из подсистем могут быть доступны для понимания, а собранные вместе, они образуют систему с труднопредсказуемым поведением и неожиданными проявлениями. Или же внесение изменений в процессе эксплуатации постоянно повышает ее сложность, со временем становится затруднительной дальнейшая модификация и изменение поведения системы. Для того, чтобы понять устройство большой и сложной системы, требуется целостный взгляд на систему».
Адам Босуорт и принцип KISS
«Мы идем вслед за требованиями заказчиков; им нужны Web-сервисы, и мы их поставляем», — Адам Босуорт |
Очень ярко недостаток системного мышления проявился на примере освоения технологий с использованием сервисов (и в частности, Web-сервисов). Их сегодня считают наиболее доступными средствами для создания сложных информационных систем. То, насколько мучительно сервисы входят в жизнь ИТ-индустрии, убедительно свидетельствует о том, что возможности этих средств опережают «средний уровень» системного мышления. Более конкретные аппаратные и программные технологии воспринимаются гораздо быстрее. Когда несколько лет назад появились первые сообщения о Web-сервисах, непросто было осознать глубинную суть происходящего. За фасадом нехитрой идеи обмена сообщениями между программами посредством XML поверх HTML и стеком протоколов SOAP, UDDI, WSDL и других, скрывалась новая системная парадигма, которая через несколько лет действительно материализовалась в форме сервисно-ориентированных архитектур (service oriented architecture, SOA). Своими ограниченными силами дойти до сути было сложно. На зарубежных корпоративных конференциях, которые удавалось посетить, выступающие восхваляли Web-сервисы, но на задаваемые вопросы ничего содержательного сказать не могли. В поисках истины редакция «Открытых систем» накануне наступающего 2002 года собрала цвет московских экспертов, представителей компаний-производителей и системных интеграторов, чтобы обсудить с ними, что такое Web-сервисы. Увы, итоги беседы оказались разочаровывающими: приглашенные эксперты не были к ней готовы, они сами еще были далеки от понимания предмета.
Ну, если нет собственных знатоков, то тогда кто в мире компетентен? Тщательный поиск в Сети показал: один из самых интересных экспертов, наиболее философски рассуждающий о Web-сервисах, — Адам Босуорт, к тому времени вместе с группой разработчиков платформы .NET перешел из Microsoft в компанию BEA Systеms. Реакция на письмо с просьбой о заочном интервью оказалась неожиданной, приняв форму приглашения на ежегодную конференцию BEA World 2002 в Сан-Диего, затем и на BEA World 2003 в Орландо. На этих конференциях мне удалось несколько раз в формальной и неформальной обстановке встретиться с Адамом. К моему удивлению, основной темой бесед оказались не собственно Web-сервисы, а «системы, управляемые потоками данных» (data driven systems). Как это ни покажется удивительным, но Босуорт избегал обобщенного разговора, более или менее философского обсуждения природы сервисов. Все, что удавалось из него выжать, сводилось буквально к следующему: «Мы идем вслед за требованиями заказчиков; им нужны Web-сервисы, и мы их поставляем».
Тогда мне это показалось странным; разгадка же обнаружилась буквально на днях, а предложил ее сам Адам. В опубликованной в Сети своеобразной исповеди, озаглавленной KISS and the mom factor («KISS и фактор мамы»), Босуорт объясняет причины своего недавнего перехода в компанию Google. Он пишет, что хочет разрабатывать такие программы, которые имеют понятных ему потребителей; это могут быть друзья, знакомые и даже мама. Разрабатывая программные продукты корпоративного назначения, он постоянно испытывал чувство неудовлетворения, поскольку не мог до конца понять нужды заказчиков, Адам называет это «проектированием с чувством вины» (designing by guilt). Босуорт, один из первых проповедников Web-сервисов, теперь проявляет к ним изрядную критичность, используя в отношении их такие обороты, как «так называемые Web-сервисы». Он считает сервисы недостаточно развитой технологией для построения мощных и производительных систем.
А вот теперь то, ради чего сделана столь длинная преамбула. Босуорт по-своему (если не сказать, наивно) пишет о нехватке того, что выше мы назвали холистическим, или системным мышлением: «Строить массивные масштабируемые системы из ограниченного количества простых компонентов довольно сложно. То, как это делается сейчас, подчиняется принципу KISS, который имеет две расшифровки keep it simple and stupid (оставляй все простым и примитивным) или keep it simple, stupid (оставляй все простым, тупица). Построенные по этому принципу системы требуют большого ручного труда для внедрения и в дальнейшем значительных затрат на мониторинг».
Неизбежность сложных систем
Босуорта можно понять: он испытал разочарование от попыток строить сложные системы, оставаясь на простых инженерных принципах проектирования, используя существующие технологические подходы, и решился на отступление. Скажем больше — бросил он «полковое знамя» BEA Systems. Думаю, уход главного идеолога стал болезненным событием для компании. Но, согласитесь, если кто-то принял решение отказаться от создания сложных систем, то из этого не следует, что прогресс остановился. Мы должны быть благодарны Босуорту за то, что он выступил в роли мальчика из известной сказки Андерсена, чуть иносказательно заявив, что сегодняшние технологии и сегодняшний уровень системного мышления недостаточны.
Типичным примером критикуемого чисто инженерного подхода к проблеме создания сложных систем является процитированный выше манифест Хорна. Его пафос сводится к тому, что сложность современных информационных систем достигла критического предела; в частности, она оборачивается повышенным спросом на специалистов, которые должны выполнять функции системных администраторов. Оказывается, если не предпринимать необходимые превентивные меры, при нынешнем росте потребности в системных администраторах для заполнения вакансий потребуется едва ли не четверть населения Соединенных Штатов. С такого рода проявлением проблемы сложности можно справиться, если сделать системы самоуправляемыми (autonomic), считает Хорн. Вслед за IBM с аналогичными заявлениями стали выступать другие крупные производители, предлагая свои модели организации компьютерных систем с близкими по смыслу названиями.
В данном случае, скорее всего, речь должна идти не о проблеме сложности систем, а о неизбежных последствиях количественного роста. В том, что предлагает Хорн, нет ничего удивительного: в определенных условиях на некотором этапе развития систем самой разной природы возникает потребность в их автоматизации. Именно так много лет назад появился первый автоматический регулятор Уатта для ткацких станков, а также все последующие средства автоматизации. В примере, приведенном Хорном, описан обычный — в полном соответствии с диалектическими воззрениями — переход количественных изменений в качественные. Но, надо заметить, никакая автоматизация никогда не делает автоматизируемое устройство проще. Любому автолюбителю понятно, что автоматическая коробка передач в автомобиле сложнее механической (и куда дороже); другое дело — она удобнее и проще в пользовании, но именно за счет своей более высокой конструктивной сложности. Прогресс любых систем, за редчайшим исключением, неизбежно ведет к усложнению конструкции. Да, самоуправляемая информационная система будет эффективнее с точки зрения трудозатрат системных администраторов, она будет проще в эксплуатации, но она будет и сложнее логически. По всей видимости, упрощенное отношение к сложности, демонстрируемое в манифесте Хорна и аналогичных выступлениях, — либо ошибка, либо маркетинговый ход.
Однако потребность в сложных системах будет постоянно возрастать. Доказать это достаточно просто. Прежде всего, практически любая информационная система является компонентом более сложной системы управления — технической, административной, экономической и т.д. Сложность систем управления постоянно возрастает; стоит напомнить хорошо известный закон, постулированный кибернетиком Уильямом Эшби: «Сложность механизма управления должна соответствовать сложности объекта управления». Для того, чтобы удовлетворять требованиям систем управления, информационные системы должны становиться все сложнее и сложнее. Поэтому появление таких средств, как SOA, вполне закономерно: они дают возможность строить более сложные системы.
Разработка Web-сервисов, а затем и архитектур, ориентированных на сервисы, знаменует собой не просто появление новых технологических решений, позволяющих строить слабо связанные информационные системы. За суммой протоколов, определяющих общие принципы обмена сервисами, стоит гораздо большее. Связь между компонентами системы посредством сервисов — это такое технологическое решение, которое позволяет придавать системам новые качества. Идея сетевых сервисов нуждается в осмыслении и в объяснении, потому что они позволяют строить полноценные сложные системы. Объяснить природу сервисов, оставаясь на «программистском» уровне, невозможно; приходится искать аналогии. Сегодня обнаруживается два возможных подхода объяснению феномена сервисно-ориентированных архитектур: один имеет строительные корни, другой — биологические. Эти подходы не противоречат друг другу, в какой-то мере они взаимно дополняют друг друга.
В основе первого подхода лежит теория центров, предложенная американским архитектором Кристофером Александером. Этот подход использует аналогию между созданием зданий, сооружений, а также среды обитания человека в целом, с одной стороны, и информационными системами — с другой. И в том, и в другом случае по проекту, по определенному архитектурному решению создаются искусственные сооружения. В строительстве они материальны, а программные приложения — нет; однако в природе проектирования искусственных сооружений есть много общего. Иначе говоря, идеи организации архитектуры имеют много общего независимо от средств реализации. Не случайно, и первая теория Александера — теория паттернов (стандартных образов) — была ранее успешно ассимилирована в архитектуре программных систем.
Однако информационные системы отличаются от зданий. Они далеко не статичны; не случайно такое качество, как масштабируемость, стало одной из важнейших характеристик программных продуктов. Поэтому, признавая ценность архитектурного подхода и необходимость его изучения, приходится признать и то, что биологические аналогии позволяют гораздо глубже понять природу вещей. Основой общности между биологическими системами и системами информационными является их сетевая организация. Действительно, биологическое системное мышление основывается на двух понятиях — сообщество и сеть.
Нельзя не обратить внимание на встречность движения. Биологи используют классические методы научного анализа, исследуют существующие объекты, пытаются строить понятные и простые модели сложных явлений. При создании информационных систем идут от простого к сложному, а основным методом является синтез. Если учесть, что история построения компьютерных сетей насчитывает всего несколько десятилетий, в то время как биологические объекты человечество изучает тысячелетиями, а непосредственно изучение биологических сетей продолжается уже почти целое столетие, то нельзя не воспользоваться накопленными знаниями.
Формирование системного мышления и открытые системы
XX век стал эпохой формирования системного мышления в биологии. В это время осуществился переход от механистического (атомистического, редукционистского) к холистическому (экологическому, организменному) взгляду на природу. Холистический подход называют еще системным; системным же называют и соответствующее мышление. У биологии было время на развитие своих взглядов. Все началось в античные времена с Аристотеля. В средневековье сформировался картезианский метод аналитического мышления, который, прежде всего, связывают с именем Рене Декарта. XVIII век был эпохой движения романтиков. Открытие клетки в XIX веке дало начало движению, которое назвали витализмом, параллельно сформировалась организменная биология. Шла борьба школ, организменные биологи противостояли обладателям виталистических и механистических взглядов; эта борьба привела к формированию системного мышления, основанного на признании связанности и контекста. Системный взгляд признает, что свойства живого организма являются свойствами целого, они не складываются из свойств отдельных частей, новые свойства возникают из взаимодействия между частями. Важнейшим открытием, шокировавшим науку XX века, стало признание факта невозможности познания системы средствами анализа, поскольку анализ предполагает отделение части от целого. Системное мышление получило второе рождение с появлением квантовой физики, где на первом месте связи, а на втором — вещи. В дальнейшем системные взгляды распространились на психологию, экологию, социологию.
Биологическое представление о системах прекрасно изложено в переведенной на русский язык книге Фритьофа Капры «Паутина жизни. Новое научное понимание живых систем». Параллель с биосистемами вполне допустима, по сложности современные компьютерные системы близки к биологическим; например, количество транзисторов в современных процессорах, как и количество мозговых клеток, измеряется миллиардами. Достоинство книги Капры заключается в том, что изложению собственной теории природы жизни, которая является биологической и в большей степени интересна специалистам-биологам, он предпосылает главы, посвященные системному мышлению, теории систем, в том числе — математике сложных систем, моделям самоорганизации.
В России теорией систем занимался Александр Богданов, который создал науку о структурах, названную им тектологией или всеобщей наукой организации. В 20-е и 30-е годы Людвиг фон Берталанфи создал общую теорию систем. Позже, в середине 50-х, на основе общей теории систем он предложил теорию открытых систем, которая довольно быстро была распространена не только на биологию, но и на другие дисциплины. В основе теории открытых систем лежит вполне прозрачная концепция, согласно которой системы представляются как комбинации или сборки из частей, находящихся между собой в той или иной зависимости. Если мы рассмотрим различные виды систем, начиная от механических и заканчивая социальными и органическими, то увидим, что формы связи и зависимости между компонентами становятся все более сложными и разнообразными. В механических системах связи являются жесткими, а в социальных системах они являются слабо связанными. Имеет значение то, что именно проникает через границы систем — материя, энергия или информация. По Берталанфи системы с энергетическим обменом проще, нежели системы с информационным обменом. Открытые системы могут иметь множество центров принятия решений, отдельные элементы могут объединяться в группы, образовывать и входить в коалиции, выходить из них. Границы открытых систем аморфны, для своего существования открытые системы должны обмениваться ресурсами с внешней средой.
Сопоставим понимание открытости по Берталанфи с более привычным. Компьютерные специалисты под открытыми системами на протяжении последних лет пятнадцати-двадцати понимают такие системы, которые имеют техническую возможность взаимодействия между собой, а также допускают переносимость кодов и свободны от подчиненности частным стандартам. Долгое время представление об открытых системах было еще более узким; обычно его связывали только с ОС Unix. Но даже в рамках таких представлений, со времени появления спецификации Single UNIX Specification, разработанной Open Group, любая операционная система, поддерживающая программный интерфейс UNIX (например, z/OS), может рассматриваться как открытая система.
Близкое понимание принципа открытости вкладывается в технические системы, строящиеся на принципах открытой архитектуры. Очень часто открытыми архитектурами называют любые не частные, не специфичные архитектуры. Более строго открытыми можно назвать архитектуры, построенные на принципах семиуровневой модели Open Systems Interconnection — Reference Model. OSI-RM предполагает наличие иерархической структуры, модели или конфигурации, которая обеспечивает коммуникации или распределенную обработку данных. Разделение на уровни позволяет:
- выполнять все виды деятельности от начального описания, проектирования, разработки, установки, вплоть до обслуживания, совершенствования, модернизации, оставаясь на заданном уровне структуры, не выходя за его пределы, не влияя на работоспособность верхних и нижних уровней;
- представлять каждый уровень в виде набора функций, управляемых и используемых со следующего уровня в иерархии;
- выбирать для каждого из уровней форму реализации, не влияющую на другие уровни;
- выполнять изменения, которые могут затрагивать один или несколько уровней системы, не оказывая влияния на оборудование, процедуры и протоколы оставшихся уровней.
Подобные представления об открытости сложились в «досетевую эпоху», в период, когда компоненты информационных систем по определению были жестко связанными, поведение систем детерминировано, а окружающая среда неизменна. Будучи с программной точки зрения «открытыми», в более широком смысле такие системы остаются закрытыми. Действительно, в физике, в философии, кибернетике под открытыми системами понимают системы, границы которых являются проницаемыми для посторонних источников массы или энергии. Ни одну фиксированную аппаратно-программную конфигурацию, работающую в неизменяемой внешней среде, нельзя назвать открытой в этом смысле — независимо от того, на каких принципах она построена, является ли ее архитектура открытой или нет. Однако с «погружением» современных корпоративных информационных систем в Internet ситуация принципиально изменилась. Internet-приложения имеют проницаемые границы, они должны обладать способностью к адаптации к изменяющимся условиям внешней среды, для них характерны масштабирование в зависимости от нагрузки, слабая связанность между компонентами, возможность динамической перестройки и т. д.
За последние пару лет появилось множество фирменных названий для современных систем: «по требованию», «органические», «автономные» и другие. Очевидно, что современные информационные системы становятся открытыми в том самом смысле, как это сегодня понимается в естественных науках, кибернетике и философии.