Б-стилизованные рекурсивные диаграммы


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

Для суперпозиции допустимых структур, не требуется применение операторов GOTO поэтому, структурное программирование называется еще программированием “без GOTO”. Структурные программы, в отличие от программных, имеют простую, древовидную архитектуру, легко читаются и модифицируются. В структурной программе, нет клубка переходов вперед-назад, нет латок. Это достигается, как преобразованием программы по нисходящей схеме, так и тем, что на этапе проектирования созданы некоторые, искусственные трудности – запрещено использовать оператор GOTO, конструирование программ разрешено проводить только с использованием допустимых структур. Эти трудности удлиняют процесс проектирования программы, что приводит к ее дополнительной проработке, а так же структурированная программа, требует больше ресурсов ЭВМ (памяти и времени) по сравнению с неструктурированной программой. Но на структурированной программе, появляется возможность провести формально доказательство правильности процесса ее проектирования, а так же резко сократить процесс отладки, а, следовательно, сократить и весь процесс изготовления программ.

Теоретическая основа структурного программирования, допускает реализацию его принципов на многих современных языках систем программирования. Исключительными средствами реализации структурного программирования, являются системы программирования – Алгол и ПЛ/1. Системы программирования Кобол и Фортран, по мнению многих сторонников структурного программирования не достаточны, для формализации структуры, не содержащей операторов GOTO.

8.5. HIPO – технология

HIPO–технология – это многоуровневая дисциплина проектирования и документирования программ. В HIPO – технологии, для этой цели применяются три типа диаграмм (рис.20). Первый тип диаграмм – вспомогательный (рис.20, а) – он играет роль, аналогичную оглавлению всего проекта. Диаграммы первого типа заполняются в конце процесса проектирования, при оформлении документации и в самом процессе, активно, не участвуют. Второй тип диаграмм задает иерархию связи и сборки диаграмм третьего типа (рис.20, б). Диаграммы третьего типа являются основными в HIPO–технологии и предназначены для описания входа, выхода и процесса обработки информации (рис.20в). Эти диаграммы называются IPO – диаграммами.

В IPO–диаграммах выделены три колонки. В первой колонке, слева, записывается входная информация, в последней – выходная, а в средней, описан процесс обработки информации (алгоритм) (рис.20,в) язык заполнения IPO–диаграмм не оговаривается и может быть любым. В этом языке называется “что” делает каждый программный модуль на данном уровне проектирования. Каждая IPO–диаграмма, соответствует одному уровню (этапу, шагу) проектирования. На одной диаграмме может быть не более 6 – 7 программных блоков, уточняющих характер работы данной диаграммы. Это заставляет разработчика системы разбить ее по уровням, на небольшое число подсистем (не более 6-7) и построить для всей системы некоторое дерево проектирования. Название, присваиваемое данному блоку на одной диаграмме, должно быть кратким, общепонятным и обязательно сохраняться без изменений на всех диаграммах системы. При необходимости, каждое название может быть уточнено, расширено и пояснено в специальной области IPO–диаграмм, которая называется областью спецификаций. В этой области могут быть записаны некоторые рекомендации по тому, “как” реализуется блок на данном уровне рассмотрения.

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

 


а) Блок-схемы высоких уровней иерархии.

 


б) Иерархическая блок-схема.

 


в) диаграмма

 

Рис.20.Типовые диаграммы IPO–технологии


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

Важным в HIPO–технологии является явное указание данных на входе и выходе каждого шага алгоритма (процесса проектирования). Все данные задаются и связываются с процессом обработки данных, а так же помещаются структурно, в одно и то же место – слева и справа проектного листа (рис.20, в).

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

8.6. R – технология

Все существующие способы повышения производительности труда программистов, основываются на модификации надстройки, тогда, как базис – принцип обработки информации в самой ЭВМ – остается неизменным (см.рис.17). Смысл работ по созданию R – технологий, заключается в модификации базиса таким образом, чтобы упростить процесс программирования, приблизить его к производственному процессу, более естественному для человека. Для этого предоставляется программисту программно – реализованная вычислительная машина, названная R – машиной, или сокращенно – RВМ. Затем, для этой машины строится соответствующая надстройка – R –язык и технология программирования, называемая R – технологией.

