ЭКРАННЫЕ ТЕРМИНАЛЫ
Альтернативные способы представления сложной информации
До сих пор обсуждение проблемы документирования программного обеспечения было связано с документами на естественном языке. Обычный текст не является, однако, единственно возможной формой представления спецификаций систем и программ, равно как и проектных решений. Для тех же целей успешно используются и многие иные формы, дополняющие или заменяющие собой текстовое представление. Ниже будет кратко описан достаточно характерный набор таких документов. Язык проектирования программ. Этот язык, часто называемый структурированным английским, есть не что иное, как сокращенная форма обычного языка, удобная для описания работы программ. Язык проектирования программ PDL базируется на управляющих конструкциях типа IF... THEN и DO... ENDDO [5]. Однако в настоящее время существует множество вариантов этого языка, так как указанный принцип его построения легко применим в структуре многих других языков программирования.
PDL весьма полезен уже по той простой причине, что он одинаково удобен для представления проектных решений как в рамках технического проекта, так и в рамках рабочего проектирования. Он в равной степени подходит и к методам структурной декомпозиции, и к методам пошаговой детализации (рис. 5 2).
Блок-схемы. Блок-схема — удобное графическое средство представления управляющих структур, при использовании которого информация о процессах, выбираемых решениях, аппаратуре, начальных и конечных точках представляется стандартным на-
Стратегия обработки накладных
Если сумма по накладной превышает 500 долл,
Если на счету имеются накладные, просроченные более чем иа 60 дней,
Задержать оформление до погашения долга Иначе (счет в порядке) выдать подтверждение и накладную Иначе (накладная на 500 и менее долл),
Если на счету имеются накладные, просроченные более чем на 60 дней, выдать подтверждение, накладную и сделать запись в отчете о кредитных операциях Иначе (счет в порядке) выдать подтверждение и накладную
Рис. 5 2. Задача, выраженная на языке проектирования программ [7]. (Перепечатано с разрешения) Copyright © 1978, 1979 By Yourdon Inc
Бором символов. Символы соединяются стрелками, показывающими порядок выполнения операций, которые реализуются по очереди, начиная с верха страницы. На рис. 5.3 показана блок - схема для примера, отображенного на рис 5 2. Диаграммы Несси — Шнейдермана. Диаграмма Несси — Шнейдермана [24] представляет собой изобразительное средство, альтернативное блок-схеме. Внутри прямоугольной рамки бывает полностью заключен один целостный процесс. «Начинка» этого прямоугольника служит для указания иерархических связей между блоками программы. Существуют три основных элемента диаграмм Несси — Шнейдермана:
1.Обычный прямоугольник используется для представления операции присваивания, например 1 = 1+1
2. Прямоугольник, поделенный на три треугольника, соответствует блоку принятия решения по типу «Да — Нет» или «Истина (Т)—Ложь (F)».
Рис 5 3. Блок-схема для задачи, показанной иа рис. 5.2. |
3. Прямоугольник, заключенный внутри большего прямоугольника и расположенный в нижнем правом углу, обозначает процедуру повторения, т. е. итерацию (рис. 5.4). На рис. 5 5 показана схема Несси — Шнейдермана для примера на рис. 5.2. Таблица решений. Таблица решений — это специальное средство представления сложных логических связей [23, 29]. Основу таблицы составляет перечень исходных условий. В клетках таблицы отмечается наличие или отсутствие действия для каждого условия (рис. 5.6).
Таблицы решений могут использоваться для представления спецификаций сложных проблем, но бесполезны для иллюстрации разработки. Основным достоинством таблиц решений является то, что отклики или действия определены для любых возможных условий. Однако при разработке программ необходимо реагировать на любое условие, которое изменилось во время
Повторить для I=)~N |
|
STORE STORE+1 |
Выполнения алгоритма; в таблице решений невозможно показать эти изменения [10].
Дерево решений. Дерево решений —это альтернативный способ представления информации, содержащейся в таблице решений (рис. 5.7).
Рис. 5.4. Итерация на диаграмме Несси — Шнейдермана. |
Схемы информационных потоков. Это графическое средство предназначено для представления потоков данных в системе. Оно является одним из средств реализации структурно-аналитического подхода, рекомендованного ДеМарко [7], и содержит четыре основных элемента:
Сумма по накладной > 500 долл. ^^ |
|||
№ |
— Нет |
||
^N^Просрочка плате - у/ М > 60 ^^ Ідней Да / Hem |
~*^Просрочка плате - ^s жа > 60 — дней у Да Нет |
||
Задержать |
Дать подтверждение |
Сделать запись в отчете |
|
Оформление |
Оформить накладную |
Дать подтверждение |
|
Оформить накладную |
|||
Возврат |
Рис. 5.5. Диаграмма Несси — Шнейдермана для задачи, показанной на рис. 5.2. |
1) круги, или «пузырьки», — обозначают процессы;
2) векторы — обозначают потоки данных;
3) прямые линии — представляют файлы;
4) прямоугольники — показывают внешние источники и приемники (стоки) информации (рис. 5.8).
Схемы информационных потоков отличаются от обычных блок-схем тем, что информация об инициировании того или иного процесса и последовательности операций внутри его не дается. Тем не менее такие схемы полезны для контроля правильности представляемой информации, поскольку отображают систему почти так, как ее видит пользователь [7J. Представления в виде НІРО-диаграмм. Диаграмма HIPO (Hierarchy Plus Input, Process, Output)—это форма графического представления отношений между процессами в рамках
Условия |
Правила |
|||
1 |
2 |
3 |
4 |
|
1. Накладная >500 долл. |
Д |
Н |
Д |
Н |
2 Просрочка более 60 дней |
Д |
Д |
Н |
Н |
Действия |
||||
1. Выдать подтверждение |
Н |
Д |
Д |
Д |
2. Выдать накладную |
Н |
Д |
Д |
Д |
3 Запись в отчет |
Н |
Д |
Н |
Н |
Рнс. 5.6. Таблица решений [7]. (Перепечано с разрешения.) Copyright © 1978, 1979 By Yourdon Inc. |
Системы и способ описания их входов и выходов [38]. Каждому системному процессу в НІРО-диаграмме соответствует свой нумерованный блок и индивидуальное имя, указываемые в наглядном оглавлении (рис. 5.9), а далее каждый отдельный процесс описывается с помощью схемы НІРО (рис. 5.10).
Сопутствующие исследования
Имеются все основания полагать, что для более полного охвата сложных процедурных инструкций существуют языковые средства более подходящие, чем естественный язык. Например, в рамках исследования [42] испытуемых, не являющихся техническими специалистами, просили использовать для описания транспортных задач с временными, стоимостными и пространственными ограничениями повествовательные обороты, короткие предложения, таблицы решений и древовидные схемы. При этом оказалось, что повествовательные обороты — наименее эффективный способ описания как легких, так и трудных задач. Все остальные формы представления были одинаково полезны для легких задач, однако наибольшая эффективность применительно
. 1. Задержать оформление до погашения долга _ 2 Видать подтверждение и накладную |
Просрочка пла - . тема?60 дней
Сумма по накладной >500 доля
Счет в порядке
Вдрадотка накладных
Выдать
Подтверждение И накладную, сделать запись 8 отчете о кредитных операциях
Просрочка пла*^ Тчжа^днеИ" Сумма по накладной. ■■ 500 долл.
Счет в порядке |
. 4. Выдать подтверждение и накладную
Рис. 5.7. Дерево решений [7]. (Перепечатано с разрешения.) Copyright © 1978, 1979 By Yourdon Inc. V |
Данные для аннулирования |
Подтверждение |
Файл клиентов |
Файл семинаров |
Файл клиентов Файл семинаров Файл платежей / Отмена |
Деловое сообщение |
Рис. 5.8. Схема информационных потоков [7]. (Перепечатано с разрешения.)
К трудным задачам была выявлена у древовидных схем. В аналогичном исследовании [3] изучались в сравнении блок-схемы и короткие предложения как альтернативные способы представления инструкций, выдаваемых на пульт управления. Для легких задач участники эксперимента успешно использовали любую форму представления, однако при решении сложных задач блок-схемы приводили к меньшему числу ошибок.
Кэммен [13] провел сравнение эффективности повествовательных описаний и двух разновидностей блок-схем в качестве средства представления инструкций, касающихся процедуры
Рис. 5.9. Наглядное оглавление. |
Z.0 Аннулирование Вход Процесс Выход Рис. 5.10. Диаграмма HIPO. |
Набора телефонного номера. При этом в двух группах испытуемых, одна из которых состояла из домохозяек, а другая — из технических специалистов, блок-схемы оказались более эффективными в плане обеспечения четкого соблюдения требуемой процедуры.
Миллер [21] предлагал неопытным пользователям ЭВМ, в роли которых выступали студенты, описать процедуру поиска информации в картотеке. Полученные в результате повествовательные инструкции были нечеткими, поскольку содержали множество ссылок по контексту, а наличие предлогов в описании затрудняло определение объектов, к которым производилась отсылка. Отсюда автор сделал вывод, что использование сложных процедурных указаний оказывается весьма затруднительным в условиях, которые не обеспечивают надлежащей структуризации самой проблемы и способов ее решения. Он высказал предположение, что применительно к реализации программируемых инструкций всегда более полезно использование некоторого подмножества естественного языка.
Проводились также исследования эффективности разнообразных форм программной документации. В частности, был проведен эксперимент [30], в котором студентам старших курсов факультета вычислительной техники предлагалось представить свои проекты либо в форме блок-схем, либо на языке проектирования программ PDL. Хотя экспериментаторы не обнаружили существенных различий в качестве реализации проектируемых программ, по их мнению, проекты, выраженные на языке PDL, более высокого качества, чем проекты на языке блок-схем, так как первые содержат больше процедурных подробностей.
Известен также целый ряд экспериментов, ориентированных на сравнительный анализ совокупности задач программирования (постановка проблемы, кодирование, отладка и модификация программ), решаемых с использованием четырех типов символического представления (естественного языка, подмножества естественного языка, языка PDL и блок-схем) и трех вариантов пространственных структур (горизонтальный или вертикальный поток, разветвленная блок-схема и иерархическая древовидная схема), что дало в сумме 12 типов форматов спецификаций [31, 33]. В этих экспериментах со всей очевидностью проявились различия в эффективности всех четырех типов символики. Наихудшим качеством обладали естественноязыковые спецификации, выполненные с использованием языка PDL. Разница в эффективности проверявшихся пространственных структур была менее явной, однако разветвленные блок-схемы существенно превосходили все другие структуры в части уменьшения числа ошибок реализации алгоритма. Хорошую эффективность продемонстрировали последовательные и разветвленные информационные структуры на базе языка PDL, так как в обоих случаях удавалось получить сжатые формы четкого описания алгоритмических структур.
В итоге можно сделать вывод, что естественный язык не всегда представляет собой наилучшее средство отображения сложных процедурных инструкций; для этих целей имеются более эффективные средства. Когда речь идет о проектировании программ, вполне подходящим представляется язык PDL. Разумеется, как всегда, пользователь должен сам выбирать способ представления информации в зависимости от характера решаемой задачи и условий, в которых она выполняется.