Продолжается подписка на наши издания! Вы не забыли подписаться?

Технологии от BoldSoft:
новый взгляд на проектирование ИС

Константин Берлинский

Что сегодня представляет собой современная информационная система, созданная для автоматизации бизнес-деятельности предприятия? Обязательными составными её частями являются:

Проблемы, возникающие при разработке указанных частей ИС, давно и успешно решаются. Созданы надёжные и высокопроизводительные серверы БД; инструменты быстрой разработки ПО (RAD-средства) и наличие хорошего компьютерного художника решает проблему разработки интерфейса пользователя; существуют развитые схемы криптозащиты и секретные протоколы передачи данных; значительные успехи в микроэлектронике сделали аппаратные средства дешевыми и широко доступными…

Однако есть ещё один – пятый элемент, делающий создание автоматизированной системы чрезвычайно трудным и утомительным процессом. Это – изменяющиеся требования бизнеса и, соответственно, наличие в системе огромного числа сложных и хаотично переплетённых бизнес-правил. Если на начальном этапе построения ИС их изучение и внедрение занимают сравнительно небольшое время, то этап развития становится настоящим "кошмаром сопровождения", увеличивая энтропию продукта.

На данный момент наиболее популярным инструментом построения офисных приложений в СНГ является, по моему мнению, Borland Delphi. И многих разработчиков наверняка заинтересуют средства решения вышеуказанной проблемы, интегрируемые с этой средой. Одну из технологий предоставляет сейчас компания BoldSoft из Швеции. Ниже будет дан общий обзор архитектуры, предоставляемой этой перспективной компанией, кстати, недавно вошедшей в состав Borland Software Corporation. [1]

Приложение, на основе которого будет дан анализ, взято из учебных материалов, доступных на сайте BoldSoft [2]. Это программа по управлению человеческими ресурсами компании. Далее представлена UML-модель приложения "HRManager", построенная в Rational Rose (рисунок 1). Рисунок описывает следующие концепции (бизнес-правила - БП) АИС:

  1. У нас есть компании (Company) и отделения (Department);

  2. отделения являются бизнес-подразделениями (BusinessUnit) компаний;

  3. компании и отделения – производные от понятия "рабочее место" (WorkPlace);

  4. служащие (Employee) работают (worksFor) в отделении, причём один из них может являться менеджером (manager), т.е. управляющим служащими своего отделения;

  5. менеджер может управлять несколькими отделениями;

  6. для менеджера, в любой момент времени доступен список работников тех подразделений, которыми он управляет;

  7. для каждого работника доступны данные человека, которым он управляется (Managed By);

  8. служащие (employs) образуют группу работников (Employment);

  9. менеджеры образуют группу управленцев (Management);

  10. работники отделений компании образуют её рабочую силу (WorkForce);

  11. компании и отделения имеют названия (name) и атрибут, показывающий ежемесячные затраты (monthlyCost), складывающиеся из суммы зарплат за месяц (monthlySalary) работников штатной единицы;

  12. должна быть возможность одновременного повышения/понижения зарплаты (AdjustSalary) всем работникам штатной единицы на определённый процент (Percent);

  13. для каждого отделения устанавливается пороговое значение высокой зарплаты (highSalaryThreshold), и служащие, достигшие этого порога, считаются высокооплачиваемыми (highlyPaidEmployees);

  14. для каждой компании в любой момент времени должен быть доступен список высокооплачиваемых сотрудников (TopSalaries) её отделений;

  15. У работника есть имя (firstName), фамилия (lastName) и полное имя (fullName), образуемое как имя и фамилия, записанные через пробел.

Рисунок 1. Диаграмма классов приложения HRManager.

Комментарии, что называется, излишни. Требования к системе, выполненные в виде качественно сделанного текста на английском языке, напрямую превращаются в классы модели (обычно, подлежащее предложения), их атрибуты (существительные) и методы (сказуемое и глаголы), а также связи между ними (существительные).

Классы Company и Department унаследованы от класса WorkPlace (т.е. реализуются бизнес-правила 1 и 3).

Класс HRClassesRoot является суперклассом для WorkPlace и Employee.

Описание остальных связей модели приведено ниже (таблица 1).

Бизнес-правило 11 реализуют атрибуты классов WorkPlace/monthlyCost и Employee/monthlySalary соответственно. Выполнение БП 12 обеспечивается наличием метода WorkPlace/AdjustSalary(Percent: Integer). И, наконец, последнее БП 15 выполняется с помощью полей класса Employee – firstName, lastName, fullName – и специального OCL-выражения, автоматически вычисляющего полное имя служащего.

Таблица 1. Семантическое описание связей модели.

  RoleA RoleB Примечание
(номер БП)
  Название N Название N
BusinessUnit company 1 departments 0..* 2
Management manager 0..1 manages 0..* 4,5 и 9
Employment employs 0..* worksFor 0..1 4 и 8
Managed By manager 0..1 employees 0..* 6 и 7
Workforce employer 0..1 employees 0..* 10
TopSalaries highPayingEmployer 0 highlyPaidEmployees 0..* 13 и 14

