Научная статья на тему 'Анализ программного обеспечения на основе структурно-графического представления'

Анализ программного обеспечения на основе структурно-графического представления Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
308
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / СТРУКТУРНО-ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ / ГРАФ ПОТОКА ДАННЫХ / РАСПАРАЛЛЕЛИВАНИЕ ПРОГРАММ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Демин Антон Юрьевич, Рейзлин Валерий Израилевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Анализ программного обеспечения на основе структурно-графического представления»

ПРОБЛЕМЫ ИНФОРМАТИКИ № 4(12) 2011 г.

Журнал выходит ежеквартально, издается с 2008 г.

Учредитель журнала - Институт вычислительной математики и математической геофизики СО РАН

Редакционный совет

Председатель - акад. РАН Ю. И. Журавлев

Акад. РАН А. Л. Асеев, проф. С. Н. Бачевский, акад. АН РУ Т. Ф. Бекмуратов (Республика Узбекистан), проф. В. А. Васенин, акад. РАН С. Н. Васильев, проф. В. М. Вишневский, чл.-кор. РАН С. С. Гончаров, проф. С. М. Доценко, акад. РАН Ю. Л. Ершов, чл.-кор. РАН Ю. Б. Зубарев, акад. НАН КР, чл.-кор. РАН М. И. Иманалиев (Кыргызская Республика), проф. М. Н. Калимолдаев (Республика Казахстан), акад. РАО А. А. Кузнецов, акад. РАН Н. А. Кузнецов, чл.-кор. РАН А. П. Кулешов, проф. В. М. Лопаткин, проф. А. Г. Марчук, акад. РАН и РАО В. Л. Матросов, акад. РАН Б. Г. Михайленко, проф. В. К. Попков (зам. председателя), проф. Н. В. Пустовой, проф. Н. А. Семенов, проф. С. Г. Ситников, акад. РАН И. А. Соколов, проф. А. Н. Сотников, чл.-кор. РАН Ю. А. Флеров, чл.-кор. РАН В. Г. Хорошевский, проф. П. С. Чубик

Редколлегия

Главный редактор - проф. В. К. Попков

A. Г. Вострецов, В. А. Вшивков, Б. С. Гольдштейн, В. В. Губарев, В. И. Гужов, Н. Г. Загоруйко, Ю. М. Зыбарев, С. Д. Каракозов, М. М. Каримов, В. Н. Касьянов, А. В. Кельманов, О. В. Кибис,

B. В. Корнеев, И. В. Котенко, О. А. Логачев, А. И. Ляхов, Л. М. Макаров, Н. В. Медведев,

В. В. Окольнишников, Б. В. Поллер, А. С. Родионов, В. Д. Ролдугин, Н. И. Рыжова, Б. Я. Рябко, Ю. Г. Соловейчик, М. А. Сонькин, Г. А. Тарнавский, Я. И. Фет, В. В. Шахов (зам. гл. редактора), В. П. Шувалов, В. З. Ямпольский, Г. Г. Яновский, А. С. Ястребов

Журнал издается при содействии и финансовой поддержке следующих организаций: Институты РАН:

Институт проблем информатики РАН Университеты:

Новосибирский государственный технический университет

Сибирский государственный университет телекоммуникаций и информатики

Томский политехнический университет

Барнаульский государственный педагогический университет Санкт-Петербургский государственный университет телекоммуникаций Предприятия:

ООО "Инотех"' - Издательство (техническая редакция журнала)

Редакция: зам. гл. редактора по эл. версии журнала Г. В. Попков, зав. редакцией О. А. Марусина, отв. секретарь О. Г. Заварзина, корректор Л. Н. Ковалева, логист Л. В. Трофимова

Адрес редакции: 630090, г. Новосибирск, просп. Академика Лаврентьева, д. 6, ИВМиМГ СО РАН; тел. (383) 330-96-43; e-mail: problem-info@sscc.ru, http://www.problem-info.ru.

