Файл: Технол_разраб_прогр_обесп_Гагарина_Кокарева.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 20.11.2019

Просмотров: 13452

Скачиваний: 411

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Нет



і = п1, п2,

_І_

Действие

із

Г

Рис. 3.16. Дополнительные структуры алгоритмов: а — выбор; б — цикл-до; в — цикл с заданным числом повторений



Псевдокоды

Псевдокод — формализованное текстовое описание алгоритма (текстовая нотация). В литературе были предложены несколько вариантов псевдокодов. Один из них приведен в табл. 3.3.

Таблица 3.3. Описания псевдокодов



Структура

Псевдокод

Структура

Псевдокод

Следование

<Действие 1> <Действие 2>

Выбор

Выбор <код>

<код 1>: <Действие 1>

<код 2>: <Действие 2>

Все-выбор

Ветвление

Если <Условие> то <Действие 1> иначе <Действие 2> Все-если

Цикл с заданным количеством повторений

Для <индекс> =

<п>,<к>,<п> <Действие> Все-цикл

Цикл-пока

Цикл-пока <Условно

<Действие>

Все-цикл

Цикл-до

Выполнять <Действие> До <Условие>


Р1ои/-формы

¥1о^-формы представляют собой графическую нотацию описания структурных алгоритмов, которая иллюстрирует вложенность структур. Каждый символ Р1о\у-формы имеет вид прямо-

<Действие 1>


<Действие 2>


<Действие 3>


Если <Условие>

то

<Действие 1>



иначе

<Действие 2>

Выбор <Код>

<Код 1>

<Действие 1>



<Код 2>

<Действие 2>



иначе

<Действие 3>


Пока <Условие>

<Действие>

Для /' = 1, л, л


<Действие>

До <Условие>

<Действие>



Рис. 3.17. Условные обозначения Р1о\у-форм для основных конструкций: а — следование; б — ветвление; в — выбор; г — цикл-до; д — цикл-до; е — счетный цикл

угольника и может быть вписан в любой внутренний прямоугольник любого другого символа. Нотация Р1о\у-форм приведена на рис. 3.17.


Диаграммы Насси Шнейдермана

Диаграммы Насси — Шнейдермана являются продолжением Р1о\у-форм. Отличие их от Р1о\у-форм состоит в том, что область обозначения условий изображают в виде треугольников (рис. 3.18). Это обозначение обеспечивает большую наглядность представления алгоритма.

При использовании псевдокодов, Р1о\у-форм и диаграмм Насси — Шнейдермана описать неструктурный алгоритм невозможно (для неструктурных передач управления в этих нотациях просто отсутствуют условные обозначения).

По сравнению с псевдокодами Р1о\у-формы и диаграммы Насси — Шнейдермана, являясь графическими, лучше отображают вложенность конструкций.

Общим недостатком Р1о\у-форм и диаграмм Насси — Шнейдермана является сложность построения изображений символов,

<Действие 1>



<Действие>

До

<Условие>

Рис. 3.18. Условные обозначения диаграмм Насси — Шнейдермана для основных конструкций:

а — следование; б — цикл-пока; в — цикл-до; г — ветвление; д — выбор

что затрудняет практическое применение этих нотаций для описания больших алгоритмов.


3.5.2. Словарь терминов


Словарь терминов представляет собой краткое описание основных понятий, используемых при составлении спецификаций. Он предназначен для повышения степени понимания предметной области и исключения риска возникновения разногласий при обсуждении моделей между заказчиками и разработчиками [1].

Обычно описание термина в словаре выполняют по следующей схеме:

  • термин;

  • категория (понятие предметной области, элемент данных, условное обозначение и т. д.);

  • краткое описание.

Пример:

Термин Web-сайт

Категория Интернет-программирование

Описание Совокупность ^^еЬ-страниц с повторяющимся дизайном, объединенных по смыслу, навигационно и физически находящихся на одном сервере.


114 Глава 3. Анализ требований и определение спецификаций 3-5.3. Диаграммы переходов состояний (БОТ)

БОТ демонстрирует поведение разрабатываемой программной системы при получении управляющих воздействий (извне).

В диаграммах такого вида узлы соответствуют состояниям динамической системы, а дуги — переходу системы из одного состояния в другое. Узел, из которого выходит дуга, является начальным состоянием, узел, в который дуга входит, — следующим. Дуга помечается именем входного сигнала или события, вызывающего переход, а также сигналом или действием, сопровождающим переход. Условные обозначения, используемые при построении диаграмм переходов состояний, показаны на рис. 3.19.

Условие

Имя состояния

Действие


Рис. 3.19. Условные обозначения диаграмм переходов состояний: а — терминальное состояние; б — промежуточное состояние; в — переход


На рис. 3.20 представлена диаграмма переходов состояний программы, активно не взаимодействующей с окружающей средой, которая имеет примитивный интерфейс, производит некоторые вычисления и выводит простой результат [1].


Исходное Состояние

состояние завершения




Ввод


Вывод









Всегда Всегда Всегда

