- •Оглавление
- •Теоретические сведения
- •Способы применения uml
- •Диаграммы uml
- •Диаграмма классов (Class diagram)
- •Свойства
- •Атрибуты
- •Кратность
- •Операции
- •Отношения
- •Зависимость
- •Ассоциация
- •Двунаправленные ассоциации
- •Агрегация и композиция
- •Обобщение
- •Реализация
- •Примечания и комментарии
- •Ключевые слова
- •Статические операции и атрибуты
- •Диаграмма последовательности (Sequence diagram)
- •Создание и удаление участников
- •Циклы, условия
- •Синхронные и асинхронные вызовы
- •Практическая часть Инструментарий
- •Начало работы
- •Создание первого проекта
- •Пример создания uml-диаграмм архитектуры проекта с помощью PlantUml
- •Создание диаграммы классов
- •Создание диаграммы последовательностей
- •Сценарий нахождения чего-либо в библиотеке по имени
- •Сценарий удаления чего-либо из библиотеки по идентификатору
- •Коррекция диаграммы классов
- •Задания для самостоятельной работы
Практикум по промышленному программированию - 2015. Лабораторная работа №1
Лабораторная работа №1
Основы языка UML. Диаграммы классов и последовательности
Цель работы:ознакомиться с языком UML, его применением в проектировании ПО, освоить создание диаграмм классов, диаграмм последовательности.
Необходимое ПО для практической части:JDK 8; IntelliJ IDEA 14 Community Edition; плагин PlantUML integration; Graphviz.
Оглавление
Теоретические сведения
Способы применения UML
Диаграммы UML
Диаграмма классов (Class diagram)
Свойства
Атрибуты
Кратность
Операции
Отношения
Зависимость
Ассоциация
Двунаправленные ассоциации
Агрегация и композиция
Обобщение
Реализация
Примечания и комментарии
Ключевые слова
Статические операции и атрибуты
Диаграмма последовательности (Sequence diagram)
Создание и удаление участников
Циклы, условия
Синхронные и асинхронные вызовы
Практическая часть
Инструментарий
Начало работы
Создание первого проекта
Пример создания UML-диаграмм архитектуры проекта с помощью PlantUML
Создание диаграммы классов
Создание диаграммы последовательностей
Сценарий нахождения чего-либо в библиотеке по имени
Сценарий удаления чего-либо из библиотеки по идентификатору
Коррекция диаграммы классов
Задания для самостоятельной работы
Вариант №1, 16
Вариант №2, 17
Вариант №3, 18
Вариант №4, 19
Вариант №5, 20
Вариант №6, 21
Вариант №7, 22
Вариант №8, 23
Вариант №9, 24
Вариант №10, 25
Вариант №11, 26
Вариант №12, 27
Вариант №13, 28
Вариант №14, 29
Вариант №15, 30
Литература, ссылки
Теоретические сведения
UML(англ. Unified Modeling Language — унифицированный язык моделирования) — это графический язык моделирования общего назначения, предназначенный для спецификации, визуализации, проектирования и документирования всех артефактов, создаваемых при разработке программного обеспечения. UML является языком широкого профиля, это — открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML-моделью. UML был создан для определения, визуализации, проектирования и документирования, в основном, программных систем. UML не является языком программирования, но на основании UML-моделей возможна генерация кода.
Графические языки моделирования уже продолжительное время широко используются в программной индустрии. Основная причина их появления состоит в том, что языки программирования не обеспечивают нужный уровень абстракции, способный облегчить процесс проектирования.
Способы применения uml
Основу роли UML в разработке программного обеспечения составляют разнообразные способы использования языка.
Определены три режима использования UML разработчиками:
режим эскиза;
режим проектирования;
режим языка программирования.
Безусловно, самый главный из трех – это режим использования UML для эскизирования. В этом режиме разработчики используют UML для обмена информацией о различных аспектах системы. В режиме проектирования можно использовать эскизы при прямойиобратнойразработке. При прямой разработке (forward engineering) диаграммы рисуются до написания кода, а при обратной разработке (reverse engineering) диаграммы строятся на основании исходного кода, чтобы лучше понять его.
Сущность эскизирования, или эскизного моделирования, в избирательности. В процессе прямой разработки вы делаете наброски отдельных элементов программы, которую собираетесь написать, и обычно обсуждаете их с некоторыми разработчиками из вашей команды. При этом с помощью эскизов вы хотите облегчить обмен идеями и вариантами того, что вы собираетесь делать. Вы обсуждаете не всю программу, над которой намереваетесь работать, а только самые важные ее моменты, которые вы хотите донести до коллег в первую очередь, или разделы проекта, которые вы хотите визуализировать до начала программирования.
При обратной разработке вы используете эскизы, чтобы объяснить, как работает некоторая часть системы. Вы показываете не все классы, а только те, которые представляют интерес и которые стоит обсудить перед тем, как погрузиться в код. Поскольку эскизирование носит неформальный и динамичный характер и вам нужно делать это быстро и совместно, то наилучшим средством отображения является доска.
Эскизы полезны также и в документации, при этом главную роль играет процесс передачи информации, а не полнота. Инструментами эскизного моделирования служат облегченные средства рисования, и часто разработчики не очень придерживаются всех строгих правил UML.
Напротив, язык UML как средство проектированиянацелен на полноту. В процессе прямой разработки идея состоит в том, что проект разрабатывается дизайнером, чья работа заключается в построении детальной модели для программиста, который будет выполнять кодирование. Такая модель должна быть достаточно полной в части заложенных проектных решений, а программист должен иметь возможность следовать им прямо и не особо задумываясь. Дизайнером модели может быть тот же самый программист, но, как правило, в качестве дизайнера выступает старший программист, который разрабатывает модели для команды программистов. Причина такого подхода лежит в аналогии с другими видами инженерной деятельности, когда профессиональные инженеры создают чертежи, которые затем передаются строительным компаниям.
При обратной разработке цель моделей состоит в представлении подробной информации о программе или в виде бумажных документов, или в виде, пригодном для интерактивного просмотра. В такой модели можно показать все детали класса в графическом виде, который разработчикам проще понять.
Граница между моделями и эскизами довольно размыта, но различия остаются в том, что эскизы сознательно выполняются неполными, подчеркивая важную информацию, в то время как модели нацелены на полноту, часто имея целью свести программирование к простым и до некоторой степени механическим действиям. Короче говоря, эскизы могут быть определены как пробные элементы, а модели – как окончательные.
Чем дольше вы работаете с UML, а программирование становится все более механическим, тем очевиднее становится необходимость перехода к автоматизированному созданию программ. Действительно, многие CASE-средства (computer-aided software engineering – автоматизированная разработка программного обеспечения) так или иначе генерируют код, что позволяет автоматизировать построение значительной части системы. В конце концов, вы достигнете такой точки, когда сможете описать с помощью UML всю систему и перейдете в режим использования UML в качестве языка программирования. В такой среде разработчики рисуют диаграммы, которые компилируются прямо в исполняемый код, а UML становится исходным кодом. Очевидно, что такое применение UML требует особенно сложных инструментов. (Кроме того, нотации прямой и обратной разработки теряют всякий смысл, поскольку UML и исходный код становятся одним и тем же.).
Однако важно понимать, что UML не является языком программирования. Дело не в том, что UML язык графический, а подавляющее большинство практических языков программирования являются текстовыми языками. Гораздо важнее то, что для моделей UML в стандарте не определен способ выполнения моделей на компьютере. Это сделано вполне сознательно, в противном случае UML оказался бы зависимым от некоторой модели вычислимости, уровень абстрактности его концепций пришлось бы существенно снизить, и он не отвечал бы своему основному назначению: служить средством спецификации приложений и других систем на любом уровне абстракции и в различных предметных областях.