Журнал зарегистрирован в Федеральной службе по надзору в сфере массовых коммуникаций, связи и охраны культурного наследия. Свидетельство ПИ N ФС77-32088 от 27 мая 2008 г. Подписной индекс в каталоге "Издания органов научно-технической информации-2011'' ОАО «Агентство "Роспечать''» - 69980.

Все права авторов сохранены. Использование материалов журнала возможно только с разрешения редакции и авторов.

Отпечатано в типографии НГТУ. Адрес: 630092, г. Новосибирск, просп. К. Маркса, д. 20;

тел./факс (383) 346-08-57. Формат 60x84 1/8. Усл. печ. л. 11. Уч.-изд. л. 8,9. Печать офсетная. Тираж 500 экз.

Заказ N 128. Подписано в печать 07.12.11 г.

© Институт вычислительной математики и математической геофизики СО РАН, 2011

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

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

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

Данной проблематике была посвящена Международная научно-практическая конференция "Интеллектуальные информационно-телекоммуникационные системы для подвижных и труднодоступных объектов", которая состоялась в Томском политехническом университете. Конференция была приурочена к 20-летию группы компаний "ИНКОМ", которая является разработчиком и поставщиком ТРС для ряда федеральных структур и ведомств, а также для ряда регионов России.

Настоящий тематический выпуск содержит результаты исследований и разработок, выполненных сотрудниками группы компаний "ИНКОМ", а также сотрудниками, аспирантами и магистрами Института кибернетики ТПУ, предваряющие и (или) сопровождающие решения по построению телекоммуникационных систем связи, мониторинга и управления территориально распределенными системами.

Заместитель директора Института кибернетики Томского политехнического университета д-р техн. наук проф. В. З. Ямпольский

СОДЕРЖАНИЕ

Системная информатика

Демин А. Ю., Рейзлин В. И.

Анализ программного обеспечения на основе структурно-графического представления ....4 Малахова Е. С.

Автогенератор классов................................................................................................................14

Алыков А. Б.

Построение программного обеспечения системы оповещения и документированной

связи в ОС МСВС.........................................................................................................................21

Миньков А. С.

Архитектура специализированного программного обеспечения аппаратно-программного

комплекса "мобильная оперативная группа".............................................................................25

Печерская Е. И., СонькинМ. А., Гринемаер В. В.

Опыт создания и перспективы развития интегрированных систем оповещения

и документированной связи специального назначения..........................................................31

Тогидний Р. Л., Добродеева П. С., Назмутдинов Р. Б.

Особенности программных решений в системе автоматизированного сбора и передачи гидрометеорологической информации с применением измерительных комплексов..........41

Средства и системы обработки и анализа данных

Тогидний Р. Л., Иванова П. С., Шкуратов А. В.

Создание системы мониторинга пожарной опасности по условиям погоды........................49

Зарипов А. А., Тузовский А. Ф.

Разработка подсистемы хранения метаданных семантической информационной

системы .........................................................................................................................................55

Губин М. Ю., Разин В. В.,. Тузовский А. Ф

Применение семантических сетей и частотных характеристик текстов на естественных языках для создания семантических метаописаний................................................................62

Нгуен Т. Т.

Метод распознавания фигур с использованием фурье-дескрипторов и нейронной сети ....68 Болотова Ю. А., Спицын В. Г.

Применение модели "память-предсказание" к решению задачи распознавания образов ...74 Нгуен Т. Т.

Обнаружение руки в режиме реального времени в видеопотоке с помощью

признаков Хаара и АёаЬоов1;-классификатора..........................................................................80

Тхи Тху Чанг Буй, Нгок Хоанг Фан, Спицын В. Г.

Классификация изображений на основе применения цветовой информации,

вейвлет-преобразования Хаара и многослойной нейронной сети .........................................85

Хамухин А . А .

Математическая модель ячейки однородной структуры для вычисления непрерывного вейвлет-преобразования..............................................................................................................91

