Исследование и разработка метода графического программирования для ЭВМ тема диссертации и автореферата по ВАК РФ 01.01.10, кандидат физико-математических наук Мощицкий, Александр Викторович

  • Мощицкий, Александр Викторович
  • кандидат физико-математических науккандидат физико-математических наук
  • 1984, Киев
  • Специальность ВАК РФ01.01.10
  • Количество страниц 182
Мощицкий, Александр Викторович. Исследование и разработка метода графического программирования для ЭВМ: дис. кандидат физико-математических наук: 01.01.10 - Математическое обеспечение вычислительных машин и систем. Киев. 1984. 182 с.

Оглавление диссертации кандидат физико-математических наук Мощицкий, Александр Викторович

ВВЕДЕНИЕ

ГЛАВА I. Проблема повышения эффективности восприятия программ

§ I.I. Анализ требований к разрабатываемому методу программирования

§ 1.2. Р-технология программирования

§ 1.3. Принципы зрительного восприятия программ человеком

§ 1.4. Сущность предлагаемого метода

ГЛАВА 2. Язык Р-графов

§ 2.1. Основные понятия языка

§ 2.2. Расширение понятия Р-графа

§ 2.3. Язык Р-графов и его диалекты

§ 2.4. Синтаксис языка Р-графов

§ 2.5. Трансляция Р-графов

ГЛАВА 3. Программирование на языке Р-графов

§ 3.1. Безбумажная технология программирования

§ 3.2. Система документации проекта

§ 3.3. Опыт эксплуатации транслятора Р-графов

§ 3.4. Сравнительная оценка языков программирования

РТК ОС ЕС

Рекомендованный список диссертаций по специальности «Математическое обеспечение вычислительных машин и систем», 01.01.10 шифр ВАК

Введение диссертации (часть автореферата) на тему «Исследование и разработка метода графического программирования для ЭВМ»

Научно-технический прогресс в последние десятилетия во всем мире связан с широким использованием вычислительной техники. Программирование стало массовой специальностью, а программное обеспечение - составной частью научно-технического потенциала страны [38,51] . К созданию программ наряду с профессиональными программистами широко привлекаются специалисты из тех областей народного хозяйства, в которых используется вычислительная техника. Тем не менее, потребность в новых программных средствах ощущается чрезвычайно остро [ 51] , что можно объяснить, как кибернетизацией новых областей человеческой деятельности, так и расширением фронта работ в уже существующих.

В настоящее время для разработки программного обеспечения ЭВМ существует целый спектр языков црограммирования. Однако на практике сложность решаемых сейчас задач такова, что они зачастую приводят к созданию очень больших программ со сложной логической структурой, состоящей из сотен, тысяч и даже десятков тысяч операторов [ 25] . Восприятие (разбор) таких программ -труднейший процесс, требующий привлечения всех способностей человека к абстрактному мышлению, - занимает основную часть рабочего времени программиста, как на этапе создания программ, так и при их последующем сопровождении и модификации [ 34] . Использование наиболее совершенных из существующих языков программирования приводит к заметному уменьшению размеров программ, необходимых для реализации алгоритмов, но все же оно не в состоянии в корне изменить ситуацию. Тенденция к росту размеров и сложности разрабатываемых программ остается неизменной.

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

Остановимся на этом несколько подробнее. Цроцесс понимания программы состоит в последовательном разборе синтаксиса и семантики операторов программы.

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

