Шаг 93.
Унифицированный язык моделирования UML.
Моделирование семантики класса в UML
На этом шаге рассмотрим типичные приемы моделирования семантики класса в UML.
Главная цель использования классов – моделирование абстракций, которые определяются проблемой, которую вы пытаетесь решить, либо технологией, применяемой для решения данной проблемы. После того как эти абстракции идентифицированы, следующий шаг – спецификация их семантики.
UML предоставляет широкий спектр
средств моделирования, начиная с относительно неформальных
(обязанностей) и заканчивая в высшей степени формализованными (OCL – Object Constraint Language). Имея такой выбор, вы
должны определить желаемый уровень детализации в соответствии
с коммуникативным предназначением вашей модели. Если ее назначение состоит в передаче информации конечным пользователям
и экспертам в предметной области, она может быть менее формальной. Если же цель заключается в поддержке прямого и обратного
проектирования между моделью и кодом, то модель должна быть
формализована в большей степени. Если назначение модели – ее
математическое представление со строгим доказательством корректности, следует максимально формализовать ее.
Чтобы смоделировать семантику класса, выберите один из следующих вариантов, выстроенных в порядке возрастания формальности:
- определите обязанности класса. Обязанность – это контракт
или обязательства типа или класса; она описывается в примечаниях, присоединенных к классу, либо в дополнительном
разделе, включенном в пиктограмму класса;
- специфицируйте семантику класса как единого целого, используя структурированный текст, который представлен
в виде примечания со стереотипом semantics, присоединенного к классу;
- опишите тело каждого метода, используя структурированный
текст или язык программирования, который представлен в форме примечания, соединенного с операцией связью зависимости;
- задайте пред- и постусловия каждой операции, а также инварианты всего класса как целого, используя структурированный
текст. Эти элементы отображаются в примечаниях соответственно со стереотипами precondition, postcondition и invariant, соединенных с операциями или классами связью зависимости;
- специфицируйте для класса машину состояний (state machine).
Машина состояний, или конечный автомат, – это поведение, описывающее последовательность состояний, которые принимает объект за время своего жизненного цикла
в ответ на события, вместе с его реакцией на эти события;
- проработайте внутреннюю структуру класса;
- специфицируйте кооперацию, представляющую класс. Под
кооперацией понимается сообщество ролей и других элементов, которые работают совместно для представления некоего
общего поведения, отличного от поведения простой суммы
этих элементов. Кооперация имеет как структурную, так
и динамическую части, поэтому вы можете использовать ее
для описания всех сторон семантики класса;
- сформулируйте пред- и постусловия каждой операции, а также инварианты всего класса как целого, средствами формального языка наподобие OCL.
На практике вы будете использовать для разных абстракций
вашей системы некую комбинацию вышерассмотренных подходов. Моделируя семантику класса, помните о том,
что вы намерены выразить в первую очередь: ЧТО делает
класс, или же КАК он это делает. В первом случае спецификация семантики класса предполагает описание его открытого,
внешнего представления, во втором – закрытого, внутреннего. Можно использовать сочетание обоих представлений,
внешнее показывая клиентам класса, а внутреннее – тем, кто
занят его реализацией.
На следующем шаге рассмотрим стереотипы связи зависимости в UML.
Предыдущий шаг
Содержание
Следующий шаг