Завьялов Д. А., Захарова А. А.

Пре- и постпроцессинг геологических и гидродинамических моделей месторождений нефти и газа..................................................................................................................................98

Вычислительные и сетевые ресурсы

Тараканов Е. В.

Повышение надежности доставки приоритетных пакетов данных в сенсорных сетях .... 106 Сонькин Д. М., Шкуратов А. В., Саврасов Ф. В., Миньков А. С.

Универсальный интерфейс для аппаратно-программной платформы мобильных

объектов систем мониторинга и управления транспортом..................................................112

Ройтман М. С.

Прецизионные делители напряжения (состояние и задачи)................................................119

Рыбин Ю. К.,. ПушныхМ. А, Салих С. С. M.

Разработка средств сбора информации на основе NI DIGITAL ELECTRONICS FPGA BOARD.......................................................................................................................................124

Информатика безопасных систем

Грязнов Г. И., Ковин Р. В.

Система удаленного доступа к корпоративной геоинформационной системе в режиме офлайн на платформе Windows mobile...................................................................................134

Моделирование в системах информатики

Захарова А. А., Иванов М. А., Ямпольский В. З.

Программные средства повышения эффективности гидродинамического

3D-моделирования месторождений нефти и газа..................................................................141

Звигинцев И. Л., Григорьев В. П.

Оптимизация параметров низкоэнергетического сильноточного электронного пучка для эффективной транспортировки его в аргоне при низком давлении.............................147

Информационные ресурсы и системы

Ротарь В. Г., Лукьянец А. А., Чернов А. Г.

Перспективы применения современных информационно-коммуникационных систем

в управлении коммунальным комплексом города.................................................................153

Пономарев А. А., Игумнов А. О.

Реализация подсистемы ГИС в среде МСВС информационно-телекоммуникационного

комплекса оповещения и связи................................................................................................161

Шестаков Н. А.

Позиционирование объектов в дорожной сети в системах мониторинга городского транспорта..................................................................................................................................170

Лещик Ю. В., Комлев А. Н.

Внедрение ГИС-технологий в специализированные информационные системы

для решения аналитических задач............................................................................................178

КопновМ. В., Марков Н. Г.

Геоинформационная система для восстановления пространственно-временных геополей......................................................................................................................................183

Информационные проблемы математического моделирования

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Володин Е. М., Захарова А . А .

Применение суперкомпьютеров при моделировании нефтегазовых месторождений.......191

АНАЛИЗ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ НА ОСНОВЕ СТРУКТУРНО-ГРАФИЧЕСКОГО ПРЕДСТАВЛЕНИЯ

А. Ю. Демин, В. И. Рейзлин

Институт кибернетики Национального исследовательского Томского политехнического университета, 634034, Томск, Россия

УДК 681.322:621.391

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

Ключевые слова: программное обеспечение, структурно-графическое представление, граф потока данных, распараллеливание программ.

The algorithms of making structure-graphical images of software based on the content of programs were introduced. To evaluate the complexity index according to the criterion of connectivity the special information graph is proposed to be used (called a graph of data flow GDF). Introducing software in GDP allows to solve the task of program paralleling on memory. So, the algorithm of GDF reconstructing into a tier parallel structure was developed and implemented.

Key words: software, structural and graphical representation of data flow graph, program paral-lelization.

В настоящее время при разработке любого программного обеспечения (ПО) используются методы анализа структуры ПО и его структурного проектирования. Высокий уровень развития вычислительной техники позволяет выполнять проектирование ПО на основе структурно-графического представления, в результате чего улучшаются такие свойства программ, как понимаемость, эффективность, сопровождаемость и т. д. Кроме того, на основе структурно-графического представления можно проводить анализ таких свойств, как распараллеливание и оптимальность ПО, а также подготовку ПО к тестированию и т. д. В то же время описанные в литературе графовые модели, отражающие структуру программы, являются ограниченными [1-4]. Например, схемы алгоритма и управляющих связей описывают только управляющие связи и не дают представления о вложенности структур и схеме изменения данных в программе.

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

