Структурная схема программы пример

Содержание лекции: разработка структурной и функциональной схем; проектирование структур данных.

Цель лекции: ознакомиться с проектированием ПО при структурном подходе.

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

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

Разработку структурной схемы самого простого вида ПО — программы, включающей в качестве структурных компонентов только подпрограммы и библиотеки ресурсов, вы­полняют методом пошаговой детализации. Структурными компонентами программной системы (комплекса) служат программы, библиоте­ки ресурсов, подсистемы, базы данных. Структурная схема программного комплекса демонстри­рует передачу управления от программы-диспетчера соответствующей про­грамме (рисунок 11.1а).

Структурная схема алгоритма нахождения и сопровождения птиц

Рисунок 11.1 — Пример схем программного комплекса: а) структурной;

Структурная схема программной системы по­казывает наличие подсистем или других структурных компонентов. В отли­чие от программного комплекса отдельные части (подсистемы) программной системы интенсивно обмениваются данными между собой и с ос­новной программой. Структурная схема программной системы этого не показывает (рисунок 11.2а).

Рисунок 11.2 – Пример схем программной системы: а) структурной;

Более полное представление о проектируемом ПО с точки зрения взаимодействия его компонентов между собой и с внеш­ней средой дает функциональная схема. Функциональная схема (схема данных, ГОСТ 19.701-90) — схема взаимодействия компонентов ПО с описанием информационных потоков, состава данных в потоках и указанием используемых файлов и устройств.

Для изображения функцио­нальных схем используют специальные обозначения, установленные стан­дартом. Основные обозначения схем данных приведены в таблице Г.1. Функциональные схемы более информативны, чем структурные. На рисунках 11.1б и 11.2б приведены функциональные схемы программных комплексов и систем. Все компоненты структурных и функциональных схем должны быть описаны.

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

Desbook. Структурная схема.

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

Тот же метод позволяет получить структурные схемы с большим количеством уровней. Разбиение на модули выполняется эв­ристически, исходя из рекомендуемых размеров модулей (20-60 строк) и сложности структуры (2-3 вложенных управляющих конструкции). Для анализа технологичности иерархии модулей используют методики Константайна или Джексона [4].

На структурной карте Константайна отношения между модулями представляют в виде графа, вершинам которого соответствуют модули и общие области данных, а дугам — межмодульные вызовы и обращения к общим областям данных. Различают четыре типа вершин: модуль – подпрограмма; подсистема – программа; библиотека — совокупность подпрограмм, размещенных в отдельном модуле; область данных — специальным образом оформленная совокупность данных, к которой возможно обращение извне. При этом отдельные части программной системы могут вызываться последовательно, параллельно или как сопро­граммы.

Читайте также:
Easy service optimizer отзывы о программе

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

Методика Джексона основана на поиске соответствий структур исходных данных и результатов. Однако при ее применении возможны ситуации, когда на ка­ких-то уровнях соответствия отсутствуют. Например, записи исходного фай­ла сортированы не в том порядке, в котором соответствующие строки долж­ны появляться в отчете. Такие ситуации были названы «столкновениями».

Методика Варнье-Орра базируется на том же положении, что и методика Джексона, но основными при построении про­граммы считаются структуры выходных данных и, если структуры входных данных не соответствуют структурам выходных, то их допускается менять. Таким образом, ликвидируется основная причина столкновений. Однако на практике не всегда существует возможность пересмотра структур входных данных: эти структуры уже могут быть строго заданы, на­пример, если данные получены при выполнении других программ, поэтому эту методику применяют реже.

Под проектированием структур данных понимают разработку их пред­ставлений в памяти [6]. Основными параметрами, которые необходимо учиты­вать при проектировании структур данных, являются:

  1. вид хранимой информации каждого элемента данных — определяет тип соответствующего поля па­мяти;
  2. связи элементов данных и вложенных структур, а также совокупность операций над ними — определя­ют структуры памяти, используемые для представления данных;
  3. время хранения данных структуры («время жизни») — учитывается при размещении данных в статической или динамической па­мяти, а также во внешней памяти.

Источник: studfile.net

Проектирование программного обеспечения при структурном подходе

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

Структурная схема разрабатываемого программного обеспечения

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

Структурная схема определяется архитектурой разрабатываемого ПО (см. разд. 3.2).

Разработку структурной схемы программы обычно выполняют методом пошаговой детализации (см. разд. 4.1.3).

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