Однако наиболее ценные знания о структуре и логике функционирования программы программисту приходится получать неким окольным путем - осмысливанием, идентификацией и связыванием отдельных частей программы. Иными словами, воспринимающий должен держать в своей памяти ситуации во всех точках ветвления, различать их между собой и связывать в единую структуру алгоритма. Естественно, такая работа требует привлечения всех способностей человека к абстрактному мышлению, связана с повышенным напряжением внимания и высокой вероятностью возникновения ошибок. Весьма распространены [8, 25, 31, 38, 42J : низкая производительность труда, длительная отладка, неудовлетворительное качество передаваемого программного продукта. Проблема еще более усугубляется коллективным характером современного программирования [8] , при котором разработкой, использованием и сопровождением программы заняты, как правило, обособленные друг от друга группы людей.

Следствием сложности процесса восприятия является его преобладание в трудозатратах на таких основных этапах работ, как проектирование, кодирование, отладка, сопровождение и модификация программ. Иными словами, сложность восприятия программ является одной из основных причин низкой производительности труда программистов [£,22,28] .

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

Достоинства и недостатки блок-схем широко обсуждались в литературе [8,13,22] . Среди достоинств отмечаются:

- различие в способах изображения линейных участков алгоритма, условных операторов, операторов начала и конца, а также отсутствие служебных слов облегчает понимание алгоритма;

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

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

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

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

Однако основной причиной того, что блок-схемы "больше превозносятся, чем используются на практике" [8] является сам принцип организации дополнительной (а, значит, второстепенной, необязательной) документации, поясняющей программу.

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

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

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

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

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

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

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

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

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

Новые практические результаты заключаются в создании на ЕС ЭВМ (ОС ЕС) транслятора для Фортран, ПЯ-1 и РТРАН-диалектов языка Р-графов, соответствующей технологии программирования и системы ведения документации, использование которых позволяет сократить трудоемкость и сроки изготовления программ, облегчить процесс их сопровождения, объединить на единой методологической основе программирование на основных языках ОС ЕС, уменьшить расход бумажных носителей информации, улучшить качество и способствовать стандартизации создаваемой программной документации.

Реализация результатов исследования. Основные положения предлагаемого метода программирования были опробованы при разработке языка химико-технологического моделирования во Всесоюзном научно-исследовательском институте синтетических смол. Транслятор Р-графов с 1982 г. сдан в СНПО "Алгоритм". В составе РТК ОС ЕС транслятор вошел в комплект обязательной поставки программных средств ЕС ЭВМ. Разработанные инструментальные средства используются в: НИИАО, НИИЭКОС, "Электроника" г.Москва, Кировском политехническом институте, ОКБ ЦНПО "Каскад" (Краснодар, Ташкент, Куйбышев), Киев НУД СНПО, "Алгоритм",г.Киев, ОКБ "Изумруд" г.Херсон, в/ч 03444 г.Калинин и ряде других организаций. Подтвержденный экономический эффект составил 68 тыс.руб. Акты внедрения содержатся в приложении к диссертации.

Публикация и апробация работы. По теме диссертации опубликованы [13, 39, 44-50] .

Основные результаты докладывались на 1-ой Всесоюзной конференции по Р-технологии программирования (Киев 1983 г.), всесоюзных школах-семинарах по Р-технологии программирования 1980, 1982 г.Киев, 1981 г.Миасс, семинарах Научного совета по цроблеме Кибернетика АН УССР.

Объем и структура работы. Диссертационная работа изложена на 182 страницах машинописного текста, состоит из введения, трех глав, заключения, списка литературы (77 наименований) и приложений.

Похожие диссертационные работы по специальности «Математическое обеспечение вычислительных машин и систем», 01.01.10 шифр ВАК

Заключение диссертации по теме «Математическое обеспечение вычислительных машин и систем», Мощицкий, Александр Викторович

Выводы по главе 2

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

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

3. Дано формальное определение языка Р-графов и его диалектов. Обоснован выбор для разработки в рамках единого транслятора Р-графов Фортран, ПЛ-I и РТРАН диалектов языка. Сформированы диалекты языка Р-графов. При этом в диалекты вводится ряд новых по сравнению с исходными языками понятий и операторов, например, операторов коррекции ошибок - WE , графического цикла - LOOP, оператора-модуля. Приведены примеры программ на различных диалектах языка.

4. Разработаны основные требования к синтаксису языка Р-графов. Исходными являются требования по эффективности зрительного восприятия, ориентации на широкий спектр ЭВМ и периферийного оборудования, наличию нескольких диалектов, стремлению к созданию сквозной технологии проектирования программ.

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

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

ГЛАВА 3. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ Р-ГРАФОВ

Глава посвящена различным аспектам использования языка Р-графов. Параграф 3.1 содержит описание безбумажной технологии работ, основывающейся на языке Р-графов. В § 3.2 кратко описана система документации проекта, использование которой целесообразно при работе по данной технологии. В § 3.3 цриводятся два примера использования языка Р-графов. Описывается хронология разработки различных версий языка и передачи его для внедрения сторонним организациям. В заключении главы в § 3.4 на основе элементов метрической теории алгоритмов [бэ] исследован язык Р-графов и получены семейства кривых, предсказывающих свойства программ для каждого из диалектов языка.

§ 3.1. Безбумажная технология программирования на языке Р-графов

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

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

Другой отличительной чертой предлагаемой технологии является широкая ориентация на дисплейную технику, организация системы ведения документации проекта (§ 3.2), использование которой позволяет перейти к наиболее прогрессивной в настоящее время безбумажной технологии программирования [17,21] .

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

Остановимся подробнее на традиционно наиболее трудоемком и сложном этапе - этапе программного проектирования.

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

Постановка задачи

Эскизное проектирование техзадание

Техническое проектирование р- эскизный проект 1>теУ1гроект Программное проектирование О кадры ст

Р-графы

Проверка (приемка)

Тестирование

Испытания

Ч оттестированные

-графы

Сдача в эксплуатацию программный комплекс программное средство и 1 система документации

Этапы работ программные документы

Рис. 16 документация в любой момент проектирования может содержать лишь один, последний документ по каждой программной компоненте. Итоговым документом является программный модуль на языке Р-графов. Как правило, заполняется пять кадров проектирования. (В качестве иллюстрации в Цриложении 2 воспроизводятся кадры проектирования программы численной минимизации функции нескольких переменных методом конфигураций). Вопросы организации разработки, хранения, просмотра и модификации кадров проектирования рассмотрены в § 3.2.

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

КАДР I - разработка Р-графа модуля на основе ЛСД. Под дугами графа записываются необходимые операции, выполняемые над выделенными элементами данных. Одновременно определяются функциональные памяти, предназначаемые для хранения элементов данных и промежуточных результатов. Нагрузки дуг и описания памятей формируются в виде "общепонятных" словесных предписаний. Предписания строятся на основе словаря проектировщика, при необходимости производится расширение последнего.

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

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

КАДР 3 - выбор диалекта языка Р-графов и оформление нагрузок дуг в соответствии с синтаксисом выбранного диалекта.

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

КАДР 4 - оформление программного модуля в соответствии с требованиями стандартов и предъявление его к проверке. Как упоминалось выше, транслятор Р-графов оформляет листинг программы в виде набора листов формата А4 по ГОСТ 2.004-79. Тем самым стандартизуется на основе проверенных временем принципов ЕСКД состав и форма основного программного документа - текста программы. За счет соблюдения принципов оптимальной компоновки объектов зрительного восприятия (§ 1.3) облегчается понимание программы. Тексты программ удобно хранить в стандартных скоросшивателях в виде альбома отдельных листов. Основная надпись (угловой штамп) содержит всю необходимую учетную информацию о программе.

Для заполнения основной надписи в языке Р-графов применен набор специальных операторов [48] . Реализованный механизм заполнения полей основной надписи требует от программиста в программе самого минимального объема информации. Эффект достигается благодаря широкому учету уже имеющихся сведений и принципу умолчания.

В описываемой технологии программирования отсутствует этап автономного тестирования программных модулей (рис.16). Разработанный модуль (или группа модулей) после проверки руководителем программистов на соответствие его начальному заданию (КАДР 0) включается в комплексное тестирование некоторой большой самостоятельной части разрабатываемой системы, например, блока транслятора.

Программа на языке Р-графов разрабатывается постепенно, как последовательность всеусложняющихся кадров. Кроме того, логика работы алгоритма, при задании которой, как правило, допускается подавляющее большинство ошибок, изображается явно дугами и вершинами Р-графа. В результате этого, как показала практика [46,49] , число ошибок при программировании весьма мало. Автономное тестирование становится малорезультативным. Таким образом, удается еще более сократить технологическую цепочку создания программного продукта без ухудшения качества последнего.

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

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

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

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

Разработка методики программирования выполняется для каждого нового проекта заново на этапе технологической подготовки производства на основе предоставляемых пользователю методических рекомендаций. Методикой программирования может регламентироваться применение тех или иных языковых конструкций (разрывов дуг, операторов ВО , комментариев, имен вершин и т.п.). Методикой программирования определяется оптимальный состав и форма программного модуля. Так, при разработке языка 1£$ [47] было принято следующее распределение информации по листам формата А4 (см. Р-графы Приложения I).

Первый лист содержит:

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

- Основной Р-граф - остов задаваемого алгоритма.

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

- Словесное описание действий, выполняемых алгоритмом.

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

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

В соответствии с требованиями, предъявляемыми к предлагаемому методу программирования (§ 1.1), программа на языке Р-гра-фов является единым комплексным документом и не требует для своего сопровождения какой-либо дополнительной информации. В состав передаваемой пользователю документации, в соответствии с требованиями ЕСПД, при этом входят только документы на систему в целом (описание языка, руководство программисту и т.п.). Указанные документы подготавливаются на основе эскизного и технического проектов на систему.

§ 3.2. Система документации проекта

Значительный рост производительности труда и качества программ в рамках Р-технологии с использованием языка Р-графов дает организация и ведение системы технологической документации (документации проекта).

Функциями системы документации при этом являются:

- хранение и модификация модулей разрабатываемой программы;

- учет выполняемых работ;

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

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

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

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

Ниже кратко описана система технологической документации (документации проекта), разработанная при непосредственном участии автора во ВНИИСС в 1979-1983 годах. Данная система документации не претендует на полноту и универсальность, но опирается тем не менее на значительный опыт разработки в рамках Р-техно-логии на языке Р-графов программ-трансляторов ¡45,47] . В некоторых случаях предлагается несколько альтернативных вариантов построения документации. Выбор того или иного варианта должен определяться условиями конкретной организации.

