Технология Клиент-Сервер 2002'4 |
|||||||
|
Константин Берлинский
Что сегодня представляет собой современная информационная система, созданная для автоматизации бизнес-деятельности предприятия? Обязательными составными её частями являются:
наличие быстрой и устойчивой к нагрузкам в многопользовательском режиме базы данных – хранилище всевозможной бизнес - информации;
удобный пользовательский интерфейс и сравнительно простой доступ к ресурсам системы;
высокая безопасность данных и защита от несанкционированного доступа;
легкая в настройке и надёжная аппаратная часть.
Проблемы, возникающие при разработке указанных частей ИС, давно и успешно решаются. Созданы надёжные и высокопроизводительные серверы БД; инструменты быстрой разработки ПО (RAD-средства) и наличие хорошего компьютерного художника решает проблему разработки интерфейса пользователя; существуют развитые схемы криптозащиты и секретные протоколы передачи данных; значительные успехи в микроэлектронике сделали аппаратные средства дешевыми и широко доступными…
Однако есть ещё один – пятый элемент, делающий создание автоматизированной системы чрезвычайно трудным и утомительным процессом. Это – изменяющиеся требования бизнеса и, соответственно, наличие в системе огромного числа сложных и хаотично переплетённых бизнес-правил. Если на начальном этапе построения ИС их изучение и внедрение занимают сравнительно небольшое время, то этап развития становится настоящим "кошмаром сопровождения", увеличивая энтропию продукта.
На данный момент наиболее популярным инструментом построения офисных приложений в СНГ является, по моему мнению, Borland Delphi. И многих разработчиков наверняка заинтересуют средства решения вышеуказанной проблемы, интегрируемые с этой средой. Одну из технологий предоставляет сейчас компания BoldSoft из Швеции. Ниже будет дан общий обзор архитектуры, предоставляемой этой перспективной компанией, кстати, недавно вошедшей в состав Borland Software Corporation. [1]
Приложение, на основе которого будет дан анализ, взято из учебных материалов, доступных на сайте BoldSoft [2]. Это программа по управлению человеческими ресурсами компании. Далее представлена UML-модель приложения "HRManager", построенная в Rational Rose (рисунок 1). Рисунок описывает следующие концепции (бизнес-правила - БП) АИС:
У нас есть компании (Company) и отделения (Department);
отделения являются бизнес-подразделениями (BusinessUnit) компаний;
компании и отделения – производные от понятия "рабочее место" (WorkPlace);
служащие (Employee) работают (worksFor) в отделении, причём один из них может являться менеджером (manager), т.е. управляющим служащими своего отделения;
менеджер может управлять несколькими отделениями;
для менеджера, в любой момент времени доступен список работников тех подразделений, которыми он управляет;
для каждого работника доступны данные человека, которым он управляется (Managed By);
служащие (employs) образуют группу работников (Employment);
менеджеры образуют группу управленцев (Management);
работники отделений компании образуют её рабочую силу (WorkForce);
компании и отделения имеют названия (name) и атрибут, показывающий ежемесячные затраты (monthlyCost), складывающиеся из суммы зарплат за месяц (monthlySalary) работников штатной единицы;
должна быть возможность одновременного повышения/понижения зарплаты (AdjustSalary) всем работникам штатной единицы на определённый процент (Percent);
для каждого отделения устанавливается пороговое значение высокой зарплаты (highSalaryThreshold), и служащие, достигшие этого порога, считаются высокооплачиваемыми (highlyPaidEmployees);
для каждой компании в любой момент времени должен быть доступен список высокооплачиваемых сотрудников (TopSalaries) её отделений;
У работника есть имя (firstName), фамилия (lastName) и полное имя (fullName), образуемое как имя и фамилия, записанные через пробел.
Комментарии, что называется, излишни. Требования к системе, выполненные в виде качественно сделанного текста на английском языке, напрямую превращаются в классы модели (обычно, подлежащее предложения), их атрибуты (существительные) и методы (сказуемое и глаголы), а также связи между ними (существительные).
Классы 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, являются:
единое хранилище бизнес-правил информационной системы, что значительно облегчает их создание и дальнейшее сопровождение;
бизнес-логика ИС преобразуется в связи между классами и описывается с помощью языка объектных ограничений OCL, а не "размазана" по DB-компонентам, обработчику события ApplicationEvents.OnIdle() и функциям OnClick() и OnChange();
хорошая интеграция с CASE-инструментарием Rational Rose – популярным средством моделирования бизнес-процессов;
качественное выполнение процессов кодогенерации и реинжиниринга программных систем;
"прозрачное" отображение сущностей модели и их связей (компания - отделения, отдел – сотрудники и т.п.) на компоненты Bold в Delphi,
поддержка "вычисляемых" полей, т.е. развитый механизм "подписки" определённых полей на изменение значений в других и их автоматическое обновление;
генерация схемы БД, основанной на логической модели.
Рисунок 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 ООО "К-Пресс"