Лабораторная работа №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 /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
Поставить
заявку в
начало
очереди
2.5 />
Автоматизировать
обработку очереди
заявок по командам
оператора
1.1
/> /> /> /> /> /> /> />
Сортировать методом
пузырька
3.1
Рис. 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-диаграмм,реализующих элементы структуры.