Приведем основные определения структурно-графических представлений ПО.

Определение 1. Деревом типов данных называется связанный ациклический граф D=(T, U), где T - множество вершин, соответствующих типам данных; U - множество дуг, отображающих связи построения типов.

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

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

Ниже приводится алгоритм анализа текстового представления типов данных и построения соответствующего дерева типов данных.

Алгоритм 1 (алгоритм анализа типа данных).

Шаг 1. Установить i=0, T=0, U=0.

Шаг 2. Читать входную строку символов.

Шаг 3. Если встретилось ключевое слово, описывающее сложные типы данных, то создать объект t, соответствующего класса. Иначе перейти к шагу 5.

Шаг 3. Если i=0, то создать временную переменную PROM=tj, T=T^ tj, i=i+1. Перейти к шагу 2. Иначе перейти к шагу 4.

Шаг 4. T=T^t,, U=U^(PROM, tt), PROM=t,, j=j+1. Перейти к шагу 2.

Шаг 5. Если встретилось ключевое слово, соответствующее простым типам, то создать объект t, из класса скалярных типов. T = T^t,. U = U^>(PROM, t,). i=i+1. Перейти к шагу 2. Иначе перейти к шагу 6.

Шаг 6. Если считано слово, описывающее уже встреченный тип данных, то в T найти уже существующую вершину для этого типа и достроить дерево аналогичной ветвью. Перейти к шагу 2. Иначе перейти к шагу 7.

Шаг 7. Если построение ветви дерева типа данных для сложного типа закончено, то установить PROM на предшествующую рассмотрению вершину и попытаться построить остальные ветви с помощью шагов 2-6.

Шаг 8. Повторять шаг 7 до тех пор, пока не будет полностью построено дерево типа данных.

Шаг 9. Конец.

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