Группы документов и способы их организации. На состав и структуру системы документации существенное влияние оказывают: класс решаемой задачи; квалификация и численность коллектива (например, наличие вспомогательного технического персонала); организационные традиции предприятия-разработчика (например, наличие стандартов предприятия, форма отчетности, соблюдение ЕСПД и т.д.); требование предцриятия-потребителя; техническая база (парк ЭВМ, служба подготовки и множительная техника и т.д.). Тем не менее, можно выделить следующие группы документов: I. Регламентная документация. Сюда относятся общее описание технологии работ, в том числе должностные инструкции. Регламентная документация отвечает на вопросы: что и как надо делать при выполнении данной работы; какая информация является исходной, а какая итоговой; какая информация из итоговой приводит к инициации других работ; какую учетную документацию необходимо заполнить по итогам данной работы и т.д. Разработка регламентной документации предшествует этапу проектирования и относится к этапу технологической подготовки производства. Должностные инструкции должны содержать подробное описание алгоритма выполнения всех основных работ. Регламентная документация призвана обеспечить четкость выполнения всех этапов работ, взаимодействие между группами разработчиков, проведение единой технологической политики в рамках всего проекта. Регламентная документация сводит все части проекта к определенной регламентированной последовательности типовых работ.

2. Учетная документация на различные выполняемые работы.

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

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

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

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

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

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

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

