Простые задачи моделируются с помощью UML без труда. Легко поддаются моделированию и сложные задачи, особенно если вы уже приобрели некоторый опыт использования этого языка.
Одного только чтения литературы о языке UML недостаточно, - чтобы в полной мере овладеть языком, необходимо применять его на практике. В зависимости от того, что вы уже знаете, начинать работу с UML можно по-разному. По мере приобретения опыта вы поймете и оцените более сложные его конструкции.
Если вы способны рассматривать и оценивать какой-либо предмет с разных позиций, то UML поможет его смоделировать.
Переход к UML
80% всевозможных проектов можно воплотить, используя 20% средств UML. Для создания статических моделей в большинстве предметных областей достаточно базовых структурных сущностей, таких как классы, атрибуты, операции, прецеденты, компоненты и пакеты, наряду с базовыми структурными отношениями -зависимостями, обобщениями и ассоциациями. Добавьте к этому списку еще и базовые поведенческие сущности наподобие простых автоматов и взаимодействий, и вы сможете моделировать множество полезных аспектов динамики системы. Нестандартные возможности UML придется использовать только тогда, когда вы приступите к моделированию более сложных ситуаций, например параллельности и распределения.
Неплохой отправной пункт, с которого можно начать изучение UML, - моделирование ряда базовых абстракций или поведения, уже имеющегося в одной из ваших систем. Разработайте для себя концептуальную модель UML (см. главу 2), и у вас появится фундамент, который впоследствии позволит вам развить свое понимание языка. Позже предоставится шанс постичь, как состыкованы между собой более развитые конструкции UML. Приступая к решению сложной задачи, разберитесь в соответствующих языковых средствах, изучив представленные в этой книге типичные приемы моделирования.
Если у вас нет опыта объектно-ориентированной разработки, воспользуйтесь следующими рекомендациями:
Понемногу начинайте применять идею абстрагирования в отношении конкретных моделей. Коллективные упражнения с анализом прецедентов - прекрасный способ выработать навыки выявления четких абстракций.
Постройте модель простой статической части задачи с помощью классов,
зависимостей, обобщений и ассоциаций, чтобы осознать, как визуализируются сообщества абстракций.
Примените простые диаграммы последовательностей или кооперации для моделирования динамической части задачи. Можно начать с построения модели взаимодействия пользователя с системой: подобная практика позволит вам высказывать суждения о наиболее важных прецедентах использования системы.
Если у вас нет опыта моделирования, поступите так:
Возьмите какую-нибудь часть ранее созданной вами системы (желательно,
чтобы она была реализована на одном из объектно-ориентированных языков программирования, скажем Java или C++) и постройте модель использованных в ней классов и отношений между ними.
С помощью UML попытайтесь прояснить некоторые детали идиом или механизмов программирования из тех, что были использованы в системе, но
не отражены в коде явно, а находятся только в стадии замысла.
Если ваше приложение нетривиально, попробуйте реконструировать модель его архитектуры, используя пакеты UML для представления основных структурных элементов.
Освоив словарь UML, прежде чем приступать к переводу в код своего следующего проекта, постройте его модель. Сосредоточьтесь на специфицированном поведении и структуре; только после вывода о том, что размер, форма
и семантика вас устраивают, начинайте использовать построенную модель
как основу для реализации.
Если вы уже знакомы с какой-либо другой объектно-ориентированной методикой, поступите следующим образом:
Установите соответствие между элементами используемого вами языка моделирования и элементами UML. В большинстве случаев, особенно если выпользуетесь методиками Booch, OOSE или ОМТ, соответствие будет взаимно-однозначным, и потребуется внести лишь косметические изменения.
Рассмотрите какую-нибудь сложную проблему моделирования, которую вам
с трудом удалось или вообще не удалось решить с помощью знакомого языка. Выясните, нет ли среди средств UML таких, которые позволят решить ее проще или изящнее.
Если вы опытный пользователь, вам пригодятся следующие советы:
Составьте для себя концептуальную модель UML. Вы можете упустить из
виду гармоничность сочетания его элементов, если сразу перейдете к сложным конструкциям, предварительно не изучив базовый словарь.
Обратите особое внимание на средства UML для моделирования компонентов, параллельности, распределенности и образцов (паттернов). Это вопросы, семантика которых сложна и подлежит тщательному анализу.
Познакомьтесь с механизмами расширения UML и подумайте о том, как можно приспособить язык к вашей предметной области. Не поддавайтесь искушению использовать сразу все средства UML, иначе прочесть вашу модель смогут только самые опытные пользователи.
Рекомендуемая литература
Настоящее руководство пользователя - лишь одна из ряда книг, которые помогут вам приступить к практическому применению UML. Можно порекомендовать справочник "The Unified Modeling Language Reference Manual", где описывается полный синтаксис и семантика UML, а также книгу "The Unified Software Development Process", где приводятся рекомендации о том, как организовать процесс разработки с использованием данного языка.
Тем, кто хочет больше узнать о моделировании, стоит обратиться к следующим изданиям (все книги написаны основными создателями UML):
Booch G. "Object-Oriented Analysis and Design with Applications", 2nd ed.
Redwood City, California, Addison-Wesley Publishing Company, 1993.
Jacobson I., Christerson M., Jonsson P., Overgaard G. "Object-Oriented Software
Engineering: A Use Case Driven Approach". Wokingham, England, Addison-
Wesley Publishing Company, 1992.
Rumbaugh J., Blaha M., Premerlani W., Eddy E, Lorensen W. "Object-Oriented
Modeling and Design". Englewood Cliffs, New Jersey, Prentice-Hall, 1991.
Самую свежую информацию о UML вы найдете в Internet по адресу http:// www.rational.com. Там, равно как и на сайте http://www.omg.org можно получить и последнюю версию стандарта UML.