OOAD - Функциональное моделирование

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

Диаграммы потоков данных

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

Рамбо и др. определили DFD как: «Диаграмма потока данных - это график, который показывает поток значений данных из их источников в объектах через процессы, которые преобразуют их в места назначения на других объектах».

Четыре основные части DFD:

  • Processes,
  • Потоки данных,
  • Актеры и
  • Хранилища данных.

Другие части DFD -

  • Ограничения и
  • Потоки управления.

Особенности DFD

Процессы

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

Representation in DFD - Процесс представлен в виде эллипса с написанным внутри него именем и содержит фиксированное количество значений входных и выходных данных.

Example - На следующем рисунке показан процесс Compute_HCF_LCM, который принимает два целых числа в качестве входных и выводит их HCF (наивысший общий множитель) и LCM (наименьшее общее кратное).

Потоки данных

Поток данных представляет собой поток данных между двумя процессами. Это может быть между субъектом и процессом или между хранилищем данных и процессом. Поток данных обозначает значение элемента данных в некоторой точке вычисления. Это значение не изменяется потоком данных.

Representation in DFD - Поток данных представлен направленной дугой или стрелкой, помеченной именем элемента данных, который он несет.

На приведенном выше рисунке Integer_a и Integer_b представляют потоки входных данных для процесса, а LCM и HCF - потоки выходных данных.

Поток данных может быть разветвлен в следующих случаях:

  • Выходное значение отправляется в несколько мест, как показано на следующем рисунке. Здесь стрелки вывода не помечены, поскольку они обозначают одно и то же значение.

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

Актеры

Акторы - это активные объекты, которые взаимодействуют с системой, либо производя данные и вводя их в систему, либо потребляя данные, созданные системой. Другими словами, субъекты служат источниками и приемниками данных.

Representation in DFD- Актер представлен прямоугольником. Акторы подключены к входам и выходам и лежат на границе DFD.

Example - На следующем рисунке показаны субъекты, а именно Customer и Sales_Clerk в системе встречных продаж.

Хранилища данных

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

Representation in DFD- Хранилище данных представлено двумя параллельными строками, содержащими имя хранилища данных. Каждое хранилище данных связано как минимум с одним процессом. Стрелки ввода содержат информацию для изменения содержимого хранилища данных, а стрелки вывода содержат информацию, полученную из хранилища данных. Когда требуется получить часть информации, стрелка вывода помечается. Стрелка без надписи означает полное извлечение данных. Двусторонняя стрелка означает и поиск, и обновление.

Example- На следующем рисунке показано хранилище данных Sales_Record, в котором хранятся сведения обо всех продажах. Входные данные в хранилище данных содержат такие сведения о продажах, как товар, сумма счета, дата и т. Д. Чтобы найти средние продажи, процесс извлекает записи о продажах и вычисляет среднее значение.

Ограничения

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

  • В объектном моделировании ограничения определяют отношения между объектами. Они также могут определять отношения между различными значениями, которые объект может принимать в разное время.

  • В динамическом моделировании ограничения определяют взаимосвязь между состояниями и событиями различных объектов.

  • В функциональном моделировании ограничения определяют ограничения на преобразования и вычисления.

Representation - Ограничение отображается в виде строки в фигурных скобках.

Example- На следующем рисунке показана часть DFD для расчета заработной платы сотрудников компании, которая решила стимулировать всех сотрудников отдела продаж и увеличить зарплату всем сотрудникам отдела кадров. Можно видеть, что ограничение {Dept: Sales} вызывает вычисление стимула только в том случае, если отдел является отделом продаж, а ограничение {Dept: HR} вызывает вычисление приращения, только если отдел является отделом HR.

Потоки управления

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

Representation in DFD - Потоки управления представлены пунктирной дугой от процесса, производящего логическое значение, до процесса, которым они управляют.

Example- На следующем рисунке представлен DFD для арифметического деления. Делитель проверяется на ненулевое значение. Если он не равен нулю, поток управления OK имеет значение True, и впоследствии процесс разделения вычисляет частное и остаток.