3. Журнал состоит из записей. Все записи имеют одинаковую структуру и состоят из набора поименованных граф. Например, журнал выполняемых работ содержит записи о всех создаваемых или модифицируемых в данный момент программных модулях. Журнал содержит графы: фамилия выдавшего задание и дата выдачи, фамилия исполнителя, ссылка на документ, содержащий причину исправления и т.д. Журналы, как правило, хранятся на магнитных носителях, в виде последовательных наборов данных. Журналы подвергаются постоянной модификации путем добавления новых записей или отдельных граф к существующим записям. Уничтожение или замена записей не допускается. Целесообразно иметь администратора системы документации, функциями которого являются контроль за состоянием системы документации и правильностью ее заполнения; замена копий документов при изменении оригинала; возможно, выполнение некоторых трудоемких функций, например, справки по системе документов в целом.

Функции системы документации. Операции с документацией выполняются вручную либо автоматически. Чем больше документов размещается на магнитных носителях, тем более широким может быть перечень автоматически выполняемых функций системы документации, тем более эффективна будет вся система в целом. Например, автоматический контроль или информационно справочный поиск большого объема может существенно повысить качество документации и программного продукта в целом. Система документации выполняет функции: создания, обновления, контроля и информационно-справочного поиска. Функция создания приводит к организации нового документа (описания, альбома либо журнала). Для описаний - это запись нового раздела, если документ хранится на машинных носителях. Для альбома - организация соответствующей библиотеки. Функция обновления выполняет: включение нового листа в альбом, включение новой записи в журнал, заполнение пустой графы в записи. Информация при этом поступает из: параметров функции обновления, связанных записей других журналов, Р-графов модулей во время их записи в библиотеки. (Из Р-графов можно извлечь: имя модуля, имя охватывающей подсистемы (программы), EXTRN,

ENTRY, COMMON имена и т.п.).

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

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

