136 Глава 5. Дополнительные аспекты моделирования прецедентов
• Интерес представляют только описания прецедентов самого низко
го уровня: AddBook (добавить книгу), DeleteBook (удалить книгу), Add
Ticket (добавить формуляр), DeleteTicket (удалить формуляр), LendBook
(выдать книгу) и ReturnBook (вернуть книгу). Более высокие уровни
просто вызывают нижние и ничего не привносят в модель с точки
зрения отражения требований.
• Модель сложна и непонятна заинтересованным сторонам: в ней не
сколько абстрактных прецедентов (RunLibrary, MaintainBooks (обслу
живание книг), MaintainTickets (обслуживание формуляров) и Main
tainLoans (обслуживание выдачи книг)) и много отношений «include»
с более низкими уровнями абстракции.
Применение функциональной декомпозиции говорит о том, что анали
тик неправильно продумал систему. Обычно это свидетельствует о том,
что он обучен более традиционным методам процедурного программи
рования и пока что не уловил принципа ОО программирования. В этом
случае лучше привлечь опытного разработчика моделей прецедентов
в качестве руководителя и консультанта.
Не все примеры функциональной декомпозиции так очевидны, как
приведенный на рис. 5.16. Обычно декомпозицию можно обнаружить
в отдельных частях модели, поэтому желательно проверять все части
модели прецедентов, имеющие глубокую иерархию.
И наконец, следует заметить, что в процессе моделирования прецеден
тов иерархии возникают естественным образом. Однако в этих естест
венных иерархиях, как правило, не более одного (или максимум двух)
уровня вложенности, а модель никогда не строится от одного преце
дента.
5.8. Что мы узнали
Мы изучили приемы углубленного моделирования прецедентов. Ос
новная задача моделирования – создать простую понятную модель
прецедентов, в которой вся необходимая информация представлена
максимально четко и лаконично. Модель прецедентов, не использую
щая расширенные возможности, всегда предпочтительнее той, где так
много обобщений, отношений «include» и «extend», что невозможно по
нять, о чем идет речь. Здесь лучшее правило: «Если сомневаешься, не
включай».
Мы узнали следующее:
• Обобщение актеров обеспечивает возможность вынести поведение,
общее для двух или более актеров, в актерародителя.
• Актерродитель является более обобщенным, чем его потомки,
а потомки – более специализированными, чем их родитель.
• Дочерний актер везде может заменять актерародителя – это
принцип замещаемости.