Что такое язык uml

Что такое унифицированный язык моделирования?

Какой вариант лучше всего описывает вашу ситуацию?

содержание

Лучше один раз увидеть, чем сто раз услышать. Именно этим принципом руководствовались создатели унифицированного языка моделирования (UML), который был задуман с целью стать единым наглядным языком в сложном мире разработки программного обеспечения и доступно передавать информацию представителям бизнес-среды и всем тем, кто хочет вникнуть в устройство той или иной системы. Приглашаем вас освоить азы составления диаграмм UML, а также познакомиться с их истоками, понятийной базой, разновидностями и правилами построения при помощи инструментов нашей платформы.

Читается за 18 мин.

Хотите создать диаграмму UML самостоятельно? Попробуйте Lucidchart! Быстро, удобно и совершенно бесплатно.

Что такое UML?

Унифицированный язык моделирования (UML) был разработан с целью обеспечить единый визуальный язык с богатой семантикой и развернутым синтаксисом для проектирования и внедрения программных систем со сложной структурой и комплексным поведением. Стоит отметить, что UML применяется не только в разработке программ, но и в других сферах, например, в схематизации потоков производственных процессов.

UML напоминает стандарты, используемые в других отраслях, и поддерживает диаграммы нескольких типов. В целом, диаграммы UML описывают границы, структуру и поведение как всей системы, так и отдельных объектов в ее составе.

UML не является языком программирования, однако на базе диаграмм UML можно сгенерировать код на разных языках, и для этого существует ряд специальных инструментов. Зато с объектно-ориентированным анализом и дизайном унифицированный язык моделирования связан напрямую.

UML и его роль в объектно-ориентированном анализе и дизайне

В информатике, науке об алгоритмах и данных, существует множество парадигм и моделей решения задач. Выделяется четыре категории таких моделей — императивные, функциональные, декларативные и объектно-ориентированные. Объектно-ориентированные языки представляют алгоритмы посредством определения объектов и их взаимодействия друг с другом. Объекты существуют в реальном мире и подвергаются тем или иным действиям. Объектами могут быть здания, виджеты рабочего стола и даже люди.

Объектно-ориентированные языки преобладают в сфере программирования, так как моделируют объекты реального мира. UML сочетает в себе несколько разновидностей объектно-ориентированной нотации — объектно-ориентированный дизайн, технику объектного моделирования и разработку объектно-ориентированного программного обеспечения.

Объединяя в себе сильные стороны всех трех подходов, UML обеспечивает своим пользователям удобную и последовательную методологию и представляет собой набор эффективных методов схематизации и документирования различных аспектов моделирования программ и бизнес-систем.

Истоки возникновения UML

«Три амиго» из мира программирования уже имели за плечами опыт создания других методологий, однако однажды решили общими усилиями разработать новые понятные стандарты для программистов. В итоге, сотрудничество Буча, Рамбо и Якобсона не только повысило эффективность всех трех методов, но и позволило отполировать их общий конечный продукт.

В 1996 году совместная работа трех светлых умов вылилась в релиз документов, составленных по принципам UML 0.9 и 0.91. Вскоре стало ясно, что некоторые крупные компании, включая Microsoft, Oracle и IBM, полагаются на UML как на один из ключевых инструментов развития своего бизнеса. Вместе с другими организациями и отдельными лицами эти компании обеспечили необходимые ресурсы для развития UML до уровня полностью сформировавшегося языка моделирования. В 1999 году «три амиго» опубликовали «Справочник пользователя унифицированного языка моделирования», а затем, в 2005 году, его вторую редакцию, где была представлена информация по UML 2.0.

OMG: новое значение знакомой аббревиатуры

Согласно сайту компании,Object Management Group® (OMG®) — международная некоммерческая организация с открытым членством, которая была основана в 1989 году и занимается стандартизацией технологий. Запрос на стандартизацию поступает от коммерческих организаций, конечных пользователей, учебных заведений и правительственных органов. Специалисты OMG разрабатывают стандарты интеграции корпоративной информации для широкого набора технологий и еще более широкого спектра отраслей. Стандарты моделирования OMG, включая UML и MDA® (Model Driven Architecture® — «архитектура, управляемая моделью»), позволяют своим пользователям эффективно проектировать, внедрять и поддерживать программные и другие процессы.

