Вендров А.М. Стандарт языка UML и его применение в объектно-ориентированном анализе и разработке систем Вендров Александр Михайлович К.т.н., доцент, заведующий кафедрой информатики Всероссийской государственной налоговой академии e-mail: a.m.vendrov@mtu-net.ru Унифицированный язык моделирования UML (Unified Modeling Language) – это преемник того поколения методов объектно-ориентированного анализа и проектирования, которые появились в конце 80-х и начале 90-х годов. Создание UML фактически началось в конце 1994 г., когда Гради Буч (Grady Booch) и Джеймс Рамбо (James Rumbaugh) начали работу по объединению их методов Booch и OMT (Object Modeling Technique) под эгидой компании Rational Software. К концу 1995 г. они создали первую спецификацию объединенного метода, названного ими Unified Method, версия 0.8. Тогда же в 1995 г. к ним присоединился создатель метода OOSE (Object-Oriented Software Engineering) Ивар Якобсон (Ivar Jacobson). В 1996 г. OMG (Object Management Group) обратилась к объектно-ориентированному сообществу с предложением создать стандартную нотацию для объектноориентированного анализа и соответствующую семантическую метамодель. Первая версия UML (UML 1.0) появилась в январе 1997 г. как ответ на данное предложение. После ее обсуждения в сентябре 1997 г. на голосование в OMG была представлена версия UML 1.1. В ноябре 1997 г. она была успешно утверждена и принята на вооружение практически всеми крупнейшими компаниями – производителями программного обеспечения (Microsoft, IBM, Hewlett-Packard, Oracle, Sybase и др.). Кроме того, практически все мировые производители CASE-средств, помимо Rational Software, заявили о реализации поддержки UML в своих продуктах. (Paradigm Plus, System Architect, Microsoft Visual Modeler, Microsoft Visio, ARIS Toolset, Oracle Designer, Silverrun и др.). Текущая модификация UML – UML 1.3 - представлена в OMG в июне 1999 г. как результат деятельности OMG RTF (Revision Task Force). Деятельность RTF по отношению к модификациям стандарта UML сводится в основном к следующему: 1) Поиск опечаток и грамматических ошибок; 2) Устранение логических противоречий; 3) Исправление технических ошибок и неточностей; 4) Уточнение неясных положений; 5) Улучшение структуры и читабельности документа. В ближайшее время ожидается выпуск модификации UML 1.4, наиболее существенным дополнением в которой будет руководство по написанию профилей – версий UML для конкретных прикладных областей. Одной из самых популярных областей в последнее время является разработка Web-приложений, а соответствующий профиль UML, содержащий конкретное множество стереотипов различных элементов модели и их связей, описан в книге Джеймса Коналлена (James Conallen) «Building Web Applications with UML» (Addison Wesley, 2000). Другой пример профиля – концептуальное моделирование и проектирование схем баз данных – реализуется посредством компонента Data Modeler, входящего в состав CASE-средства Rational Rose 2000e. Ряд инициатив OMG и авторов UML связан с моделированием систем реального времени, распределенными вычислениями, компонентно-базированной разработкой (CORBA Component Model, Enterprise JavaBeans, COM+), хранилищами данных и др. Достаточно большой набор типовых решений по моделированию различных архитектурных механизмов (безопасность, многозадачность, распределенная обработка, многоуровневая архитектура и др.) развивается в рамках технологии Rational Unified Process (RUP) компании Rational Software. В 2002 году ожидается версия OMG UML 2.0, основная работа над которой идет по следующим направлениям: UML infrastructure – реорганизация внутренней структуры метамодели UML с целью улучшения механизмов расширения языка и интеграции с другими технологическими стандартами, входящими в сферу деятельности OMG – CORBA, XML и др. Это направление не затрагивает непосредственно пользователей языка, однако способствует облегчению процесса внесения изменений в язык и создания различных прикладных профилей, адаптированных к потребностям пользователей. UML superstructure – совершенствование нотаций и средств моделирования различных аспектов архитектуры систем, расширяющее применение языка на различных стадиях процесса создания системы. OCL (Object Constraint Language) – совершенствование декларативного языка ограничений, используемого в моделях UML – достаточно специфическое направление, не затрагивающее интересы большинства пользователей языка. Diagram exchange format – создание формата обмена диаграммами UML между CASE-средствами различных поставщиков (то, чего не удалось добиться в рамках CASE-средств, реализующих структурный подход, ввиду отсутствия стандартов средств моделирования). Значение стандарта UML трудно переоценить. По существу, это первый в программной инженерии «де-юре» стандарт языка моделирования программных систем. Общепризнанные «де-факто» и широко используемые модели SADT (IDEF0), диаграммы потоков данных и модели «сущность-связь» такого статуса не имеют до сих пор. В настоящее время идет процесс представления UML в качестве стандарта ISO. Преимущества утверждения UML в качестве стандарта ISO очевидны: широкое признание языка, расширение рынка для поддерживающих его продуктов. С другой стороны, существуют опасения, что длительный процесс утверждения стандарта может привести к выхолащиванию языка из-за необходимости технических и политических компромиссов. Создатели UML представляют его как язык для определения, представления, проектирования и документирования программных систем, бизнес-систем и других систем различной природы. UML не зависит от объектно-ориентированных языков программирования (он может поддерживать любой из них) и от используемого метода разработки проекта. UML является открытым и обладает средствами расширения базового ядра. На UML можно содержательно описывать классы, объекты и компоненты в различных предметных областях, часто сильно отличающихся друг от друга. UML содержит стандартный набор диаграмм и нотаций для моделирования самых разнообразных видов систем: систем программного обеспечения (ПО), технических средств и организационно-экономических систем: диаграммы вариантов использования (use case diagrams) - для моделирования бизнеспроцессов и функциональных требований к создаваемой системе; диаграммы классов (class diagrams) - для моделирования статической структуры классов системы; диаграммы поведения системы (behavior diagrams): диаграммы взаимодействия (interaction diagrams): диаграммы последовательности (sequence diagrams) и кооперативные диаграммы (collaboration diagrams) - для моделирования взаимодействия (обмена сообщениями) между объектами; диаграммы состояний (statechart diagrams) - для моделирования жизненного цикла (переходов состояний) объектов системы; диаграммы деятельностей (activity diagrams) - для моделирования сложного поведения системы в рамках вариантов использования при наличии параллельных процессов; диаграммы реализации (implementation diagrams): диаграммы компонентов (component diagrams) - для моделирования физической структуры программных компонентов системы; диаграммы размещения (deployment diagrams) - для моделирования размещения программных компонентов системы в распределенной среде. Несмотря на богатые возможности моделирования, язык UML пока еще находится в «детском» возрасте, постоянно развивается и обогащается новыми возможностями. Его применение в реальных проектах (особенно в российских условиях) связано с целым рядом проблем, в частности, основная и практически единственная технология, представленная на российском рынке – Rational Unified Process и инструментальный комплекс Rational Suite – является весьма объемной, непростой для внедрения и дорогостоящей даже по западным меркам, опыт ее серьезного применения в России отсутствует (ряд крупных проетов находится пока только в начальной стадии), а западный опыт труднодоступен. С другой стороны, компания Rational стремится к созданию компактного варианта технологии, рассчитанного на применение в небольших проектных коллективах для реализации проектов среднего масштаба. За рубежом издано достаточно большое количество самых разнообразных по уровню и содержанию книг, посвященных UML, однако большая часть приведенных в них примеров моделирования является тривиальной или чересчур академичной и не учитывает практические проблемы разработчиков ПО. В последнее время в России выпущено несколько книг, посвященных языку UML и аспектам его применения при создании программных систем. Упомянем только одну: К. Ларман «Применение UML и шаблонов проектирования» - ценная и лучше всего написанная, по мнению автора, поскольку в ней описан не просто язык UML, а процесс анализа и проектирования программной системы с использованием языка UML и образцов (patterns) проектирования (шаблон – не совсем удачный перевод слова pattern). Некоторые адреса, по которым можно найти исчерпывающую и полезную информацию о UML: www.omg.org – официальный сайт OMG www.rational.com – сайт компании Rational Software www.rosearchitect.com – специализированный журнал по продуктам Rational Software www.sdmagazine.com – журнал для разработчиков ПО www.cetus-links.org/oo_uml.html – сборник большого количества ссылок на ресурсы UML