Методические указания

Структурирование программной системы

С помощью HIPO-технологии

 

 

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

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

 

Контрольные вопросы

 

1. Что называется спецификациями программы?

2. Кто составляет спецификации программы?

3. В чём отличие спецификации требований и функциональных спецификаций?

4. Какие средства применяются для описания спецификаций?

5. Какие вопросы следует осветить при составлении внешних спецификаций?

6. Назовите методы проверки правильности разработанных спецификаций?

7. Каковы особенности HIPO-технологии проектирования программ?

8. Как составляются IPO-диаграммы и схема состава разложения?

 

Методические указания

 

Методика разработки программ на базе структурного (нисходящего) подхода состоит из следующих этапов:

– анализ требований и определение внешних спецификаций;

– проектирование структуры программы и алгоритмов;

– кодирование алгоритмов;

– тестирование и документирование программы.

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

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

– языки спецификаций требований (язык технического задания);

– языки функциональных спецификаций;

– языки визуального моделирования.

Языки описания требований к программному продукту почти не формали­зованы. К этому классу относятся, например, языки PSL(США), СИПЛ(СНГ) и соответствующие им транслирующие системы PSA и СИПЛ, которые автоматизируют разработку требований на ЭВМ. Анализатор в этих системах, обща­ясь с заказчиком в диалоговом режиме "вопрос-ответ", проверяет ответы на не­противоречивость, полноту и в результате формирует файл спецификаций тре­бований. Однако эти схемы не нашли широкого распространения из-за их узкой специализации. Языки функциональных спецификаций являются полуформальными и описывают все функции, реализуемые создаваемой программной системой. Для этой цели был разработан универсальный международный язык SDL (США) и аналогичный ему в СНГ язык PLUS. Кроме того, для малых и средних программ очень часто применяются специализированные стандарты, определяющие правила записи спецификаций с учётом специфики решаемых задач и утвердившихся традиций в технологии программирования

В последнее время разрабатывается новое поколение средств системного анализа. К ним относятся языки визуального моделирования типа UML (США). В любом случае внешние спецификации создаваемой программы должны освещать следующие вопросы.

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

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

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

4. Дополнительные сведения о программе: ограничения на используемую память, длину программы, время её работы; идеи относительно внут­рен­него проектирования функций (если это необходимо).

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

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

- деление объекта должно осуществляться последовательно и сверху вниз;

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

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

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

 

 

Исходное описание Системы Диспетчер Схема Состава Номер: 0.1   Схема состава разложения Лист: 2 Автор: Иванов А. Отдел: каф. ПМИ Дата: 1.09.2009

 

 

        

 

Рис. 1. Схема состава разложения

 

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

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

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

IPO-диаграмму рекомендуется чертить на бланках, применяя линейки - шаблоны. Бланк "по вертикали" делится на три зоны. Верхняя зона служит для идентификации схемы, т.е. содержит сведения о самой схеме и авторе. Во второй зоне размещается сама диаграмма, а в третьей, отводимой в нижней части бланка, помещаются комментарии к элементам схемы. Зона размещения диаграммы "по горизонтали" делится также на три части: входные данные, функции преобразо­вания (обработка) данных, выходные данные. Функции преобразования с входны­ми и выходными данными соединяются стрелками. Применяемые условные обозначения данных, путей их передачи и т.п. должны приводиться в каждом альбоме (рис. 2).

На схеме возле каждого данного пишется его имя. Записи в разделе "обработка" выполняются в формализованном виде. Используются записи двух типов: записи-функции и записи-условия.

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

Альтернативная запись может иметь следующий вид:

ЕСЛИ       <содержательное описание условия>

ТО                  <запись>...

ИНАЧЕ         <запись>...

 

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

ПОКА <содержательное описание условия окончания цикла>

<запись>

 ...

<запись>.

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

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

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

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

 

Исходное описание Системы Диспетчер Схема: Оглавление Номер: 0.0 Оглавление альбома документов и условные обозначения Лист: 1 Автор: Иванов А. Отдел: Кафедра ПМИ Дата: 1.09.2010

 

Обозначение Наименование Лист Примечание
0.0     0.1   1.1     2.4 Оглавление альбома документации и условные обозначения   Схема состава разложения   Автоматизировать обработку очереди заявок по командам оператора   Удалить из очереди указанную заявку   Связь программы Диспетчер с используемыми внешними и внутренними структурами данных 1     2   3     4   5     Структурная схема (рис. 3)

 

 

Рис. 2. Оглавление и условные обозначения

 

Рис. 2. Оглавление и условные обозначения

 

 

В альбом допускается включение документов, оформленных по другим правилам, если на них имеется ссылка в одной из схем: формы отчетов, описание входных (выходных) данных сложной структуры и т.д. Процесс составления схем является ИТЕРАТИВНЫМ!

 