В состав системы документации включен ряд комплексных функций, применяемых по окончанию основных этапов проектирования к каждому программному модулю. Например, функция ОКОНЧИТЬ ИСПРАВЛЕНИЕ программного модуля переносит текст модуля из личного альбома (библиотеки) исправлявшего в альбом тестолога. При этом проверяется синтаксическая правильность модуля, наличие соответствующей записи в журнале выполняемых работ. Текст записи переносится в журнал выполненных работ и может быть выбран оттуда справочной функцией совместно с другими записями по данному модулю. Тем самым накапливается и отслеживается история разработки и модификации каждой программной компоненты.

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

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

- более высокую организационную и методическую обеспеченность различных этапов разработки;

- повышение культуры программирования;

- достаточную информированность для обоснованного администрирования хода работ;

- уменьшение количества ошибок, особенно на этапах проектирования и отладки;

- быструю адаптацию к работе новых сотрудников;

- облегчение создания эксплуатационной документации.

§ 3.3. Опыт эксплуатации транслятора Р-графов

Транслятор языка Р-графов был разработан в 1980-1981 годах в лаборатории математического моделирования ВНИИСС.

Предварительно создавался макет транслятора для РТРАН-диа-лекта языка [45] . Макет, написанный на языке РТР АН, позволил цроверить основные положения описываемого метода графического программирования; усовершенствовать синтаксис и семантику языка; реализовать ряд новых механизмов, потребность в которых была выявлена в результате опытной эксплуатации языка.

В 1981 г. в опытную эксплуатацию во ВНИИСС была сдана первая версия транслятора для трех диалектов языка (ПП-1, Фортран, РТРАН). В 1982 году транслятор Р-графов был передан ИК АН УССР и включен в состав технологического комплекса программиста РТК ОС ЕС. В том же году в составе РТК ОС ЕС транслятор был сдан СШО "Алгоритм" [48] , где он вошел в комплект обязательной поставки математического обеспечения ЕС ЭВМ.

- 134 -ЗАКЛЮЧЕНИЕ

Настоящая работа посвящена некоторым теоретическим и практическим аспектам совершенствования методологии программирования.

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

Проведенное в настоящей работе исследование дало следующие основные результаты:

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

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

3. Введено формальное определение языка Р-графов и сформированы три его подмножества: Фортран, ПЛ-1 и РТРАН диалекты языка. Все операторы управления программой и трансляцией исходных языков в диалектах заменены на наглядные графические конструкции, образуемые дугами, вершинами и именами вершин Р-графов. В диалекты введен ряд новых по сравнению с исходными языками понятий и операторов, повышающих уровень и однородность языка Р-графов.

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

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

6. Определены метрические характеристики диалектов языка Р-графов и выявлено их улучшение по сравнению с исходными языками ПЛ-1, Фортран, РТР АН. Дяя каждого диалекта получены зависимости, предсказывающие ряд количественных характеристик программ до начала их разработки,

