Функциональная структура аис
Одной из важных задач в ходе анализа предметной области является определение масштаба разработки, выделение функций, объединение их в задачи, задач — в функциональные подсистемы. Состав функциональных подсистем разрабатываемой автоматизированной системы во многом определяется характером деятельности предприятия и его размером.
Например, функциональная подсистема «Управление персоналом» автоматизированной информационной системы предприятия может иметь деление на задачи и функции, представленное в таблице 3. В таблице приведены примеры названий комплексов задач и задач, входящих в эти комплексы. Такая (по объему задач) подсистема может появиться на крупном предприятии. Возможно, на небольшом предприятии количество задач этой подсистемы может уменьшиться, так как, автоматизировать, например, функцию формирования и активизации в БД кадровых приказов будет не совсем целесообразно.
Таблица 3 – Состав функциональной подсистемы «Управление персоналом»
Комплекс задач | Задача | Функция |
Организационно—кадровая структура предприятия | Ведение структуры | Добавление, обновление Поиск по критериям, просмотр |
Аналитические отчеты по структуре | Формирование, просмотр отчета. Передача данных отчета в MS Word для печати | |
Штатное расписание (ШР) подразделений предприятия | Планирование ШР | Ведение справочников окладов, надбавок Ведение справочника должностей Формирование ШР подразделения Добавление, обновление единиц вакансий ШР подразделения Просмотр ШР заданного подразделения Просмотр ШР всего предприятия в целом |
Анализ исполнения ШР | Формирование, просмотр отчета об исполнении ШР подразделения с выделением различных отклонений, просмотр. Передача данных отчета в MS Word для печати. | |
Ведение данных сотрудников | Личная карточка сотрудника | Создание личной карточки Добавление, обновление данных личной карточки Поиск сотрудника по критериям, просмотр личной карточки |
Приказы по перемещению сотрудников (прием, перевод, увольнение) | Формирование приказа Передача данных отчета в MS Word для печати. Активизация приказа в БД после его подписи. Поиск по критериям, просмотр приказа. | |
Отчеты по количественному и качественному составу кадров предприятия. | Формирование отчета. Передача данных отчета в MS Word для печати. |
Для каждой отдельной задачи должен быть определен состав входящих в неё функций. Обычно фрагмент БД разрабатывается для решения отдельной конкретной задачи и далее существует либо отдельно в виде локальной БД, либо интегрируется с другими фрагментами БД в рамках единой, интегрированной базы данных корпоративной информационной системы предприятия.
В рамках одной задачи основная часть функций использует одни и те же данные или фрагменты данных, либо данные преобразуются функциями последовательно.
Удобно иерархическое представление выявленных функций. Иерархия функций позволяет отобразить функциональные зависимости автоматизируемых процессов. Пример функциональной иерархии задачи «Личная карточка сотрудника» приведен на рисунке 5.
Соединение с БД | |||
Ведение справочных данных | |||
Образование | Добавление/Обновление | Ф1 | |
Просмотр | Ф2 | ||
Ученое звание | Добавление/Обновление | Ф3 | |
Просмотр | Ф4 | ||
Ученая степень | Добавление/Обновление | Ф5 | |
Просмотр | Ф6 | ||
Типы адреса | Добавление/Обновление | Ф7 | |
Просмотр | Ф8 | ||
… | |||
Личная карточка сотрудника | Добавление/Обновление | Ф18 | |
Поиск сотрудников | (по критериям) | Просмотр/Печать | Ф19 |
Ф20 | |||
Формирование документов | |||
Справка по форме 1 | Формирование | Ф21 | |
Просмотр/Печать | Ф22 | ||
Справка по форме 2 | Формирование | Ф23 | |
Просмотр/Печать | Ф24 |
Рисунок 5 — Функциональная иерархия
На рисунке 5 все функции пронумерованы, эта нумерация может понадобиться в дальнейшем при проверке соответствия выявленной иерархии функций структуре полученной модели данных.
Выявление классов объектов и связей
Одним из важных этапов анализа предметной области является выявление и описание классов объектов (сущностей) и связей между ними. Описание может быть получено в произвольном виде, но для удобства процесса проектирования его формализуют в виде таблиц.
Классы объектов
Как выявить в предметной области классы объектов? Класс объектов (тип сущности, сущность) – это значимая вещь, о которой предприятие должно хранить информацию. Признаки класса объектов:
а) объект, представляющий интерес для предприятия;
б) класс, категория, тип какой—то вещи;
в) именованное понятие;
г) существительное;
д) класс объектов есть, если есть реальный значимый объект;
Выявив класс объектов, необходимо дать ему имя. Оно должно быть уникальным. В качестве имени выбираются термины, используемые на предприятии. Имя изобретается, если все остальные возможности исчерпаны, так как придуманные имена могут привести к неправильному пониманию и дублированию. Имя должно быть согласовано с заказчиком. Имя может состоять из более чем одного слова (уточняющие имя слова – прилагательные и прочее). Часто одно и тоже называют разными именами, тогда необходимо выбрать одно главное имя, остальные описать как синонимы. При выявлении класса объектов выявляется группа вещей, состоящих из отдельных элементов (объектов). Класс объектов – это класс или категория вещей. Например, класс объектов «ОТДЕЛ» состоит из конкретных объектов «Учебно—методический отдел», «Отдел главного механика».
Все экземпляры (объекты) выявленного класса объектов должны однозначно определяться, быть идентифицированными. Если объект не может быть однозначно идентифицирован в классе объектов, то это возможно не класс объектов вообще.
Этапы выявления и моделирования класса объектов:
а) исследование каждого существительного, выявленного в ходе анализа предметной области на предприятии и выявление его значимости;
б) выявление, имеется ли информация об этом существительном, которую необходимо хранить для данного предприятия;
в) присвоение имени классу объектов в единственном числе;
г) проверка, можно ли отличить один объект класса объектов от другого;
д) описание класса объектов для проверки того, что все (разработчики, заказчики) вкладывают в этот термин одно и тоже значение;
Для каждого класса объектов определяют его свойства (атрибуты сущности). Свойство – это конкретный элемент информации. Свойство описывает класс объектов. Это качественное или количественное описание класса объектов. Свойство может выглядеть следующим образом:
— описательные слова, фразы (название, краткое название);
— предложные конструкции (сумма зарплаты для каждого сотрудника);
— притяжательные существительные и местоимения (признак устаревания, прочие).
Каждое свойство наделяется именем. Имена должны быть понятными и однозначными. Вопросы, которые рекомендуется задавать при выявлении свойств: какую информацию о классе объектов надо хранить; какую информацию о классе объектов надо выводить на экран или печать; нужно ли на самом деле это свойство.
Заказчики часто забывают о своих конкретных потребностях – думают, что поле само появится на экране или отчете, и не видят необходимости упоминать об этом.
Изучая существующую на предприятии документацию, необходимо обращать внимание на устаревшие требования прежних систем, например, старая форма выходного документа – членство в партии, национальность. Необходимо также отмечать производные и агрегированные данные, для каждого класса объектов фиксируются только исходные свойства. Производные и агрегированные свойства описываются отдельно и формируются, как правило, программой на основе значений исходных свойств. Необходимость хранения таких свойств бывает достаточно редкой.
К имени свойства предъявляется ряд требований. Имена должны быть понятными и однозначными, например название свойства "количество" может привести к путанице — возвращенное, поставленное? Необходимо выбирать более конкретные имена: «размер поставки», «объем заказа» и т.п. Если имя состоит из более одного слова, они разделяются пробелами.
Самый распространенный пример – свойство «дата». Если не указано конкретно, что это за дата, она может интерпретироваться как дата рождения, дата найма. Если необходимо хранить и то и другое, добавляется конкретное свойство, например, кроме даты найма необходимо еще хранить дату избрания по конкурсу. Это может быть выявлено на более поздних этапах анализа предметной области.
Выявленное в ходе анализа предметной области свойство необходимо разбить на мельчайшие компоненты, имеющие смысл. Уровень деления зависит от потребностей предприятия. Например, адрес, блочные размеры пиломатериалов (высота, длина, ширина), можно хранить и в виде одного свойства, но более полезно хранить в виде отдельных свойств.
Отличие класса объектов (сущности) от свойства (атрибута) приведено в таблице 4.
Таблица 4 — Отличия между классом объектов и свойством
Характеристики класса объектов | Характеристики свойства |
Вещь, о которой необходимо хранить информацию. | Квалифицирует класс объектов. |
Имеет одно или более свойств. | Собственных свойств не имеет (в противном случае это класс объектов или комбинация свойств, которой дали неудачное название). |
Может иметь несколько экземпляров и должна иметь значимую связь с другой класс объектов. | Для каждого экземпляра класса объектов имеет только одно значение. |
Определив свойство, необходимо убедиться, что для каждого конкретного объекта свойство может иметь одно единственное значение. Если обнаруживается более одного значения у какого—либо свойства, это свидетельствует о недостающем свойстве у класса объектов или кандидате в новый класс объектов.
Если обнаружится свойство, имеющее собственные свойства, то это не свойство, а класс объектов. Например, выявлен класс объектов «СПЕЦОДЕЖДА», имеющий свойства «номер», «название», «цвет». Если в ходе дальнейшего анализа и изучения существующих в предметной области документов выявлено, что цвет кроме названия должен иметь артикул, то «цвет» это уже не свойство, а класс объектов «ЦВЕТ» с соответствующими свойствами «название», «артикул».
Для каждого свойства необходимо определить его опциональность. Значение свойства может быть обязательным или необязательным при сохранении в базе данных информации о конкретном объекте. Такая характеристика называется опциональностью свойства. Обязательное значение свойства должно существовать и быть известным для каждого объекта рассматриваемого класса объектов. Необязательные значения свойства могут быть неизвестны (или не существуют) для какого—либо объекта на момент его создания. Например, значение свойства «дата начала работы» известно всегда для работающего сотрудника, а значение свойства «дата окончания работы» может быть неизвестным в заданный момент времени, если у сотрудника контракт бессрочный.
Для каждого свойства также выявляются в предметной области и описываются:
— формат (тип, максимальное длина, средняя длина (обычный размер), место десятичной точки, единица измерения;
— допустимые значения (диапазон, список значений, несколько диапазонов, значения по умолчанию);
При выявлении характеристик свойств могут быть определены и домены. Домен – это набор правил проверки с точки зрения бизнеса, ограничений, относящихся более чем к одному свойству.
С помощью домена можно задать: диапазон значений; список конкретных значений; несколько диапазонов; математическое уравнение; значение по умолчанию и т.п. Эти правила описываются в БД один раз и применяются для разных свойств. Самый известный домен — {да, нет}.
Существует следующая технология работы со свойствами, содержащая шаги:
— выявление кандидата в свойство;
— связывание свойства с классом объектов;
— присвоение имени свойству;
— определение формата свойства;
— определение опциональности свойства;
— определение логических ограничений свойства, накладываемых предметной областью (вхождение значения в диапазон и др.);
— проверка того, что это действительно свойство, а не класс объектов;
— в случае необходимости создание домена.
Для каждого класса объектов должны быть обязательно выявлены уникальные идентификаторы. Уникальный идентификатор – это свойство, совокупность свойств или комбинация свойств и связей, используемых для однозначной идентификации объекта в классе объектов. Свойство, входящее в состав уникального идентификатора должно иметь обязательную опциональность. Количество уникальных идентификаторов в классе объектов может быть каким угодно. И каким угодно может быть количество компонентов (свойств и связей), входящих в состав уникального идентификатора.
Уникальный идентификатор можно определять на любом этапе анализа предметной области, но чтобы приступить к описанию и проектированию класса объектов, необходимо, чтобы каждый класс объектов имел уникальные идентификаторы.
Выбирая способ идентификации объектов класса объектов, необходимо моделировать не технологические потребности разрабатываемой системы, а потребности бизнеса. При использовании в качестве уникального идентификатора числового кода необходимо убедиться, что в предметной области имеется соответствующий документ, в котором такой код отображается. Например, свойства «табельный номер сотрудника», «код подразделения» уже определены существующей на предприятии системой бухгалтерского учета, свойство «код должности» представлено в отраслевом классификаторе должностей и т.п.
На последующих этапах проектирования БД уникальный идентификатор может быть сгенерирован технически, но во время анализа предметной области выявляются уникальные идентификаторы, используемые на предприятии.
Если уникальных идентификаторов несколько, то необходимо определить среди них главный. Таким делается идентификатор, чаще используемый в бизнесе, например, «табельный номер». Либо любой уникальный идентификатор, имеющий наименьшую длину и числовой тип.
Самое большое количество уникальных идентификаторов имеет такой класс объектов, как «ФИЗИЧЕСКОЕ ЛИЦО/ ЧЕЛОВЕК». Каждый объект в таком классе объектов может быть однозначно идентифицирован такими свойствами: «номер», «серия паспорта», «ИНН», «номер водительского удостоверения», «номер жетона». Для класса объектов «ДОЛЖНОСТЬ» могут быть выявлены следующие уникальные идентификаторы: «код», «название», «краткое название».
Необходимо отметить, что чем больше классов объектов будет выявлено в ходе анализа предметной области, тем более нормализованной затем будет структура реляционной базы данных. Почти любое существительное в предметной области имеет право быть определено как класс объектов, поскольку почти каждое существительное имеет, как минимум, набор из трех свойств: название объекта, краткое название объекта, числовой эквивалент названия объекта (код, номер, шифр).
Увидеть классы объектов предметной области можно подробно изучая информационные потоки предприятия, подлежащие автоматизации. Информационные потоки представлены документами. Любой документ является кандидатом в класс объектов. Документ имеет шапку, в которой, как правило, указано название документа и дата его формирования. Документ имеет информативную часть, в которой находятся качественные и количественные показатели. В нижней части документа находятся фамилии и должности лиц, подписывающих документ. На документе могут также быть расположены название, адрес и другие реквизиты предприятия, выпускающего документ. Таким образом, изучая документ, можно увидеть и выделить следующие классы объектов: «ПРЕДПРИЯТИЕ/ ЮРИДИЧЕСКОЕ ЛИЦО» или «СТРУКТУРНАЯ ЕДИНИЦА ПРЕДПРИЯТИЯ»; «ТИП СТРУКТУРНОЙ ЕДИНИЦЫ»; «АДРЕС»; «НАСЕЛЕННЫЙ ПУНКТ»; «ТИП НАСЕЛЕННОГО ПУНКТА»; «УЛИЦА»; «ТИП УЛИЦЫ» (улица, проспект, переулок, проезд и т.п.); «ДОКУМЕНТ»; «ПОЗИЦИЯ ДОКУМЕНТА»; «ФИЗИЧЕСКОЕ ЛИЦО»; «ДОЛЖНОСТЬ»; «ЗАПИСЬ О РАБОТЕ ФИЗИЧЕСКОГО ЛИЦА» (дата начала, дата окончания); «ТОВАР/ УСЛУГА»; «ОБЪЕКТ» (учета).
Что представляет собой класс объектов «ПОЗИЦИЯ ДОКУМЕНТА»? Любой документ обычно имеет несколько позиций (позиции приказа, позиции прайс—листа, позиции счета—фактуры, записи учетной карточки и тому подобное). Таким образом, видна существующая в предметной области связь типа 1:М: «каждый ДОКУМЕНТ должен иметь одну или более ПОЗИЦИЙ»; с обратной стороны связь читается – «каждая ПОЗИЦИЯ ДОКУМЕНТА должна относиться к одному и тому же ДОКУМЕНТУ». Кроме того, каждая позиция документа имеет свои собственные свойства — номер, какие—то количественные показатели (количество учетных единиц, цена за единицу и другие).
Для каждой предметной области можно увидеть обязательный для всех предметных областей перечень классов объектов. Каждая предметная область отображает работу какого—либо предприятия или организации – производственного предприятия, учебного или лечебного учреждения, торговой организации, склада, пункта проката, домашней экономической сферы и так далее. Название (полное или краткое) предприятия или организации фигурирует в различных выходных документах и отчетах.
Таким образом, в предметной области всегда присутствует класс объектов ПРЕДПРИЯТИЕ или СТРУКТУРНАЯ ЕДИНИЦА ПРЕДПРИЯТИЯ. Также почти всегда необходимо вести учет адреса и телефонов этого предприятия. Кроме того, в любой предметной области обязательно присутствуют физические лица, занимающие те или иные должности и своими подписями (в соответствующем документе) фиксирующие учет (приход, расход, перемещение) состояния какого—либо объекта. Для решения задач анализа данных и принятия затем соответствующих управленческих решений необходимо хранение в БД знаний и об истории этого состояния. Поэтому ещё одна категория обязательных для каждой предметной области классов объектов – классы объектов, с помощью которых отображаются документы, на основании которых и происходят все процессы на предприятии.
Свести все итоги анализа предметной области в ходе выявления классов объектов и их свойств можно в виде формализованного описания, таблицы. Пример такого описания приведен в таблице 5.
Таблица 5 — Формализованное описание предметной области. Классы объектов, свойства.
Объект/ Свойство | Уникальный иденти—фикатор | Физические характерис—тики свойства (тип, длина) | Опциональ—ность свойства (Да/ Нет) | Логические ограничения свойства (диапазон значений, прописные, строчные буквы для символьных свойств и т.п.) | Процессы для значений свойств |
ЧЕЛОВЕК | |||||
таб.номер | У1, П | число, 10 | Да | > 0 | Г, Пр |
ИНН | У2 | число, 12 | Нет | > 0 | Вв, Пр, Об |
имя | симв., 25 | Да | Перв. буква заглавн. | Вв, Пр, Об | |
дата рожд | дата | Нет | ДД.ММ.ГГГГ | Вв, Пр, Об | |
ДОЛЖНОСТЬ | |||||
В таблице использованы сокращения: У – уникальный идентификатор, П – кандидат в первичный ключ (главный уникальный идентификатор), Г – генерация данных, Вв – ввод данных, Пр – просмотр данных, Об – обновление данных.