OMG контролирует постоянство определений и параметров UML, давая программистам и разработчикам возможность применять единый язык в разных целях на всех этапах жизненного цикла программного обеспечения независимо от масштабов системы.

Цель существования UML согласно OMG

OMG определяет цель UML так:

UML выполняет следующие функции:

UML и моделирование данных

Язык UML получил широкое распространение в среде программистов, однако в целом мало используется в разработке баз данных. Одна из причин этого заключается в том, что создатели UML не ставили базы данных в центр внимания. Тем не менее, UML эффективно применяется в концептуальном моделировании данных высоких уровней и подходит для создания различных видов диаграмм UML. Более подробно о том, как при помощи слоев преобразовать объектно-ориентированную модель в схему реляционной базы данных, можно узнать в нашей статье по моделированию баз данных с помощью UML.

Создание диаграмм быстро и легко с Lucidchart. Начните бесплатную пробную версию сегодня, чтобы начать создавать и сотрудничать.

Что нового в UML 2.0

Язык UML не перестает совершенствоваться. Стандарт UML 2.0 расширяет границы UML, охватывая новые аспекты разработки, в том числе в гибкой среде. Новый стандарт был введен с целью реструктурировать, усовершенствовать и упростить UML для удобства использования, внедрения и адаптации. Вот несколько примеров того, как изменились диаграммы UML:

Глоссарий терминов UML

Предлагаем вам ознакомиться с терминологией UML. Для этого здесь приведен список распространенных терминов из документа UML 2.4.1, предназначенного для тех, кто не входит в OMG.

Просмотреть полный документ по метаобъектным средствам (MOF)

Скачать полный документ по инфраструктуре UML 2.4.1

Концепции моделирования в рамках UML

В целом, в разработке систем выделяется три основных системных модели:

Наглядное представление этих системных моделей осуществляется с помощью схем двух разных типов — структурных и поведенческих.

Объектно-ориентированные концепции в UML

Объекты в UML — это упрощенное представление предметов окружающего нас мира. В разработке программного обеспечения объекты используются для описания (или моделирования) создаваемой системы с применением терминологии соответствующей сферы. Объекты также позволяют разбить сложные системы на понятные составляющие и выстроить схему блок за блоком.

Ниже приведены некоторые фундаментальные концепции объектно-ориентированной методологии:

Разновидности диаграмм UML

UML опирается на набор объектов, соединяемых между собой различными способами с целью создания схем, отражающих статичные (или структурные) либо динамические (поведенческие) аспекты системы.

Структурные диаграммы UML

Поведенческие диаграммы UML

Как создать диаграмму UML: уроки и примеры

Чтобы научиться создавать разные виды диаграмм UML, рекомендуем вам пройти один или все наши уроки по построению структурных и поведенческих схем.

Уроки по созданию структурных схем

Диаграммы классов иллюстрируют статичные структуры внутри системы, включая классы, атрибуты, операции и объекты. В их состав могут входить как концептуальные, так и организационные данные в форме классов реализации и логических классов, соответственно. Стоит отметить, что данные две группы могут пересекаться.

Диаграммы компонентов показывают, как компоненты сочетаются между собой, создавая более крупные компоненты или программные системы. Такие диаграммы создаются с целью смоделировать виды зависимости каждого компонента в составе системы. Под термином «компонент» подразумевается нечто необходимое для выполнения функции стереотипа. Стереотип компонента может состоять из исполняемых элементов, документов, файлов, файлов библиотек или таблиц баз данных.

Диаграмма развертывания моделирует физическое развертывание и структуру аппаратных компонентов. Диаграммы этого типа демонстрируют, где и как компоненты системы будут работать друг с другом.

Уроки по созданию поведенческих схем

Диаграммы активности показывают движение процедурного потока подчиненных объектов класса в сочетании с организационными процессами, например, рабочими потоками компании. Такие диаграммы составляются из специального набора фигур, соединяемых стрелками. Нотационный набор диаграмм активности похож на набор для диаграмм состояний.

СХЕМЫ СЦЕНАРИЕВ ИСПОЛЬЗОВАНИЯ

