Пишите нам

Имя:
Email:

 
 
 

Статьи

Игровые автоматы Вулкан бесплатно и без регистрации
Игровые автоматы Азино777
Как выбрать надежный выделенный сервер
Уход за своим ноутбуком: советы
Как проверить сайт на уязвимости
Игровые автоматы играть бесплатно гейша — для умеющих отдыхать
Автоматы — выигрывайте у лучших
Важные особенности, сопровождающие перевод паспорта с нотариальным заверением
Списание компьютерной и другой оргтехники: как это сделать
Коротко о продвижении
Восстановление данных с CD диска
Безопасность при создании сайтов
Виртуальный офис: новый уровень организации бизнеса
Виртуальная АТС Гравител
Акция на антивирус
Обзор iPad 3
Как сделать сайт удобным?
Как купить сумку для нетбука
Методы получения внешних ссылок на сайт
Широкие возможности Skype для Android
Качественные мобильные телефоны
Сайт визитка: особенности хорошего старта
Надувные матрасы от Ламон
WebNames.Ru – десятилетие деятельности в Интернете
Квартира для вашего сайта.
Технологии от BoldSoft
Как добиться успеха в безнадежных проектах
Новый тип навигационной системы при постраничном выводе
Генерация PDF с помощью PHP
PHP и PostgreSQL
Оптимизируем MySQL

Технологии от BoldSoft
Константин Берлинский

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

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

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

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

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

Рисунок описывает следующие концепции АИС:

  1. существуют компании (Company) и её отделения (Department);
  2. отделения являются бизнес-подразделениями (BusinessUnit) компаний;
  3. компании и отделения производные от понятия "рабочее место" (WorkPlace);
  4. служащие (Employee) работают (worksFor) в отделении, причём один из них является менеджером (manager), т.е. управляет (manages) служащими своего отделения;
  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), образуемое как имя и фамилия, записанных через пробел.

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

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

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

Таблица 1 - Семантическое описание связей модели
Название ассоциации RoleA RoleB Примечание(номер БП
Название N Название N
1 BusinessUnit company 1 departments 0..* 2
2 Management manager 0..1 manages 0..* 4,5 и 9
3 Employment employer 0..* worksFor 0..1 4 и 8
4 Managed By manager 0..1 employees 0..* 6 и 7
5 Workforce employer 0..1 employees 0..* 10
6 TopSalaries highPayingEmployer 0 highlyPaidEmployees 0..* 13 и 14
N - множественность связи.

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

Для того чтобы использовать настройки 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
1. Managed By manages.employs worksFor.manager
2. Workforce worksFor.company departments.employs
3. TopSalaries Employee.emptyList -

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

Хотелось бы обратить внимание на то, что построение аналитической модели - "каркаса" проекта одинаково возможно как в среде Borland Delphi - через встроенный Bold UML Model Editor (рис. 2), так и в самой Rose. Во втором случае, необходимо чтобы в проекте Delphi в обязательном порядке присутствовали компоненты BoldModel и BoldUMLRoseLink.

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

Рис. 2. Рабочая область встроенного в Delphi редактора UML-модели
Рис. 2. Рабочая область встроенного в Delphi редактора UML-модели

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

Рис. 3. Изображение главной формы приложения HRManager
Рис. 3. Изображение главной формы приложения HRManager

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

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

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

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

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

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

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

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

  • единое хранилище бизнес-правил ИС, что значительно облегчает их создание и дальнейшее сопровождение;
  • бизнес-логика ИС преобразуется в связи между классами и описывается с помощью языка OCL, а не рассеяна по DB?компонентам, обработчику ApplicationEvents.OnIdle() и различным функциям OnClick() и OnChange();
  • хорошая интеграция с CASE-инструментарием Rational Rose - популярным средством моделирования бизнес-процессов;
  • качественное выполнение кодогенерации и реинжиниринга;
  • "прозрачное" отображение сущностей модели и их связей на компоненты Bold в Delphi/C++Builder;
  • поддержка "вычисляемых" полей;
  • генерация схемы БД, основанной на модели классов.

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

Литература


Константин Берлинский
системный аналитик Департамента информационных технологий
при Правительстве Республики Молдова (Кишинев)
30 ноября 2002г.




Внимание! Любая перепечатка и использование материалов статей на других сайтах только с разрешения RusHelp.com (info@rushelp.com).