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

Технология разработки ПО

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

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

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

Типы информационных потоков

Различают 2 типа информационных потоков:

Как показано на рисунке ниже, в потоке преобразований выделяют 3 элемента: Входящий поток, Преобразуемый поток и Выходящий поток.

Потоки запросов имеют в своем составе особые элементы — запросы.

Назначение элемента-запроса состоит в том, чтобы запустить поток данных по одному из нескольких путей. Анализ запроса и переключение потока данных на один из путей действий происходит в центре запросов.

Структуру потока запроса иллюстрирует рисунке

Источник

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

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

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

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

· принцип «разделяй и властвуй» – принцип решения сложных проблем путем их разбиения на множество меньших независимых задач, легких для понимания и решения;

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

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

· принцип абстрагирования – заключается в выделении существенных аспектов системы и отвлечения от несущественных;

· принцип формализации – заключается в необходимости строгого методического подхода к решению проблемы;

· принцип непротиворечивости – заключается в обоснованности и согласованности элементов;

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

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

· SADT (Structured Analysis and Design Technique) модели и соответствующие функциональные диаграммы;

· DFD (Data Flow Diagrams) диаграммы потоков данных;

· ERD (Entity-Relationship Diagrams) диаграммы «сущность-связь».

На стадии проектирования ИС модели расширяются, уточняются и дополняются диаграммами, отражающими структуру программного обеспечения: архитектуру ПО, структурные схемы программ и диаграммы экранных форм.

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

Источник

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

Лекция 16. Проектирование программного обеспечения АИС Существует ряд методологий, используемых в разработке программного обеспечения АИС, к ним относятся: · методология жизненного цикла программного обеспечения; · структурный подход к проектированию программного обеспечения; · объектно-ориентированный подход к проектированию программного обеспечения.

Жизненный цикл программного обеспечения

Жизненный цикл программного обеспечения АИС (ЖЦ ПО) – непрерывный процесс, который начинается с момента принятия решения о разработке и завершается с физическим удалением программ. В течение ЖЦ ПО выполняется приобретение или разработка программ, их эксплуатация и сопровождение. В свою очередь, сопровождение программного обеспечения предполагает наличие необходимой документации, конфигурирование программ, постоянный аудит и обеспечение качества программных изделий. Разработка программного обеспечения может рассматриваться как проект, для которого требуется наличие инфраструктуры проекта и применение современных методов управления.

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

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

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

· Возврат на предыдущие стадии не происходит.

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

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

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

1. Формирование требований к программному обеспечению.

2. Проектирование (разработка структуры программного обеспечения, выбор средств реализации).

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

4. Отладка и тестирование.

6. Эксплуатация и сопровождение.

7. Снятие с эксплуатации.

Разработка программ

Разработка программ начинается со спецификации: определения требований к функциям обработки, программному и пользовательскому интерфейсу, входной и выходной информации, времени выполнения программы и другим характеристикам. Спецификация программ выполняется на основе постановки задачи и алгоритмизации обработки данных. Разрабатывается структура программного изделия в виде совокупности программных модулей, определяются необходимые библиотеки процедур, объекты типа ActiveX, драйверы и т.п., создается так называемый «проект приложения (Project for Application)» (рис. 1).

В зависимости от методологии разработки программного обеспечения и спецификации программы осуществляется классификация программных модулей и выбор инструментальных средств их создания. Для каждого программного модуля разрабатывается исходный код программы на выбранном языке программирования (код программы является формой записи алгоритма обработки на выбранном языке программирования). Этот этап носит название кодирования[1].

Исходный код программы подлежит трансляции, в ходе которой выполняется синтаксический разбор инструкций программы, исходный код программы преобразуется в объектный код (object file). В зависимости от способа анализа синтаксиса программ и построения объектного кода различают:

· компиляторы — осуществляющие полный разбор программного кода с последующим выполнением объектного кода программы;

· интерпретаторы — контролирующие каждую отдельную инструкцию и немедленно ее выполняющие.

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

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

Документирование программ предназначено для создания комплекта документации определенного назначения:

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

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

· руководство пользователя по выполнению содержательной обработки данных.

Алгоритмизация задач

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

· детерминированность (определенность) — однозначность выполнения действий для получения результата;

· дискретность — выделение отдельных этапов обработки данных;