Чтобы использовать настройки BoldSoft, командой из среды Rational Rose "Tools/Model Properties/Replace" необходимо подгрузить специальный файл (обычно это \\…\BoldSoft\BfDR31D6Ent\Rose\BfD.pty). После этого для каждой связи, при необходимости, можно открыть раздел её свойств и записать в поля BoldA/DerivationOCL и BoldB/DerivationOCL OCL-выражения, соответствующие определённым бизнес-правилам.

Список необходимых OCL-выражений приведён далее (таблица 2).

Таблица 2. OCL-выражения для ассоциативных связей.

Название ассоциации OCL-выражение для RoleA OCL-выражение для RoleB
Managed By manages.employs worksFor.manager
Workforce worksFor.company departments.employs
TopSalaries Employee.emptyList -

Необходимо настроить и другие параметры, специфичные для BoldSoft (DeleteAction, Embed, ExpressionName и т.д.) и выполнить другие, достаточно простые действия, для получения полнофункционального приложения [2].

Хотелось бы обратить внимание на то, что построение аналитической модели – "каркаса" проекта – одинаково возможно как в среде Borland Delphi (через встроенный Bold UML Model Editor, рисунок 2), так и в самой Rose. Во втором случае необходимо, чтобы в проекте Delphi в обязательном порядке присутствовали компоненты BoldModel и BoldUMLRoseLink. Его свойства нужно настроить следующим образом: BoldModel = имя компонента BoldModel, FileName = полный путь до исходной модели *.mdl.

После этого можно реализовывать процесс "round-trip engineering" (поочередное обновление модели или программного кода). Команда редактора "Export via Link" обновляет модель из кода, "Import via Link" производит обратный процесс. Таким образом, можно безболезненно синхронизировать дизайн системы и её реализацию, эффективно используя как многочисленные возможности визуальных сред разработки (например, Borland Delphi или C++ Builder), так и мощь CASE-инструментов построения моделей.

Рисунок 3. Внешний вид главной формы приложения HRManager.

Когда аналитическая модель построена, остается только разместить нужные компоненты на формах и настроить свойства соответствующих объектов [2]. Конечный результат приведён на рисунке 3.

Программа поддерживает все бизнес-правила, описанные в функциональных требованиях к системе. При смене компании или отдела автоматически происходит обновление списка работников. Такие функции, как установление нового значения уровня зарплаты всем работникам штатной единицы и повышение служащего до уровня менеджера отделения, реализованы через всплывающие (PopUp) меню.

Возможно динамическое изменение уровня, достигнув который, работники подразделения считаются высокооплачиваемыми (атрибут highSalaryThreshold). Причём программа запоминает все установленные настройки и при последующей загрузке восстанавливает их. Для каждого экземпляра класса, Bold "по умолчанию" поддерживает возможность просмотра его атрибутов. Так, например, двойным кликом по служащему можно вызвать форму, где указаны его свойства и значения установленных связей (рисунок 4).

Рисунок 4. Формы вывода информации о служащих.

В учебном примере, для того, чтобы не "нагружать" приложение ненужными подробностями взаимодействия с базами данных, введённая информация сохраняется в XML-файл. Однако Bold, с одинаковой легкостью, позволяет и генерировать схему БД. Для того чтобы этим воспользоваться, необходимо создать алиас к БД (например, в SQL Explorer), а затем, командой в редакторе модели "Tools/Generate Database", сгенерировать структуру БД (рисунок 5).

Рисунок 5. Запрос информации о типе создаваемой БД и используемом алиасе.

При создании схемы БД, Bold основывается на атрибутах классов модели и, кроме того, добавляет служебные таблицы и поля в "рабочих" таблицах, т.е. ассоциированных с классами (рисунок 6).

В заключение хотелось бы отметить, что, несмотря на некоторые недостатки, свойственные любой молодой и развивающейся технологии, архитектура Bold обладает значительным потенциалом и отличными перспективами. Основными достоинствами Bold, являются:

Рисунок 6. Просмотр через SQL Explorer структуры сгенерированной БД.

Опытный читатель-практик, несомненно, оценит полезные возможности BoldSoft. Пока же остается надеяться, что компания Borland, купившая BoldSoft, "доведёт до ума" эту, безо всякого сомнения, перспективную архитектуру, и многочисленные пользователи Delphi получат, наконец, долгожданную возможность "хорошего" проектирования, основанного на бизнес-объектах, а не на устаревшей практике разработки в стиле "code and fix".

Литература

[1] http://www.borland.com/news/press_releases/2002/10_07_02_borland_aquires_boldsoft_assets.html

[2] http://doc.boldsoft.com/boldfordelphi/doc/Starting Bfd - Part 2 - Extending Models.pdf


Copyright © 1994-2016 ООО "К-Пресс"