О журнале
Рекомендации
Визуальное программирование графическими структурами
Вельбицкий И.В.
_____________________________
И.В. Вельбицкий
Описана разработанная в СССР технология программирования графическими структурами (Р-схемами), определяющая промышленную концепцию единого многоконтурного и многоуровневого конструирования алгоритмов, программ, данных и процессов. Ртехнология основывается на вновь введенных понятиях алгебры конструирования графических структур, чертежа программы, технологического модуля, универсального технологического цикла, электронной безбумажной схемы организации коллектива специалистов и др. Приводятся примеры Р-графической записи программ в традиционных языках программирования, а также ПРОЛОГ- программ, сетей Петри, SDL- диаграмм, таблиц решений, сетевых графиков и т.д. Описан стандарт ГОСТ 19.00585 на предлагаемую графическую форму записи, который рассмотрен международным комитетом по стандартизации ISO и одобрен в качестве стандарта ISO 8631Н. Приведены сведения о реализации Ртехнологии на ЭВМ широкого применения типа ВМ 360/370, PDP 11, персональных ЭВМ типа РС ХТ/АТ, LSI11 и для Р- графических языков Си, Модула-2, Паскаль, Фортран, Ассемблер и др.
За последние 20 лет в самой молодой и быстро развивающейся отрасли обработке информации не произошло ожидаемого повышения производительности труда программистов. Однако именно за эти 20 лет появился весь арсенал современных средств автоматизации программирования: языки, трансляторы, операционные системы, пакеты программ, банки данных и знаний, экспертные системы и т.д. Следовательно, можно сделать вывод, что современные средства автоматизации не решают проблемы программирования и не выводят его как процесс из тупика. Это не значит, что все сделанное в программировании за 20 лет плохо, а лишь означает, что все сделанное не объединено концептуально в некоторую технологическую культуру разработки и эксплуатации программных систем коллективами специалистов.
Вопросы технологии программирования это прежде всего вопросы формирования промышленной культуры разработки программных средств коллективами специалистов (не обязательно программистов), ибо только промышленность может оказать решающее воздействие на уровень развития производительных сил общества.
Однако индустрия разработки программных средств отличается от промышленности в наших традиционных представлениях прежде всего тем, что относится не к сфере заводского тиражирования ранее сконструированных изделий, а к сфере их конструирования; сам же процесс заводского тиражирования программных средств становится тривиальным похожим на процесс копирования магнитных лент или компакткассет. Другими словами, индустрия разработки программных средств относится к нетрадиционной творческой, интеллектуальной (а не материальной) сфере деятельности человека, в процессе которой конструируется и создается нечто новое и единичное, в данном случае программное средство, а тиражируется метод, принцип, регламентированный подход к решению каждой новой проблемы, вся заводская инфраструктура для создания, приемки и реализации продукции.
Кроме того, программа как изделие промышленности отличается логической сложностью и глубиной в рамках простой, даже элементарной формы число различных команд, из которых состоит любая программа, всего несколько десятков, но их число десятки и сотни тысяч; программа не имеет износа, у нее нет "допусков и посадок" (допустимых отклонений от идеально точных размеров); в ней все должно быть идеально точным, сколько бы миллионов команд (аналогов деталей в промышленном изделии) она не содержала. Познать программу можно лишь опосредованно через работу вычислительной машины и ее окружения в их сложной взаимосвязи.
Разработка программы это сложный процесс, основанный на интуиции, большой эрудиции и особенно непривычной для человека исключительной точности и аккуратности детерминированности мышления. Создание индустрии разработки программных средств это задача наиболее сложная из всех, с которыми приходилось сталкиваться человеку до сих пор при "формировании" любой промышленности. Поэтому промышленная технология разработки (конструирования) программных средств должна существенно опираться на математически строгую дисциплину организации работ.
Рассматриваемые общая методология и алгебра конструирования алгоритмов и программ могут послужить достаточно прочным фундаментом для создания индустриальных основ программирования и обеспечить их устойчивое развитие в будущем. Для индивидуальной культуры программирования предлагаемый подход дает простую концепцию наглядного графического (визуального) программирования, почти не зависящую от какоголибо языка программирования и существенно более простую по сравнению с известными традиционными подходами.
Графический стиль программирования. Можно поразному решать проблемы технологии программирования. Традиционно это делается с помощью соответствующего языка программирования. Идея этого пути проста и естественна если есть язык, удовлетворяющий некоторым профессиональным требованиям, то на нем можно будет легко и быстро писать программы, они будут всем понятны, их можно быстро отлаживать легко модифицировать и т.д. Однако вот уже белее 25 лет, начиная с языка Алгол60, такой язык создается, но "период полураспада" каждого нового языка составляет тричетыре года. Еще совсем недавно мы говорили о языке Ада, затем об Адасреде, сейчас о среде Си/ЮНИКС...
В настоящее время насчитывается уже более двух тысяч различных языков программирования это почти столько же, сколько в мире естественных языков, появившихся за всю историю человечества.
Другой путь развития программирования основан на использовании графического базиса и профессиональной символики в программировании [12]. До настоящего времени базисом программирования служила текстовая (алфавитноцифровая) форма представления информации в машине. Она проста и надежна для технической реализации, но не наглядна, не компактна, не позволяет в полной мере использовать преимущества и возможности ассоциативного зрительного аппарата и аппарата мышления человека. Однако возможности техники сейчас гораздо больше, чем необходимо для реализации простейших алфавитно цифровых принципов представления информации в машине, поэтому для ликвидации отмеченных недостатков предлагается сквозное использование графического базиса схем, таблиц, диаграмм и т.д.
Идея этого пути также проста и естественна. К нему человек прибегает всякий раз при необходимости решить сложную задачу взаимодействия людей в обществе формирование промышленности, управление движением автомобильного транспорта , организация олимпиады и т.д. В этом случае определяются прежде всего различные условные профессиональные обозначения, наглядные и компактные графические образы чертеж, дорожные знаки, олимпийские пиктограммы и т.д., которые позволяют эффективно включить зрительный аппарат ассоциативного мышления человека для решения соответствующей проблемы оперативного взаимодействия людей друг с другом.
Представим себе, что для решения этих проблем использовались бы языки, аналогичные языкам программирования, и станет очевидна тупиковость принципа решения большинства проблем программирования.
Итак, для формирования индустрии разработки программных средств и решения большинства проблем программирования предлагается использовать наглядные графические образы, например, для записи структуры программ графы и схемы, структур данных таблицы и т.д.
В науке и практике есть два вида графов (схем) граф, нагруженный по дугам, например, сетевые графики, и граф, нагруженный по вершинам , например, блоксхемы ISO 5807, SDLдиаграммы, сеть Петри, диаграммы Джексона, синтаксические схемы Вирта и т.д. В практике программирования большее распространение получил граф, нагруженный по вершинам, хотя по мощности представления информации оба эти способа эквивалентны. Предлагается технология программирования, использующая в основном графы, нагруженные по дугам, которые изображаются только с помощью горизонтальных и вертикальных линий. Идея этих графов наглядно изображена на рис. 1. Такие графы названы Рсхемами, а основанная на них технология Ртехнологией программирования [13 ].
В настоящее время на Рсхемы разработан стандарт СССР ГОСТ 19.00585. Единая система программной документации. Рсхемы алгоритмов и программ. Обозначения условные графические и правила выполнения. В июне 1988 г. этот ГОСТ включен в состав стандарта ISO 8631 ISO 8631Н и соотнесен с национальными стандартами США, ФРГ, Японии и др.
Основу разработанной в СССР технологии Рсхем составляют:
промышленная концепция многоконтурного и многоуровневого проектирования программных систем методом поэтапной конкретизации любых неформальных понятий и обозначений в алгебре графических структур, обеспечивающая универсальный интерфейс между программами, "сборочный " стиль программирования, многократную применимость и новые принципы фондирования программных средств;
единая, не зависящая от языков программирования, графическая форма для записи и алгоритмов, и программ, и данных, и процессов на всех стадиях и этапах их разработки;
Рис. 1. Различные способы представления условного оператора (а, Ь, с) и оператора цикла с предусловием (d, е, f, g): a, d традиционная текстовая форма; b, е блоксхемы согласно ISO 5807; с, f Рсхемы по ГОСТ 19.00585 или ISO 8631Н; g протокол ввода Рсхемы оператора цикла с предусловием
система автоматизации организационной деятельности коллектива, обеспечивающая дружественный интерфейс специалистов (заказчиков, постановщиков задачи, руководителей проекта, математиковалгоритмистов и программистов) в процессе разработки программного проекта и "отторжение" его от разработчиков в конце работы.
Для работы по Ртехнологии разработаны технологические комплексы РТК, которые автоматизируют графический стиль программирования практически на всех этапах разработки программного проекта от постановки задачи, системного анализа и модельного проектирования до его конструирования, отладки, документирования и эксплуатации пользователем. Комплексы РТК реализованы на всех вычислительных машинах широкого применения и поддерживают графический стиль программирования в штатных операционных системах со всеми основными языками программирования: Си, Модула2, Паскаль, Фортран, ШТ1, ассемблеры и т.д. (табл. 1).
Таблица 1. Основные характеристики технологических комплексов РТК, поддерживающих технологию программирования графическими структурами
Алгебра конструирования графических структур. Как и всякая алгебра, алгебра конструирования графических структур в Ртехнологии определяется множеством элементов и множеством допустимых операций над ними. В качестве ее элементов используются две графические структуры, а в качестве операций три: последовательное, параллельное и вложенное их соединение.
Обе графические структуры имеют следующий вид:
С использованием только горизонтальных и вертикальных линий в соответствии с ГОСТ 19.00585 и ISO 8631Н:
В изображении на стандартных алфавитно цифровых устройствах вводавывода (экранах дисплея, АЦПУ и др.):
где две параллельные линии или знаки = соответствуют отождествлению двух вершин так, чтобы получился граф типа петли.
Для вершин по ГОСТ 19.00585 допускается использование также знака $ и двух рядом расположенных скобок О, соответствующих так называемой специальной вершине. Внутри скобок специальной вершины может быть последовательность любых знаков, идентифицирующих тип специальной вершины и соответствующей ей графической структуры.
В общем случае в обеих указанных структурах может быть сколько угодно дуг любого направления (слева направо и справа налево). На дугах указанных структур могут быть записи произвольного вида и длины:
где ЗАПИСЬ любой текст (пустой, формульный, формальный на языке программирования, содержащий любые специальные знаки, таблицы, рисунки и т.п.), записанный в одну или более строк таким образом, чтобы длина любой строки не превышала длины дуги, соответствующей тексту. Нагруженный по дугам ориентированный граф, изображаемый вертикальными и горизонтальными линиями и состоящий из структур (подграфов), каждая из которых имеет только один вход и один выход, согласно ГОСТ 19.00585 и ISO 8631Н называется Р- схемой.
Если не оговорено особо, то записи над дугой Рсхемы имеют смысл условия прохождения по дуге, а записи под дугой выполняемого при этом действия:
Над двумя исходными структурами определены три операции их соединения (последовательное, параллельное и вложенное), наглядно изображенные на рис. 2.
В результате соединения исходных структур с помощью указанных операций получаются новые структуры, к которым также применимы все три операции соединения , и дальше не ограничено по глубине и по образованию любых структур. В результате такого конструирования получаются только структурные образования.
В указанные графические структуры и способ их образования может быть погружен любой язык программирования, включая Ассемблер. Пример такого погружения на языке Паскаль приведен на рис. 3.
Рис. 3. Различные формы программы на языке Паскаль:
а - традиционная текстовая форма; b - графическая форма в соответствии с ГОСТ 19.005-85 (ISO 8631H);
с - вид на алфавитно-цифровых устройствах ввода-вывода; d - сравнительные характеристики
При этом ввод графических программ осуществляется в 1,5-2 раза быстрее (см. рис. 1 g,d и 6), они занимают меньше памяти и меньше строк экрана дисплея, что делает их представление на тех же технических средствах существенно более наглядным, компактным и обозримым "с одного взгляда", а культуру программирования более высокой.
В практике программирования есть необходимость метить структуры (например, для диагностики ошибок) и осуществлять переходы в начало или конец структур. Такие переходы называются структурными, а соответствующие операторы структуризаторами в отличие от перехода GOTO, осуществляемого в любое место программы без какихлибо ограничений.
Метка структуры согласно ГОСТ 19.00585 (ISO 863IH) записывается внутри, около начальной ее вершины без пробела:
где ИМЯ - последовательность десятичных цифр или идентификатор.
Структуризатор записывается в конце дуги как ИМЯ, перед которым стоит знак * или #:
В первом случае осуществляется переход в начало структуры с меткой ИМЯ, во втором - в конец соответствующей структуры. В обоих случаях метка ИМЯ может отсутствовать, тогда переход осуществляется в начало и конец соответствующей Р- схемы:
Таким образом, структуризаторы позволяют задать переходы в Р-схемах без нарушения структурности их изображения. При этом важно, что структуризаторы задают не произвольные переходы, а переходы в начало или конец любой структуры и безадресные переходы в начало или конец данной Р-схемы. Переходы на любую дугу структуры, на любое условие или действие на дуге запрещены и не выполнимы с помощью структуризаторов. Этим в Р-технологии достигается структурность программирования с высокой эффективностью, достаточной, например, для описания программ реального времени и системных программ, а также некоторое расширение допустимых операций соединения структур в алгебре конструирования алгоритмов и программ. В этой алгебре есть возможность стандартного расширения не только допустимых операций соединения структур, но и допустимого множества ее элементов - множества допустимых графических структур. Для этого используются именованные специальные вершина и дуга.
Специальная вершина - это левая и правая круглые скобки, внутри которых записана последовательность любых знаков, в том числе и пустая:
В первом случае специальная вершина используется для разделения двух рядом расположенных структур, а следовательно, для разделения и более наглядного изображения исходящих из вершин дуг в разных структурах; во втором случае определяется особая реализация соответствующей структуры - параллельное выполнение исходящих из вершины дуг; в третьем случае задается особая реализация последовательности структур, соответствующая определению предметной области (аксиом, редукторов) и собственно программы на языке ПРОЛОГ.
Специальная дуга - это сдвоенная дуга без стрелок, надпись на которой задает особую реализацию всей структуры:
В первом случае определен цикл типа FOR, например на языке Паскаль, а во втором - технологическая дуга сетевого графика, означающая резерв времени (две недели) на соответствующем маршруте (пути) выполнения некоторой работы (см. рис. 7).
Р-схемы и связанная с ними алгебра одинаково удобны для записи (конструирования) и алгоритмов (рис. 3), и программ на любых языках (рис. 4,5) и данных (рис. 6), и процессов (рис. 7). При этом формальные языки и метаязыки погружаются в графическую форму Р-схем как часть естественного языка. Пользователь работает на ЭВМ в графической алгебре Р-схем на естественном для своего уровня языке (формальном или неформальном, а также на любом национальном), постепенно детализируя любые неформальные обозначения в строгую запись алгоритма на языке ЭВМ.
Рис. 4. Примеры записи алгоритмов: а - алгоритм Евклида; b - сеть Петри, синхронизация использования общего ресурса Р 3 двумя параллельными процессами Р2Р1 и Р5Р4; с - алгоритм управления лифтом 20-этажного здания, записанный на языке спецификаций SDL+; d - алгоритм управления лифтом 20-этажного здания, записанный в соответствии с ГОСТ 19.005-85 или ISO 8631Н; е - таблица решений, записанная в соответствии с ГОСТ 19.005-85 (ISO 8631Н)
Рис. 5. Пример записи программы на ПРОЛОГЕ
"Кто дедущка Семена?":
а - традиционная текстовая форма; b - графическая форма в соответствии с ГОСТ 19.005-85 (ISO 8631Н)
Рис. 6. Примеры записи структуры данных: а - в виде диаграммы Джексона;, b - в соответствии с ГОСТ 19.005-85 (ISO 8631Н); с-в виде нормальной формы Бэкуса-Наура; d-то же по ГОСТ 19.005-85 (ISO 8631Н); е - графическое представление, принятое в СУБД; f - то же по ГОСТ 19.005-85 (IS08631H)
Рис. 7. Сетевой график в традиционной форме (а) и в соответствии с ГОСТ 19.005-85 (ISO 8631Н) (Ь)
Запись программ при этом становится существенно более наглядной и обозримой с одного взгляда. Изображения программ унифицируются и становятся малозависимыми от конкретного языка программирования (см. рис. 4). Ввод программ осуществляется в 1,5-2 раза быстрее (см. рис. 1), они занимают меньше памяти и меньше строк экрана дисплея за счет отсутствия ключевых слов и более рационального по горизонтали размещения модулей программы, что обеспечивает на тех же технических средствах более крупномодульное программирование,экономит бумагу АЦПУ, делает представление программы более компактным и обозримым. Сказанное относится и к записи алгоритмов данных и процессов, что унифицирует в целом представление информации в Р-технологии.
Технологический модульВ Р-технологии это понятие является развитием известных понятий (структура, модуль, абстрактный тип данных, базы знаний) в направлении стандартизации понятия "интерфейс". Технологический модуль в Р-технологии (РТМ) - это элемент абстракции процесса программирования. Он состоит из трех частей:
Интерфейсная часть РТМ - это то, что всегда видит специалист на экране дисплея или распечатке при обращении к РТМ.
Операционная часть РТМ определяет все допустимые действия специалиста в интерфейсной видимой части модуля, а также связь ее с информационной частью и другими модулями.
Рис. 8. a - пример записи чертежа по ГОСТ 19.005-85 (ISO 8631Н);
b - пример программирования с помощью чертежей
Имя чертежа - произвольная последовательность символов, имеющая в некоторых случаях краткий эквивалент или шифр.
Поле спецификаций - база знаний или определение предметной области на соответствующем уровне абстракции, задаваемом чертежом. Такое определение осуществляется с помощью структурированного текста (формального или неформального) с максимальным использованием наиболее наглядных в соответствующей предметной области графическиих, формульных и других обозначений.
Рабочая часть - функциональная часть чертежа, задающая в строгой алгоритмической форме (например в Р-схемах) соответствующий фрагмент проектируемой структуры - алгоритма, программы, СУБД и т.д.
В поле абстракций определяются любые неформальные обозначения, используемые в рабочем поле или поле спецификаций чертежа и соответствующие математическим текстам после слова "где...".
Чертежи (точнее - содержательная их часть) могут быть связаны друг с другом иерархически через механизм раскрытия любого обозначения или понятия на чертеже. Раскрыть понятие можно в поле абстракций данного чертежа, а также с помощью чертежа следующего уровня или того же уровня иерархии - вариантное определение (рис. 8). Раскрываемые понятия на чертеже выделяются тем или иным способом (цветом, тоном и др.). Иерархия чертежей может быть многоуровневой и многомерной.
Помимо иерархии, чертежи можно объединить в контуры, связь между которыми не является жесткой, алгоритмической, а скорее информационной, например: "об этом в другом контуре сказано в таком-то месте" или "требования к этому алгоритму сформулированы в контуре технического задания там-то" и т.д. Контуры проекта могут быть самыми разнообразными, например: информационный контур заказчика (техническое задание), моделирующий, алгоритмический, рабочий, оптимизирующий время работы, эксплуатационной документации и т.д. Связь между понятиями в разных контурах может быть разветвленной и поименованной (средствами меню), например:
Такая система разветвленной связи между различными понятиями чертежей (при электронной, безбумажной схеме ее реализации) позволяет оперативно сформировать гибкий интерфейс всестороннего и быстрого проекта.
Технологический процесс. В Р-технологии он формируется на этапе технологической подготовки работ та РТМ, соответствующим образом запрограммированных. Этим достигается особая гибкость процесса конструкторской разработки в Р-технологии, обеспечивающая эффективную ее настройку на конкретные условия коллектива, планируемое повышение качества программных средств и производительности труда программистов.
При формировании конкретной технологической линии в Р-технологии используется понятие универсального технологического цикла, которое означает, что любая разработка (и/или производство, использование) программной системы должна иметь следующий универсальный технологический цикл выполнения:
где СА - системный анализ, МП - модельное проектирование, Р - собственно работа, Д - документирование работы, АНАЛИЗ - итерационный процесс улучшения выполненной работы.
Указанные имена условны и на разных стадиях и этапах технологического процесса могут иметь другие названия, сходные по сути: предпроектные исследования, эскизный, технический и рабочие проекты, создание прототипа, экспертиза проекта, отладка, тестирование, отчего выполнении работы, контроль исполнения, производство, сопровождение и т.д.
Разработка программ по Р-технологии производится по заранее запрограммированному технологическому маршруту. В результате многоконтурного и многоуровневого проектирования создается комплект чертежей программной системы, который может иметь вариантные (нерабочие) ветви, проверяющие различные идеи реализации, а также избыточные ветви для возможной генерации по месту эксплуатации проекта. В конструкторской разработке есть этап сборки чертежей для создания постановочного проекта или опытного образца (прототипа) для последующего воспроизводства на этапе производства.
В процессе разработки программный проект (начиная с самых ранних этапов неформального проектирования) испытывается, в частности, на соответствие документации и спецификациям проекта. Для этого разработаны соответствующие автоматизированные методики, которые опираются на наглядную графическую форму задания алгоритмов Р-технологии, формализованы ые методы оценки сложности программных средств и автоматизированную генерацию текстов.
Этап документирования в традиционном его понимании отсутствует в Р-технологии, ибо комплект чертежей программного проекта по ГОСТ 19.005-85 (ISO 8631Н) полностью заменяет документ "Описание программы" по БСПД. Эксплуатационная же документация проекта (инструкция для пользователя, оператора и др.) получается не изготовлением заново, как обычно, а редактированием и автоматизированной генерацией из поля спецификаций соответствующего комплекта чертежей. Объем ее меньше традиционного, так как содержит только основные, самые необходимые для эксплуатации системы сведения, а за остальными пользователя отсылают к соответствующему комплекту чертежей проектной документации. Проектная и эксплуатационная документация создается по унифицированным технологическим операциям, содержащим соответствующие шаблоны и трафареты, что облегчает ее понимаемость и усваиваемость.
В комплект поставки программных средств, изготовленных по Р-технологии, входят отредактированное дерево проекта (комплект чертежей), инструкция по генерации системы, программа испытаний с генератором контрольных тестов и комплект эксплуатационной документации.
Производство программ по Р-технологии-это Не только тиражирование программного проекта, но и большой комплекс работ по его привязке к условиям эксплуатации. В процессе производства исходный программный проект рассматривается лишь как прототип или опытный образец и фактически заново переконструируется на макроуровне таким образом, чтобы обеспечить удобную и эффективную эксплуатацию соответствующей программной системы в конкретных условиях эксплуатации. К производству относится также большой комплекс мероприятий по маркетингу, сбору статистики при использовании проекта, анализу рекламаций, модификации проекта в результате накопленного опыта эксплуатации и т.д. Все эти работы проводятся независимо от разработчиков проекта теми же инструментальными средствами, что и разработка по технологическим маршрутам и РТМ, запрограммированным для задач производства.
Использование программ по Р-технологии осуществляется независимо - от тех, кто их разрабатывал, и от тех, кто их производил. Пользователь программной системы, разработанной по Р-технологии, Может по комплекту документации поставки разобраться как угодно глубоко в принципах работы системы и по опыту ее использования самостоятельно ее модифицировать или дать задание на проведение таких модификаций службой сопровождения или производства.
Организация коллектива в Р-технологии осуществляется по безбумажной схеме в некоторой электронной почтовой диалоговой сети. В этой сети все специалисты (заказчики, функциональные специалисты, разработчики программ, администраторы проекта и др.) иерархически упорядочены так, что работа каждого предопределена технологическим маршрутом, заложенным в машину на этапе технологической подготовки работ для каждого типа специалистов и каждого этапа выполняемой ими работы. Каждый специалист в этой схеме имеет паспорт, в котором указываются его фамилия, шифр, пароль доступа к данным, список его подчиненных, список текущих, запланированных и выполненных работ и т.д. Машина следит за правильностью взаимодействия специалистов по схеме и блокирует любые несанкционированные схемой обращения.
В Р-технологии каждая работа также имеет паспорт, в котором указаны ее название, регистрационный номер (шифр), организационные и технические данные. К организационным данным относятся сведения о том, кем сформулирована работа, когда и кому поручена, в какие сроки и чем должна заканчиваться, кому и в каком виде предъявляется и т.д. Эти данные передаются системе при определении неформального обозначения в поле абстракции соответствующего чертежа проекта. По этим данным в системе формируется сетевой график выполнения работ и проводится автоматический контроль за его соблюдением. В технической части паспорта сообщаются сведения о технологическом маршруте для данной работы, т.е. последовательности технологических операций с соответствующими организационными данными для каждой из них. Большинство данных в организационной и технической частях паспорта на работу формируются автоматически.
Обмен информацией в электронной почтовой диалоговой сети осуществляется с помощью телеграмм, которые для каждого абонента запоминаются системой в предыдущем сеансе связи и выдаются ему при обращении к системе по его шифру и паролю. Телеграммы бывают трех видов: порученческие - от руководителей к своим подчиненным, системные - когда система автоматически напоминает об истечении ранее запланированных сроков выполнения соответствующей работы или констатирует их срыв, и прочие сообщения - от служб эксплуатации, администраторов проекта, от других программистов и т. д. Каждый тип телеграмм имеет свой фиксированный в системе порядок обработки, контролируемый в процессе работы технологической линии.
Сравнительный анализ - Р-схема - это граф, нагруженный по дугам. В программировании наибольшее распространение исторически получил граф, нагруженный по вершинам, однако такой граф имеет два недостатка. Он не сопровождается на ЭВМ (его нельзя использовать как программу для ввода в машину), и запись с помощью таких графов хотя и наглядна, но не компактна. Ее неудобно воспроизводить на существующих устройствах ввода-вывода (дисплеях, АЦПУ); она существенно проигрывает в компактности записи программам на традиционных процедурно-ориентированных языках. Технология, в которой используются две знаковые системы (графическая - на этапе домашинного проектирования и традиционная линейная -для ввода и работы на машине), на практике оказалась сложной и неэффективной. Поэтому граф, нагруженный по вершинам, используется в программировании лишь в исключительных случаях для особо ответственных проектов как средство ручного проектирования и документирования программ.
ГОСТ 19.005-85 (ISO 8631Н) и основанная на нем Р-технология используют граф, нагруженный по дугам. На рис. 1, 3, б, 7 сопоставлены два способа изображения графа, а в табл. 2 сравниваются Р-схемы по ГОСТ 19.005-85, использующие идею графа, нагруженного по дугам, и различные национальные стандарты (США, Великобритания, Япония, ФРГ, Нидерланды), использующие нагруженный по вершинам . граф. Из анализа приведенных иллюстраций можно сделать следующие выводы.
Во-первых, Р-схемы, не уступая в наглядности блок-схемам (так кратко и обобщенно будем называть изображения, использующие граф, нагруженный по вершинам), более компактны (в среднем в 3-4 раза при пересчете на алфавитно-цифровое представление). Однако блок-схемы более привычны.
Во-вторых, Р-схемы, имеющие только горизонтальные и вертикальные линии, лучше (проще, технологичнее) реализуются на современных технических (растровых и алфавитно-цифровых) устройствах ввода-вывода ЭВМ.
В-третьих, ГОСТ 19.005-85 (ISO 8631Н) благодаря особой информационной компактности положенных в его основу Р-схем не только задает графический образ и профессиональную символику основных рекомендуемых обозначений для единого описания и алгоритмов, и программ, и данных, и процессов, но и задает стандартный универсальный способ их расширения (развития), алгебру конструирования Р-схем из простейших элементов как базовых, так и полученных в результате их расширения, а также вводит в программирование понятие чертежа как следующий, более высокий уровень абстракции структуры.
Графический стиль и особенно описанная алгебра Р-схем открывают новые возможности в эволюции языков программирования для их международной унификации и стандартизации, обеспечивая в то же время преемственность с достигнутым уровнем. Действительно, при погружении языков в графический базис представления, например в виде Р-схем по ГОСТ 19.005-85, из языков исключается множество ключевых слов типа IF,THEN,CASE,WHILE и т. д., а значит, исключается и зависимость их от соответствующих национальных алфавитов. Язык становится интернациональным - графическим, образным и наглядным.
Структуризуется функциональный базис языков. Он сводится к трем понятиям: логическое выражение (записывается над дугой Р-схемы), оператор присваивания и оператор процедуры, которые записываются под дугой. Все три понятия в современных языках имеют одинаковую семантику применения и сходный синтаксис описания, поэтому графический базис стирает различия между языками, делая их непринципиальными.
Графический базис, как он определен в ГОСТ 19.005-^85 (ISO 8631Н), позволяет использовать любые неформальные обозначения на ссютветствующих базовых графических элементах. Это дает возможность автоматизировать не только процесс программирования, но и процесс проектирования алгоритмов и программ, а в этом процессе язык программирования в современной трактовке занимает очень небольшую часть (около 10 %). Иными словами, роль языка программирования на всем интервале решения задач на ЭВМ не является определяющей, сам язык (любой) погружается (или входит как часть) в неформальные обозначения и по существу используется лишь на этапе кодирования программ [3 ].
Заключение. Критерием любой истины является практика. Практика использования Р-технологии имеет более чем десятилетнюю историю. Р-технология прошла через неудачи первых реализаций, неоднократное совершенствование реализации принципов и принципов реализации для самых различных вычислительных установок и областей применения. Эта практика отражена более чем в 600 публикациях (с 1969 г.) школ-семинаров (с 1978 г.), а также в трудах и решении 1-й Всесоюзной конференции (1983 г.) - единственной конференции, посвященной одной отечественной технологии программирования. В трудах этой конференции пользователям предоставлена отдельная книга (Ч. 2. Опыт применения. - 203 с), в которой они сами в тезисной форме говорят о достоинствах и недостатках Р-техно-логии, о практически неограниченных областях ее применения, о новой культуре программирования, обеспечивающей решение большинства проблем программирования и прежде всего резкое, и что важно, планируемое повышение производительности труда программистов при одновременном улучшении качества программных проектов.
СРАВНЕНИЕ Р-СХЕМ ГОСТ 19.005-85
Таблица 2
Тем не менее для того, чтобы ответить на риторический вопрос "ну и что?", необходимо самому попытаться написать свою программу в соответствии с ее принципами.
Вы будете испытывать вначале естественные трудности, так как вам придется мыслить не так, как вы привыкли, как вас учили, но зато потом вам откроются три истины: во-первых, вы поймете, в чем тупиковость традиционного пути развития программирования; во-вторых, вы увидите неограниченные возможности этой новой технологии и приложения своих сил для ее развития и особенно на вычислительной технике будущего; в-третьих, вы поймете, в чём необыкновенно мирный ее характер, обеспечивающий интернациональный путь развития и преемственность со всем, что уже наработано в программировании, а также дружественный интерфейс с другими технологиями и инакомыслящими.
ЛИТЕРАТУРА
1. Г л у ш к о в В. М., Вельбицкий И. В. Технология программирования и проблемы ее автоматизации// УСиМ. - 1976. №6. - С. 75-93.
2 .Р-технология программирования: Tea. докл. 1-й Всесоюз. конф. Ч. 1. Средства автоматизации. -116 с. - Киев: ИК АН УССР. 1983. - 349 с.
3. Вельбицкий И. В. Технология программирования. - Киев: Технiка, 1984. - 279 с.
4. Computer. 1985. V. 18. N 8. - 94 р.
5. Информатика, Р-технология программирования и обучение: Сб. науч.-метод. материалов/ Под ред. И. В. Вельбицкого и В. Н. Лаврика. Ч. 1. Алгебра программирования и проблемы обучения. - 41 с; Ч. 2. Технологические комплексы программистов как инструментальная база обучения. - 39 с; Ч. 3. Обучение в Р-технологии программирования. - 29 с; Ч. Использование Р-технологии в науке и промышленности. - 50 с. - Одесса: Пед. ин-т, 1986. - 159 с.
_________________________
И.В. Вельбицкий - др. техн. наук
© Информационное общество, 1990, вып. 2, с. 32-51.