Шаг 77.
Унифицированный язык моделирования UML.
Моделирование простых коопераций

    На этом шаге рассмотрим моделирование простых коопераций в UML.

    Ни один класс не существует сам по себе. Каждый из них работает в кооперации с другими, чтобы обозначить некую общую семантику, которая недостижима при автономном использовании всех тех же классов. Таким образом, наряду со словарем системы вам понадобится обратить внимание на визуализацию, специфицирование и документирование различных способов взаимодействия сущностей из этого словаря. Используйте диаграммы классов для представления таких коопераций.

    Чтобы смоделировать кооперацию, необходимо:

  1. Идентифицировать механизм, который вы собираетесь моделировать. Механизм представляет некоторую функциональную или поведенческую часть моделируемой системы, полученную в результате взаимодействия совокупности классов,интерфейсов и прочих сущностей.
  2. Для каждого механизма идентифицировать классы, интерфейсы и прочие кооперации, которые участвуют в данной кооперации, а также связи между этими сущностями.
  3. Использовать сценарии для тестирования всех этих сущностей. На данном этапе выявляются части модели, которые были пропущены, а также те, которые семантически неверны.
  4. Убедиться, что все элементы наполнены правильным содержимым. Что касается классов, для начала обеспечьте оптимальный баланс обязанностей. Затем со временем проработайте конкретные атрибуты и операции.

    На рис. 1 в качестве примера показан набор классов, описывающих реализацию автономного робота. Акцент сделан на классы, связанные с механизмом перемещения робота по заданному пути. Вы найдете здесь один абстрактный класс Мотор (Motor) с двумя конкретными потомками – МоторПоворотногоМеханизма (SteeringMotor) и ГлавныйМотор (MainMotor). Оба потомка наследуют от своего родителя Мотор пять операций. И оба они, в свою очередь, представлены как часть другого класса – Привод (Driver). Класс АгентТраектории (PathAgent) имеет ассоциацию "один-к-одному" с Привод и "один-ко-многим" – с ДатчикСтолкновений (CollisionSensor). Никаких атрибутов и операций для АгентТраектории не показано, хотя его обязанности и заданы.


Рис.1. Моделирование простой кооперации

    В этой системе участвует много других классов, но диаграмма, которую мы рассматриваем, сосредоточена только на перемещении робота. В то же время некоторые классы, представленные на ней, можно найти и на других диаграммах. Например, хотя это здесь и не показано, класс АгентТраектории кооперируется по меньшей мере с двумя другими: Окружение (Environment) и АгентЦели (GoalAgent) в механизме более высокого уровня, управляющем разрешением конфликтных ситуаций, в которых может оказаться робот. Классы ДатчикСтолкновений и Привод, а также их части кооперируются с классом АгентОтказа (FaultAgent) в составе механизма, отвечающего за непрерывную диагностику оборудования робота на предмет разнообразных ошибок. Фокусируя внимание на каждой из этих коопераций в разных диаграммах, вы создаете понятное представление о системе с разных точек зрения.

    На следующем шаге рассмотрим моделирование логической схемы базы данных.




Предыдущий шаг Содержание Следующий шаг