«Открытые системы»
UML — одно из наиболее эффективных средств для решения проблем моделирования сложных программных систем
Без моделирования и макетирования невозможно создать сложную инженерную конструкцию или сооружение. И тем не менее исторически сложилось так, что эта банальная истина в течение долгого времени не распространялась на программное обеспечение. Возможно, причина в том, что в этой отрасли лидерами были математики, а не инженеры, к тому же переход от замысла к изделию здесь происходит намного незаметнее, чем в других сферах инженерной деятельности. Однако по мере роста сложности программных систем моделирование превращается в насущную необходимость; язык UML является одним из наиболее эффективных средств для решения проблемы моделирования.
В 1995 году совместными усилиями Грэди Буча, Ивара Якобсона и Джима Рамбо на свет появился язык Unified Modeling Language. Пилотная версия была в большей степени заявкой, нежели готовым продуктом; поэтому, как это принято в подобных обстоятельствах, она с осторожностью именовалась UML 0.8. Первая коммерческая версия UML 1.0 была выпущена на рынок компанией Rational Software два года спустя. В дальнейшем, на протяжении семи последующих лет, UML претерпел ряд последовательных модернизаций вплоть до версии 1.5 (2003 год), и, наконец, последняя, значительно обновленная редакция UML 2.0 была опубликована в 2004 году.
Язык UML был спроектирован для представления объектно-ориентированных систем. При проектировании таких систем ПО представляется в виде взаимодействующих между собой блоков, обладающих собственными данными и поведением. Например, при создании системы, поддерживающей расписание, может быть использован блок, поставляющий значения даты и времени, то есть совмещающий в себе поведение и данные. В этом, собственно, и состоит радикальное отличие от функционального программирования, где поведением обладали только программные модули, а данные находились во внешних по отношению к ним файлах. Дуализм новой технологии программирования стал причиной появления качественно иных способов моделирования; одним из них и стал UML.
В отечественной литературе UML принято именовать «универсальным языком моделирования»; несмотря на то, что это название привилось, его нельзя признать слишком удачным. Оно содержит сразу две неточности. Во-первых, язык UML отнюдь не претендует на универсальность, в оригинале первое слово Unified, а не Universal, что отражает объединение результатов трудов трех соавторов, не более того. Во-вторых, Modeling в данном контексте скорее стоило бы переводить как «макетирование». Язык UML изначально не задумывался в качестве инструментального средства для создания какой-то действующей модели. Чаще всего он служит лишь «ручным» инструментом для выражения концептуальных взглядов — примерно так, как глиняная модель позволяет скульптору отработать прототип будущего произведения, высекаемого из мрамора. Однако если создать достаточно детальное описание приложения, то такое описание вполне может быть скомпилировано в работоспособную программу.
Возвращаясь к истории, стоит отметить, что идея объектно-ориентированного моделирования была популярна в 80-годы. Параллельно существовало несколько десятков различных методик, говорили даже о «войне методик», в результате которой выжили немногие, в том числе и UML, возможно, потому что Буч, Якобсон и Рамбо объединили лучшее из своих разработок, называвшихся соответственно Booch, OOSE и OMT.
Хронологически первым был Рамбо. Он в 1991 году предложил метод объектного моделирования Object Modeling Technique (OMT). Участвуя в девятой ежегодной конференции по объектно-ориентированному программированию OOPSLA 94, Буч и Рамбо, оба бывшие в ту пору сотрудниками Rational, пришли к выводу о целесообразности слияния своих методик и начали совместную работу. Осенью 1995 года к ним подключился Якобсон, автор методики OOSE (Object-Oriented Software Engineering), одновременно с этим событием его компания Objectory объединилась с Rational Software.
В следующем году инициатива создателей UML была поддержана несколькими общественными и коммерческими организациями, центром кристаллизации стал консорциум Object Management Group (OMG). Тогда же был избран традиционный способ взаимодействия участников посредством выпуска предложений для обсуждения (Request for Proposal, RFP). Наибольший вклад в UML 1.0, версию, появившуюся в январе 1997 года, внесли Digital Equipment, HP, IBM, Microsoft, Oracle, Rational Software, Texas Instruments и Unisys. Присоединившиеся к ним после этого компании предложили свои идеи, в итоге в сентябре 1997 года была выпущена версия UML 1.1.
В 2002 году IBM приобрела Rational Software за сумму, превышавшую 2 млрд. долл., что косвенным образом свидетельствует о значении средств разработки ПО на основе UML. Нынешняя версия UML 2.0 выпущена в рамках подразделения IBM, сохранившего свое название Rational Software. По сравнению с предыдущей версией она отличается качеством, которое получило наименование «действенные семантики» (action semantics). Этот подход к моделированию обеспечивает более точную детализацию, вплоть до отдельных операций. В некоторых случаях он позволяет непосредственно транслировать модель в программу. Таким образом, обеспечивается поддержка современных архитектур, управляемых моделями (Model Driven Architecture, MDA), и разработок, управляемых моделями (Model Driven Development, MDD).