Сценарий использования представляет собой список шагов, характеризующих взаимодействие между агентом (человеком или внешней системой) и самой системой. Схемы сценариев использования отображают их характеристики, а также моделируют функциональные единицы системы. Схематизация помогает разработчикам лучше вникнуть в требования системы, включая роль ее взаимодействия с человеком, а также выявить различия между сценариями использования. В схеме могут отображаться как все сценарии использования, так и их отдельные группы с похожим набором функций.

Диаграммы последовательностей, которые также называют схемами или сценариями событий, показывают отношения между разными объектами последовательности, объясняя тем самым, как процессы взаимодействуют друг с другом. Эти схемы составляются в двух измерениях — горизонтальном и вертикальном. Вертикальные линии символизируют последовательность сообщений и звонков в хронологическом порядке, а горизонтальные элементы — экземпляры объектов в местах ретрансляции сообщений.

Читайте также:  что такое сбэу в таркове

Lucidchart заметно упрощает работу по созданию диаграмм UML

Начните создавать собственные диаграммы UML в Lucidchart уже сегодня! С нами строить схемы просто, эффективно и даже занимательно.

Хотите создать диаграмму UML самостоятельно? Попробуйте Lucidchart! Быстро, удобно и совершенно бесплатно.

Источник

Простое руководство по UML-диаграммам и моделированию баз данных

Унифицированный язык моделирования (UML) играет важную роль в разработке программного обеспечения, а также в системах, не связанных с ИТ, во многих отраслях, поскольку он дает возможность визуально показать поведение и структуру системы или процесса. UML помогает продемонстрировать возможные ошибки в структурах приложений, поведении системы и других бизнес-процессах.

Почему UML?

Впервые UML появился еще в 1990-х годах благодаря трем инженерам-программистам — Грэди Бучу, Ивару Джекобсону и Джеймсу — поскольку они хотели разработать менее хаотичный способ представления разработки все более сложного программного обеспечения, в то же время отделяя методологию от самого процесса. Сегодня UML по-прежнему является стандартной практической нотацией для разработчиков, а также для руководителей проектов, владельцев бизнеса, технических предпринимателей и специалистов из разных отраслей.

Каковы преимущества UML?

Типы диаграмм UML

Существует два основных типа диаграмм UML: структурные диаграммы и поведенческие диаграммы (а внутри этих категорий имеется много других). Эти варианты существуют для представления многочисленных типов сценариев и диаграмм, которые используют разные типы людей.

От заказчиков и руководителей проектов до технических писателей, конструкторов, аналитиков, программистов и тестеров — представители каждой роли будут использовать конкретную диаграмму в соответствии со своими потребностями. Это означает, что каждый шаблон требует различного фокуса и уровня детализации. Цель UML — визуально представить диаграммы, которые легко понять каждому.

Пример базовой диаграммы последовательности UML. Шаблон доступен длязагрузки

Давайте посмотрим внимательнее:

Структурные диаграммы

Структурные диаграммы представляют статическую структуру программного обеспечения или системы, они также показывают различные уровни абстракции и реализации. Они используются, чтобы помочь визуализировать различные структуры, составляющие систему, например, базу данных или приложение. Они показывают иерархию компонентов или модулей и то, как они связаны и взаимодействуют между собой. Эти инструменты обеспечивают руководство работы и гарантируют, что все части системы функционируют так, как задумано по отношению ко всем остальным частям.

Поведенческие диаграммы

Основное внимание здесь уделяется динамическим аспектам системы программного обеспечения или процесса. Эти диаграммы показывают функциональные возможности системы и демонстрируют, что должно происходить в моделируемой системе.

Давайте подробнее рассмотрим различные типы диаграмм UML, которые относятся к каждой категории:

1. Структурные диаграммы UML

2. Поведенческие диаграммы UML

Модели базы данных

UML также завоевывает популярность как нотация для моделирования баз данных. Эти модели являются отличным визуальным инструментом для проведения мозгового штурма, создания диаграмм в свободной форме и совместной работы над идеями.

Хотя UML не имеет спецификаций для моделирования данных, он может быть полезным инструментом для построения диаграмм, тем более что данные из баз данных могут использоваться в объектно-ориентированном программировании.

Давайте рассмотрим различные типы моделей баз данных, которые вы можете создать:

Упрощение с помощью программного обеспечения

Создаете ли вы модели баз данных или диаграммы UML, использование программных инструментов упрощает и улучшает этот процесс. Обязательно выберите инструменты, которые позволят вам:

При разработке программного обеспечения и непрограммируемых систем во многих отраслях использование визуальных UML-диаграмм может играть важную роль в построении поведенческих процессов и структур. Узнайте больше о создании диаграмм UML с помощью программного обеспечения при помощи пошаговой инструкции: руководства.

Сведения об авторе

Источник

1. Введение в UML

В этой главе язык UML рассматривается в целом, «с высоты птичьего полета». Детали рассматриваются в последующих главах.

1.1. Что такое UML?

Прежде всего необходимо точно определить, о чем идет речь. Обсуждаемый предмет обозначается идентификатором UML, который является аббревиатурой полного названия Unified Modeling Language. Правильный перевод этого названия на русский язык ‒ унифицированный язык моделирования. Таким образом, обсуждаемый предмет характеризуется тремя словами, каждое из которых является точным термином.

1.1.1. UML ‒ это язык

Главным словом в этом сочетании является слово «язык».

Язык ‒ это знаковая система для хранения и передачи информации.

Различаются языки формальные, правила употребления которых строго и явно определены, и неформальные, употребление которых основано на сложившейся практике. Различаются также языки естественные, появляющиеся как бы сами собой ∇ в результате неперсонифицированных усилий массы людей, и языки искусственные, являющиеся плодом видимых усилий определенных лиц. Филологи, наверное, смогут назвать еще дюжину различных характеристик: нормативный и ненормативный язык, живой и мертвый, синтетический и аналитический и т.д.

Точнее говоря, природа этого явления до конце не изучена.

Язык, на котором написана эта книга (мы полагаем, что это русский язык) является неформальным и естественным. С другой стороны, подавляющее большинство языков программирования являются формальными и искусственными. Встречаются и другие комбинации: например, язык алгебраических формул мы считаем формальным и естественным, а эсперанто ‒ неформальным и искусственным.

Так вот, UML можно охарактеризовать как формальный искусственный язык, хотя и не в такой степени, как многие распространенные языки программирования. Признаком искусственности служит наличие трех общепризнанных авторов ‒ Гради Буча, Ивара Якобсона и Джеймса Рамбо.

В то же время, в формирование языка внесли вклад многие теоретики и разработчики, имя которым легион. Языкотворческая практика применительно к UML непрерывно продолжается (мы это обсудим позднее), что дает основание считать UML до некоторой степени естественным языком. Описание UML по большей части формальное, но содержит и явно неформальные составляющие. Такие особенности UML как точки вариации семантики (semantic variation point) (см. параграф 1.9.4) и стандартные механизмы расширения (extension mechanism) (см. параграф 1.8.4), заметно отличают UML от языков, которые, по общему мнению, являются образцами формализма.

В этой книге обсуждаются конкретные версии UML, для которых имеются утвержденные международные стандарты. Однако наличие стандарта ‒ это еще не основание считать язык формальным и искусственным.

Для описания формальных искусственных языков (в частности, для описания языков программирования) придумано и используется множество различных способов. Однако на практике сложилась общепринятая структура таких описаний. Считается, что формальный искусственный язык описан должным образом, если это описание содержит, по меньшей мере, следующие части.

Как формальный искусственный язык UML имеет синтаксис, семантику и прагматику, хотя эти части названы в некоторых случаях иначе и описаны по другому, нежели это принято в текстовых языках программирования, поскольку, во-первых, UML язык графический, а не текстовый, а во-вторых, UML язык моделирования, а не программирования.

1.1.2. UML ‒ это язык моделирования

Слово «моделирование», входящее в название UML, имеет множество смысловых оттенков и сложившихся способов употребления. В частности, английские слова modeling и simulation оба переводятся словом «моделирование», хотя означают разные вещи. В первом случае речь идет о составлении модели, которая используется только для описания моделируемого объекта или явления. Во втором случае подразумевается составление модели, которая может быть использована для получения существенной информации о моделируемом объекте или явлении. При этом во втором случае обычно добавляется уточняющее прилагательное: численное моделирование, математическое моделирование и др. UML является языком моделирования в первом смысле, хотя известны некоторые успешные попытки использования UML и во втором смысле.

Что вполне согласуется с наиболее общим смыслом слова модель ‒ абстрактное описание чего-либо.

