МЕТОДЫ СИНТЕЗА СТРУКТУР ПРОГРАММНЫХ СИСТЕМ

Болонкин А. В.,
аспирант,
 МТУСИ (г. Москва),
ИПУ РАН (г. Москва)

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

На практике применяются два основных подхода к построению моделей программных систем — графический и формальный. Целью данной работы является сравнительный анализ подходов с перспективой развития и оптимизации существующих методов синтеза структур программных систем.

 

1. Графический подход

К данному подходу относятся методы на основе DFD, IDEF-SADT, EPC, UML. Они используют диаграммы для представления модели программной системы. Большинство данных методов стандартизовано, имеет большую историю развития и применения [5].

DFD

В основе DFD (Data Flow Diagrams) лежат диаграммы потоков данных. Модель системы в контексте DFD представляется в виде информационной модели, компонентами которой являются потоки данных, переносящие информацию от одной подсистемы к другой. Каждая из подсистем выполняет определенные преобразования входного потока данных и передает результаты обработки информации в виде потоков данных для других подсистем. Основными компонентами диаграмм потоков данных являются внешние сущности, накопители данных, процессы, потоки данных и системы/подсистемы. Информационная модель системы строится как иерархическая схема в виде контекстной диаграммы, на которой исходная модель представляется в виде модели подсистем соответствующих процессов преобразования данных. В настоящее время диаграммы потоков данных используются в некоторых CASE-средствах для построения информационных моделей систем обработки данных.

Достоинства: акцент на использовании данных в системе, наглядность диаграмм.

Недостатки: отсутствие явных средств для объектно-ориентированного представления моделей сложных систем и представления сложных алгоритмов обработки данных.

 

IDEF-SADT

Начало разработки диаграмм функционального моделирования относится к середине 1960-х годов, когда Дуглас Т. Росс предложил специальную технику моделирования, получившую название SADT (Structured Analysis & Design Technique). Военно-воздушные силы США использовали методику SADT в качестве части своей программы интеграции компьютерных и промышленных технологий (Integrated Computer Aided Manufacturing, ICAM) и назвали ее IDEF0 (Icam DEFinition), которая впоследствии выросла в семейство стандартов IDEF, включающее в себя более десятка стандартов анализа и проектирования. В данном случае основной акцент делается на стандарт IDEF0 [2], поскольку именно он является основой IDEF, наиболее широко известен и имеет распространение.

Достоинства: использование функционального подхода, наглядность диаграмм, четкий синтаксис и семантика диаграмм, возможность декомпозиции диаграмм и моделирование иерархии процессов.

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

 

EPC

Метод EPC (Event-driven Process Chain — Событийные цепочки процессов) был создан в рамках методологии ARIS (Architecture of Integrated Information Systems — Архитектура интегрируемых информационных систем), разработанной компанией IDS Scheer AG (Германия) для структурированного описания, анализа, последующего совершенствования бизнес-процессов предприятия и управления ими, а также подготовки к внедрению сложных информационных систем.

EPC основан на использовании направленных графов событий и функций, которые соединены связями, задающими условное и параллельное выполнение процессов. Кроме этого, EPC определяет использование логических операторов, таких как OR, AND и XOR. Основное преимущество EPC заключается в его простоте и наглядности, что позволяет широко использовать данный метод для описания бизнес-процессов. В то же время EPC и ARIS содержат в себе огромное количество различных элементов, которые затрудняют процесс моделирования, хотя и упрощают понимание моделей.

Достоинства: использование процессного подхода, наглядность диаграмм.

Недостатки: слабая формализация синтаксиса и семантики диаграмм, сложность процесса моделирования, направленность на описание бизнес-процессов.

 

UML

Унифицированный язык моделирования (UML) [3—5] является стандартным инструментом для визуализации, специфицирования, конструирования и документирования артефактов программных систем.

Первая версия стандарта UML вышла в 1997 г., а в 2004 г. был утвержден стандарт UML 2.0 [4]. В основе UML лежит объектно-ориентированный подход (ООП), целью применения которого является выделение объектов, задействованных в процессе, и распределение между ними ответственностей за выполняемые действия. Словарь языка UML включает три вида строительных блоков: сущности, отношения и диаграммы.

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

Недостатки: слабая формализация синтаксиса и семантики диаграмм, некоторая сложность для понимания диаграмм пользователям, не знакомым с ООП.

 

Более подробно графические подходы, их сравнение друг с другом и использующих их инструментов рассматриваются в работе [1].

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

Таким образом, можно подвести следующие итоги по графическому подходу. Достоинствами являются простота и наглядность моделей для пользователя, стандартизация методов, их связь с моделированием бизнес-процессов. Недостатками графического подхода можно назвать слабую формализацию методов (EPC, UML), смешение связей по данным и управлению (IDEF-SADT), слабо выраженную временную последовательность (DFD, IDEF-SADT).

 

 

2. Формальный подход

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

 

Теория множеств

Основанная на языке диаграмм английского логика Джона Венна теория множеств содержит в себе мощный математический аппарат, определяющий понятие сравнения множеств, подмножества и надмножества, операции над множествами (объединение, пересечение, разность, симметрическая разность, дополнение, декартово произведение). Кроме этого, введены понятия мощности множества и отношения множеств.

В проектировании программных систем теория множеств имеет большое значение при создании структур данных, структур систем, делении системы на компоненты и модули. Математический аппарат теории множеств позволяет провести формальное определение и вывод данных понятий.