инициализация вычисления завершение


Рис. 3.20. Диаграмма переходов состояний программного обеспечения, активно не взаимодействующего с окружающей средой


На рис. 3.21 представлена диаграмма переходов торгового автомата, активно взаимодействующего с покупателем [55].




Ожидание монеты

«Товар доступен» = НЕТ

«Выдать сдачу»

«Возврат монеты» «Выдать сдачу»

«Товар выдан»

«Получить

оплату от клиента»




3.5.4. Функциональные диаграммы


Функциональными называют диаграммы, в первую очередь отражающие взаимосвязи функций разрабатываемого программного обеспечения [53].

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

В качестве примера рассмотрим методологию SADT, предложенную Дугласом Россом. На ее основе разработана, в частности, известная методология IDEFO (Icam DEFinition). Методология SADT представляет собой набор методов, правил и процедур, предназначенных для построения функциональной модели объекта какой-либо предметной области.

Функциональная модель SADT отображает функциональную структуру объекта, т. е. производимые им действия и связи между этими действиями. Основные элементы этой методологии основываются на следующих концепциях:

графическое представление блочного моделирования. На 8АЕ)Т-диаграмме функции представляются в виде блока, а интерфейсы входа-выхода — в виде дуг, соответственно входящих в блок и выходящих из него. Интерфейсные дуги отображают взаимодействие функций друг с другом;

  • строгость и точность отображения. Правила 8АОТ включают:

  • уникальность меток и наименований;


  • ограничение количества блоков на каждом уровне декомпозиции;

  • синтаксические правила для графики;

  • связность диаграмм;

  • отделение организации от функции;

  • разделение входов и управлений.

Методология БАОТ может использоваться для моделирования и разработки широкого круга систем, удовлетворяющих определенным "требованиям и реализующих требуемые функции. В уже разработанных системах методология БАБТ может быть использована для анализа выполняемых ими функций, а также для указания механизмов, посредством которых они осуществляются.

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

Управление

I


Входы

Функция

Выходы

I \

Механизм

Рис. 3.22. Функциональный блок и интерфейсные дуги

Блоки на диаграмме размещают по «ступенчатой» схеме в соответствии с последовательностью их работы или доминированием, которое понимается как влияние, оказываемое одним блоком на другие. В функциональных диаграммах 8АОТ различают пять типов влияний блоков друг на друга [1]:

  • вход-выход блока подается на вход блока с меньшим доминированием, т. е. следующего (рис. 3.23, а);

  • управление. Выход блока используется как управление для блока с меньшим доминированием (рис. 3.23, 5);

  • обратная связь по входу. Выход блока подается на вход блока с большим доминированием (рис. 3.23, в);

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

  • выход-исполнитель. Выход блока используется как механизм для другого блока (рис. 3.23, д).

Одной из наиболее важных особенностей методологии 8АБТ является постепенное введение все больших уровней детализации по мере создания диаграмм, отображающих модель.

і

Функция 1

Функция 1

Функция 2




Функция 1


Функция 2






Функция 2



Функция 1


Рис. 3.23. Типы влияний блоков: о — вход; б — управление; в — обратная связь по входу; г — обратная связь по управлению; д — выход-исполнитель

На рис. 3.24 приведены четыре диаграммы и их взаимосвязи, показывающие структуру БАБТ-модели. Каждый компонент модели может быть декомпозирован на другой диаграмме. Деталь-

Эта диаграмма является «родителем» этой диаграммы




Более общее представление

Ная диаграмма иллюстрирует внутреннее строение блока «родительской» диаграммы.


Иерархия диаграмм

Прежде всего, вся система представляется в виде простейшей компоненты — одного блока и дуг, представляющих собой интерфейсы с внешними по отношению к данной системе функциями. Имя блока является общим для всей системы [53].

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

Все диаграммы связывают друг с другом иерархической нумерацией блоков: первый уровень — АО, второй — А1, А2 и т. п., третий — АН, А12, А13 и т. п., где первые цифры — номер родительского блока, а последняя — номер конкретного блока детальной диаграммы.

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

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

На рис. 3.25—3.27 представлены различные варианты выполнения функций и соединения дуг с блоками.

Последовательность операций, время их выполнения не указываются на 8АЭТ-диаграммах. Обратные связи, итерации, продолжающиеся процессы и перекрывающиеся (по времени) Функции могут быть изображены с помощью дуг. Обратные связи могут выступать в виде комментариев, замечаний, исправлений и т. д. (см. рис. 3.27).


Функции блоков 2 и 3 могут выполняться параллельно



Только эти данные передаются

Рис. 3.25. Одновременное выполнение


Родительская диаграмма

Родительский блок





А1


Эта управляющая дуга переносится Детальная диаграмма с родительской диаграммы

21

22

23

Эта входящая дуга переносится с родительской диаграммы

А12


Эта дуга продолжается из родительской диаграммы

Рис. 3.26. Соответствие родительской и детальной диаграмм



Системные требования


Комментарии

Разработка проекта

Предварительная спецификация

