Джим Арлоу, Айла Нейштадт - UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование (1037782), страница 7
Текст из файла (страница 7)
Фактически самыеглубокие изменения затронули метамодели UML, с которыми разработчики моделей непосредственно не будут иметь дело. МетамодельUML – это модель языка UML, выраженная в подмножестве UML. Онастрого определяет синтаксис и семантику всех элементов моделирования UML, которые будут рассматриваться в книге. Изменения метамодели UML во многом касаются повышения точности и согласованности спецификации UML.В одной из своих книг Гради Буч говорит: «Если у вас есть хорошаяидея, она моя!» В этом заключена вся философия UML: он берет лучшее из того, что было до него, интегрирует и использует в качестве основы.
Это можно понимать и в более широком смысле: UML объединяет лучшие идеи «доисторических» методов, отказываясь от их наиболее специфических деталей.1.4. MDA – будущее UMLБудущее UML может быть определено, согласно недавнему предложению OMG, как архитектура, управляемая моделью (Model Driven Architecture, MDA). Хотя наша книга и не посвящена MDA, в этом разделе будет представлен ее краткий обзор. Более подробную информациюможно найти на вебсайте OMG (www.omg.org/mda) и в книгах «MDAExplained» [Kleppe 1] и «Model Driven Architecture» [Frankel 1].MDA дает видение того, как разрабатывать програмное обеспечение наоснове моделей. Суть этого видения заключается в том, что моделиуправляют созданием исполняемой программной архитектуры.
В настоящее время уже встречается подобный подход к разработке про28Глава 1. Что такое UML?граммного обеспечения, но MDA позволяет точно определить степеньавтоматизации данного процесса, чего до сих пор удавалось достичьдовольно редко.В MDA создание программного обеспечения происходит в результатеряда трансформаций модели при поддержке инструмента моделирования MDA.
Абстрактная машиннонезависимая модель (computerindependent model, CIM) используется как основа для платформонезависимой модели (platformindependent model, PIM). PIM трансформируется в платформозависимую модель (platformspecific model, PSM), которая преобразуется в код.Понятие модели в MDA является довольно обобщенным, и код рассматривается как сильно конкретизированный вид модели. Рис. 1.3иллюстрирует цепочку преобразований модели MDA.CIM – это модель с очень высоким уровнем абстракции, фиксирующаяключевые требования системы и словарь предметной области незави+симым от компьютеров способом. Это действительно модель той частибизнеспроцесса, которую предполагается автоматизировать. Такуюмодель создавать необязательно, и если она разрабатывается, то используется как основа для выработки PIM.PIM – модель, выражающая семантику деятельности программнойсистемы без ориентации на какуюлибо базовую платформу (такую какEJB, .NET и т.
д.). PIM обычно находится примерно на том же уровнеабстракции, что и аналитическая модель, о которой пойдет речь несколько позже, но является более полной. Это является необходимымусловием, поскольку данная модель должна обеспечивать достаточнополную базу для трансформации в PSM, из которой может быть сгенерирован код.
В определении «платформонезависимый» немного смысла, пока точно не указаны платформы, от которых необходимо обеспечить независимость! Разные инструменты MDA поддерживают разныеуровни независимости от платформы.MDAМашинно!независимаямодель (CIM)Платформо!независимаямодель (PIM)проецированиеПлатформо!зависимаямодель (PIM)генерированиеКодразверты!ваниеРис. 1.3. Модель MDA1.5.
Почему «унифицированный»?29PIM дополняется характерной для конкретной платформы информацией для создания PSM. Из PSM генерируется исходный код под определенную платформу.В принципе 100% исходного кода и вспомогательных артефактов, таких как документация, средства тестирования, файлы сборки и дескрипторы развертывания, могут генерироваться из достаточно полнойPSM.
Если это предполагается, модель UML должна быть полной в вы+числительном отношении, иначе говоря, семантика всех операцийдолжна быть определена на языке действий.Как упоминалось ранее, некоторые инструментальные средства MDAуже предлагают язык действий.
Например, инструмент iUML компании Kennedy Carter (www.kc.com) предоставляет язык спецификациидействий (Action Specification Language, ASL), совместимый с семантикой действий UML 2. Этот язык действий более абстрактный, чемтакие языки, как Java и C++, и может использоваться для созданияполных в вычислительном отношении моделей UML.Другие инструменты MDA, например ArcStyler (www.io+software.com),обеспечивают возможность генерировать от 70 до 90% кода и другихартефактов, но тела операций должны быть дописаны на заданномязыке программирования (например, Java).В представлении MDA исходный код, такой как код на Java или C#, –это просто «машинный код», получающийся в результате компиляции моделей UML. Этот код генерируется в случае необходимости прямо из PSM.
По существу, ценность кода при разработке с применениемMDA значительно ниже, чем в UMLмоделях. MDA превращает модели UML из прообраза создаваемого вручную исходного кода в основноймеханизм производства кода.Во время подготовки книги к печати все больше и больше производителей инструментальных средств моделирования добавляли поддержку MDA в свои продукты. Самую свежую информацию можно найтина вебсайте OMG, посвященном MDA. Существует также несколькомногообещающих, использующих MDA инициатив с открытым исходным кодом, например Eclipse Modeling Framework (www.eclipse.org/emf) и AndroMDA (www.andromda.org).В этом разделе мы ограничились «общей картиной» MDA. Cпецификация MDA намного глубже, чем здесь было рассмотрено.
Более подробную информацию можно найти по ссылкам, приведенным в началеэтого раздела .1.5. Почему «унифицированный»?Унификация UML носит не только исторический характер. UML прилагает усилия (и в основном успешно) в унификации нескольких разных областей.30Глава 1. Что такое UML?•••••Жизненный цикл разработки: UML предоставляет визуальныйсинтаксис для моделирования на протяжении всего жизненногоцикла разработки программного обеспечения – от постановки требований до реализации.Области приложений: UML используется для моделирования всехаспектов – от аппаратных встроенных систем реального времени досистем поддержки принятия решений.Языки реализации и платформы: UML является независимым отязыков и платформ.
Естественно, он прекрасно поддерживает чистые ОО языки (Smalltalk, Java, C# и др.), но также эффективени для гибридных ОО языков, таких как C++, и основанных на концепции объектов, таких как Visual Basic. UML также используетсядля создания моделей, реализуемых на неОО языках программирования, таких как С.Процессы разработки: хотя UP и его разновидности, вероятно, являются предпочтительными процессами разработки ОО систем,UML может поддерживать (и поддерживает) множество другихпроцессов разработки ПО.Собственные внутренние концепции: UML поистине стойко стремится сохранить последовательность и постоянство применения небольшого набора своих внутренних концепций.
До сих пор это невсегда удавалось, но в этом направлении наблюдается заметныйпрогресс по сравнению с предыдущими попытками.1.6. Объекты и UMLОсновная идея UML – возможность моделировать программное обеспечение и другие системы как наборы взаимодействующих объектов.Это, конечно же, замечательно подходит для ОО программных системи языков программирования, но также очень хорошо работает и длябизнеспроцессов и других прикладных задач.В UMLмодели есть два аспекта:• Статическая структура – описывает, какие типы объектов важныдля моделирования системы и как они взаимосвязаны.• Динамическое поведение – описывает жизненные циклы этих объектов и то, как они взаимодействуют друг с другом для обеспечениятребуемой функциональности системы.Эти два аспекта модели UML идут рука об руку, и ни один из них не является понастоящему полным без другого.UML моделирует мир как системы взаимодействующих объектов.
Объект –это цельный блок, состоящий из данных и функциональности.311.7. Структура UMLОбъекты (и классы) будут подробно рассмотрены в главе 7. До тех порбудем считать, что объект единым целым блока данных и поведения.Иначе говоря, объекты содержат информацию и могут выполнятьфункции.1.7. Структура UMLПонимание работы UML как визуального языка начинается с рассмотрения его структуры.
Она показана на рис. 1.4 (как выяснится позже,это действительная UMLдиаграмма). Эта структура включает:• строительные блоки – основные элементы, отношения и диаграммы UMLмодели;• общие механизмы – общие UMLпути достижения определенныхцелей;• архитектура – UMLпредставление архитектуры системы.Понимание структуры UML дает нам представление о структуре всегоизложенного в книге материала. Наличие структуры также указываетна то, что сам UML – это спроектированная система с собственной архитектурой.
Кстати, UML был смоделирован и спроектирован с помощью UML! Этим проектом является метамодель UML.UMLСтроительные блокиОбщие механизмыАрхитектураРис. 1.4. Структура UML1.8. Строительные блоки UMLСогласно «The Unified Modeling Language User Guide» [Booch 2], UMLсостоит всего из трех строительных блоков (рис.