· массовость — пригодность алгоритма для решения задач определенного класса;

· результативность — получение результата за обозримое время.

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

По степени подробности алгоритмы делятся на обобщенные (укрупненные) и детальные алгоритмы.

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

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

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

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

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

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

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

Этот подход носит название «функционально-модульного», в его основу положен принцип функциональной декомпозиции АИС в виде иерархии функциональных подсистем, которые делятся на подфункции, комплексы задач, задачи и процедуры обработки. При разработке системы «сверху вниз» не теряется целостность системы. Между функциями существуют информационные связи.

Структурный анализ предполагает построение различного вида моделей:

SADT (Structured Analysis and Design Technique) – структурный анализ и проектирование АИС;

DFD (Data Flow Diagrams) – диаграммы потоков данных;

ERD (Entity Relationship Diagrams) – диаграммы «сущность-связь»;

STD (State Transition Diagrams) – диаграммы переходов состояний и др.

Методология SADT

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

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

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

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

Моделирование потоков данных

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

Основными компонентами DFD диаграмм являются:

· Внешние сущности – источники информации, материальный предмет или человек, являющиеся источником и ли приемником информации.

· Системы/подсистемы АИС – часть АИС, выделяемая для упрощения модели.

· Процессы – преобразование входных потоков в выходные в соответствии с определенным алгоритмом.

· Накопители данных – абстрактное устройство для хранения информации.

· Потоки данных – информация, передаваемая от источника к приемнику.

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

Моделирование данных

Для моделирования данных и проектирования БД АИС наиболее часто применяется диаграмма ERD, разработанная П.Ченом. Базовыми понятиями являются:

· Сущность – реальный или воображаемый объект, имеющий существенное значение для предметной области. Сущность имеет набор свойств (уникальное имя, обладает перечнем атрибутов, имеет ключ).

· Связь – ассоциация двух сущностей, значимая для предметной области.

· Атрибут – любая характеристика сущности, значимая для предметной области.

Модульное программирование

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

· один вход и один выход;

· функциональная завершенность и логическая независимость;

· слабые информационные связи с другими модулями;

· обозримый размер и сложность программной реализации.

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

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

Применительно к приложениям Microsoft Office разрабатывается проект на языке VBA (Visual Basic for Application), который состоит из модулей двух типов:

· стандартные модули – содержат общие процедуры подпрограммы и процедуры функции;

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

Дата добавления: 2018-04-04 ; просмотров: 798 ; Мы поможем в написании вашей работы!

Источник

Структурное и модульное программирование.

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

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

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

Структурное программирование воплощает принципы системного подхода в процессе создания и эксплуатации программного обеспечения ЭВМ. В основу структурного программирования положены следующие достаточно простые положения:

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

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

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

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

Достоинства структурного программирования:

Модульное программирование

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

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

Модуль должен обладать следующими свойствами:

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

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

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

Источник

Принципы структурного программирования.

ФГБОУ ВО «Мордовский государственный

педагогический институт имени М.Е. евсевьева»

Кафедра информатики и вычислительной техники

«Принципы структурного программирования. Основные алгоритмические структуры и их суперпозиции»

Выполнила: студентка гр. МДМ-212

К началу 70-х годов ХХ века, когда развитие языков программирования достигло достаточно высокого уровня, а создаваемые программные комплексы достигли достаточно внушительных размеров (сотни тысяч – миллионы команд), стало очевидно, что программные проекты стали слишком сложными для успешного проектирования, кодирования и отладки в приемлемые сроки. Программисты, решающие сложные задачи, столкнулись с проблемой роста количества и размера программ до такой степени, что дальнейший процесс разработки становился практически неуправляемым, и никто из разработчиков не мог с уверенностью сказать, что созданный программный продукт всегда выполняет то, что требуется, и что он не выполняет ничего такого, что не требуется. Таким образом, возникла проблема коренного изменения подходов к созданию больших программных комплексов.

Исходя из этих проблем, ведущими программистами 70-х годов (Дейкстра, Вирт, Дал, Xoap, Йордан, Константин, Майерс и др.) были разработаны строгие правила ведения проектов, которые получили название структурной методологии.

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

1) четко структурировать программу, что улучшило ее понимание программистами;