В этой книге термины «программное обеспечение», «программная система», «программа» и «приложение» используются как синонимы. Авторы понимают, что в действительности между ними существуют определенные различия, однако в контексте книги эти различия не имеют большого значения.

Таким образом, модель UML ‒ это, прежде всего, описание объекта или явления, а также и кое-что другое, а именно все, что авторам UML удалось включить в язык, не нарушая принципа унификации, к изложению которого мы переходим в следующем разделе.

1.1.3. UML ‒ это унифицированный язык моделирования

Описывая историю создания UML, его авторы характеризуют эпоху до UML как период «войны методов». Пожалуй, «война» ‒ это слишком сильно сказано, но, действительно, UML является отнюдь не первым языком моделирования. К моменту его появления насчитывались десятки других, различающихся системой обозначений, степенью универсальности, способами применения и т.д. Авторы языков и теоретики программирования препирались между собой, выясняя, чей подход лучше, а разработчики всю эту «войну методов» равнодушно игнорировали, поскольку ни один из методов не дотягивал до уровня индустриального стандарта.

Читайте также:  что делать если тошнит и хочется пить

Толчком к изменению ситуации послужили следующие обстоятельства. Во-первых, массовое распространение получил объектно-ориентированный подход к разработке программных систем, в результате чего возникла потребность в соответствующих средствах. Другими словами, появления чего-то подобного UML с нетерпением ждали практики. Во-вторых, три крупнейших специалиста в этой области, авторы наиболее популярных методов, решились объединить усилия именно с целью унификации своих (и не только своих) разработок в соответствии с социальным заказом.

Приложив заслуживающие уважения усилия, авторы UML при поддержке и содействии всей международной программистской общественности смогли свести воедино (унифицировать) большую часть того, что было известно и до них. В результате унификации получилась теоретически изящная и практически полезная вещь ‒ UML.

Если попытаться проследить историю возникновения и развития элементов UML, как на уровне основополагающих идей, так и на уровне технических деталей, то пришлось бы назвать сотни имен и десятки организаций. Мы не будем этого делать, и не только из экономии места, но и потому, что история развития UML отнюдь не завершена ‒ язык постоянно совершенствуется, обогащается и расширяется. Мы полагаем достаточным привести картинку, иллюстрирующую историю развития UML.

Рис. История развития UML

Как видно из рисунка, на особом положении оказалась версия 1.5. Дело в том, что версия 1.5 была выпущена в тот момент, когда «моделирующая общественность» предвкушала появление обещанной версии 2.0. На самом деле версия 1.5 содержит некоторые элементы версии 2.0, в частности, набор элементарных действий, достаточно широкий для того, чтобы применять UML не только как язык моделирования, но и как язык программирования. Но «генеральная линия» развития инструментальных средств прошла мимо этого явления. Все крупные поставщики инструментов предпочли заявить о поддержке версии 2.0 (иногда даже не имея для этого достаточных оснований), и оставили без поддержки версию 1.5.

UML ‒ это унифицированный язык моделирования, но никак не единый и не универсальный (такие ошибочные толкования первой буквы U встречаются, к сожалению, в некоторых источниках).

Источник

Как язык UML помогает организовать работу IT-проекта

Авторизуйтесь

Как язык UML помогает организовать работу IT-проекта

эксперт по системному бизнес-анализу Luxoft Training; евангелист языка UML

«UML устарел»… «UML умер»… Статьи с вариациями на эту тему то и дело всплывают в Сети. Используя эту нотацию для построения моделей уже более 14 лет, я в корне не согласен с такой позицией. Наоборот, в противовес скептикам скажу, что язык жив и, вероятно, ещё долго будет жить. В этом материале постараюсь раскрыть, почему я так думаю.


Unified Modeling Language (UML) был разработан тремя известными сотрудниками Rational Software в начале 90-х и принят в качестве стандарта Object Management Group в 1997 году. Потребность в создании подобного языка ощущалась к тому времени довольно остро, так как программное обеспечение становилось всё сложнее. Обсуждать, описывать и продумывать его работу было всё труднее.

Понимание важности стандартных нотаций для построения моделей пришло ко мне лет 20 назад. На тот момент, еще будучи разработчиком, я искал способ донести до руководства компании предложения по улучшению бизнес-процессов. Презентовать свои идеи я решил в виде диаграмм, а поскольку на тот момент не пользовался никакими нотациями, просто изобразил всё в виде аккуратных кружочков, прямоугольников и треугольников, соединённых стрелками.