Пример. Определим и оформим внешние спецификации для программы, которая должна решать следующую задачу (рис.3).

 

                                                       Программа

                                               ДИСПЕТЧЕР

 

 

 


                                                        очередь

                                                  заявок

 

 

Рис. 3. Связь программы с внешними устройствами

 

 

На магнитном диске имеется очередь заявок. Каждая заявка представлена в виде записи, содержащей имя заявки и приоритет на обслуживание. Проекти­руе­мая программа организует диалог с оператором и в зависимости от введенной команды обеспечивает:

 

- расположение заявок в обратном порядке (реверс);

 

- упорядочение заявок по возрастанию приоритета (сортировка);

 

- удаление заявки с указанным именем из очереди (удаление);

 

- перестановку заявки с указанным именем в начало очереди (перемещение).

 

Схема состава разложения и оглавление исходного описания программы показаны на рис. 1 и 2. Примеры оформления IPO-диаграмм представлены на рис. 4 и 5.

 


 

 

Исходное описание Системы Диспетчер Схема Диспетчер Номер: 1.1 Автоматизировать обработку очереди заявок по командам оператора Лист: 3 Автор: Иванов А. Отдел: каф.ПМИ Дата: 1.09.2010

 

       Вход                               Обработка                     Выход

 

 

 

 


Операция

 

 

Операция

 

Имя

заявки

 

    А

 

признак

 

  Ввести команду оператора   2. Проверить синтаксис введенной команды                             2.1   3. ЕСЛИ обнаружена ошибка ТО закончить обработку команды   ЕСЛИ операция “реверс” ТО 4. Расположить заявки в обратном порядке                               2.2   ЕСЛИ операция “сортировка” ТО 5. Упорядочить заявки по приоритету                         2.3    6. ЕСЛИ операция “удаление” ТО Удалить из очереди указанную Заявку                                     2.4    7. ЕСЛИ операция “перемещение” ТО Поставить заявку в начало Очереди                                  2.5   8. Вывести признак завершения Обработки команды и очередь     Команда   Операция Имя заявки Признак         А     очередь заявок   очередь   заявок

 №

п/п

Элемент

           Комментарий

 

Схема Номер Лист
1 Команда Вводимая оператором команда: <операция> [:<имя заявки>]      

 

Рис. 4. IPO-диаграмма.

 


 

Исходное описание Системы Диспетчер Схема: Удаление Номер: 2.4    Удалить из очереди указанную заявку Лист: 4 Автор: Иванов А. Отдел: каф. ПМИ Дата: 1.09.2010

 

 

      Вход                            Обработка                           Выход   

 

 

очередь

заявок

       

   А

 

 Имя заявки   

 

 

Заявка

 

 

     В

 

Буфер

заявок

 

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. IPO-диаграмма

 


2. Задание к лабораторной работе

С помощью 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.Нахождение аналитического решения квадратного уравнения. В качестве исходной информации служит символьное представление уравнения вида Ф(x,x**2,А,В,С)=0.

29.Анализ вида уравнения (Ф) и приведение его к каноническому виду (ФК).

30.Проверка принадлежности (ФК) к полному квадратному уравнению и формирование формы аналитического решения.

31.Проверка принадлежности (ФК) к приведенному уравнению и информирование формы аналитического решения.

32.Проверка принадлежности (ФК) к неполным уравнениям вида Аx**2+Вx=0, Аx**2+С=0, Вx+С=0 и формирование аналитического решения.

33.Разработать программу «Записная книжка», которая в удобной для пользователя форме позволит записывать и затем находить телефоны различных людей и организаций.

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

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

36.Разработка автоматизированного рабочего места для библиотекаря.

37.Разработка автоматизированного рабочего места для продавца/кассира.

38. Информационно-справочная система аэропорта.

39.Оптимизация расписания автобусных перевозок для диспетчера.

40.Операции над матрицами. Например, проверить матрицу на симметричность и, если симметрична, вычислить сумму элементов главной диагонали.

41.Разработка текстового редактора, имеющего возможность работы с текстом и таблицами.

42. Электронная записная книжка студента.

43. Информационная система отдела кадров фирмы.

 

 

3. Порядок выполнения работы

 

1.Уяснить исходную постановку задачи и предложить различные способы её решения.

2.На основе системного анализа и декомпозиции разбить исходную задачу на ряд более простых подзадач (расщепление выполнять последовательно и свер­ху вниз). Составить иерархическую схему состава разложения, применяя HIPO-технологию.

3.Выполнить описание каждого элемента разложения в виде IPO-диаграммы.

4.Проверить правильность разработанных внешних спецификаций по таблице решений или по схеме "вход-интерпретация спецификаций - выход".

5.Оформить внешние спецификации программ как альбом связных схем (чертежей).

 






Содержание отчёта

 

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

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

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

-схему состава разложения программы;

-набор IPO-диаграмм, реализующих элементы структуры программы.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: