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

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

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

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

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

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

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

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

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

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

Функциональные схемы более информативны, чем структурные. На рис. 5.3 для сравнения приведены функциональные схемы программных комплексов и систем.

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

Рис. 5.3. Примеры функциональных схем: а — комплекс программ; б — программная система

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

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

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

Рисунок 2.2 — Функциональная схема программы

Объявление модуля:

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

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

К системным модулям относятся System, SysUtils, ShareMem, Math. В них содержатся наиболее часто используемые в программах типы данных, константы, переменные, процедуры и функции. Модуль System — это сердце среды Delphi; содержащиеся в нем подпрограммы обеспечивают работу всех остальных модулей системы. Модуль System подсоединяется автоматически к каждой программе и его не надо указывать в операторе uses.

Модули визуальных компонентов (VCL — Visual Component Library) используются для визуальной разработки полнофункциональных GUI-приложений — приложений с графическим пользовательским интерфейсом (Graphical User Interface). Эти модули в совокупности представляют собой высокоуровневую объектно-ориентированную библиотеку со всевозможными элементами пользовательского интерфейса: кнопками, надписями, меню, панелями и т.д. Кроме того, модули этой библиотеки содержат простые и эффективные средства доступа к базам данных. Данные модули подключаются автоматически при помещении компонентов на форму.

Читайте также:  Какие обои подходят к мебели цвета орех

procedure TForm2.Button1Click(Sender: TObject);

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

procedure TForml.Button2Click(Sender: TObject);

Эта процедура открывает главное меню программы и убирает с экрана титульный лист.

procedure TForm2.Button1Click(Sender: TObject);

Эта процедура открывает окно с выбором метода решения транспортной задачи и убирает с экрана окно меню.

procedure TForm2.Button2Click(Sender: TObject);

Эта процедура открывает окно содержащие информацию о разработанной программе и убирает с экрана окно меню.

procedure TForm2.Button3Click(Sender: TObject);

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

procedure TForm2.Button4Click(Sender: TObject);

Эта процедура открывает окно о разработчике, и убирает окно меню.

procedure TForm2.Button5Click(Sender: TObject);

Эта процедура закрывает окно меню и выходит из программы.

procedure TForm3.Button1Click(Sender: TObject);

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

procedure TForm3.Button3Click(Sender: TObject);

Эта процедура закрывает окно с решениями транспортной задачи тремя методами и выводит на экран форму с решением задачи методом минимальной стоимости:

procedure TForm3.Button4Click(Sender: TObject);

Эта процедура закрывает окно с решениями транспортной задачи тремя методами и выводит на экран форму с решением задачи методом двойного предпочтения:

procedure TForm2.Button2Click(Sender: TObject);

procedure TForm2.Button3Click(Sender: TObject);

procedure TForm2.Button4Click(Sender: TObject);

Эти процедуры позволяют пользователю отправиться из главного меню в любой пункт программы: «Форма решения», «Руководство пользователя», «Сведения о разработчике», «Выход».

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

procedure TForm4.Label2Click(Sender: TObject);

procedure TForm4.Label3Click(Sender: TObject);

procedure TForm4.Label4Click(Sender: TObject);

procedure TForm4.Label5Click(Sender: TObject);

Эти процедуры загружают в текстовое поле Memo содержимое текстового документа, в зависимости от выбранного пункта меню. В текстовых документах находится информация о пользовании приложением.

procedure TForm1.Button8Click(Sender: TObject);

Эта процедура выполняет расчет по формулам, подставляет введенные значения и в итоге выполнения записывает результат в переменную.

procedure TForm1.Button9Click(Sender: TObject);

Эта процедура выводит ответ в текстовом поле.

procedure TForm1.Button2Click(Sender: TObject);

Эта процедура заполняет поля ввода исходными данными в соответствии с заданием на курсовой проект.

procedure TForm3.Button4Click(Sender: TObject);

procedure TForm4.Button1Click(Sender: TObject);

Эти процедуры закрывают окно с и выводит на экран форму с выбором пункта меню.

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

Практическая работа №4

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

Разработка структурной и функциональной схем

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

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

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

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

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

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

Структурная схема программного комплекса демонстри­рует передачу управления от программы-диспетчера соответствующей про­грамме (рисунок 4. 1).

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

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

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

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

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

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

Читайте также:  747D модуль как подключить

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

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

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

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