На подготовку этих диаграмм у меня ушло довольно много энергии и времени, но презентация вместо ожидаемого триумфа принесла лёгкое разочарование. Руководитель компании, просмотрев диаграммы и прослушав мою презентацию, сказал, что видит в моих предложениях рациональное зерно, но совершенно не может ухватить детали. Откровенно говоря, я списал это на счёт самого руководителя, ведь в правильности диаграмм и прорывном характере идей я был уверен. Поэтому записи свои сохранил – до лучших времен.

Спустя год, решив воплотить в жизнь одну из этих идей, я оказался ровно в таком же положении, что и руководитель компании во время моей презентации. В диаграммах явно чувствовалось рациональное зерно, но им не хватало понятной системы, а назначение «кружков», «прямоугольников» и «треугольников» к этому времени уже забылось. Именно в тот момент я и решил обратить внимание на стандартные нотации.

Когда же через несколько лет в моё поле зрения попали UML-диаграммы, они привлекли меня своей простой, но выразительной формой, хоть мне и не сразу удалось в них разобраться.

Для кого подходит UML

Как только начинаются споры о применимости UML в современных условиях, на ум приходят две известные шутки. Первая говорит о том, что в интернете на любой вопрос можно найти любой ответ. И не только в интернете, должен заметить. Книги, статьи, выступления на конференциях, мнения коллег и обсуждения на форумах демонстрируют полный спектр эмоций – от полного отрицания до фанатичной приверженности. Так кому же верить?

И тут всплывает в памяти другой диалог: «- Не люблю я котов… — Да вы их просто готовить не умеете!». На мой взгляд, секрет полезности (или неполезности) UML кроется именно в этом – в умении правильно «приготовить» диаграммы. Если человек говорит, что какая-то нотация не работает, возможно, он просто не потрудился разобраться в ней. Может быть, эта нотация не соответствует его стилю мышления. Так и с UML: одни специалисты пользуются и получают от этого удовольствие, другие нет. Это просто выбор каждого.

В нашем мире не существует абсолютных истин. В IT-сфере тем более не стоит искать правила, которые были бы одинаково применимы и эффективны для любого проекта или ситуации. Каждый проект, команда, заказчик выбирают для себя то, что удобно им. Поэтому всё, что говорится о UML или других нотациях, – всегда частное мнение.

К тому же для разных ролей в проектной команде UML имеет различную степень применимости. Например, UML отлично справляется с описанием технической стороны системы: архитектуры, алгоритмов, протоколов обмена, процессов и пр. Но руководителям проекта, техническим писателям и дизайнерам интерфейсов пользователя он, скорее всего, не пригодится.

Казалось бы, разработчики должны знать и использовать UML лучше и чаще всех. Но нет, довольно часто они говорят, что проще сразу начать писать код, не тратя время на рисование диаграмм. И в простых случаях такой подход действительно оказывается более выгодным.

Но при разработке больших систем с разветвлённой архитектурой и сложными структурами данных лучше сначала подумать, а потом уже кодить. Код, написанный без глубокого понимания задачи, потом будет много раз переделываться. В ходе переделок меняется логика функционирования системы, её структура становится более запутанной. Вносить очередные изменения становится всё сложнее и сложнее.

А полезен ли UML для аналитиков? Вполне! Например, системные аналитики, будучи ближе к технической реализации системы, могут использовать UML для моделирования структур данных или взаимосвязей между компонентами системы. Хотя для системных аналитиков придуманы и другие нотации, например, SysML, знание UML представляется для них ценным навыком.

Для бизнес-аналитиков применимость UML кажется заметно меньшей. Но опять-таки, это зависит от ситуации. Мне, например, UML помогает анализировать предметную область, продумывать некоторые задачи, описывать требования, проектировать структуры данных.

Чем может помочь UML

Во-первых, UML – это формальный язык, который подчиняется чётко определенным правилам. Каждая его диаграмма, каждый элемент или связь на диаграмме подчинены определённой логике, несут определённый смысл. А это означает, что следование таким правилам дисциплинирует сознание автора модели, направляет процесс его мышления по определённому руслу.

