Be Careful With Use Cases
Edward V. Berard. Be Careful With “Use Cases”.
Сценарии использования
Определим сценарий использования как последовательность транзакций в системе, чья задача — принести измеримую ценность актеру этой системы. Отметим также, что набор всех сценариев использования описывает функционал системы.
Проблемы локализации информации
Говоря о локализации, имеют в виду размещение некоторых объектов близко друг от друга, то есть группировке их в определенные «зоны». Так, в функциональной декомпозиции информация размещается с оглядкой на функции, а в объектно-ориентированной разработке информация заключена в классы и объекты. Если представить процесс создания продукта от проектирования интерфейса пользователя (что реализуют функциональные по природе сценарии использования) до непосредственно реализации системы (например, при помощи ООП), становится очевидно, что где-то на этом пути происходит смена парадигмы локализации, что часто приводит к ошибкам. Рассмотрим для примера систему, в которой несколько команд работают над своими частями проекта, разделение на которые было выполнено, исходя из сценариев использования. Распространенной проблемой в таких случаях является несовпадение функционально-декомпозированной схемы с реальной реализацией, из-за чего, например, объектам приходится собирать информацию по разным частям системы, обращаясь к реализации из разных функциональных делений. Другая возможная проблема — реализация одних и тех же объектов несколько раз, т.е. каждая часть продукта использует свои собственные классы и интерфейсы. Помимо траты времени на создание одной сущности несколько раз, это приводит также и к сложностям с дальнейшей интеграцией компонентов системы. В описанных случаях затруднения возникают в тот момент, когда функциональное описание интерфейса пользователя используется для реализации системы. Таким образом, для избежания проблем подобного рода не следует рассматривать сценарии использования как основу создания внутренней архитектуры описываемых объектов.
Вопросы сокрытия данных
К другому классу распространенных проблем со сценариями использования можно отнести нарушение концепции сокрытия данных. В объектно-ориентированном подходе сокрытием данных называется невозможность доступа извне класса к деталям его реализации, потому что они могут быть сложны для использования или часто изменяться. Вместо этого предполагается использование специального интерфейса, в идеальном случае хорошо задокументированного и сохраняющего обратную совместимость. К последствиям нарушения сокрытия относится сильное сопряжение (и, как следствие, сложности в поддержке, модификации и переиспользовании системы) и увеличение уровня детализации, на котором происходит разработка. При создании сценариев использования нужно ограничиться описанием взаимодействия через интерфейсы описываемых объектов и не вдаваться в детали реализации, такие как используемые алгоритмы и внутреннюю структуру.
Поддержка и управление сценариями использования
При развитии системы число сценариев использования возрастает, а с ним усложняется и работа со сценариями. При их создании рекомендуется обратить внимание на следующие пункты:
- должны существовать установленные процедуры, стандарты, рекомендации и инструменты для управления всеми компонентами и артефактами, производимыми в процессе разработки и тестирования продукта, причем сценарии использования должны быть тесно интегрированы в эту систему;
- при написании сценариев использования следует руководствоваться стандартом их написания (в том числе соглашениями об именовании, стиле и прочем), это уже уменьшает количество потенциальных ошибок при проектировании;
- взаимодействие между сценариями использования и требованиями;
- должны существовать установленные методы определения, покрывают ли сценарии всею функциональность продукта (а также гарантию отсутствие лишних сценариев);
- по мере изменения продукта становится важным наличие какого-либо способа постоянно проверять правильность, согласованность и необходимость всех имеющихся сценариев;
- сценарии должны быть выполнены на должном уровне детализации. Так, например, сценарии, результат в которых не несет ценности для конечного пользователя, вероятно, рассматривают слишком мелкие процессы.
Заключение
В этой статье были описаны некоторые распространненные сложности при разработке системы с использованием сценариев использования. Хотя написание сценариев использования является эффективным инструментом описания системы с точки зрения пользователя, нужно проводить границу между внешним интерфейсом и деталями реализации. Кроме того, написание и поддержка сценариев использования должны быть выполнены с должным уровнем строгости и контроля, потому что небрежное их написание приводит к трудностям в использовании этого набора сценариев.