7. На базе разработанного математического аппарата реализован и введен в эксплуатацию в составе РТК ОС ЕС транслятор Р-графов и необходимый набор вспомогательных программных средств.

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

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

Опыт эксплуатации транслятора языка Р-графов в ряде организаций определил пути дальнейшего совершенствования языка. Намечается работа в двух направлениях. Во-первых, это доработка собственно языка Р-графов - ввод ряда новых операторов в существующие диалекты, разработка новых Фортран-77 и Паскаль-диалектов. Во-вторых, это разработка различных сервисных программ, повышающих эффективность использования языка. Среди них: специальный графический редактор ввода и коррекции Р-графов; базирующаяся на проверке свойств факторграфа программа проверки Р-графов. Намечено дальнейшее совершенствование системы документации проекта.

Список литературы диссертационного исследования кандидат физико-математических наук Мощицкий, Александр Викторович, 1984 год

1. Александров А.Л., Бабенко Л.П., Кауфман В.Ш., Ющенко Е.Д. Проблема стандартизации языков программирования. - УСиМ, 1983,1. В 4, с.14-19.

2. Александровский А. Д. Использование Р-графов для отображения динамических характеристик программ реального времени. -В кн.: Р-технология црограммирования. Тез.докл. I Всесоюзной конф. Ч.П. Опыт црименения. Киев.: ИК АН УССР, 1983, c.IO-II.

3. Александровский А.Д. Использование Р-графов для отображения аппарата прерываний ЭВМ при разработке программ реального времени. Там же 2, с.9-10.

4. Аугустон М.И., Балодис Р.П. и др. Программирование на ШГ/1 ОС ЕС. М.: Статистика, 1979. - 269с.

5. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. T.I. Синтаксический анализ. М.: Мир, 1978. - 6Нс.

6. Боем Б., Браун Дж., Каспар X. и др. Характеристика качества программного обеспечения. М.: Мир, 1981. - 206с.

7. Боченков В.В., Мощицкий A.B., Цригожин М.И. Язык для моделирования динамики процессов синтеза полимеров. В кн.: Тезисы докладов 1У Всесоюзной конференции "Математические методы в химии". Ереван, 15-18 ноября 1982г., с.256-257.

8. Брукс Ф.П. мл. Как проектируются и создаются программные комплексы. М.: Наука, 1979. - 150с.

9. Вельбицкий И.В., Ходаковский В.Н., Шолмов Л.И. Технологический комплекс производства программ на машинах ЕС ЭВМ и БЭСМ 6. М.: Статистика, 1980. - 263с.

10. Вельбицкий И.В. Формальное задание семантики языковсовременных систем программирования. ДАН, 1975, № 233, № 6, с.1329-1332.

11. Вельбвдкий И.В., Ющенко Е.Л. Метаязык, ориентированный на синтаксический анализ и контроль. Кибернетика, 1970. J& 2, с.50-53.

12. Вельбвдкий И.В. Метаязык Р-грамматик. Кибернетика,1973, Я 3, с.47-63.

13. Вельбицкий И.В., Мощицкий A.B. Интерфейс графического представления программ в Р-технологии. УСиМ, 1981, J£ 6, с. 7378.

14. Вельбицкий И.В. Р-технология 80. - УСиМ, 1980, № 6, с.49-55.

15. Вельбицкий И.В. Метод обработки дискретной информации на базе одного способа формального задания семантики языков. Док. диссерт., Д019852. Киев, 1977, 401с.

16. Вельбицкий И.В. Технологические линии производства программ. Программирование. 1980, № 2, с.14-26.

17. Вельбицкий И.В. Безбумажная технология программирования в диалоговой среде. УСиМ, 1982, № 6, с.29-37.

18. Венда В.Ф. Инженерная психология и синтез систем отображения информации. М.: Машиностроение, 1982 - 344с.

19. Ганзен В.А. Восприятие целостных объектов. Л.: Изд.ЛГУ,1974. 152с.

20. Глушков В.М. Введение в кибернетику. Киев: Изд. АН УССР, 1964. - 323с.

21. Глушков В.М. Основы безбумажной информатики. Наука, 1982. - 552с.