Определение 3. Всеобщим деревом данных называется связанный ациклический граф E = (D', W, е0), где е0 - корень дерева; D' - множество деревьев типов данных; W - множество ребер, связывающих корни деревьев типов данных с вершиной е0.

Определение 4. Деревом структурных операторов называется ациклический связанный граф S=(O, U, o0), где O - множество вершин, соответствующих операторам; o0 - корень дерева; U - множество дуг, определяющих структуру вложенности операторов друг в друга.

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

Алгоритм 2 (алгоритм анализа структуры операторов).

Шаг 1. Создать объект для вершины o0. Ввести программную переменную PROM. Установить PROM = oo, i = 0.

Шаг 2. Читать входную строку до тех пор, пока не встретится лексема, соответствующая какому-либо оператору или данным.

Шаг 3. Если прочитанная лексема соответствует ключевому слову, создать объект для вершины oi, соответствующий найденному оператору, определить его тип. Установить O = O u oi, U = U u (PROM, oi), PROM = oi, i=i+1. Запомнить для oi начало в тексте программы. Перейти к шагу 2.

Шаг 4. Если полученная лексема соответствует логическому условию в сложносоставном операторе, то создать вершину oi , считая это условие простым оператором. Установить O=Ou>Oi, U=Uu(PROM, Oj), PROM=Oj, i=i+1. Определить начало для oi. Перейти к шагу 2. Иначе перейти к шагу 5.

Шаг 5. Если полученная лексема соответствует данным, определить свойства данных: используются или изменяются либо используются и изменяются в данном выражении. Добавить в список данных объекта PROM ссылку на объект, соответствующий данным. Перейти к шагу 2, иначе - к шагу 6.

Шаг 6. Если полученная лексема описывает окончание структурного оператора, но не конец программы, запомнить, где закончился оператор PROM. Установить PROM на предшествующую вершину oi-1. Перейти к шагу 2, иначе - к шагу 7.

Шаг 7. Если лексема соответствует концу тела, запомнить, где закончился оператор PROM. Конец.

Определение 5. Дерево процедур и функций - связанный ациклический граф P=(Q, U, p0), где Q - множество вершин, соответствующих процедурам и функциям; p0 - корень, соответствующий головной программе; U - множество дуг, задающее отношение вложенности подпрограмм, т. е. для подпрограмм i и j (i j существует дуга (i, j)eU, если подпрограмма j описана внутри подпрограммы i.

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

Алгоритм 3 (алгоритм анализа структуры подпрограмм).

Шаг 1. Создать объект, соответствующий вершине p0. Ввести промежуточную переменную PROM. Установить PROM = p0, i=0.

Шаг 2. Читать входную строку до тех пор, пока не встретится какая-либо лексема. Шаг 3. Если встреченная лексема является описанием подпрограммы (procedure или function), то создать объект соответствующего вида qi, qi включить в Q, дугу (PROM, qi) - в U: Q=Quqi, U=Uu(PROM, qi). Установить PROM=qi, i=i+1. Читать и заполнять имя подпрограммы, список формальных параметров. Перейти к шагу 2.

Шаг 4. Если встреченная лексема соответствует описанию данных, то перейти к анализу данных, используя шаг 1. Определить указатель в объекте PROM на всеобщее дерево данных, полученное в результате работы этого алгоритма. Определить список внутренних переменных и поставить им в соответствие вершины в полученном всеобщем дереве данных. Перейти к шагу 2.

Шаг 5. Если полученная лексема описывает начало тела подпрограммы, то применить алгоритм 2 для анализа структуры операторов. Определить указатель для объекта PROM на полученное дерево разбора. Установить PROM на вершину q, такую что 3(q,PROM) ^U. Перейти к шагу 2.

Шаг 6. Если полученная лексема описывает тело основной программы, то аналогично шагу 5 использовать алгоритм 2. Установить указатель в объекте PROM на полученное дерево разбора.

Шаг 7. Конец.

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

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

Определение 6. Схема паскаль-модулей есть связанный граф M=(B, U, mo), где B - множество вершин, поставленных в соответствие паскаль-модулям; m0 - вершина, соответствующая головной программе; U - множество дуг, соответствующих межмодульным связям. При этом (i, j)e U, если в модуль i в предложении USES включено имя модуля j.

Определение 7. Деревом классов называется связанный ациклический граф C=(K, R, P, U, k0), где K- множество вершин, поставленных в соответствие классам; k0 - корень дерева, соответствующий классу-предку, который является базовым для всех других классов; R - множество вершин, соответствующих полям классов; P - множество вершин, соответствующих методам классов; U - множество дуг, задающих отношения наследственности и принадлежности полей и методов определенным классам.

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

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

Определение 8. Динамически строящимся деревом для дерева Y=(X, U) называется дерево Y'=(X', U) где XtX; UtU, при этом дерево Y называется деревом-прототипом.

Определение 9. Динамически строящееся дерево Y'=(X', U') является полностью свернутым, если U'=0, X'={x0'}, x0' соответствует корню дерева-прототипа.

Определение 10. Динамически строящееся дерево Y'=(X', U) является полностью развернутым, если U'=U, X'=X для дерева-прототипа Y=(X, U).

Первоначально динамически строящееся дерево отображается в полностью свернутом состоянии, а затем достраивается вершинами, соответствующими вершинам дерева-прототипа.

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

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

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

Положение 1. Множество вершин Ь'={7'}, являющихся листьями динамически строящегося дерева У'=(Х', V) для дерева структурных операторов (х/ еХ'лЬ'^ X', но —13(7/, Х/^еЦ7), соответствует множеству фрагментов текста программы, полностью покрывающих исполняемую часть программы.

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

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

Определение 11. Блок-схема - ориентированный граф Н=(К, V, п0) с вершинами специального вида, соответствующий следующим условиям:

1) граф О имеет единственную входную вершину п0, и в эту вершину не входит ни одна дуга;