Экспертиза


Улучшенный проект

Рис. 3.27. Пример обратной связи

Пример 3.1. Разработку функциональных диаграмм продемонстрируем на примере уточнения спецификаций программы сортировки одномерного массива с использованием нескольких методов.

Диаграмма, представленная на рис. 3.28, а, является диаграммой верхнего уровня. Она иллюстрирует исходные данные программы и ожидаемые результаты.




| Метод

Сортировка выбранным методом

А2


Массив

Вывод результата АЗ

н2


Рис. 3.28. Функциональные диаграммы для программы сортировки массива: а — диаграмма верхнего уровня; б — уточняющая диаграмма


Диаграмма, представленная на рис. 3.28, б, детализирует Функции программы. На ней показаны три блока: Меню, Сортировка, Вывод результата. Для каждого блока определены исходные данные, управляющие воздействия и результаты. На детализирующей диаграмме используются следующие обозначения:

  1. размер массива;

  2. массив;

С1 — выбор метода;

Ш — вывод описания метода;

[12 — отсортированный массив.

3.5-5. Диаграммы потоков данных (ОРД)


Такая диаграмма состоит из трех типов узлов: узлов обработки данных, узлов хранения данных и внешних узлов, представляющих внешние по отношению к используемой диаграмме источники или потребители данных. Дуги в диаграмме соответствуют потокам данных, передаваемых от узла к узлу. Они помечены именами соответствующих данных. Описание процесса, функции или системы обработки данных, соответствующих узлу диаграммы, может быть представлено диаграммой следующего уровня детализации, если процесс достаточно сложен [1, 53].

Для изображения диаграмм потоков данных традиционно используют два вида нотаций: нотации Йордана и Гейна — Сар-сона (табл. 3.4).

Таблица 3.4. Обозначения элементов диаграмм потоков данных



Понятие

Описание

Нотация Йордана

Нотация Гейна — Сарсона

Внешняя сущность

Внешний по отношению к системе объект, обменивающийся с нею потоками данных

Имя внешнего объекта


\ \

\


Функция

Действие, выполняемое моделируемой системой




/ Имя \ 1 функции )


г Номер

Имя ^ Механизм ^

ч /

Поток данных

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

Имя объекта

Имя объекта

Хранилище данных

Структура для хранения информационных объектов



а

Имя объекта


Имя объект



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

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

После построения контекстных диаграмм полученную модель следует проверить на полноту исходных данных и отсутствие информационных связей с другими объектами.

Для каждой подсистемы, присутствующей на контекстных диаграммах, выполняется ее детализация с помощью диаграмм потоков данных, при этом необходимо соблюдать следующие правила [53]:

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

  • правило нумерации. Означает, что при детализации подсистем должна поддерживаться их иерархическая нумерация. Например, подсистемы, детализирующие подсистему с номером 2, получают номера 2.1, 2.2, 2.3 и т. д.

При построении иерархии диаграмм потоков данных переходить к детализации процессов следует только после определения структур данных, которые описывают содержание всех потоков и накопителей данных. Структуры данных могут содержать альтернативы, условные вхождения и итерации. Условное вхождение означает, что соответствующие компоненты могут отсутствовать в структуре. Альтернатива означает, что в структуру может входить один из перечисленных элементов. Итерация означает, что компонент может повторяться в структуре некоторое указанное число раз. Для каждого элемента данных может Указываться его тип (непрерывный или дискретный). Для непрерывных данных может указываться единица измерения (кг, см и т. п.), диапазон значений, точность представления и форма физического кодирования. Для дискретных данных может указываться таблица допустимых значений.

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

В соответствии с вышесказанным процесс построения модели разбивается на следующие этапы [39]:

  1. Выделение множества требований в основные функциональные группы — процессы.

  2. Выявление внешних объектов, связанных с разрабатываемой системой.

  3. Идентификация основных потоков информации, циркулирующей между системой и внешними объектами.

  4. Предварительная разработка контекстной диаграммы.

  5. Проверка предварительной контекстной диаграммы и внесение в нее изменений.

  6. Построение контекстной диаграммы путем объединения всех процессов предварительной диаграммы в один процесс, а также группирования потоков.

  7. Проверка основных требований контекстной диаграммы.

  8. Декомпозиция каждого процесса текущей ОБО с помощью детализирующей диаграммы или спецификации процесса.

  9. Проверка основных требований по соответствующего уровня.


  1. Добавление определений новых потоков в словарь данных при каждом их появлении на диаграммах.

  2. Проверка полноты и наглядности модели после построения каждых двух-трех уровней.

Пример 3.2. Разработаем иерархию диаграмм потоков данных программы сортировки одномерных массивов.

Для начала построим контекстную диаграмму, для чего определим внешние сущности и потоки данных между программой и внешними сущностями. Внешней сущностью по отношению к программе является Пользователь. Он выбирает метод сортировки и вводит исходные данные, а затем получает от программы описание выбранного метода и отсортированный массив. На рис. 3.29 представлена контекстная диаграмма данной программы.