2) выполнять доказательства ее корректности и тем самым повышать надежность функционирования программы;

3) сокращать сроки разработки программ.

Еще одним толчком к изменению способа программистского мышления стало опубликованное письмо Дейкстры редактору одного из научных издательств, которое было озаглавлено «Оператор GOTO нужно считать вредным». Это письмо вызвало острую полемику среди программистов того времени, но в итоге победило все-таки структурное мышление, которое, кроме Дейкстры, активно поддерживали профессор Цюрихского технического университета Вирт и профессор Оксфордского университета Xoap. Одним из результатов полемики было доказательство того, что любая программа может быть написана, используя только простую последовательность операторов, итеративную конструкцию типа while (пока) и конструкцию выбора case (выбор), а оператор goto (перейти к) не является необходимой управляющей конструкцией в структурном программировании. К сожалению, споры об операторе goto имели один отрицательный «побочный эффект» — довольно часто программирование без goto стало отождествляться со всем структурным программированием. Однако цели структурного программирования намного глобальнее и серьезнее.

1. ОСНОВЫ ТЕХНОЛОГИИ СТРУКТУРНОГО ПРОГРАММИРОВАНИЯ

Структурное программирование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX в. Э.Дейкстрой, разработана и дополнена Н.Виртом (рис. 1).

Эдсгер Вибе Дейкстра (1930 – 2002) — нидерландский учёный, идеи которого оказали влияние на развитие компьютерной индустрии. Известен как создатель алгоритма поиска кратчайшего пути на графе, один из основателей структурного программирования. В 1972 г. стал лауреатом премии Тьюринга.

Никлаус Вирт (1934) — швейцарский учёный, специалист в области информатики, один из известнейших теоретиков в области разработки языков программирования, профессор компьютерных наук, лауреат премии Тьюринга 1984 г. Ведущий разработчик языков программирования Паскаль, Модула-2, Оберон.

Рис. 1. Пионеры структурного программирования – Э.Дейкстра и Н.Вирт.

Методология структурного программирования появилась как следствие возрастания сложности решаемых на компьютерах задач, и соответственного усложнения программного обеспечения: в 70-е годы XX в. объёмы и сложность программ достигли такого уровня, что «интуитивная» (неструктурированная) разработка программ, которая была нормой в более раннее время, перестала удовлетворять потребностям практики. Программы становились слишком сложными, чтобы их можно было нормально сопровождать, поэтому потребовалась какая-то систематизация процесса разработки и структуры программ.

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

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

Типичными методами структурного программирования являются:

· нисходящее проектирование (проектирование сверху вниз);

· модульное (процедурное) программирование;

В соответствии с методологией структурного программирования:

1. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:

· последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;

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

· цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).

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

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

3. Разработка программы ведётся пошагово, методом «сверху вниз».

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

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

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

К достоинствам структурного программирования можно отнести следующее:

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

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

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

Рассмотрим более подробно основные методы структурного программирования.

1.1. Цели и принципы структурного программирования

Целями структурного программирования являются:

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

· стремиться к локализации действия управляющих конструкций и использования структур данных;

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

Основные принципы структурного программирования сведены в табл. 1.

Таблица 1. Принципы структурного программирования

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

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

«Разделяй и властвуй»

Разделение программы на отдельные фрагменты (модули), которые просты по управлению и допускают независимую отладку и тестирование.

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

1.2. Нисходящее проектирование

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

Спецификация задачи является ее первичным проектом. От неё мы движемся к программе, постепенно уточняя описание.

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

Пример 1. В качестве примера рассмотрим проект одевания ребенка.

2. Конкретизация цели на первом шаге :

Одеть нижнюю половину.

Одеть верхнюю половину.

2.1. Нижнюю половину можно одеть в два этапа:

Надеть носки и ботинки.

2.2. Верхнюю половину можно также одеть в два этапа:

3. Окончательный проект выглядит так:

Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы («сверху-вниз»). В результате строится иерархическая схема – функциональная структура алгоритма (ФСА), отражающая состав и взаимоподчиненность отдельных функций (рис. 2).

Рис. 2. Функциональная структура приложения

Последовательность действий по разработке ФСА приложения следующая:

1) определяются цели автоматизации предметной области и их иерархия (цель-подцель);