Здесь можно было бы посетовать на ограничение творческого самовыражения автора модели. Но разве это является нашей целью в ходе проекта? Пожалуй, гораздо важнее для нас донести свои идеи, открытия и решения до коллег. Донести так, чтобы не пришлось потом долго отвечать на дополнительные вопросы, а реализация в итоге соответствовала задумке.

Именно формализация позволяет создавать диаграммы, понятные другим людям (тоже знающим UML, разумеется) и не теряющие своей понятности с течением времени (как это было с моими доморощенными диаграммами годы назад).

Читайте также:  Что такое эндогенные факторы

Во-вторых, стандарт UML содержит почти полтора десятка диаграмм, что позволяет покрыть потребности разных ролей в проекте. Благодаря UML можно создать информационный фундамент для описания различных аспектов системы – начиная с верхнеуровневых требований до решений, непосредственно реализованных в коде.

К примеру, диаграмма классов (class diagram) помогает лучше понять, как распределить обязанности между разными частями системы. Причем речь идёт не только о тех классах, которые разработчик описывает в исходном коде программы. Через классы можно выразить даже понятия предметной области, что позволит лучше понять потребности заказчика и нюансы его работы.

Давайте в качестве иллюстрации попробуем описать часть системы для проведения онлайн-конференций. Судя по диаграмме ниже, встречу может создать только зарегистрированный пользователь, а участвовать в ней могут пользователи двух типов: простые участники и один или несколько ведущих (хостов). Если встреча является повторяющейся, тогда для неё задаются параметры периодичности.

На диаграмме присутствуют и английские названия, и русские, типы данных у одного класса выглядят стандартными, а у другого названы в свободной форме, у пары классов показаны атрибуты, у одного – только операции. Не очень аккуратно, да? Но если знакомый разработчик скажет вам, что это не классы, не верьте.

Это пример диаграммы концептуальных классов, с помощью которой мы можем описать предметную область на очень высоком уровне. Разработчики, конечно же, будут использовать другие классы, таблицы базы данных тоже будут выглядеть по-другому, но эта концептуальная диаграмма позволит аналитику и лучше разобраться в проблеме, и чётче описать требования к ее решению.


Диаграмма деятельности (activity diagram) описывает процесс, в котором одна операция следует за другой, подчиняясь определённой логике. Она позволяет изобразить алгоритмы принятия решений, бизнес-процессы или выполнение пользователями тех или иных действий в системе. Как правило, диаграммы этого типа бывают понятны даже далёким от IT-сферы людям.

Диаграмма вариантов использования (use case diagram) описывает сервисы, предоставляемые системой внешнему миру, и действующих лиц, которые имеют доступ к этим сервисам. Эта диаграмма бывает полезна в самом начале проекта, когда еще нет чёткого представления о том, как именно должна работать разрабатываемая система. Такое понимание как раз и формируется в ходе построения, обдумывания и обсуждения диаграммы.

Ещё одним важным результатом являются вопросы, которые неминуемо возникают у аналитика при построении диаграммы вариантов использования. Эти вопросы позволяют глубже изучить предметную область и потребности заказчика, уточнить требования к системе и в результате предложить наиболее подходящее для заказчика решение.

Эта статья не предполагает знакомство с каждым типом диаграмм UML, приведённые примеры стоит рассматривать лишь как очень поверхностную иллюстрацию возможностей UML и его пользы на различных этапах проекта.

Например, диаграмма состояний (state machine diagram) позволяет описать жизненный цикл объекта в виде графа, вершинами которого являются состояния, а дугами – события или действия, ведущие к смене состояния.

В-третьих, UML – это наглядный способ для поддержки процесса мышления. Он позволяет разбить задачу на части, продумать их по отдельности, а потом склеить в комплексное финальное решение.

Когда мы описываем что-либо с помощью текста, информация воспринимается последовательно. И не важно, о каком тексте идет речь: это может быть и текст требований, написанный на естественном (человеческом) языке, и исходный текст программы, написанный на алгоритмическом языке. В любом случае, чтобы понять смысл текста, мы должны читать его символ за символом, слово за словом, строку за строкой. Часть информации, прочитанная раньше, может забыться или исказиться. Плюс к этому, чтобы найти какой-то определённый фрагмент, приходится затрачивать время на повторный просмотр текста.

