Лабораторная работа №1
ОПРЕДЕЛЕНИЕ ВНЕШНИХ СПЕЦИФИКАЦИЙ ПРОГРАММ
С ПОМОЩЬЮ HIPO-ТЕХНОЛОГИИ
Цель работы
: ознакомиться с методикой разработки внешних спецификаций программ, основанной на использовании HIPO-технологии проектирования программ; приобрести практические навыки определения и оформления внешних спецификаций программ.
При подготовке к занятию прежде всего необходимо усвоить назначение внешних спецификаций при проектировании программ. Затем необходимо изучить правила и языковые средства, применяемые для составления спецификаций требований и функционнальных спецификаций. Особое внимание следует обратить на использование стандартов из HIPO-технологии для определения и документирования внешних спецификаций программ.
Контрольные вопросы
1. Что называется спецификациями программы?
2. Кто составляет спецификации программы?
3. В чем отличие спецификации требований и функциональных спецификаций?
4. Какие языки применяются для описания спецификаций?
5. Какие вопросы следует осветить при составлении внешних спецификаций?
6. Назовите методы проверки правильности разработанных спецификаций?
7. Каковы особенности HIPO-технологии проектирования программ?
8. Как составляются IPO-диаграммы и схема состава разложения?
Методические указания
Методика разработки программ на базе структурного подхода состоит из следующих этапов:
– анализ требований и определение внешних спецификаций;
– проектирование алгоритмов;
– кодирование алгоритмов;
– тестирование и документирование программы.
Подготовка полных и правильных спецификаций считается одним из ответственнейших этапов в разработке больших программных комплексов. Благодаря составлению внешних спецификаций уточняется исходная постановка задачи и устраняются противоречия, которые обусловлены неоднозначностью понятий естественного языка, применяемого для описания условия задачи и функций программы. Внешние спецификации - важнейший документ для каждой программы, описывающий внешнее взаимодействие программы с пользователем без конкретизации внутренней структуры самой программы.
Составление спецификаций - это функция не заказчика, а специалистов особого рода, обладающих знаниями в области системного анализа, проектирования и тестирования программ, психологии общения человека с машиной, теории программирования и т.п. Спецификации больших программных комплексов записываются на специальных языках. Применяются два класса языков спецификаций:
– язык спецификаций требований (язык технического задания);
– язык функциональных спецификаций.
Языки описания требований к программному продукту почти не формализованы. К этому классу относятся, например, языки PSL(США), СИПЛ(СНГ) и соответствующие им транслирующие системы PSA, ADS[ ] и СИПЛ, которые автоматизируют разработку требований на ЭВМ. Анализатор этих систем, общаясь с заказчиком в диалоговом режиме "вопрос-ответ", проверяет ответы на непротиворечивость, полноту и в результате формирует листинг спецификаций требований. Однако эти схемы не нашли широкого распространения из-за узкой специализации и необходимости выделения для их работы большого количества машинного времени. В настоящее время разрабатываются новые поколения средств системного анализа.
Языки функциональных спецификаций являются полуформальными и описывают все функции, реализуемые программой на ЭВМ. Для этой цели был разработан универсальный международный язык SDL (США) и аналогичный ему в СНГ язык PLUS. Кроме того, для малых и средних программ очень часто применяются специализированные стандарты, определяющие правила записи спецификаций с учетом специфики решаемых задач и утвердившихся традиций в технологии программирования. В любом случае внешние спецификации каждой функции должны освещать следующие вопросы.
1.Описание исходных данных
. Должны быть точно описаны синтаксис (формат) и семантика (назначение, тип, допустимые значения, область изменения) всех исходных данных, которые вводит пользователь в программу.
2.Описание выходных данных
. Дается точное описание семантики и синтаксиса всех результатов, формируемых программой, а также сообщений оператору об ошибках, о ходе вычислительного процесса, о запросах и т.д. Указывается реакция программы на некорректность исходных данных.
3.Описание функций преобразования информации
, выполняемых программой, с точки зрения пользователя.
4.Дополнительные сведения о программе:
ограничения на используемую память, длину программы, время ее работы; идеи относительно внутреннего проектирования функций (если это необходимо).
Для проверки правильности внешних спецификаций применяют ряд методов. Например, неполноту и неоднозначность спецификаций можно проверить с помощью таблицы решений [ ]. Также эффективным приемом оценки внешних спецификаций служит сквозной контроль по схеме "вход - интерпретация спецификаций - выход" [ ]. В соответствии с этим методом в начале для каждой функции строятся "тесты на бумаге", а затем имитируется ввод этих данных в систему и прослеживается преобразование их в соответствующие выходные данные, используя при этом спецификации как описание поведения системы. Если спецификации для какого-нибудь набора входных данных недостаточно полно и правильно описывают выходные данные, то это означает, что обнаружена ошибка.
Одним из эффективных средств составления внешних спецификаций по принципу "сверху-вниз" является HIPO-технология [ ].Внешние спецификации, полученные по этой технологии, еще называют исходным описанием программы. Оно представляет собой альбом связных между собой схем, каждая из которых описывает какую-либо часть задачи или системы, подлежащей разработке. При составлении исходного описания необходимо разделить рассматриваемую задачу на части. При этом следует соблюдать следующие рекомендации:
- деление обьекта должно осущетвляться последовательно и сверху вниз;
- каждая выделяемая часть должна описывать какую-либо законченную содержательную функцию, а методы и особенности реализации не должны учитываться при разложении.
В результате разработчик получает коплект документации: схема состава разложения и схемы (IPO-диаграммы) каждого из элементов разложения.
Исходное описание Системы Диспетчер Схема Состава Номер: 0.1 |
Схема состава разложения |
Лист: 2 Автор: Иванов А. Отдел: каф. ПОИС Дата: 1.09.99 |
|
|
|
Рис. 1. Схема состава разложения
Схема состава разложения изображается в виде древовидного графа с корнем в верхней части листа (рис.1). Вершинами графа служат прямоугольники, изображающие элементы разложения, в каждый из которых необходимо вписывать короткое функциональное назначение элемента, номер уровня от корня дерева и номер в уровне. При составлении схемы сначала выделяются важнейшие функции системы. Затем каждая из этих функций подразделяется на ряд подфункций нижнего уровня, каждая из которых также описывается и т.д. Каждому прямоугольнику в альбоме документации должна соответствовать схема (IPO-диаграмма) с тем же содержательным названием. Если какая-либо схема еще не составлена, то такой прямоугольник обозначается пунктиром.
Кроме графа составляется оглавление альбома документации (рис.2), включающее обозначение всех элементов, их содержательное название и номера листов в альбоме, на которых помещена схема описания этих элементов. Наглядная схема состава разложения и оглавление позволяют облегчить поиск информации нужной степени подробности или нужной диаграммы непосредственно по индексу, без перелистывания всего альбома.
Описание каждого элемента разложения выполняется в виде IPO-диаграммы, показывающей его как функцию обработки информации.
На диаграмме должны быть четко выражены три основные составляющие схемы: входная информация, функция обработки, выходная информация, что наглядно и естественно соответствует действительно происходящим процессам.
IPO-диаграмму рекомендуется чертить на бланках, применяя линейки - шаблоны. Бланк "по вертикали" делится на три зоны. Верхняя зона служит для идентификации схемы, т.е. содержит сведения о самой схеме и авторе. Во второй зоне размещается сама диаграмма, а в третьей, отводимой в нижней части бланка, помещаются комментарии к элементам схемы. Зона размещения диаграммы "по горизонтали" делится также на три части: входные данные, функции преобразования (обработка) данных, выходные данные. Функции преобразования с входными и выходными данными соединяются стрелками. Применяемые условные обозначения данных, путей их передачи и т.п. должны приводиться в каждом альбоме (рис. 2).
На схеме возле каждого данного пишется его имя. Записи в разделе "обработка" выполняются в формализованном виде. Используются записи двух типов: записи-функции и записи-условия.
Записи-функции - это словесные описания на требуемом в конкретной IPO-диаграмме уровне детализации. Если запись-функция подлежит дальнейшей детализации IPO-диаграммами более низкого уровня, то она заключается в прямоугольник.
Записи-условия могут быть альтернативными или итеративными.
Альтернативная запись может иметь следующий вид:
ЕСЛИ
<содержательное описание условия> ТО
<запись>
ИНАЧЕ
<запись> . . .
Итеративные записи используются для образования циклических структур и могут иметь вид:
ПОКА
<содержательное описание условия окончания цикла>
<запись>
<запись>.
Исходное описание Системы Диспетчер Схема Оглавление Номер: 0.0 |
Оглавление альбома
документов и условные обозначания |
Лист: 1 Автор: Иванов А. Отдел: каф. ПОИС Дата: 1.09.99 |
Обозначение | Наименование | Лист | Примечание |
0.0 0.1 1.1 2.4 |
Оглавление альбома документации и условные обозначения Схема состава разложения Автоматизировать обработку
очереди
заявок по командам оператора Удалить из очереди указанную заявку Связь программы Диспетчер с используемыми внешними и внутренними структурами данных |
1 2 3 4 5 |
Структурная схема (рис. 3) |
Данные Связи
Данные, вводимые Передача данных
с клавиатуры
Данные, печатаемые на Слияние потоков
принтере данных
Данные на магнитном Пересечение
диске потоков данных
Единое данное Анализ данных
А Связь по управле-
Групповое данное нию внутри листа
с выделением части А А-номер или буква
Групповое данное, В Связь по управле-
состоящее из С нию между листами
нескольких В – номер листа
составляющих В С – номер элемента
С
Рис. 2. Оглавление и условные обозначения
Все записи в IPO-диаграмме индексируются наиболее удобным для разработчика способом (для ссылок). Текст каждой записи рекомендуется начинать с глагола в повелительном наклонении.
Рекомендуется соблюдать ряд правил, улучшающих наглядность схем. Стрелки между левой и средней частями схемы разрешается направлять только слева направо. Если входные данные используются как входные для других преобразований, изображенных на этой же схеме, то стрелка от этих данных может быть направлена справа налево, из правой части схемы в среднюю.
При потери наглядности такие данные показываются дважды: в правой части - как выходные и в левой - как входные с соответствующей пометкой. Схема в целом должна быть небольшой, желательно, чтобы она размещалась на одном листе, а количество преобразований в ней не превышало десяти. Если схема получилась мало наглядной, то ее следует заново перечертить.
В зону комментариев вносятся сведения, необходимые для разработки программы, но не уменьшающие наглядность схемы. Это могут быть сведения об организации данных, расчетные формулы в преобразованиях, подробные ссылки на схемы, описывающие детализируемые далее преобразования. Комментарии составляются в виде таблицы, включающей порядковый номер комментария, обозначение элемента схемы, к которому относится комментарий, содержание комментария и ссылку на другую схему, в которой имеется более подробное описание.
В альбом допускается включение документов, оформленных по другим правилам, если на них имеется ссылка в одной из схем: формы отчетов, описание входных (выходных) данных сложной структуры и т.д. Процесс составления схем является ИТЕРАТИВНЫМ!
На магнитном диске имеется очередь заявок. Каждая заявка представлена в виде записи, содержащей имя заявки и приоритет на обслуживание. Проектируемая программа организует диалог с оператором и в зависимости от введенной команды обеспечивает:
- расположение заявок в обратном порядке (реверс);
- упорядочение заявок по возрастанию приоритета (сортировка);
- удаление заявки с указанным именем из очереди (удаление);
- перестановку заявки с указанным именем в начало очереди (перемещение).
Схема состава разложения и оглавление исходного описания программы показаны на рис. 1 и 2. Примеры оформления IPO-диаграмм представлены на рис. 4 и 5.
Вход Обработка Выход
№ п/п |
Элемент | Комментарий |
Схема | Номер | Лист |
1 | Команда | Вводимая оператором команда: <операция> [:<имя_заявки>] |
Рис. 4. IPO-диаграмма.
очередь заявок А имя_заявки заявка В буфер заявок |
1. Прочитать очередную заявку из очереди 2. ЕСЛИ заявок нет ТО закончить просмотр очереди 3. ЕСЛИ имя прочитанной заявки не Равно указанному в команде ТО 3.1Занести заявку в буферный массив записей 3.2Счет заявок N:=N+1 4. Продолжить просмотр очереди 5. Переслать N заявок из буфера в очередь |
Заявка Имя Приоритет В буфер заявок N А очередь заявок |
№ п/п |
Элемент |
Комментарий |
|||
Схема | Номер | Лист | |||
1 2 3 4 5 |
Очередь Имя_заявки Буфер за- явок Заявка N |
Последовательный файл заявок Имя_заявки, введенное опера- Тором Временный массив записей Строка: Имя Приоритет Cчетчик заявок |
Дис-петчер |
1.1 |
3 |
Рис. 5. HIPO-диаграмма.
Задание к лабораторной работе
С помощью HIPO-технологии составить внешние спецификации для комплекса программ решения одной из следующих задач.
1.Численное решение задачи Коши для дифференциального уравнения методом Рунге-Кутта и Адамса с автоматическим выбором шага и заданным шагом.
2.Интерполирование табличной функции.
3.Численное решение системы линейных алгебраических уравнений методами простой итерации, Зейделя и верхней релаксации.
4.Сглаживание функции кубическими сплайнами и многочленами среднеквадратичного приближения.
5.Численное решение однократных интегралов для таблично и аналитически заданных функций с заданной точностью.
6.Вычисление обратной матрицы и определителей по схеме Гауса.
7.Численное решение нелинейного уравнения методами дихотамии, касательных, хорд, итерации и комбинированным.
8.Численное решение системы нелинейных алгебраических уравнений методами Ньютона, простых итераций и Зейделя.
9.Численное решение задачи Коши для обыкновенного дифференциального уравнения методами Эйлера, Эйлера-Коши и усовершенствованным.
10.Численное решение краевой задачи для обыкновенного дифференциального уравнения методами сеток, коллокаций и наименьших квадратов.
11.Численное решение краевой задачи для дифференциального ураннения в частных производных эллиптического вида методом сеток и с применением методов простой итерации, Зейделя и верхней релаксации.
12.Численное решение краевой задачи для дифференциального уравнения теплопроводности с одной и двумя пространственными переменными с использованием явной и неявной разностных схем.
13.Численное решение краевой задачи для дифференциального уравнения гиперболического типа с одной и двумя пространственными переменными с использованием явной и неявной разностных схем.
14.Нахождение экстремумов одномерных функций методами дихотомии, "золотого" сечения и Фибоначчи.
15.Решение задачи линейного программирования симплекс-методом.
16.Безусловная оптимизация функции многих переменных градиентными методами наискорейшего спуска, Ньютона и сопряженных градиентов.
17.Определение оптимума в задаче квадратичного программирования на основе сведения ее к задаче линейного программирования.
18.Решение транспортной задачи с возможностью нахождения опорного плана по методу северо-западного угла, минимального элемента или аппроксимации Фогеля.
19.Целочисленное решение задачи линейного программирования методом Гомори.
20.Построение кратшайшего остова графа методами Краскала и Прима.
21.Решение задачи о минимальном маршруте в транспортной сети (графе) методами Дейкстры и Форда.
22.Нахождение кратчайших путей между всеми вершинами графа по алгоритму Флойда.
23.Построение Эйлерова цикла в связном неориентированном мультиграфе.
24.Решение задачи о коммивояжере методом Литтла.
25.Решение задачи о максимальном потоке в сети с одним источником и одним стоком методом Форда-Фолкерсона.
26.Подсчитать меру структурированости S=(1-G/С)*100% и меру документированности D=K/C*100% произвольной программы на языке Паскаль, где С-число строк в программе, G-число операторов GOTO в ней, К-число комментариев.
27.Имеется файл с записями Z1,Z2,...,ZN. Каждая запись имеет ключ К. Построить программу сортировки записей как по убыванию, так и по возрастанию их ключей.
28.Нахождение аналитического решения квадратного уравнения. В качестве исходной информации служит символьное представление уравнения вида Ф(Х,Х**2,А,В,С)=0.
29.Анализ вида уравнения (Ф) и приведение его к каноническому виду (ФК).
30.Проверка принадлежности (ФК) к полному квадратному уравнению и формирование формы аналитического решения.
31.Проверка принадлежности (ФК) к приведенному уравнению иформирование формы аналитического решения.
32.Проверка принадлежности (ФК) к неполным уравнениям вида АХ**2+ВХ=0, АХ**2+С=0, ВХ+С=0 и формирование аналитического решения.
Порядок выполнения работы
1.Уяснить исходную постановку задачи и вспомнить суть методов ее решения.
2.На основе системного анализа и декомпозиции разбить исходную задачу на ряд более простых подзадач (расщепление выполнять последовательно и сверху вниз). Составить иерархическую схему состава разложения, применяя HIPO-технологию.
3.Выполнить описание каждого элемента разложения в виде IPO-диаграммы.
4.Проверить правильность разработанных внешних спецификаций по таблице решений или по схеме "вход-интерпретация спецификаций - выход".
5.Оформить внешние спецификации программ как альбом связных схем (чертежей).
Содержание отчета
1.Постановка задачи.
2.Внешние спецификации программы в виде альбома связных схем, составленного по HIPO-технологии и влючающего:
-оглавление альбома документации и условные обозначения;
-схему состава разложения;
-набор IPO-диаграмм, реализующих элементы структуры.