Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 64
Текст из файла (страница 64)
Проверка по другим диаграммам состояний Проверяйте диаграмму состояний каждого класса на полноту и согласованность. Каждое событие должно иметь отправителя и получателя. В некоторых случаях они оба могут быть одним и тем же объектом. Состояния без предшествующих 276 Глава 13 ° Анализ приложения Зева]опсопгго! 1ег сап1 га]гоп Тампд сага 01ваыеб бо 1 геяиез1 гаке саге Е1есдпд сага бо 1 е1есг сагб сотт бона [по сагб] сотт ир сотт баит [Ьаз сагб] Ма1п всгееп бо /б]зр!ау та1п зсгееп [мел,г саго [ргоЫет] !пзеб сагб [по ргоЫет] / соип1:=О Ргоыет сап1 1 "сер са'б бо/епог тевзаде Оаи]пд разавгогб бо/геяиевгразвигогб Ьаб раввггогб еп/ег рвззяогб [ ] 1 Ьаб раззигогб [соипг>=п] ЧеНГугпд ассоип1 бо/топ[у ассоипг ассоипг ОК / пса Тгапвасаопсоп1гоПег Зепис1пд 1гапвасИопв ггапзас[голз дп!зпеб ОЯ сотт бопп Ет116пд сап/ га]гоп Е]есппд сагб бо / е1ес1 сап1 Тампд сап1 гго 1 геяиевг гахе сагб Тампд гесегр1 гесеР[1а]гоп бо / тпиеы гахе гесс]рг РНпПпд гесе1Р1 бо / рппг гесе1рг Рмс.
13.9. Диаграмма состояний Еезз]опСоп[го]1ег или последующих состояний должны вызывать подозрение. Убедитесь, что они соответствуют начальным или конечным точкам последовательностей взаимодействия. Проследите результаты входного события от объекта к объекту через всю систему и убедитесь, что они соответствуют сценариям. Объектам присущ параллелизм. Остерегайтесь ошибок синхронизации, связанных с тем, что какое- либо событие происходит в неподходящий момент. Убедитесь, что одинаковые события на разных диаграммах соответствуют друг другу.
13.3. Модель состояний приложения 2/гт Рис. 13.10. Диаграмма состояний Тгапзас!)опСоптгодег Тгапв(ег Оекнпд агпоип! ио / яиегу авоип! влгвг атоса( (атоса!) Оесдпд воигсе ассоип! ао/Пиегу воигсе ассоип! епГег ассоипГ (воигсе) Оесдпд тагде! ассоип! до /Чиегу гагре! ассоип! Оооа !гале(ег ао/ и!вр)ву сопдпп Ваа !гале!в! до / спятя!а)п еп(ег ассоип( (гагде() Рвг(опп тгапвгвг ао / ренопп ггапыег (>К/,Г,( ! по! ОК Рис. 13.11. Диаграмма, раскрывающая состояние Тгапз(ег 13.3.5. Проверка по модели классов Проверьте, что диаграммы состояний согласованы с моделями классов предметной области и приложения.
Пример с банкоматом. Потенциально возможно одновременное обращение нескольких банкоматов к одному счету. Доступ к счету должен контролироваться Пример с банкоматом. Управляющий объект БезяопСопгто()ет вызывает Ттапхас(юпСопгтоИет, а завершение Ттапзас((опСоп(то(!ет вызывает возобновление работы Безяоп Соп(тоПет. 278 Глава 13 ° Анализ приложения таким образом, чтобы только один банкомат мог обновлять его в какой-либо мо- мент времени. Мы не будем углубляться в эту задачу.
13.3.б. Проверка по модели взаимодействия Когда модель состояний будет готова, вернитесь назад и проверьте ее по сценариям модели взаимодействия. Имитируйте каждую последовательность поведения вручную и убедитесь, что диаграмма состояний дает корректное поведение. В случае обнаружения несоответствий нужно изменить либо диаграмму, либо сценарий.
Иногда диаграмма состояний позволяет обнаружить ошибки в сценариях, поэтому не следует заранее предполагать, что они верны. Затем возьмите модель состояний и проследите разрешенные маршруты. Они описывают все возможные сценарии. Спросите себя, есть ли смысл в этих сценариях.
Если его нет, измените диаграмму состояний. Часто эта процедура позволяет обнаружить полезное поведение, которое было пропущено на предыдущих этапах. Обнаружение неожиданной информации, следующей из проекта, а также важных (и иногда кажущихся очевидными) свойс| в сис|смы указывает на высокое качество этого проекта. Пример с банкоматом. На данном этапе можно утверждать, что диаграммы состояний выглядят достаточно цельными и согласуются со сценариями. 13А.
Добавление операций Наш стиль объектно-ориентированного анализа придает гораздо меньшее значение определению операций, чем традиционные методологии разработки, отталкивающиеся от программирования. Нам кажется, что список потенциально полезных операций бесконечен, и трудно выбрать момент, чтобы остановиться и прекратить добавлять их. Операции следуют из определенных источников, и как раз на этом этапе пришло время добавить их в модель. В главе 15 об операциях рассказывается подробно.
13.4.1. Операции из модели классов Чтение и запись значений атрибутов и связей ассоциаций подразумеваются моделью классов. Показывать их явным образом нет необходимости. В процессе анализа предполагается, что все атрибуты и ассоциации доступны. 13.4.2. Операции из вариантов использования Большая часть сложной функциональности системы проистекает из вариантов ее использования. В процессе конструирования модели взаимодействия варианты использования определяют деятельность. Часто деятельность соответствует операциям в модели классов. Пример с банкоматом.
Класс Соаюгггдт (Консорциум) характеризуется деятельностью иепууВапйСог)е (проверитьКодБанка), а класс Вал|| (Банк) — дея- 13.5. Резюме 279 тельностью оеп~уРаюаоп1 (проверитьПароль). Рисунок 13.5 можно реализовать операцией оеп!уСахйсап! (проверитьКарту) в классе АТМ (Банкомат). 13.4.3. Операции «по списку» Иногда поведение классов в реальном мире предполагает некоторые операции.
Мейер (Меуег !Меуег-97!) называет такие операции «операциями по списку» (зЬорр!пя !!зг орегаВопз), потому что они не зависят от приложения, а имеют значение сами по себе. Эти операции позволяют расширить определение класса по сравнению с потребностями текущей задачи. Пример с банкоматом. К «операциям по списку» можно отнести: ° ассоцпС.с!озе(); ° Ьап!г.сгеагеЯач!пязАссоцпг(сцзготег):ассоцпц ° ЬапЕсгеасеСЬес!г!пяАссоцпг(сцзгошег);ассоцпс; ° ЬапЕсгеагесазЬСагг(АигЬ(сцзгошег) сазЬСагг!АцгЬог!хат!оп; ° сазЬСагг(АцгЬог!хат!оп.айаг(Ассоцпг(ассоцпс); ° сазЬСагг!АпгЬог!гас!оп.гешочеАссоцпг(ассоцпг); ° сазЬСагг(АцГЬог!гас!оп.с!озеО.
13.4.4. Упрощение операций Изучите модель классов на предмет наличия подобных операций и различных вариаций одной операции. Постарайтесь расширить определения операций таким образом, чтобы они включали эти вариации и особые случаи. Везде, где зто возможно, используйте наследование для сокращения количества различных операций. При необходимости вводите новые суперклассы для упрощения операций, при условии, что их введение не оказывается «насильственным» и неестественным. Размешайте каждую операцию на нужном уровне иерархии классов. В результате такого уточнения модели количество операций сокращается и они становятся более мошными, но составлять их спецификацию проще, чем для исходных операций, потому что они более универсальные и общие.
Пример с банкоматом. Модель банкомата не требует упрошения. На рис. 13.12 мы добавили некоторые операции к модели классов предметной области банкомата из главы 12. 13.5. Резюме Назначение этапа анализа состоит в том, чтобы постичь суть задачи в достаточной для построения корректного проекта степени. Хорошая аналитическая модель описывает важнейшие черты задачи, но не добавляет к ним артефактов реализации, которые раньше времени ограничили бы возможности проектирования. Этап анализа делится на анализ предметной области и анализ приложения. Модель предметной области описывает общие знания о приложении.
Такая модель 280 Глава 13 ° Анализ приложения ЕпгегебОп Тгапзасноп * багет!те Епиувганоп Ь1ег Нетоге АийспзебВУ Тгапвасноп Тгапвасноп * Ирба1е агпоипг Ипб ЕпгегебВу 1 Сазшег АТМ Савтбегвваноп Сап ЬСагб вепа!НотЬег сзвЬОпмапб 0..1 чеп!уСавЬСагб пате 0..1 0..1 Етргоуз 1 1 вгабоп Собе Сагб Аингобваноп етр!оуе Собе згзьоп Себе раввчгогб !!та Сопвогнит Венк !ззиез аббАссоипг геточеАссоип1 сагб Собе 1 пате чегбуВапКСобе ЬапКСобе чеп1ураззчгогб сгеагевач!пцвАссоига сгеагеСЬеыпИАссоипг сгеагеСавЬСагбАитп 0..1 Сив1отег пате абгевв ассоип1Собе Ассоип! Ьа!апсе сгвб !ВЬ1 ига 0..1,„ре сгозе Рнс.
13.12. Модель классов предметной области банкомата с некоторыми операциями Модель взаимодействия приложения описывает взаимодействие системы с внешним миром. Сначала необходимо определить точную границу приложения. Затем нужно ввести действующие лица, описывающие внешние объекты, непосредственно взаимодействующие с системой. Кроме того, необходимо составить варианты использования для видимой извне функциональности.
К каждому варианту использования нужно составить сценарии, описывающие типовые последовательности, вариации, крайние и исключительные ситуации. Сложные варианты использования можно дополнить диаграммами деятельности. Варианты использования и действующие лица можно упорядочить при помощи отношений. Нако- обычно включает модели классов и состояний, но очень редко — модель взаимодействия.