2) граф О не содержит параллельных дуг и петель;

3) конечное множество дуг Ц={и/}, ]=1,...,¥ отражает отношение предшествования по выполнению между операторами программы;

4) конечное множество вершин К={пи}, ¡и=0,...,Ыпредставляет собой совокупность операторов В = {¿и}, ¡и=0,...,Ы программы, между которыми существует взаимно однозначное соответствие (каждая вершина представляется только одним оператором программы, и наоборот, каждый оператор программы в графе представляется только одной вершиной);

5) конечное множество вершин К={пи}, ¡и=0,...,Ы представляет собой совокупность слож-носоставных операторов В'={Ъ'и}, ¡и=0,...,Ы программы, причем между ними существует взаимно однозначное соответствие. Поскольку любой вершине пи соответствует сложносоставной оператор, она представляет собой группу простых операторов;

6) для изучения информационных связей в ПО строится граф потока данных.

Определение 12. Графом потока данных называется ориентированный граф Я=(К, Б, V),

где N - множество вершин, соответствующих сложносоставным операторам, представленным в виде листьев динамически строящегося дерева; Б - множество вершин, соответствующих данным, используемым в программе, причем единице данных могут быть поставлены в соответствие несколько вершин; V - множество дуг, таких что 3($, п/)еЦ, если феБ используется в п/еК, либо если феБ изменяется в п/еК

Определение 13. Множество вершин N из Я, соответствующих сложносоставным операторам, будем называть переходами, а множество вершин Б из Я, соответствующих данным, - позициями.

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

Оценку качества ПО предлагается проводить на основе системы критериев, приведенной на рисунке.

Система критериев оценки качества ПО

Часть свойств (информативность, структурированность, оптимизируемость), по которым возможно оценить ПО с помощью экспертных оценок, определены в [1]. Дадим определения свойствам ПО, которые можно оценить автоматически с помощью введенных коэффициентов.

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

Определение 15. Вложенность - свойство программы, заключающееся в возможности вложения элементов друг в друга.

Определение 16. Связанность - способность программы устанавливать информационные связи между отдельными компонентами.

Определение 17. Распараллеливаемость - свойство программы, определяющее возможность ее параллельного выполнения на многопроцессорной вычислительной системе (МВС) или распределенной системе реального времени (СРВ).

Для оценки качества по критерию вложенности используется представление ПО в форме деревьев.

Определение 18. Коэффициент вложенности уТ для дерева Т=(Ы, и, п0) - максимальная

длина пути от корня дерева п0 к его листьям {/}еЫ: УТ = тахр[п0,], если У/—13(/, щ)еи.

1

Введем операцию присоединения деревьев друг к другу и покажем монотонность и транзитивность коэффициента вложенности для введенной операции.

Определение 19. Присоединением дерева Т2=(Ы2, и2, п20) к дереву Т1=(Ы1, и1, п10) по вершине п1 к (п1 кеМ) называется дерево Т3=(#3, и3, п30), Т3=Т1 ФкТ2, полученное следующим образом:

1) вершина п1 к дерева Т1 совмещается с корнем дерева п20 (п1 к=п20);

2) множество дуг дерева Т3 является объединением множеств дуг деревьев Т1 и Т2

(^3=^1 ^2);

3) К3=К1 ^N2.

Положение 2. Если дерево Т3 получено в результате присоединения дерева Т2 к дереву Т1 по любому к, то коэффициент вложенности уТ3 для дерева Т3 больше или равен коэффициенту вложенности уТ 1 для дерева Т1 и больше или равен коэффициенту вложенности уТ2 для дерева Т2. Если У к Т3=Т1 Фк Т2, то уТ 3 > уТ 2 луТ 3 >уТ 1.

