© Ренди Миллер (Randy Miller)
Один из часто задаваемых вопросов, касающихся любого проекта на основе UML[1] — где следует устанавливать бизнес-правила? Размышляя над таким проектом, мы часто думаем о процессе, управляемом сценариями использования (case driven process), в котором применяются понятия класса, последовательности и диаграмм состояний. Наиболее обычным из этих процессов является унифицированный процесс (Unified Process). Однако, как мы увидим далее, методология, которая здесь рассматривается, работает и с другими процессами, например, с процессами Feature Driven Development (функционально-ориентированная разработка программного обеспечения).
Бизнес-правила представляют собой специализированный вид логики, описывающей ограничения на образ действий, которые система или люди должны учитывать в своем поведении. Эти правила определяются целым рядом факторов, включая директивы распорядительных органов, промышленные стандарты, деловую хватку и простой здравый смысл. Нередко они изменяются от страны к стране, от отрасли к отрасли, и даже от бизнеса к бизнесу. В качестве примера бизнес-правила в банковском деле можно привести закон, по которому о любой сделке, превышающей сумму 10 000 долларов наличными, государство должно ставится в известность. Несомненно, данное бизнес-правило необходимо принимать во внимание при создании банковской системы вложения/снятия наличных денег.
Бизнес-правила существуют на разных уровнях. Некоторые из них оказывают влияние на всю систему, и многие системы, на самом деле, целиком создаются лишь для того, чтобы ввести в действие бизнес-правила. Бизнес-правила также могут значительно различаться по размерам области влияния. Но, не смотря на это, все бизнес-правила имеют одно общее свойство: они управляют некоторой составляющей бизнеса. По определению, бизнес-правило есть ограничение, применяемое по отношению к человеку, бизнесу, составляющей бизнеса или действию. Далее речь пойдет о некоторых подробностях, характерных для унифицированных языков моделирования.
Большинство бизнес-правил обнаруживаются в процессе накопления требований. При этом появляется естественное желание добавить еще одну секцию в описания сценариев использования и в нее добавлять бизнес-правила. Однако если бизнес-правило по своему существу не принадлежит к функции, описанной сценарием использования, то оно обычно охватывает несколько сценариев. Так в приведенном выше примере бизнес-правило 10 000 долларов будет охватывать сценарии "Вложение наличных денег" и "Снятие наличных денег".
Каждый из этих сценариев может "запустить" правило 10000 долларов и привести его в действие. В конце концов, вы можете сказать, что это правило лучше внести в каждый сценарий. Тем более что большинство сценарных шаблонов имеют раздел для бизнес-правил. Но что будет, если правительство изменит правило 10000 долларов на правило 15000 долларов? Тогда вам придется изменить это правило в обоих сценариях использования.
Некоторые бизнес-правила действительно являются частью сценария использования. Они приводят к условиям исключения, которые должны обратиться к этому сценарию для возобновления процесса. Например, чтобы клиент банка мог вложить большую сумму наличных денег, от него может потребоваться информация об их происхождении. Такая информация должна потенциально рассматриваться как часть сценария использования. И она, безусловно, будет его частью, если от ее содержания зависит, положит клиент свои деньги в банк или нет.
Однако большинство бизнес-правил представляет собой простую проверку достоверности, например, обеспечение соответствия почтовых индексов с индексами, имеющимися у штатов США. Мы часто игнорируем бизнес-правила такого сорта, пока пишем сценарии использования, поскольку они — всего лишь незначительная подробность проверки адресов. Впрочем, существует специальное место, где устанавливаются и такие ограничения. Логично предположить, что все они принадлежат классу "Адреса" на диаграмме классов. Размещая бизнес-правила в соответствующем классе на диаграмме классов, мы гарантируем, что эти правила будут многократно использоваться во всех сценариях точно таким же образом, как и класс, к которому они принадлежат, в модели сценариев использования.
В общем случае существует три типа правил. К первому типу принадлежат правила вывода [Francis 2003]. Правило вывода (derivation rule) преобразует полученную информацию в возвращаемые значения. Например, скидки на товары можно вычислить с помощью специального алгоритма, учитывающего размер заказа, рекламную поддержку и значимость клиента, которому будут поставляться товары. Правила этого типа допускают изменения, и поэтому, прежде чем с ними можно было работать, их требуется выделить.
Второй тип правил — правила ограничения [Francis 2003]. Правило ограничения (constraint rule) проверяет значения транзакции или операции на непротиворечивость. Например, чтобы заказчик получил письмо, почтовый индекс на письме должен соответствовать индексу штата, в котором проживает заказчик. Эти правила могут использоваться для изучения взаимосвязей между объектами, например, когда все клиенты имеют адресующие объекты в интернет-магазине видеоаппаратуры. Кроме того, они могут применяться вместе с Булевыми результатами. Если они не истинны, то мы не сможем продолжить или завершить операцию.
Наконец, существуют инвариантные правила [Francis 2003]. Инвариантные правила (invariant rules) проверяют множественные изменения и обеспечивают непротиворечивость итоговых результатов. Например, баланс сберегательного счета должен быть равен предыдущему балансу плюс сумма прихода или минус сумма расхода. Если у вас что-то не сходится, значит, ваша система теряет деньги, и пришло время поднять исключение на более высокий уровень.
Рис. 1. Быть работником (employee) как сотрудничество.
Эти правила могут относиться как к свойствам, так и к сотрудничествам [Nicola 2002]. Нередко свойства одной системы являются сотрудничествами другой. Например, если одна система может моделировать идею "быть работником", исходя из сотрудничества (см. рисунок 1), то другая система может моделировать эту же идею, исходя из свойства (см. рисунок 2). Реализация (implementation) является независимым типом правил.
Бизнес-правила можно изобразить на диаграммах сценариев использования, если они применяются к состоянию или роли на макроуровне. Эти правила могут фигурировать в качестве начальных и конечных условий, появиться в потоке событий или альтернативных потоках и исключениях. Бизнес-правила, используемые в перечисленных областях, обычно служат целью, задаваемой сценарием использования (например, "Плата за аренду видеосистемы"). Совокупность инвариантных бизнес-правил представляет собой начальные условия сценариев использования.
Существует также огромное количество других бизнес-правил, применяемых к классу, атрибуту или операции. Такие бизнес-правила могут фигурировать в качестве ограничений на диаграмме класса (например, правило на рис. 1). Ограничения выделяются скобками и выступают как часть метода, связи или как примечания к классу. Обычно ограничения задаются в Object Constraint Language (язык ограничения объектов, OCL), хотя в большинстве случаев большой строгости и не требуется.
Рис. 2. Быть работником (employee) как атрибут.
Большинство продуктов с модельной архитектурой Model Driven Architecture (MDA) использует язык OCL для порождения программной логики. При разработке приложений в среде MDA важную роль играет преобразование бизнес-правил в ограничения на диаграммах класса. Эта логика преобразуется с языка OCL платформенно-независимой модели (Platform Independent Model, PIM) на язык высокого уровня платформенной модели (Platform Specific Model, PSM). Платформенная модель может быть языком программирования, таким как Java, C#, C++ или Delphi.
Бизнес-правила находят широкое применение в компонентах языка Java, что позволяет управлять ими и настраивать под постоянно меняющиеся условия ведения бизнеса. Эти компоненты имеют собственные интерфейсы, позволяющие использовать бизнес-логику для достижения желаемых результатов. Существуют эффективные стратегии определения способа запуска, фильтрации и объединения этих компонентов.
Однако, каким бы образом вы не собирались реализовывать свои бизнес-правила, включая их в требования и модели, это будет самым трудным этапом работы. Бизнес-правила требуют огромного объема знаний. Поэтому на этом этапе разработки любой системы желательно привлекать специалистов высокой квалификации из разных областей знаний. Изменение бизнес-правил и появление новых часто становится причиной того, что новые системы приходят на смену старым.
Живой бизнес требует гибких, расширяемых систем, которые могут оперативно реагировать на изменения деловой конъюнктуры. Сегодняшняя скидка завтра может оказаться премией. Моделирование и выделение бизнес-правил — необходимая часть разработки такой среды. Моделирование обеспечивает проверку бизнес-правил на достоверность еще до создания системы. Технология UML поддерживает моделирование бизнес-правил с помощью сценариев использования и диаграмм класса.
[Francis 2003] Francis, Tim, et al. Professional IBM WebSphere 5.0 Application Server, Wrox, 2003
[Nicola 2002] Nicola, Jill, Mark Mayfield, and Mike Abney, Streamling Object Models, Prentice Hall, 2002 Фрагмент в The Coad Letter 89
[1] Unified Modeling Language (Унифицированный язык моделирования)
Дополнительная информация
За дополнительной информацией обращайтесь в компанию Interface Ltd.
INTERFACE Ltd. |
|