Но если информацию представить в виде диаграммы, вся картина будет видна полностью (разумеется, если диаграмма построена правильно и не перегружена деталями). В таком случае сразу видны все элементы и связи между ними, а взгляд без труда находит нужный фрагмент диаграммы. Такую диаграмму можно использовать в качестве «карты», помогающей ориентироваться в большом количестве проектных артефактов.

Какие подводные камни могут омрачить впечатление об UML

UML изучают в институтах, но довольно часто это процесс не привязывают к жизни, не подкрепляют реальными примерами. И вместо того, чтобы стать для IT-специалиста родным языком, UML начинает казаться языком мертвым, похожим на латынь.

Главная сложность в освоении UML состоит в том, что для построения диаграмм требуется определенный стиль мышления. Например, классы – это достаточно абстрактная концепция. Если приучить себя мыслить классами, видеть примеры во внешних предметах и событиях, построение диаграммы не вызовет больших затруднений. Если же человек не обладает стилем мышления, созвучным логике UML, моделирование будет казаться занятием непонятным, трудным и не очень полезным.

Критики, говоря о недостатках UML, упоминают:

Получается, что трудности в работе с UML – штука очень субъективная. Главное, что все эти трудности преодолимы (в основном) и управляемы. Если UML в целом нравится и человеку кажется, что он может применить его в своей практике, аргументы «за» найдутся легко. В противоположной ситуации доводы «против» подобрать также не составит особого труда.

Я не считаю, что нужно бороться за повсеместное внедрение UML, чтобы все айтишники его знали на 100%. На мой взгляд, нужно просто использовать UML разумно и рационально в тех случаях, когда он уместен.

Неочевидные случаи: опыт применения UML в Agile-проекте

Этот случай в моей практике был уникальным, но достаточно показательным. Он произошел лет 10 тому назад, когда UML уже стал для меня привычным инструментом анализа и продумывания решений.

Работая коучем с начинающими Agile-командами, я получил от одной из команд запрос на помощь в планировании. Суть проблемы состояла в том, что коллеги разработали 130 user stories, но описали их в виде простого линейного списка. Поэтому при планировании каждого спринта им приходилось весь этот список просматривать, что c каждым разом становилось всё труднее и труднее.

Поскольку в суть проекта я глубоко не вникал, пришлось попросить команду немного рассказать о том, какая система разрабатывается и для чего. Пока коллеги рассказывали, я рисовал на доске картинки – просто чтобы не упустить ничего важного.

Сначала это были абстрактные рисунки, но как только идея системы стала проясняться, я совершенно автоматически перешел к рисованию вариантов использования (use case diagram). Вот тут-то я впервые услышал вопрос «А что, UML ещё жив?». Оказалось, что не только жив, но и достаточно бодр.

Как правило, в технологии Agile-разработки не находится места долгим медитациям над UML-диаграммами, поэтому коллеги сначала приняли мои художества как кощунство и приверженность устаревшим технологиям. Но всё оказалось проще.

Благодаря диаграмме вариантов использования мы выделили главных действующих лиц, затем определили основные функциональные блоки и разбили их на фичи. А потом всё это обозвали эпиками и организовали в виде дерева. После этого осталось лишь распределить все user stories по узлам этого дерева (т.е. по эпикам). И чудо свершилось – вместо громоздкого и неудобного линейного списка мы получили удобную и логичную структуру, работать с которой стало несоизмеримо проще.

Кстати, как только мы распределили user stories по дереву, стало видно, что одна из трёх подсистем уже практически готова – оставалось доделать лишь одну стори. Раньше об этом никто и не подозревал, так как структура требований отсутствовала и, как следствие, было трудно понять, к чему относится каждая user story. Поэтому команда и «буксовала», не понимая, куда двигаться дальше.

Ту диаграмму вариантов использования я безжалостно с доски стёр – свою задачу она уже выполнила, сохранять её в документах проекта просто не было смысла.

Таким образом, UML нужен не только для того, чтобы нарисовать красивую диаграмму и внести её в какой-то документ или опубликовать на сайте. UML является отличным инструментом для продумывания технических проблем и обсуждения их с коллегами. Диаграммы UML позволяют увидеть картину в целом, структурировать её, найти недостающие звенья, сформулировать вопросы заказчику или разработчикам. А потом обогатить диаграммы полученными ответами.

Источник

Сайт для любознательных читателей