Положение 3. Если коэффициент уТ2 для дерева Т2 больше коэффициента вложенности уТ 1 для дерева Т1 и коэффициент вложенности уТ3 для дерева Т3 больше коэффициента вложенности для дерева Т2, т. е. уТ 1<УТ2луТ2<уТ3, то уТ 1<у3.

Также для оценки вложенности можно ввести средний коэффициент вложенности.

Определение 20. Средним коэффициентом вложенности и для дерева Т=(К, V, п0) называется величина, пропорциональная сумме длин всех путей из корня п0 дерева Т к его листьям {/ }=К и обратно пропорциональная количеству этих путей:

N

7]

и = - У/—3(/г, п}) е и.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

N

Для среднего коэффициента вложенности не выполняется условие монотонности.

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

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

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

£ = ^ р К, пт ] при & (п0 )=0л</ (пт )=0.

1

Определение 22. Цикломатическим коэффициентом сложности программы, представленной в виде блок-схемы H=(N, и, п0) для полностью развернутого динамически строящегося дерева структурных операторов, называется величина Л=Х-У+Ь (Х=|Ц| - количество ребер в блок-схеме; - количество вершин (вместе с п0); Ь - число связанных компонент). Для блок-

схемы, представляющей собой безошибочную программу, Ь=1.

Определение 23. Суммой двух блок-схем И^^]^, и1, п01) и И^^2, и2, п02) называется блок-схема И3=(N3, и3, п03)=И1 ФИ2, полученная в результате выполнения следующего алгоритма.

Алгоритм 4 (алгоритм сложения блок-схем).

Шаг 1. Исходные данные: И1=(N1, и1, п01), И2=(N2, и2, п02), где N1, N2 - множества вершин; п01, п02 - начальные вершины; и1, и2 - множества дуг. Пусть пк 1, пк2 - конечные вершины.

Шаг 2. Добавить в Н3 все вершины из Н1, кроме конечной вершины:

N3 = и п/1 при ^ (пг 1) ^0 У/.

Шаг 3. Добавить в Н3 все вершины из Н2, кроме начальной вершины:

N3 = N3 и У пЛ при d(п, 1 )тО V/.

Шаг 4. Добавить в Н3 все дуги из Н1, кроме дуг, один конец которых находится в конечной вершине:

Шаг 7. Конец.

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

Положение 4. Цикломатический коэффициент сложности Х3 блок-схемы H3, полученной в результате суммирования двух блок-схем H1 и H2, равен сумме цикломатических коэффициентов сложности и блок-схем H1 и H2.

Введенная оценка сложности логической структуры ПО через цикломатический коэффициент сложности является аддитивной. Из свойства аддитивности следует монотонность.

Для оценки связанности используется структурно-графическое представление ПО в виде графа потока данных (ГПД).

Определение 24. Коэффициентом связанности программы, представленной в виде ГПД R = (N, P, U), называется величина Д равная числу дуг в этом графе: Д= |U|.

Положение 5. Коэффициент связанности Д для ГПД, построенного из суммы двух программ, больше или равен сумме связанности каждой программы Д и Д.

Таким образом, согласно критерию связанности введенный коэффициент связанности применим для оценки качества ПО.

