21.3. Конечные автоматы и UP 475
21.3. Конечные автоматы и UP
Конечные автоматы используются преимущественно в рабочем потоке
проектирования.
Как и диаграммы деятельностей, автоматы в UP применяются в не
скольких рабочих потоках. Они могут использоваться при анализе для
моделирования жизненного цикла классов, у которых есть представ
ляющие интерес состояния, например Order и BankAccount. При проек
тировании с их помощью могут моделироваться такие вещи, как па
раллелизм и имеющие состояние сеансовые компоненты Java. Мы да
же применяли их при определении требований, когда пытались по
нять сложный прецедент.
Как всегда, главный вопрос: добавит ли чтонибудь существенное в мо
дель создание конечного автомата? Если конечный автомат помогает
понять сложный жизненный цикл или поведение, его стоит создать.
В противном случае не стоит тратить время на его разработку.
Чаще всего конечные автоматы используются на завершающих этапах
фазы Уточнение и в начале фазы Построение, когда осуществляется
попытка настолько детально разобраться в классах системы, чтобы
можно было их реализовать. Подчас конечные автоматы являются не
оценимым подспорьем в детальной разработке системы.
По нашему мнению, самой большой проблемой при использовании ко
нечных автоматов является их тестирование. Рабочий поток тестиро
вания в UP выходит за рамки рассмотрения этой книги. Но здесь все
таки необходимо сказать несколько слов о тестировании конечных ав
томатов, поскольку этим аспектом тестирования приходится зани
маться аналитикам и проектировщикам. Как определить правиль
ность создания конечного автомата? В большинстве инструменталь
ных средств моделирования UML единственная возможность сделать
это – вручную провести поэтапный анализ. При этом ктото должен
выступать в роли автомата, чтобы можно было увидеть его реакцию
при разных условиях. Обычно лучше всего работать в небольшой груп
пе, где создатель автомата проводит остальных разработчиков модели
и экспертов по алгоритму автомата.
Однако лучший способ создания и тестирования автоматов – их имита
ция. Существует несколько инструментов, позволяющих сделать это,
например RealTime Studio от компании Artisan Software (www.arti+
sansw.com). С помощью имитации можно выполнить автомат и уви
деть его поведение. Некоторые инструментальные средства также по
зволяют генерировать из автоматов код и тесты. Для моделирования
бизнессистем подобные инструменты излишни, а вот для встроенных
систем реального времени, где у объектов могут быть сложное поведе
ние и жизненные циклы, они очень полезны.