Определение визуального моделирования
Итак, визуальное моделирование (visual modeling) является методом, применяемым в разработке ПО, который:
- использует графовые модели для визуализации ПО;
- предлагает моделировать ПО с разных точек зрения;
- может применяться в разработки и эволюции ПО, а также в различных видах деятельности по его созданию.
Использование в рамках визуального моделирования отдельных неграфовых моделей нарушает степень общности данного выше определения. Однако на практике графы явно доминируют.
Принципиально, что в одном проекте используются разные визуальные модели ПО, созданные с разных точек зрения. Визуальные модели, как правило, не составляют "сплошных" спецификаций, подобно программам, но часто являются, скорее, фрагментами, формально не связанными друг с другом. Эти модели описывают отдельные аспекты ПО, которые нужно прояснить в определенной ситуации для той или иной категории лиц, участвующих в проекте или как-либо с ним связанных. В целом визуальное моделирование служит для повышения понимаемости решений проекта людьми - разными категориями задействованных в проекте специалистов (инженеров-электронщиков, менеджеров, заказчика и т. д.).
Визуальное моделирование может применяться как при разработке, так и при сопровождении ПО. При разработке - главным образом при проектировании и анализе системы, которые предшествуют непосредственному программированию. При сопровождении - когда новые разработчики изучают доставшееся им ПО. Визуальное моделирование может также использоваться в разных видах деятельности процесса разработки ПО: главным образом при анализе и проектировании, но также и при документировании, тестировании, разработке требований и т. д.
Средства визуального моделирования
Визуальное моделирование применяется на практике с помощью методов, языков и соответствующих программных инструментов (рис.2.2).
Языки визуального моделирования (или визуальные языки) - это формализованные наборы графических символов и правила построения из них визуальных моделей. Сейчас известны и активно используются на практике такие языки визуального моделирования, как UML и BPMN. Однако существуют и более старые языки: SDL и MSC для моделирования телекоммуникационных систем, SADT/IDEF0 для моделирования бизнес-процессов, IDEF1x для моделирования баз данных и некоторые другие. Кроме того, в исследовательской среде создано множество других визуальных языков, например, язык WebML для моделирования web-приложений.
Методы использования визуального моделирования предписывают правила применения визуальных языков для решения тех или иных задач процесса разработки ПО.
Среди современных методов визуального моделирования, пожалуй, самым широко распространенным является RUP/USDP - промышленный метод создания ПО, использующий UML практически на всех стадиях и во всех видах деятельности разработки. RUP/USDP является тяжеловесным методом применения UML: он содержит множество предписаний, непростую последовательность шагов, определяет разные роли участников, охватывает все стадии разработки ПО. Его внедрение в процесс компании требует значительных затрат и существенной перестройки принципов ее работы.
Рис. 2.2. Визуальное моделирование: языки, методы, программные средства
Существуют и легковесные методы применения UML, которые не имеют жестких предписаний и допускают вариативность при использовании. Примером может служить метод случаев использования, применяемый для выявления и первичной формализации требований к программной системе. Это метод будет описан в следующих лекциях, посвященных UML.
Наконец, специализированные программные инструменты позволяют удобно работать с визуальными языками и пользоваться тем или иным методом их применения. Это прежде всего графические редакторы, а также средства валидации моделей, генераторы конечного кода по диаграммам и т. д.
О программных инструментах
Средства, реализующие языки и методы визуального моделирования, бывают двух видов - универсальные и предметно-ориентированные.
Универсальные инструменты являются коробочными и многофункциональными пакетами, предназначенными для анализа и проектирования ПО "вообще", то есть без какой-либо специализированной ориентации. Как правило, сегодня такие пакеты строятся на базе языка UML и называются CASE-пакетами. Самыми известными CASE-пакетами являются IBM Rational Rose, Borland Together, Telelogic Tau, Microsoft Visio/UML Add-on. Эти средства поддерживают различные виды диаграмм, удобную среду их разработки с такими функциями, как печать и копирование диаграмм, различные способы редактирования графических символов, средства просмотра и поиска в визуальной модели, различные режимы отображения диаграмм и многое другое. Они также обеспечивают генерацию программного кода в разные целевые платформы программирования, версионный контроль визуальных моделей, часто являются кросс-платформенными (например, работают под управлением операционных систем Windows и Linux), обеспечивают интеграционные "мосты" с другими средствами разработки ПО, например, со средствами управления требованиями. Как правило, все современные CASE-пакеты имеют открытые программные интерфейсы и позволяют расширять свою базовую функциональность.
Термин CASE (Computer Aided Software Engineering) появился в индустрии разработки ПО в начале 1980-х годов. Довольно быстро он стал обозначать графические средства анализа и проектирования ПО, отражая надежды и упования создать на основе визуального моделирования универсальный процесс разработки ПО. Пик развития этих средств приходится на начало 1990-х годов, когда они стали использоваться на базе платформы IBM Mainframe для автоматизации бизнеса крупных компаний. CASE-системы предоставляли мощные средства генерации кода, являясь не только инструментами анализа и проектирования, но и средами разработки ПО. CASE-средства интегрировали многообразные и разрозненные средства разработки под Mainframe-платформой - инструменты разработки пользовательского интерфейса и баз данных, средства взаимодействия основного приложения с операционной системой и пр. Типичное крупное Mainframe-приложение состояло из тестов примерно на 3-5 разных языках программирования, для которых существовало (и активно использовалось в других приложениях) множество альтернативных вариаций. Одна из самых известных систем такого рода - ADW (Application Developing Workbench). В итоге было разработано много промышленных информационных систем с использованием этих CASE-средств, успешно работающих и по сей день. В результате данные CASE-системы, многие из которых сменили не по одной компании-хозяину, до сих пор поддерживаются и развиваются, чтобы созданные на их основе информационные системы могли успешно функционировать и модернизироваться под современные бизнес-потребности. Почти все подобные CASE-системы и, в частности, ADWб, в настоящее время куплены компанией Computer Associates International.
С середины 1990-х годов, в связи с прекращением распространения Mainframe-платформ, развитие этих CASE-систем прекратилось, и стали появляться CASE-системы для персональных компьютеров. Их эволюция происходила и продолжает происходить уже по иному сценарию. Современные CASE-пакеты не являются комплексными средами разработки, а заняли нишу средств анализа и проектирования, и в основном используются без средств кодогенерации, а лишь как инструменты для построения проектных спецификаций.
Предметно-ориентированные (domain-specific) программные инструменты поддержки визуального моделирования предназначены для определенных областей разработки ПО и тоже могут быть коробочными, как, например, пакет WebRatio для моделирования web-приложений. Однако предметно-ориентированные инструменты могут создаваться и отдельными компаниями для своих собственных проектов, особенно в рамках линеек программных продуктов (product lines). Это особенно удобно, поскольку во-первых, такие средства могут хорошо решать задачи именно того процесса, той компании, для которых они создаются. А во-вторых, сейчас на рынке имеются развитые среды для разработки средств визуального моделирования, самые известные из которых - Microsoft Visio, Microsoft DSL Tools и Eclipse/GMF. Эти и другие пакеты делают задачу создания собственного графического редактора посильной для обычных, рядовых компаний-разработчиков.