В настоящее время ни одно применяемое или разрабатываемое вычислительное средство не рассматривается без учета возможности использования новых резервов распараллеливания работ. Успешное применение МВС, в том числе распределенных СРВ, невозможно без создания соответствующего ПО (ArcGIS: Complete Integrated System. [2010-2010]. http:// www.esri.com/ software/arcgis/index.html), поэтому актуальной задачей является определение возможности распараллеливания ПО.

/

Шаг 5. Добавить в Н3 дуги, соответствующие дугам в Н1, которые заходят в пк 1:

U3 = U3 и У (пг1,nj2) при Г+(п, 1)=nk 1 Vn, 1, n2^Г+(п, 1) Vj.

j

Шаг 6. Добавить в H3 дуги из H2, не берущие начало в п02:

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

Определение 25. Подмножества 0/ множества О называются ярусами, причем множество операторов 01 первого яруса тождественно множеству информационно независимых операторов. Множество операторов 02 второго яруса тождественно множеству операторов, информационно зависящих хотя бы от одного оператора первого яруса. Множество операторов О /-го яруса тождественно множеству операторов, информационно зависимых хотя бы от одного оператора (/-1)-го яруса. Также для любого яруса выполняются условия 0г-0г-пО/=0 (// У/.

Определение 26. ГПД, соответствующий упорядочиванию функциональных операторов по ярусам, отвечающим подмножествам 01, 02, ..., 0г-, ... множества О, называется ГПД в ярусно-параллельной форме (ЯПФ).

Для получения ГПД в ЯПФ предложен следующий алгоритм.

Алгоритм 5 (алгоритм перестроения ГПД в ЯПФ).

Шаг 1. Упорядочить множество переходов N так чтобы каждый переход занимал отдельный ярус от 0 до N и порядок переходов не противоречил порядку выполнения соответствующих операторов. Установить /=1.

Шаг 2. Пронумеровать все переходы в соответствии с занимаемыми ярусами.

Шаг 3. Если для перехода п/ выполняется условие Г+ (п/)п^(пу-)т0 для любого п, принадлежащего предшествующему ярусу, то перейти к шагу 9.

Шаг 4. Если для перехода п/ выполняется условие Г+ (п/)пГ+ (п/)т0 для любого п, принадлежащего предшествующему ярусу, то перейти к шагу 9.

Шаг 5. Если для перехода п/ выполняется условие Г"(пг-)пГ+ (п/)А0 для любого п, принадлежащего предыдущему ярусу, то перейти к шагу 9.

Шаг 6. Исключить переход п/ с яруса 0к=0к\п/, которому он принадлежал. Включить переход п, на предыдущий ярус 0к-1=0к- 1 ип,.

Шаг 7. Если ярус, на котором находился переход п/, пуст (О=0), то У/ /=/+1,..^ выполнить операцию переноса перехода на предыдущий уровень 0к+(/-/)=0к+(/-/)\п/-; 0к+(/-/)+1 =

Ок + О-/) + 1 .

Шаг 8. Перейти к шагу 3.

Шаг 9. Увеличить / (/=/+1). Если />N1, то перейти к шагу 10, иначе - к шагу 3.

Шаг 10. Конец.

Список литературы

1. САРКИСЯН А. А. Повышение качества программ на основе автоматизированных методов. М.: Радио и связь, 1991. 160 с.

2. КОВАЛЕНКО Д. А. Методы и средства автоматического синтеза параллельных программ на базе теории структурных функциональных моделей // Изв. Том. политехи. ун-та. 2008. Т. 312, № 5. С. 39-44.

3. ТАРНАВСКИЙ Г. А., Корнеев В. Д., Вайнер Д. А. и др. Вычислительная система "Поток 3": опыт параллелизации программного комплекса. 1. Идеология распараллеливания // Вычисл. методы и программирование. 2003. Т. 4. С. 33-44.

4. ХОЖАЙНОВА С. А. Многоуровневое представление программ и его использование в автоматическом распараллеливании // Мат. моделирование. 1997. Т. 9. № 2. С. 31-33.

5. ШТЕЙНБЕРГ Б. Открытая распараллеливающая система // Открытые системы. [Электрон. ресурс]. 2007. № 9. http://www.osp.ru/os/2007/09/4567122/.

Демин Антон Юрьевич - канд. техн. наук, доц. Института кибернетики Томского политехнического университета; тел.: (382-2) 42-63-34; e-mail: ad@tpu.ru;

Рейзлин Валерий Израилевич - канд. физ.-мат. наук, доц. Института кибернетики Томского политехнического университета; тел.: (382-2) 42-63-34; e-mail: vir@tpu.ru.

Дата поступления - 02.11.11

i Надоели баннеры? Вы всегда можете отключить рекламу.