Виды моделей программ и их представление в виде графов
Методология проектирования ПП
Лекция № 5
Проектирование (Functional design, Detailed design) - процесс преобразования задания на разработку (внешней спецификации) в задание на кодирование. Содержание процесса - построение, анализ и детализация моделей создаваемого ПП. Модель (в инженерном и научном смысле) - это упрощенное описание объекта или явления, в котором отражены те его свойства, которые существенны для целей его изучения или построения (от несущественных абстрагируемся!) - т.е., модель есть абстракция, и уместно говорить об уровнях абстракции. Чем выше уровень абстракции, тем более общая (краткая, обозримая), но зато и менее точная (детальная) модель. Вопрос 1.
Модели ПП описывают структуру и/или поведение будущей системы. Структура чего-либо - это состав (деление на компоненты) и связи (отношения) между компонентами. Строго описанная структура - это частный случай математической модели. Структура представляется наглядно в виде графа: вершины соответствуют компонентам, дуги - связям. Вопрос 2. Графовое и соответствующее графическое представление моделей способствует их наглядности, понятности (ср. чертежи в традиционных отраслях промышленности).
Основные традиционные виды моделей:
· Функциональная структура
Описывает подчиненность компонентов - функциональных блоков (ФБ): подсистем, модулей, фрагментов кода, реализующих определенные функции. Два вида подчиненности:
а) отношение часть-целое (отношение эквивалентности), тогда соответствующий граф - дерево иерархии ФБ
б) отношение вызывающий - вызываемый (для подпрограмм), тогда граф - гамак или более сложного вида.
· Алгоритмическая (процедурная) модель
Описывает алгоритм как последовательность шагов, т.е. отношение предшествования во времени (отношение частичного порядка) ФБ. Изображается блок-схемой алгоритма (Flow Chart, или схема потока управления) или в виде псевдокода. Вопрос 3.
· Информационная модель
Ее компоненты - порции информации: структуры данных, записи, файлы и, возможно, ФБ, их обрабатывающие. Два варианта:
А) Схема потока данных (Data Flow Diagram, DFD) описывает отношения на двух множествах: порций данных и ФБ. Избражается двудольным графом; дуги – отношения двух типов: «быть входными данными» и «быть выходными данными» – одновременно заменяют собой ФБ ввода / вывода или пересылки данных.
Б) Инфологическая (информационно-логическая) модель описывает логические отношения между объектами, отображаемыми в базе данных. Чаще всего это реляционная модель или модель «сущность-связь» (Entity-Relationship, ER-model) – исходная для построения схемы базы данных.
· Событийная структура (модель состояний и переходов)
Здесь компоненты – состояния системы, отношения – переходы между ними. Изображается диаграммой состояний и переходов (State-Transition Diagram, STD), причем дуги нагружены событиями, вызывающими переходы и, возможно, другими условиями.
Кроме того, в последние годы появились объектно-ориентированные модели, о которых – позже.
Пример:возможные модели программы пополнения словаря. Словарь – лексико-графически упорядоченный набор статей в файле А. Отдельно формируется файл D, содержащий неупорядоченный набор дополнений (новых статей). Программа объе-диняет файл D с А так, что файл А остается упорядоченным, а D – становится пустым.
1.
|
|
|
|
|
|
(ФБ "Сортировка-слияние" может состоять из более мелких блоков, и т.д.). Заметим, что из этой модели не очевидна последовательность выполнения компонентов, например, в данном примере порядок, в котором выполняется ввод А и D, а в более общем случае - выбор между компонентами и их повторение.
2. Алгоритмическая модель - блок-схема:
| |||
3. Схема потока данных:
Такая модель описывает взаимосвязь ФБ по данным: входным, выходным или общим (глобальным) переменным. Удобна для описания, например, автоматизированного документооборота в АСУ.
4. Диаграмма состояний и переходов:
|
Для различных видов ПП и их частей удобны различные виды моделей. Функциональная структура наиболее универсальна; она служит для функциональной декомпозиции проекта – расчленения на части с целью последующего разделения труда и этапности разработки. Например, в технологии Microsoft на основе внешней специ-фикации все основные функции ПП упорядочиваются по убыванию степени важности и разбиваются на 3-4 группы - подпроекты, работа над которыми будет вестись после-довательно. Каждый подпроект заканчивается выпуском промежуточной "контроль-ной" версии ПП (milestone release) в соответствии со спиральной моделью ЖЦ.
Алгоримическая модель (обычно на псевдокоде, С или Паскале) необходима для описания нетривиальных алгоритмов. Схемы потока данных лучше подходят для тех систем обработки данных, где вычисления тривиальны, а обмен – интенсивен. HIPO – технология фирмы IBM 70-х годов ("Hierarchical Input-Processing-Output”) полностью основывалась на DFD. В наши дни DFD применяются в CASE-системах проектирования корпоративных ИС: IDEF и BPwin. Интересно также применение DFD для разработки программ для суперкомпьютеров (см. Приложение; Вопрос 6.).
Модель баз данных “сущность-связь” – более общая и наглядная, чем реляционная. Она используется в популярной CASE ERwin. На рис. ниже – пример: фрагмент модели базы данных предприятия в нотации Чена. Прямоугольниками изображаются сущности, ромбами – отношения (связи).
Событийная модель удобна для описания реактивных (responsive) систем, к которым относятся системы реального времени и диалоговые программы. В них состояния соответствуют приостановке вычислений в ожидании некоторого события, вызывающего переход в другое состояние - в зависимости от вида события. Windows и другие ОС с оконным интерфейсом построены по такой модели и поэтому называются системами, продвигаемыми событиями (event-driven systems). Проекты сложных ПП обычно требуют описания несколькими видами моделей, взаимно дополняющими друг друга, и именно таков подход UML. (Многомодельность вообще характерна для описания сложных систем.) Однако смешение средств разных видов в одной модели недопустимо.