2) устанавливается состав приложений (задач обработки), обеспечивающих реализацию поставленных целей;

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

4) определяются необходимые для решения задач функции обработки данных;

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

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

1.3. Модульное программирование

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

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

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

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

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

Среди множества модулей различают:

· головной модуль – управляет запуском программного продукта (существует в единственном числе);

· управляющий модуль – обеспечивает вызов других модулей на обработку;

· рабочие модули – выполняют функции обработки;

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

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

Модуль должен обладать следующими свойствами:

· один вход и один выход – на входе программный модуль получает определенный набор исходных данных, выполняет содержательную обработку и возвращает один набор результатных данных, т.е. реализуется стандартный принцип IPO (Input–Process–Outputвход-процесс-выход);

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

· логическая независимость – результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей;

· слабые информационные связи с другими программными модулями – обмен информацией между модулями должен быть по возможности минимизирован;

· определение доступных для обработки данных;

· операции обработки данных;

· схемы взаимосвязи с другими модулями.

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

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

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

· каждый модуль вызывается на выполнение вышестоящим модулем и, закончив работу, возвращает управление вызвавшему его модулю;

· принятие основных решений в алгоритме выносится на максимально «высокий» по иерархии уровень;

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

В результате дальнейшей детализации алгоритма создается функционально-модульная схема (ФМС) алгоритма приложения, являющаяся основой для программирования (рис. 2).

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

Рис. 3. Функционально-модульная структура алгоритма приложения

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

· точки (момент, условие) начала диалога;

· инициатор диалога – человек или программный продукт;

· параметры и содержание диалога – сообщения, состав и структура меню, экранные формы и т.п.;

· реакция программного продукта на завершение диалога.

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

1.4. Структурное кодирование

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

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

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

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

Фундаментом структурного программирования является теорема о структурировании, сформулированная итальянскими математиками К.Бомом и Дж.Якопини в 1966 г.

Теорема устанавливает, что как бы сложна ни была задача, схему алгоритм ее решения (и, соответственно, программу) всегда можно представить в виде композиции трех типов вложенных блоков:

· следования (begin-endначало-конец),

· циклов с предусловием (whileпока).

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

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

Виды основных управляющих структур алгоритма приведены на рис. 4.

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

1) ввод исходных данных;

2) вычисление по формулам;

3) вывод результата.

В языке Pascal такая структура заключается в операторные скобки Begin . End :

2. Структура типа «ветвление» (ЕСЛИ – ТО – ИНАЧЕ) (рис. 4, б) – обеспечивает в зависимости от результата проверки условия Р, принимающего одно из двух логических значении Да ( True ) или Нет ( False ), выбор одного из альтернативных путей работы алгоритма:

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

В языке Pascal такая структура имеет следующий формат:

3. Структура типа «цикл с предусловием» (рис. 4, в) – обеспечивает многократное выполнение действия S в зависимости от того, какое значение принимает логическое условие Р:

Выполнение цикла прекращается, когда условие Р не выполняется.

В языке Pascal такая структура имеет следующий формат:

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

4. Структура типа «сокращенное ветвление» (ЕСЛИ – ТО) (рис. 5, а) – если результат проверки условия Р принимает значение Да ( True ), то выполняется действие S ; в противном случае это действие пропускается и управление передается следующей структуре:

В языке Pascal такая структура имеет следующий формат:

6. Структура типа «цикл с постусловием» (рис. 5, в) – обеспечивает многократное выполнение действия S до тех пор, пока не выполняется условие Р.

В языке Pascal такая структура имеет следующий формат:

· задание начального значения используемого параметра цикла (например, если переменной цикла является i, то ей присваивается значение i1, т.е. i:=i1);

· изменение параметра цикла, который обеспечивает вычисление результата с новыми начальными данными (например, если параметр цикла i изменяется с шагом i3, i:=i + i 3);

· проверка текущего значения параметра цикла с заданным конечным значением (i

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

В языке Pascal такая структура имеет следующий формат:

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

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

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

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • структура рабочей программы по фгос на 2021 2022 учебный год образец
  • Структура программы что это
  • структура программы дополнительного образования в доу по фгос образец 2020
  • структура программы внеурочной деятельности по фгос образец 2020
  • структура программа воспитания в доу 2021 год новая форма

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии