Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
 

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

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

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

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

На данный момент, наиболее популярным инструментом построения офисных приложений в СНГ, является, по моему мнению, 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.BusinessUnitcompany1departments0..*2
2.Managementmanager0..1manages0..*4,5 и 9
3.Employmentemploys0..*worksFor0..14 и 8
4.Managed Bymanager0..1employees0..*6 и 7
5.Workforceemployer0..1employees0..*10
6.TopSalarieshighPayingEmployer0highlyPaidEmployees0..*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-выражение для RoleAOCL-выражение для RoleB
1.Managed Bymanages.employsworksFor.manager
2.WorkforceworksFor.companydepartments.employs
3.TopSalariesEmployee.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, являются:

Опытный читатель-практик, несомненно, найдёт и другие полезные возможности BoldSoft. Пока же остается надеяться, что компания Borland, "доведёт до ума" эту, безо всякого сомнения, перспективную архитектуру, и многочисленные разработчики получат долгожданную возможность "правильного" проектирования, основанного на бизнес-объектах, а не на устаревшей практике разработок в стиле "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
   Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.
Автор статьи:  Константин Берлинский - системный аналитик Департамента информационных технологий при Правительстве Республики Молдова (Кишинев).
  

Другие статьи Наверх


  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо