компаний Oracle, Informix и IBM, доминирующих на рынке программного обеспечения систем баз данных, происходит процесс миграции из реляционных сред в объектные.
Указанные процессы, в свою очередь, стимулировали развитие объектных технологий анализа и проектирования систем. Появилось значительное количество различных методов и реализующих их коммерческих программных продуктов.
Поскольку для многих компаний возрастает стратегическое значение программного обеспечения, индустрия озабочена поиском методов автоматизации производства программного обеспечения, повышения его качества, а также снижения стоимости и времени выпуска на рынок. Эти методы основаны на компонентных технологиях, визуальном программировании, использовании образцов (pattern) и инструментальных сред (framework). Важной проблемой является также поиск методов управления сложностью систем, поскольку увеличиваются не только охватываемые ими области, но и их масштабы. В частности, признается необходимость решения существующих архитектурных проблем такого рода, как физическое распределение, параллелизм, тиражирование данных, безопасность, сбалансированность нагрузки и отказоустойчивость. Наряду с этим, разработка Web, хотя она и упростила некоторые вещи, вместе с тем усугубила указанные архитектурные проблемы. Именно в связи с указанными потребностями был создан Унифицированный язык моделирования (UML).
Унифицированный язык моделирования позволяет специфицировать, визуализировать, конструировать и документировать артефакты систем программного обеспечения, а также моделировать предпринимательскую деятельность и другие системы, не имеющие отношения к программному обеспечению. UML воплощает лучшие достижения ряда практических технологий, успешно проявивших себя в моделировании больших и сложных систем.
Язык UML был разработан компанией Rational Software и ее партнерами. Он является преемником языков моделирования, на которых основаны методы объектного анализа и проектирования Буча, OOSE Якобсона, OMT Рэмбо и другие. Многие компании используют UML как стандарт в их процессах разработки и в программных продуктах, связанных с такими областями, как моделирование бизнеса, управление требованиями, анализ и проектирование, программирование и тестирование.
Важность моделирования
Разработка модели системы программного обеспечения промышленного характера на стадии, предшествующей ее реализации или обновлению, в такой же мере необходима, как и наличие проекта для строительства большого здания. Хорошие модели являются основой взаимодействия участников проекта и гарантируют корректность архитектуры. Поскольку сложность систем повышается, важно располагать хорошими методами моделирования. Хотя имеется много других факторов, от которых зависит успех проекта, но наличие строгого стандарта языка моделирования является весьма существенным.
Язык моделирования должен включать:
- модельные элементы - фундаментальное моделирование понятий и семантики.
- нотацию - визуальное представление модельных элементов.
- руководящие указания - характерные способы использования в практических применениях.
В связи с возрастающей сложностью разрабатываемых систем визуализация и моделирование становятся все более существенными. UML представляет собой хорошо определенный и широко признанный ответ на эту потребность. Это - язык визуального моделирования для разработки объектно-ориентированных и компонентных систем.
Цели UML
Главными в разработке UML были следующие цели:
- предоставить пользователям готовый к использованию выразительный язык визуального моделирования, позволяющий им разрабатывать осмысленные модели и обмениваться ими;
- предусмотреть механизмы расширяемости и специализации для расширения базовых концепций;
- обеспечить независимость от конкретных языков программирования и процессов разработки.
- обеспечить формальную основу для понимания этого языка моделирования;
- стимулировать рост рынка объектно-ориентированных инструментальных средств;
- предусмотреть поддержку таких высокоуровневых концепций разработки, как сотрудничество, среды, образцы и компоненты;
- интегрировать лучший практический опыт.
Области применения OMG-UML
Как уже отмечалось, UML предназначен для спецификации, конструирования, визуализации и документирования артефактов сложных систем программного обеспечения. Во-первых, важно отметить, что этот язык является сплавом концепций методов Буча, OMT и OOSE. В результате такого подхода был создан единый, общий и широко используемый язык моделирования для пользователей этих и других методов.
Во-вторых, UML дает возможность охватить практически все то, что может быть сделано с помощью существующих методов. Так, например, авторы UML принимали во внимание моделирование параллельных распределенных систем с тем, чтобы обеспечить возможность адекватного использования UML в этой области.
В третьих, в центре внимания разработчиков UML было создание стандартного языка, а не стандартного процесса моделирования. Хотя UML должен быть применимым в контексте любого процесса, опыт показал, что для различных организаций и областей приложений требуются различные процессы. (Например, процесс разработки программного обеспечения сложных систем реального времени в авионике, от которых зависят жизни людей, значительно отличается от разработки программного обеспечения для других целей.) Поэтому усилия были прежде всего сосредоточены на общей метамодели (унифицирующей семантику), а во-вторых, на общей нотации (обеспечивающей воспринимаемое человеком воплощение этой семантики). Авторы UML поддерживают процесс разработки, который управляется случаями использования (use-case), является архитектуро-центрическим, итерационным и пошаговым.
Функции, выходящие за пределы возможностей UML
Хотя UML предназначен для того, чтобы упростить и стандартизировать моделирование, он отнюдь не является всеобъемлющим языком. Благодаря этому достигается его гибкость, которая позволяет использовать язык для проектирования разнообразных систем в широком спектре отраслей промышленности. Рассмотрим некоторые важные функции, выходящих за рамки возможностей UML.
Языки программирования
UML - это язык визуального моделирования. Он не предназначен для визуального программирования в смысле наличия всей необходимой визуальной и семантической поддержки, позволяющей ему заменять языки программирования. UML служит для визуализации, спецификации, конструирования и документирования артефактов сложных систем программного обеспечения, но он в действительности позволяет вырисовывать линии по мере того, как вы продвигаетесь к коду. Для UML разработано строгое отображение в семейство объектно-ориентированных языков, так что вы можете взять лучшее из этих двух миров.
Инструментальные средства
Стандартизация языка - необходимая основа для инструментальных средств и процесса. Главная цель RFP OMG (В соответствии с установленной в OMG процедурой, разработка каждого стандарта в рамках этого консорциума начинается с выпуска документа, называемого Запросом предложений (Request FOR Proposals, RFP), в котором формулируются цели предстоящей разработки, требования, которым должны удовлетворять предложения, претендующие на стандартизацию, и объявляются сроки их представления. RFP является, таким образом, официальным документом, которым руководствуются разработчики вариантов проектов соответствующего стандарта. - Прим. пер.) состояла в том, чтобы обеспечить интероперабельность инструментальных средств. Однако инструментальные средства и их интероперабельность в большой степени зависят от основательного определения семантики и нотации, подобного тому, которое предусматривается в UML. Язык UML определяет семантическую метамодель, а не модель интерфейса инструментальных средств, хранения или стадии исполнения, хотя они должны быть довольно близки друг к другу.
Процесс
Многие организации будут использовать UML как общий язык для представления артефактов их проектов, но будут использовать одни и те же типы диаграмм UML в контексте различных процессов разработки. UML преднамеренно разрабатывался как независимый от процессов.
Как UML стал стандартом OMG
Подлинные объектно-ориентированные языки моделирования начали появляться между серединой 70-х и концом 80-х годов, поскольку авторы различных методологий экспериментировали с различными подходами к объектно-ориентированному анализу и проектированию. В период с 1989 до 1994 года количество разработанных языков моделирования, не превышавшее до тех пор десятка, увеличилось более чем до пятидесяти. Многие пользователи объектно-ориентированных методов сталкивались с затруднениями, пытаясь найти полное удовлетворение своих потребностей с помощью какого-либо одного языка моделирования, провоцируя тем самым "войну методов." К середине 90-х годов начали появляться новые версии этих методов, и методы начали заимствовать технику друг у друга. Возникло несколько наиболее известных методов.
Разработка UML началась в конце 1994 года, когда Буч и Рэмбо из Rational Software Corporation начали их работу по объединению методов Буча и OMT (Object Modeling Technique). Осенью 1995 года Ивар Якобсон и его компания Objectory присоединились к Rational Software и к этим усилиям по объединению методов с тем, чтобы интегрировать их в рамках метода OOSE (Object-Oriented Software Engineering).
Гради Буч, Джим Рэмбо и Ивар Якобсон поставили перед собой задачу создания Унифицированного языка моделирования. Они руководствовались при этом тремя причинами. Во-первых, эти методы уже независимо эволюционировали в направлении друг друга. В таких условиях имело бы смысл продолжать эту эволюцию совместно, а не отдельно друг от друга, исключая возможность каких-либо не необходимых и беспричинных различий, которые бы только запутывали пользователей. Во-вторых, унифицируя семантику и нотацию указанных языков, они могли бы привнести некоторую стабильность рынка объектно-ориентированного инструментария, позволяя обходиться в проектах одним достаточно развитым языком моделирования, а разработчикам программного обеспечения - сосредоточиться на предоставлении более полезных возможностей. Наконец, в третьих, они ожидали, что их сотрудничество приведет к уточнению всех трех ранних методов, помогая использовать полученные уроки и обратиться к проблемам, с которыми ни один из их методов ранее полноценно не справлялся.
Начиная работы по унификации, авторы методов решили сосредоточить свои усилия на достижении четырех целей:
- обеспечить возможность моделирования систем (а не только их программного обеспечения) с использованием концепций объектно-ориентированного подхода;
- установить явную связь с концептуальными, а также с исполняемыми артефактами;
- обратиться к проблемам масштабирования, которые свойственны сложным, работающим в критических режимах системам;
- создать язык моделирования, пригодный для использования как человеком, так и машиной.
Предпринятые Бучем, Рэмбо и Якобсоном усилия привели к появлению в июне и октябре 1996 года документов, представляющих версии UML 0.9 и 0.91. В течение 1996 авторы UML, воспользовавшись обратной связью, получили мнения широкого сообщества специалистов. Эти мнения были учтены. Было, однако, ясно, что все еще необходима доработка языка.
Хотя Rational занималась синтезом UML как унифицированного языка, предпринимались, тем не менее, усилия для достижении более широкой цели - создания индустриального стандарта языка моделирования. В начале 1995 года Ивар Якобсон (бывший в то время главным технологом компании Objectory) и Ричард Соли (в то время - главный специалист по технологиям в OMG) решили энергично добиваться достижения стандартизации на рынке методов. В июне 1995 года OMG организовала совещание всех крупных специалистов по методологии (или их представителей), которое впервые в международном масштабе пришло к соглашению о целесообразности поиска стандартов методологии под эгидой OMG.
В 1996 году выяснилось, что несколько организаций признали стратегическую роль UML для их бизнеса. Выпущенный OMG RFP стал катализатором для объединения усилий этих организаций с целью подготовки совместного ответа на этот RFP. Компания Rational вместе с несколькими организациями, изъявившими желание выделить ресурсы для разработки строгого определения версии 1.0 языка UML, учредила Консорциум партнеров UML. К числу компаний, которые внесли наибольший вклад в разработку определения языка UML 1.0, относятся Digital, Hewlett-Packard, iLogix, IntelliCorp, IBM, ICON Computing, MCI Systemhouse, Microsoft, Oracle, Rational Software, Texas Instrument и Unisys. В результате такого сотрудничества был создан UML 1.0 - хорошо определенный, выразительный, мощный и широко применимый язык моделирования. Он был представлен в январе 1997 года на рассмотрение OMG как начальный вариант ответа на RFP.
В январе 1997 года также и ряд других компаний - IBM, ObjecTime, Platinum Technology, Ptech, Taskon, Reich Technologies и Softeam - представил на рассмотрение OMG свои собственные ответы на RFP. В дальнейшем эти компании присоединились к партнерам UML, предлагая некоторые свои идеи. В результате совместной работы с партнерами UML была предложена пересмотренная версия языка - UML 1.1. Основное внимание при разработке UML 1.1 было уделено достижению большей ясности семантики языка по сравнению с UML 1.0, а также учету предложений новых партнеров. Эта версия языка была представлена на рассмотрение OMG и была одобрена осенью 1997 года.
Настоящее и будущее UML
UML не является запатентованным средством и открыт для всех. Он предназначен для удовлетворения потребностей пользователей и научных сообществ, подтвержденных практическим опытом применения методов, на которых он основан. Многие специалисты по методологии, организации и поставщики инструментальных средств обязались использовать язык. Так как UML строится на основе семантики и нотации, подобной используемой в методах Буча, OMT, OOSE и в других лидирующих методах, а также включает предложения партнеров UML и широкой общественности, должно быть вполне естественным широкое признание этого языка.
Эпитет "Унифицированный" в названии UML имеет два аспекта. Прежде всего, он фактически исключает многие из различий, часто несущественных, между языками моделирования ранних методов. Во-вторых, что, вероятно, более важно, он унифицирует перспективы многих различных видов систем (связанный с ними бизнес, а не программное обеспечение), фазы разработки (анализ требований, проектирование и реализация) и внутренние концепции.
Хотя UML определяет точный язык, это не является препятствием для будущих усовершенствований концепций моделирования. При разработке UML были приняты во внимание многие передовые методы, но можно ожидать, что на будущие версии UML окажут влияние и другие методы. Кроме того, на основе UML могут быть определены многие новые перспективные методы. UML может быть расширен без переопределения его ядра.
Как ожидается, UML в его текущем виде станет основой для многих инструментальных средств, в том числе, для сред визуального моделирования, имитационного моделирования, а также сред разработки. Поскольку разрабатываются интересные интегрированные средства, будут становиться все более доступными стандарты реализации, основанные на UML.
По материалам Object Management Group (What is OMG-UML and why is it important? Object management Group Press Release, 1997. http://www.omg.org/news/pr97/umlprimer.htm)
От переводчика
М. КогаловскийВажным звеном в развитии объектных технологий стало образование в 1989 году консорциума Object Management Group (OMG), цель которого - разработка индустриальных стандартов для создания интероперабельных неоднородных распределенных объектных сред. Принятие OMG, начиная с 1991 года, ряда версий индустриального стандарта CORBA и стандартов, связанных с его инфраструктурой, а также активное практическое внедрение технологий CORBA, не могли не вызвать большого интереса разработчиков и пользователей этого стандарта к технологиям объектного анализа и проектирования, к осознанию необходимости выработки стандарта языка моделирования, который бы стать основой технологий такого рода, которые бы поддерживали создание систем, опирающихся на архитектуру CORBA, обеспечивал бы интероперабельность использующих такие технологии объектно-ориентированных инструментальных средств и интегрировал бы накопленный многочисленными коллективами опыт в этой области.
Результатом усилий, предпринятых OMG с этой целью, было принятие в сентябре 1997 года стандарта языка, названного Унифицированным языком моделирования (UML).
Язык UML использует графическую нотацию и предназначен для спецификации, визуализации, конструирования и документирования систем программного обеспечения, разрабатываемых на основе объектно-ориентированных технологий и компонентного подхода. Язык не зависит от конкретных языков программирования, используемых при реализации разрабатываемых систем. Он не ориентируется также на какой-либо конкретный технологический процесс разработки. UML может быть адаптирован к различным таким процессам.
Основу стандарта UML составило поддержанное рядом крупных корпораций предложение компании Rational Software, интегрировавшее идеи трех весьма популярных технологий объектного анализа и проектирования - технологий Г.Буча, OOSE И.Якобсона и OMT Д.Рэмбо.
Спецификации принятой в качестве стандарта версии UML 1.1 включают описание семантики языка, графической нотации, а также расширений языка для процесса разработки программного обеспечения Objectory (предложенного ранее И.Якобсоном) и для моделирования деловых приложений. Предусматривается также возможность задания налагаемых на объекты ограничений, ассоциируемых с графическими моделями. Для спецификации таких ограничений служит язык объектных ограничений (Object Constraint Language, OCL), описание которого также является составной частью спецификаций стандарта.
С языком UML тесно сопрягается другой недавно принятый стандарт OMG - Средства метаобъектов (Meta Object Facilities, MOF). MOF представляет собой набор средств (интерфейсов CORBA) для создания интероперабельных метамоделей и оперирования ими. В контексте обсуждения UML особенно важно отметить, что благодаря этому стандарту обеспечивается основа для создания распределенных средств разработки, опирающихся на язык UML и архитектуру CORBA.
В настоящее время на рынке программного обеспечения CASE-средств уже представлены программные продукты, поддерживающие версию языка UML 1.1 (например, Rational Rose'98 компании Rational Software).
В публикуемом материале OMG (сентябрь 1997) кратко обсуждаются предпосылки разработки UML, его цели, источники, состояние и перспективы. Приводится также краткая характеристика стандарта MOF.
Полные спецификации стандарта OMG-UML предоставлены для свободного доступа на WWW-узлах OMG и Rational Software: http://www.rational.com/, http://www.omg.org.