- •Федеральное агентство по образованию российской федерации
- •1. Виды программных документов и устанавливающие их госТы
- •К. Гр. Гд – кд
- •44. 4346. 04 - 13
- •2. Рекомендации по содержанию основной части программных документов
- •2.1. Текст программы. Требования к содержанию и оформлению
- •Procedure InitStack(Var Top:tp); { Процедура инициализации стека}
- •2.2. Описание программы. Требования к содержанию и оформлению
- •2.3. Описание применения. Требования к содержанию и оформлению
- •2.4. Спецификация. Требования к содержанию и оформлению
- •Литература
- •Содержание
- •Список госТов единой системы программной документации
Procedure InitStack(Var Top:tp); { Процедура инициализации стека}
Begin
Top:=Nil { Ссылка на вершину стека }
End; { InitStack }
Function EmptyStack(Top:TP):Boolean; { Функция проверки пустоты стека }
Begin
EmptyStack:=Top=Nil
End; { EmptyStack }
Рисунок 5 (продолжение)
Procedure InStack(X:Tinf; Var Top:TP); { Процедура включения элемента в стек }
Var pn:TP; { Ссылка на новый элемент }
Begin
New(pn); { Резервирование памяти для нового элемента }
pn^.inf:=X; { Заполнение поля информации }
pn^.pSled:=Top;{ Заполнение поля ссылки }
Top:=pn { Новая ссылка на вершину стека }
End; { InStack }
Procedure OutStack(Var X:Tinf;Var Top:TP); { Процедура извлечения элемента из стека }
Var pu:TP; { Ссылка на удаляемый элемент }
Begin
If Top<>Nil { Если стек не пуст }
Then Begin
X:=Top^.inf; { Извлечение информации }
pu:=Top; { Запоминание ссылки на удаляемый элемент }
Top:=Top^.pSled;{ Новая ссылка на вершину стека }
Dispose(pu) { Удаление элемента стека }
End
End; { OutStack }
End.
Рисунок 5 (продолжение)
Продуманный и обоснованный выбор структур данных, наиболее адекватно отражающих моделируемую предметную область, а также соответствующее описание их в программе может повлиять на эффективность и легкость чтения программы. В программах для обеспечения большей универсальности и более легкой модифицируемости рекомендуется избегать явных констант, кроме таких общеупотребительных как нуль и единица.
Структура программы должна быть простой и легко воспринимаемой при первом чтении. Следует разбивать программу на отдельные подпрограммы, выделяя повторяющиеся части программы. Умелое разбиение программного продукта на подпрограммы, не превышающие размера одной страницы программного текста, позволит сделать программу легко читаемой, облегчит и ускорит ее отладку.
Необходимо выполнять исчерпывающие проверки в программе. Анализ корректности входных данных в программе является обязательным. Не следует писать изменяющих себя программ. Несомненную пользу программисту принесет знакомство с литературой, посвященной технике и технологии программирования [3 - 6].
2.2. Описание программы. Требования к содержанию и оформлению
ГОСТ 19.101-77 определяет описание программы как совокупность сведений о логической структуре и функционировании программы. Описание программы должно состоять из четырех основных частей: титульной части, информационной части, основной части, части регистрации изменений.
Основная часть должна содержать следующие разделы: общие сведения, функциональное назначение, описание логической структуры, используемые технические средства, вызов и загрузка, входные данные, выходные данные.
В зависимости от особенностей программы допускается вводить новые разделы или объединять отдельные разделы. При описании программного продукта, содержащего несколько программных единиц (программ, подпрограмм), описание по указанной схеме дают для каждой программной единицы, придерживаясь при этом иерархии компоновки общего программного продукта. Так, например, если общая программа Control включает обращение к функции FileExist и процедуре Brackets, которая в свою очередь обращается к процедуре Error, и общая схема иерархии данного программного продукта изображена на рисунке 6, то описание необходимо начинать с программной единицы Control далее описывать программные единицы FileExist, Brackets, Stack, затем описать программную единицу Error в составе Brackets
Пример иерархии сложного программного продукта приведен на рисунке 6.
Control
Программа контроля
расстановки скобок
в программах
Brackets FileExist Stack
Процедура проверки Функция проверки Модуль
правильности существования для работы
расстановки скобок файла со стеком
Error
Процедура InitStack EmptyStack InStack OutStack
расшифровки Процедура Функция Процедура Процедура
ошибок инициализации проверки включения извлечения
стека пустоты стека элемента элемента
в стек из стека
Рисунок 6 – Структурная диаграмма программы
В разделе "Общие сведения" указываются обозначение и наименование программы, программное обеспечение (операционная среда, прикладные программы), необходимое для функционирования описываемой программы. Если для различных режимов обработки требуются разные прикладные программы, следует дать таблицу, которая показывает, какое программное обеспечение требуется для каждого режима. Необходимо указать язык программирования, на котором написана программа.
В разделе "Функциональное назначение" определяется класс решаемых задач и (или ) назначение программы. В этом пункте следует четко перечислить все функции, которые программа выполняет в установленном порядке или по выбору пользователя. Необходимо указать ограничения на применение программы.
В разделе "Описание логической структуры" приводится структурная диаграмма программы, в которой указываются имена и назначение составляющих модулей и подпрограмм (рисунок 6). Словесное описание структурных единиц программы сопровождается представлением укрупненных схем алгоритмов, в целом, не более трех листов. На первом листе приводится укрупненная схема алгоритма функционирования главной программы. Кроме этого, представляются схемы алгоритмов тех подпрограмм, которые отображают суть метода решения задачи. Примеры схем алгоритмов приведены на рисунках 7, 8, 9, 10.
Оформление схем алгоритмов должно соответствовать требованиям ГОСТ 19.701-90 "Схемы алгоритмов, программ, данных и систем". Первым блоком в любой схеме является блок ПУСК (или НАЧАЛО):
Соединительные линии в схеме, называемые иначе линиями потока, не должны пересекаться, для этого применяются внутристраничные соединители
8 или 8
и межстраничные соединители
или
12 [ с листа...
12 [ на лист…
Стрелка, направленная к соединителю, означает, что управление передается блоку, номер которого указан внутри соединителя. Стрелка, направленная от соединителя, означает, что управление передается от блока, номер которого указан внутри соединителя. Каждая схема алгоритма для отдельной программной единицы изображается на отдельном рисунке. Рисунки нумеруются подряд внутри одного документа. Каждый рисунок имеет название, которое пишется над рисунком, и номер, который пишется под рисунком. Названием рисунка с изображением схемы алгоритма может служить наименование соответствующей программной единицы, например: "Схема алгоритма программы контроля" или "Схема алгоритма подпрограммы Error". Примеры схем алгоритмов приведены на рисунках 7, 8, 9, 10.
Рисунок 7 – Схема алгоритма программы Control
Рисунок 8 - Функция FileExist Рисунок 9 - Процедура Error
Рисунок 10 – Схема алгоритма процедуры Brackets
При сопровождении программного средства описание логической структуры является материалом, по которому находится та часть текста программы, которую нужно модифицировать или модернизировать. При описании логики работы программы в соответствии с приводимой схемой алгоритма необходимо описать работу, выполняемую каждым блоком.
В разделе "Используемые технические средства" необходимо указать типы ЭВМ, конфигурацию вычислительного комплекса, для которого разработано описываемое программное средство. Если программа учитывает особенности операционной среды, то следует указать ту операционную среду, в которой работает эта программа.
В разделе "Вызов и загрузка" указывается способ вызова программы с соответствующего носителя данных и входные параметры при запуске программы. Допускается указывать объем программы, сведения об использовании оперативной и внешней памяти. Необходимо указать, как фактически начинается выполнение программы, какие сообщения ожидаются в течение этого начального периода.
В разделе "Входные данные" необходимо указать характер, организацию и предварительную подготовку входных данных. Необходимо описать все типы входных данных, назначение каждого типа. Если входная информация может быть представлена последовательностью некоторых крупных логических единиц, то необходимо описать способы объединения входных данных в эти более крупные логические единицы. Необходимо указать формат и назначение всех полей логической записи данных. Необходимо указать также ограничения на размеры и количество входных данных. Выходные данные описываются с той же степенью подробности, что и входные. Если выходными данными являются одно или несколько сообщений, то необходимо указать, как пользователь должен интерпретировать каждое сообщение, как он может использовать информацию, содержащуюся в каждом сообщении.