22. Глушков В.М., Вельбицкий И.В. Технология программирования и проблемы ее автоматизации. УСиМ, 1976, № 6, с.75-93.

23. Глушков В.М., Капитонова Ю.В., Летичевский A.A. О применении метода формализованных технических заданий к проектированию программ обработки структур данных. Программирование, 1978, 6, с.31-43.

24. Глушков В.M., Цейтлин Г.Е., Ющенко Е.Л. Алгебра, языки, программирование. Киев: Наукова думка, 1974, 328с.

25. Глушков В.М. Фундаментальные исследования и технология программирования. Црограммщювание, 1980, № 2, с.13-24.

26. Горвиц Ю.М., Демьяненко В.Ю. и др. Разработка транслятора с языка запросов по Р-технологии. там же 2, с.50-51.

27. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. М.: Мир, 1975. - 544с.

28. Дал У., Дейкстра Э., Хоор К. Структурное программирование. М.: Мир, 1975. - 250с.

29. Дейкстра Э. Дисциплина программирования. М.: Мир, 1978, 274с.

30. Додонов С.Б. Использование Р-языка в технологии проектирования промышленных объектов. там же 2, с.75-77.

31. Ершов А.П. О некоторых человеческих и эстетических факторах в программировании. Кибернетика, 1972 5.

32. Ершов А.П. Введение в теоретическое программирование.-М.: Наука, 1977, 288с.

33. Зайченко Ю.П. Исследование операций. Киев.: Вица школа, 1975, 319с.

34. Иодан Э. Структурное проектирование и конструирование программ. М. : Мир, 1979. - 415с.

35. Кнут? Д. Искусство программирования для ЭВМ. T.I. Основные алгоритмы. М. : Мир, 1976. - 734с.

36. Криницкий H.A. Равносильное преобразование алгоритмов.-Советское радио, М., 1970, 304с.

37. Крукаускас Р.Ю., Лемпертас Д.И. Графическая Р-програм-ма как средство описания динамики базы данных на инфологическом уровне. там же 2, с.194-197.

38. Липаев В.В. Состояние и проблемы производства программного обеспечения для систем управления и обработки информации -УСиМ, 1980, В I, с.9-15.

39. Логвин В.В., Мощицкий A.B. Диалоговая подготовка и редактирование программ на проблемно-ориентированном языке. там же 2, с.121-123.

40. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов. М.: Мир, 1979. - 654с.

41. Ляпунов A.A. 0 логических схемах программ. Проблемы кибернетики, 1958, вып.1, с.46.

42. Майерс Г. Надежность программного обеспечения. М.: Мир, 1980. - 360с.

43. Методы измерения характеристик программного обеспечения. ЭИ ВТ, 1982, № 25. - 47с.

44. Мощицкий A.B., Пригожин М.И. Использование Р-технологии для разработки транслятора с языка химико-технологического моделирования. В кн.: Опыт использования Р-технологии для решения прикладных задач. Киев: Ж АН УССР, 1980, с.29-30.

45. Мощицкий A.B., Боченков В.В. Транслятор Р-графов. В кн.: Црактика применения Р-технологии. Киев: Ж АН УССР, 1982, с.8-14.

46. Мощицкий A.B. Р-технология с использованием языка Р-графов. В кн.: Р-технология программирования и средства ее инструментальной поддержки. Применение Р-технологии программирования для решения прикладных задач. Киев: Ж АН УССР, 1982, с.16-18.

47. Мощицкий A.B. Опыт применения РТК во ВНИИСС. В кн.: Р-технология программирования и средства ее инструментальной поддержки. Реализованные программные проекты, 1982, с.69-71.

48. Мощицкий A.B. Технологический комплекс программиста РТК ОС ВС. Язык Р-графов. Книга 13, ИК АН УССР, - Киев: 1982г. 28с. - Государственный фонд алгоритмов и программ СССР: инв.1. ТП 1/770 СНПО "Алгоритм".

49. Мощицкий A.B. Методические особенности програмынфования на языке Р-графов. В кн.: Р-технология программирования. Тез. докл. I Всесоюзной конф. 4.1. Средства автоматизации. Киев:

50. ИК АН УССР, 1983, с. 76-79.

51. Мощицкий A.B. Сравнительная оценка языков программирования РТК ОС ЕС. там же 49, с.79-82.

52. Мясников В.А. Совершенствование технологии программирования важнейшая народнохозяйственная задача. - УСиМ, 1980,1. I, с.9-14.

53. Налимов В.В. Вероятностная модель языка: 0 соотношении естественных и искусственных языков. М.: Наука, 1979, 303с.

54. Ope 0. Теория 1£афов. М. : Наука, 1968. - 352с.

55. Пратт Т. Языки программирования: разработка и реализация. М.: Мир, 1979. - 574с.55. фуксман А.Л. Технологические аспекты создания программных систем. М.: Статистика, 1974. - 184с.

56. Харари Ф. Теория графов. М.: Мир, 1973. - 299с.

57. Хичман Б. Сравнительное изучение языков программирования. М. : Мир, 1974. 204с.

58. Ходаковский В.Н. тт язык структурного программирования. - В кн. : Технология программирования. Киев: ИК АН УССР, 1980, с.33-40.

59. Холстед М.Х. Начала науки о программах. М.: Финансы и статистика, 1981. - 128с.

60. Хыоз Дж. Мичтом Дж. Структурный подход к программированию. М.: Мир, 1980. - 278с.

61. Цейтлин Г.Е., Ющенко Е.Л. О представлении языков в бс-автоматах. Кибернетика, 1974, № 6, с.40-52.

62. Шелмов Л.И., Ходаковский В.Н., Макаров В.В. и др. Графическое представление алгоритмов в безбумажной Р-технологии программирования. УСиМ, 1982, Jfc 6, с.43-47.

63. Шпиц А.Н. Использование комплекса РТК для автоматизации работы технолога промышленного предприятия. В кн.: Р-технология и средства ее инструментальной поддержки. Киев: ИК АН УССР, 1982, с.79-80.

64. Штреймикис Р.И. Графический язык программирования вычислительных задач для РТК. В кн.: Р-технология программирования. Тез.докл. I Всесоюзной конференции Ч.П.Опыт применения. Киев: ИК АН УССР, 1983, с.194-197.

65. Энциклопедия кибернетики (Под ред. В.М.Глушкова). -Киев: изд. УСЭ, 1974, T.I. 680с., Т.2. - 624с.

66. Янов Ю.И. О логических схемах алгоритмов. Проблемы кибернетики. 1958, вып. I, с.75-127.

67. Вирт Н. Системное программирование. М.: Мир, 1977,183с.

68. Ершов А.П. Современное состояние теории схем программ. В кн.: Проблемы кибернетики. Вып. 27, М.: Наука, 1972, с.87-110.

69. Корбут A.A., Финкелыптейн Ю.Ю. Дискретное программирование. М.: Наука, 1969, 368с.

70. Финкелыптейн Ю.Ю. Приближенные методы и прикладные задачи дискретного программирования. М.: Наука, 1976, 264с.

71. Шоломитский X. Метод измерения сложности программного обеспечения. В кн.: Вычислительная техника социалистических стран. Выпуск 13. М., Статистика.

72. Диалоговая система коллективного доступа PRIMUS 2.з. Концепции и возможности. М.: МИФИ, 1983 , 25с.

73. Фортран /Под ред. Ющенко E.JI./. Киев: Вища школа, 1976. - 322с.

74. Венда В.Ф. Принципы оптимизации взаимодействия человека с ЭВМ. М.: ЦНИИ ТЭИ цриборостроения, 1976, 38с.

75. Смирнов Б.А. и др. Инженерная психология. М.: Экономика, 1983, 223с.

76. Stzuctuzed ргоугаттЬпу "DatamLnation , 1973, V. 19, Ш) "Computes", 1975, V. 8 , N6.

77. Bazkez F.T. Chief Pzoyzammez Team ГПапа-qem&rit о/ Pzodaction Pzoyzamminy - IBM SYSTEM. ^ 1972, V. 19, N1

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