— не отделять операции инициализации и завершения от соответствую­щей обработки, так как модули инициализации и завершения имеют плохую связность (временную) и сильное сцепление (по управлению);

— не проектировать слишком специализированных или слишком универсальных модулей, так как проектирование излишне специальных модулей увеличивает их количество, а проектирование излишне универсальных мо­дулей повышает их сложность;

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

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

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

Пример 4.1. Разработать алгоритм программы построения графиков функций одной переменной на заданном интервале изменения аргумента [Х 12] при условии непрерывности функции на всем интервале определения.

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

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

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

Шаг 1. Определяем структуру управляющей программы, которая для нашего случая реализует работу с меню через клавиатуру.

Инициализировать глобальные значения

Вывести заголовок и меню

Если выбрана Команда

то В ыполнить Команду

иначе О бработать нажатие клавиш управления

Очистка экрана, вывод заголовка и меню, а также выбор Команды — операции сравнительно простые, следовательно, их можно не детализировать. Шаг 2. Детализируем операцию В ыполнить команду:

Ввести или выбрать формулу Fun

Выполнить разбор формулы

Ввести значения h

Ввести вид результата

Рассчитать значения функции

то П остроить график

иначе В ывести таблицу

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

Рисунок 4.2 — Структурная схема программы построения графиков/таблиц функций

Подпрограмма Вывод заголовка и меню параметров не предполагает.

Подпрограмма Разбор формулы должна иметь два параметра: Fun — аналитическое задание функции, Tree — возвращаемый параметр — адрес дерева разбора.

Подпрограмма Расчет значения функции должна получать адрес дерева разбора Tree , отрезок: значения х 1 и х2, а также шаг h . Обратно в программу она должна возвращать таблицу значений функции Х( n ) и Y ( n ), где n — коли­чество точек функции.

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

После уточнения имен переменных алгоритм основной программы бу­дет выглядеть следующим образом:

Вывод заголовка и меню

Читайте также:  Бокс 1 1 н навесной 250х350х170 мм

Если выбрана Команда

Ввести или выбрать формулу Fun

Разбор формулы ( Fun ; Var Tree )

Ввести значения x 1 . x 2

Ввести значения h

Ввести вид_ результата

Расчет значений функции ( xl , x 2, h , Tree ; Var X , Y , п)

Если Вид_результата =График

то Построение графика (Х, Y , п)

иначе Вывод таблицы (Х, Y , п)

иначе О бработать нажатие клавиш управления

до Команда= Выход

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

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

Рисунок 4.3 — Полная многоуровневая структурная схема программы построения графиков/таблиц

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

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

Структурные карты Константайна

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

Различают четыре типа вершин (рисунок 4.4):

— подсистема — npo грамма;

— библиотека — совокупность подпрограмм, размещенных в отдельном модуле;

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

При этом отдельные части программной системы (программы, подпрограммы) могут вызываться последовательно, параллельно или как сопро­граммы (рисунок 4.5).

Рисунок 4.4 – Обозначения вершин по стандартам IBM , ISO и ANSI .

а – модуль, б – подсистема, в – библиотека , г – область данных

Рисунок 4.5 — Обозначения типа вызова:

а- последовательный вызов; б— параллельный вызов, в — вызов сопрограммы

Рисунок 4.6 — Обозначения особых условий вызова:

а — циклический, б — условный; в — однократный

Если стрелка, изображающая вызов, касается блока, то обращение происходит к модулю целиком, а если входит в блок, то — к элементу внутри мо­дуля.

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

Связи по данным и управлению обозначают стрелками, параллельными дуге вызова, направление стрелки указывает направление связи (рисунок 4.7).

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

Рисунок 4.7 — Обозначение типа связи:

а — по данным; б — по управлению

Пример 4.2. Представим в виде структурной карты Константайна пол­ную структурную схему, полученную в предыдущем примере (рисунок 4.3).

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

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

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

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

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

Рисунок 4.8 — Структурная карта Константайна для программы построения графиков/таблиц функций (вариант 1)

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

В соответствии с требованиями нисходящей разработки (комбинированный подход) можно предложить следующий порядок реализации модулей:

— Вывод окна с текстом;

— Вывод заголовка и меню;

— Вычисление значений функции;

— Расчет значений функции;

Рисунок 4.9 — Структурная карта Константайна для программы построения таблицы/графика функции (вариант 2)

Ссылка на основную публикацию
Adblock
detector