Разработка DFD-модели системы

Для разработки модели DFD системы строится иерархия DFD. DFD верхнего уровня состоит из одного процесса и взаимодействующих с ним субъектов.

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

Example- Рассмотрим программный комплекс Wholesaler Software, который автоматизирует операции оптового магазина. Магазин продает оптом и имеет клиентуру, состоящую из торговцев и владельцев розничных магазинов. Каждого клиента просят зарегистрироваться, указав свои данные, и ему дается уникальный код клиента C_Code. После продажи магазин регистрирует ее данные и отправляет товар на отгрузку. Каждый год магазин раздает своим покупателям рождественские подарки, которые состоят из серебряной или золотой монеты в зависимости от общего объема продаж и решения владельца.

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

Действующие лица в системе -

  • Customers
  • Salesperson
  • Proprietor

На следующем уровне DFD, как показано на следующем рисунке, определяются основные процессы системы, определяются хранилища данных и устанавливаются взаимодействия процессов с участниками и хранилища данных.

В системе можно выделить три процесса, а именно:

  • Зарегистрируйте клиентов
  • Процесс продаж
  • Определить подарки

Хранилища данных, которые потребуются:

  • Детали клиента
  • Детали продаж
  • Детали подарка

На следующем рисунке показаны детали процесса «Регистрация клиента». В нем есть три процесса: Проверить детали, Создать C_Code и Обновить детали клиента. Когда данные клиента вводятся, они проверяются. Если данные верны, создается C_Code и обновляются сведения о клиенте в хранилище данных.

На следующем рисунке показано расширение процесса «Определить подарки». В нем есть два процесса: найти общий объем продаж и выбрать тип подарочной монеты. Процесс «Найти общий объем продаж» вычисляет годовой общий объем продаж для каждого покупателя и записывает данные. Принимая эту запись и решение владельца в качестве входных данных, подарочные монеты распределяются в процессе определения типа подарочной монеты.

Преимущества и недостатки DFD

Преимущества Недостатки
DFD изображают границы системы и, следовательно, полезны для изображения отношений между внешними объектами и процессами внутри системы. Создание DFD занимает много времени, что может оказаться невозможным для практических целей.
Они помогают пользователям узнать о системе. DFD не предоставляют никакой информации о поведении, зависящем от времени, т. Е. Они не определяют, когда будут выполнены преобразования.
Графическое представление служит для программистов планом разработки системы. Они не проливают света на частоту вычислений или причины вычислений.
DFD предоставляют подробную информацию о системных процессах. Подготовка DFD - сложный процесс, требующий значительного опыта. Кроме того, это сложно понять человеку без технических знаний.
Они используются как часть системной документации. Метод подготовки субъективен и оставляет множество возможностей для неточностей.

Связь между объектной, динамической и функциональной моделями

Объектная модель, динамическая модель и функциональная модель дополняют друг друга для полного объектно-ориентированного анализа.

  • Объектное моделирование развивает статическую структуру программной системы с точки зрения объектов. Таким образом, он показывает «деятелей» системы.

  • Динамическое моделирование развивает временное поведение объектов в ответ на внешние события. Он показывает последовательность операций, выполняемых над объектами.

  • Функциональная модель дает обзор того, что должна делать система.

Функциональная модель и объектная модель

Четыре основные части функциональной модели с точки зрения объектной модели:

  • Process - Процессы подразумевают методы объектов, которые необходимо реализовать.

  • Actors - Актеры - это объекты в объектной модели.

  • Data Stores - Это либо объекты в объектной модели, либо атрибуты объектов.

  • Data Flows- Потоки данных к акторам или от них представляют собой операции с объектами. Потоки данных в хранилища данных или из них представляют собой запросы или обновления.

Функциональная модель и динамическая модель

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

Объектная модель и динамическая модель

Динамическая модель показывает состояние объектов и операций, выполняемых при возникновении событий и последующих изменениях состояний. Состояние объекта в результате изменений отображается в объектной модели.