В RВМ, программисту, предлагается включить в саму программу, явно заданную связь с данными, для чего, логическую схему программы (ЛСП), необходимо совместить с логической структурой данных (ЛСД), а функциональную часть программы, выделить отдельно. Для записи программы в R – технологии, предлагается использовать язык нагруженных ориентированных графов. На этом языке ЛСД, совмещенное с ЛСП, задается записью на дугах графа, соответствующих символов и предикатов, а функции обработки выделенных структур задаются на тех же дугах записью последовательности, только линейных операторов: операторов присвоения; операторов обращения к процедурам – функциям; операторов пересылки между памятями RВМ (рис.23). Обработка данных, не соответствующих ЛСД, блокируется – приводит к останову RВМ.

Для RВМ изменилась технология программирования (рис.21). Она делится на два основных этапа. На первом – формально определяется структура информации без связи с каким-либо алгоритмом ее обработки. На втором этапе, эта структура рассматривается, как логическая схема, соответствующего алгоритма ее обработки и как некоторая схема работы коллектива программистов по доопределению исходной стуктуры. Доопределение, осуществляется только линейными операторами: операторы присвоения; операторы, полученные и стандартизованные на предыдущих этапах развития работ по R – технологии; операторы, записанные предварительно на языке одной из систем программирования и введенные пользователем в библиотеку.

Иногда, в процессе доопределения, модифицируется исходная ЛСД, полученная на первом этапе. В результате доопределения, получается R–программа, которая, с помощью R–технологического комплекса автоматически генерируется в готовый программный продукт для работы на существующих ЭВМ.

Рассмотрим пример. Пусть требуется подсчитать в тексте число символов А и В. Текст ограничен справа символом “┐”.

Процесс проектирования R–программы, начинается с формального определения структуры исходного текста, иначе, ЛСД, в котором надо подсчитать число символов А и В. Определение производится независимо от какого-либо алгоритма выполнения этого подсчета. Строим нагруженный ориентированный граф (рис.22), где дуга “все” – символ внутреннего алфавита R–машины, означающий, в данном случае, что на дуге “все” может быть любой символ из тех, которые используются в тексте, дуга “А”, дуга” В” и дуга “┐”– выделяют символы “А” и “В”, которые следует подсчитать и символ “┐”говорит об окончании текста.

На втором этапе, эта структура рассматривается, как ЛСП. Для правильного чтения R – программы, следует придерживаться фиксированного порядка просмотра дуг: около каждой вершины сверху – вниз, слева – направо; дуги, не содержащие записей, просматриваются в последнюю очередь. Полученную R–программу доопределяют до алгоритма подсчета символов А и В, для чего дописывается вершина и дуга начальных установок (НАЧУСТ), а три другие дуги доопределяются соответствующими линейными операторами (рис.23). Такой граф является окончательной R – программой. Этот граф записывается на R – языке:

R–программа: СЧЕТ БУКВ А В

счетчики r,f

НАЧУСТ r=0

f=0 СЧЕТ

СЧЕТ В f=f+1 СЧЕТ

А r=r+1 СЧЕТ

ПЕЧАТЬ(r,f) выход

все счет

конец

и вводится в машину. По этой записи формируется программа для реальной ЭВМ.

Анализ примера позволяет сделать следующие выводы общего характера. Во-первых, R–программа – это наглядный способ записи алгоритма. Во-вторых, для записи алгоритма в R – программе используются только линейные операторы типа операторов присвоения, обращения к процедурам (записи, чтения, поиска и т.д.). В-третьих, R–программа – это наиболее компактный способ записи алгоритма. Обычно R–программа в 1,5-3 раза содержит меньше символов, чем аналогичная программа на языке высокого уровня.

Подробно с R–технологией можно ознакомиться в книге [20].

Заключение: мы рассмотрели общие вопросы построения ПО САПР ТПП , не затронув специального (функционального)ПО. Принципы построения специального ПО, его состав, правила построения изложены в [13,14,15,19]. В этой литературе приведены конкретные программные системы, которые построены по описанным правилам, что позволило перейти на проектирование больших программных систем, обладающих свойствами адаптивности, эволюционности и тиражируемости, и создать основу для построения экспертных систем технологии.


 

 

 


Рис.21.Технология программирования для RBM.

 
 


В

 
 

 


А

 
 

 


все

 

 

Рис.22.Определение логической структуры данных.

 

 

f=f+1

 

B

 

 
 


А r=r+1

 

 
 


r=0 печать r,f

f=0 все

 

Рис.23. Определение логической структуры программы.

 

 


12) Структурное, модульное, объектно-ориентированное, эволюционное программирование.

13) Пример языка ассемблера. Методы написания программ драйверов.