Достоинства: простая для понимания и наглядная математическая абстракция, четкий синтаксис и семантика.

Недостатки: сложность представления взаимосвязей, необходимость использования теории множеств в совокупности с другими методами для моделирования структуры системы.

 

Теория графов

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

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

В теории графов разработаны методы анализа отдельных классов графов. Одним из методов, который может быть применен для построения структуры системы, является алгоритм решения задачи о кратчайшем пути, которая сводится к нахождению минимальных путей во взвешенном графе от одной вершины до всех остальных. Известны различные реализации алгоритма решения этой задачи: волновой алгоритм, алгоритм Дейкстры, алгоритм Беллмана-Форда, алгоритм Флойда и другие. Существуют работы по синтезу структур программных и аппаратных систем на основе алгоритма решения задачи о кратчайших путях [6]. С помощью этого алгоритма производится построение оптимальной структуры системы на основе данных о характеристиках ее составных частей.

Достоинства: наглядное представление элементов системы и связей между ними, четкий синтаксис и семантика.

Недостатки: отсутствие возможности отображения динамики системы, акцентирование внимания на понятии состояний.

 

Конечные автоматы

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

M = (K, S, p, s, F),

где K — конечное множество состояний автомата, ΠK — единственно допустимое начальное состояние автомата, Ì K — множество конечных состояний, причём допустимо F = Æ, и F = K, Σ — допустимый входной алфавит, из которого формируются строки, считываемые автоматом, p: ´ S ® K — функция переходов. Автомат начинает работу в состоянии s, считывая по одному символы входной строки. Считанный символ переводит автомат в новое состояние из K, в соответствии с функцией переходов. Процесс продолжается до тех пор, пока не будет достигнуто одно из состояний F.

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

Достоинства: наглядное представление элементов системы и связей между ними, четкий синтаксис и семантика.

Недостатки: ограниченные возможности отображения динамики системы, акцентирование внимания на понятии состояний.

 

Сети Петри

Отдельное направление в теории графов, которое связано с явным включением семантики в традиционные обозначения, получило самостоятельное развитие в форме семантических сетей. Одним из методов, относящихся к классу семантических сетей, являются сети Петри [7].

Сети Петри — это математическая дисциплина, основанная на классической теории графов и являющаяся расширением теории конечных автоматов. Она возникла в 60-х годах ХХ века и с тех пор постоянно развивается. В рамках этого подхода рассматривались различные версии и модификации сетей Петри (под разными названиями). Независимо предполагались также формализмы, которые оказывались эквивалентными по своим свойствам и возможностям сетям Петри. На основе одного из вариантов сетей Петри (High-level Petri Nets) в настоящее время создается международный стандарт ISO/IEC 15909 [8]. Сети Петри — сложная, хорошо развитая теория, в ней строго определены такие понятия, как состояния, условия, переходы и т. п. Она включает также графическую нотацию (систему графических обозначений, с помощью которых можно изображать соответствующие графы). Эта область хорошо исследована математиками: установлены многие свойства сетей Петри, доказаны важные теоремы.

Практическое использование теории сетей Петри в основном было связано с описанием поведения сложных систем, например элементов интегральных схем. Существует немало работ, которые используют сети Петри для описания и исследования алгоритмов работы программных систем (например, [9, 10]), и, на наш взгляд, данный подход предлагает удобную формализацию системы с целью ее последующего моделирования.

Достоинства: предоставляют возможность математически строгого описания системы с разделением состояний и процессов (переходов).

Недостатки: большой объем модели в случае моделирования сложных систем, сложность графической нотации для понимания.

 

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

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

– модель системы должна быть наглядной, интуитивно понятной и в то же время строго формализованной;

– модель системы должна обладать свойством иерархичности в целях удобства ее представления;

– разбивку системы на локальные алгоритмы следует производить в соответствии с используемыми данными;

– необходимо различать связи по данным и по управлению;

– расчет общих характеристик и свойств системы следует вести на основе характеристик локальных алгоритмов;

– модель системы должна отражать динамику системы и четкую временную последовательность процессов.

Разработку метода синтеза и его описание планируется изложить в будущих работах.

 

1.       Болонкин А. В. Сравнительный анализ технологий системного проектирования. Сборник статей международной конференции «CAD/CAM/PDM-2005». — М.: ИПУ РАН, 2005

2.       Integration Definition for Function Modeling (IDEF0). Draft Federal Information Processing Standards Publication. 1993. — 128 p.

3.       Буч Г., Рамбо Дж., Якобсон А. Язык UML. Руководство пользователя. — М.: ДМК, 2001. — 432 с.

4.       Unified Modeling Language: Infrastructure. Version 2.0. 2005

5.       Леоненков А. В. Самоучитель по UML. — BHV–Санкт-Петербург, 2004. — 432 с.

6.       Артамонов Е. И., Хачумов В. М. Синтез структур специализированных средств машинной графики. - М.: ИПУ РАН, 1991

7.       Котов В. Е. Сети Петри. — М.: Наука. 1984. — 160 с.

8.       High-level Petri Nets — Concepts, Definitions and Graphical Notation. Final Draft International Standard ISO/IEC 15909. 2000

9.       Maciel P., Barros E., Rosenstiel W. A Petri Net Model for Hardware/Software Codesign // Design Automation for Embedded Systems. — 1999. #4. — P. 243–310

10.   Shinkawa Y. A Formal Approach to Software Composition in Component Based Software Development. — The University of Tsukuba, 2000