Компонентами структурной схемы программной системы или программного комплекса могут служить программы, подсистемы, базы данных, библиотеки ресурсов и т. п.

Пример структурной схемы программного комплекса для решения математических задач изображен на рис. 4.1.

Пример структурной схемы программного комплекса

Рис. 4.1. Пример структурной схемы программного комплекса

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

Источник: studref.com

Читайте также:
Как увеличить громкость на Андроид программа

СТРУКТУРНАЯ СХЕМА ПРОГРАММЫ

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

1)Отображение данных пользователя в виде таблицы и работа с ней.

2)Добавления и удаления типов объектов.

3)Графическое представление плана с возможностью масштабирования.

4)Работа с файлами и вывод результатов на печать.

5)Удобный пользовательский интерфейс.

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

Функциональная структура программы

Рис. 3.1. Функциональная структура программы.

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

ОСНОВНЫЕ АЛГОРИТМЫ

Основным является алгоритм построения изображения по данным из главной таблицы, реализованный в виде метода plandraw().

Ниже приведены его блок-схема и описание.

Описание алгоритма

Если не активирована вкладка, на которой находится наше изображение плана, мы ее активируем.

Далее активируем кнопки увеличения масштаба и установки масштаба по умолчанию.

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

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

С помощью свойства таблицы RecordCount находим количество строк в главной таблице.

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

Далее организуем цикл рисования каждого маршрута, в котором количество повторений определяется ранее подсчитанным количеством маршрутов.

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

Если номер маршрута равен нулю, тогда выполняется условие рисования координатной сетки — меридианов и параллелей. Сначала выполняется цикл рисования меридианов — мы проходим от 0 до 360 градусов с шагом, зависящим от степени увеличения (15, 6, 3, или 1 градусов), причем возле каждого меридиана подписывается соответствующий ему градус долготы (восточная долгота — со знаком «+», западная — со знаком «-«). Нулевой меридиан изображается черным цветом. Аналогичные действия осуществляются и в цикле рисования параллелей, единственное отличие — цикл проходит от 0 до 180 градусов. Со знаком «+» обозначается северная широта, со знаком «-» — южная.

Меняем толщину линии на 2, для изображения линий маршрутов.

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

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

Задаем цвет линии в зависимости от номера маршрута. И организуем цикл, рисующий линии.

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

Читайте также:
Как снять программу со стиральной машины веко

Затем вычисляется расстояние между точками, находящимися на Земном шаре, проекции которых мы только что изобразили на нашей карте. Расстояния вычисляются в километрах, радиус Земли берется равным 6371км. Вычисление расстояния производится в том случае, если i не равно 0, те не первое прохождение по циклу. Это условие необходимо, так как мы используем координаты предыдущей точки, чтобы найти расстояние до текущей.

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

Рассматриваются три случая:

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

2)если точки находятся на одинаковой широте, то тут его определение тоже не представляет сложности — он равен разности между большим и меньшим значением долготы, умноженной на поправку cos(f), где f — текущая широта.

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

Сначала находим разность долгот точек, как если бы они находились на одной широте, помножаем на поправку cos(f), и вычисляем линейное расстояние между ними по теореме косинусов (другие две стороны треугольника — радиусы Земли). Таким же образом рассчитываем расстояние между точками, как если бы они находились на одной долготе. Эти расстояния обозначим l1 и l2.

Теперь у нас есть прямоугольный треугольник с катетами l1, l2, гипотенузой которого является расстояние l3. Вычисляем ее по теореме Пифагора. Нашей целью является найти угол a. С помощью теоремы косинусов находим косинус этого угла. Вычислив по нему арккосинус, мы получаем угол!

Ниже приводится поясняющий рисунок.

Пояснение к расчету расстояния на различных широте и долготе

Рис. 4.1. Пояснение к расчету расстояния на различных широте и долготе.

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

Замечание: так как функции косинуса и арккосинуса оперируют с углами, заданными в радианах, в программе производится пересчет радианов в градусы и наоборот. Все эти вычисления приводят к накоплению погрешности.

Все упомянутые формулы даны в Приложении Д.

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

Также на карте отображаются тип объекта для данной точки, если флажок «показывать тип объекта» установлен.

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

После того, как все маршрут отрисованы, освобождаем память, отведенную под массивы индексов и координат.

Блок-схема алгоритма

Блок-схема алгоритма рисования плана

Рис. 4.2. Блок-схема алгоритма рисования плана.

Источник: studbooks.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru