Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SRS2.docx
Скачиваний:
11
Добавлен:
12.04.2017
Размер:
144.85 Кб
Скачать

Содержание

Базовые управляющие структуры 3стр.

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

Типы связности 7стр.

Свойства модулей 8стр.

Типичные архитектуры программ 10стр.

Cцепления модуля с другими модулями 10стр.

Методы проектирования программ 11стр.

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

Постановка задачи (problem definition ) - это точная формулировка решения задачи на компьютере с описанием входной и выходной информации.

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

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

  • цель или назначение задачи, ее место и связи с другими задачами;

  • условия решения задачи с использованием компьютеров;

  • содержание функций обработки входной информации при решении задачи;

  • требования к периодичности решения задачи;

  • ограничения по срокам и точности выходной информации;

  • состав и форма представления выходной информации;

  • источники входной информации для решения задачи;

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

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

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

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

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

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

Линейный алгоритм - фиксированный перечень блоков (операторов). Каждый очередной блок обрабатывается после завершения предыдущего без дополнительных условий. Для изменения порядка обработки блоков выполняется редактирование их последовательности.

Линейная структура алгоритма

Условные структуры алгоритмов часто называют ветвлениями. Блок Условие содержит альтернативные последовательности обработки данных в зависимости от того выполнено условие или нет Результатом выполнения условия является Истина или Ложь (Да или Нет). В зависимости от него выполняется Блок 1 или Блок 2. Обязательно выполняется один из альтернативных блоков операций.

Условная структура алгоритма с ветвлением

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

Для организации цикла в блоке "Условие" задается условие выполнения тела цикла (рис. 4). Если условие не выполняется, цикл прерывается и осуществляется выход.

Цикл может повторяться заданное количество раз, если "Условие" использует счетчик числа повторений, для которого задается начальное, конечное значение и шаг изменения.

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

Цикл с предусловием Цикл с постусловием Цикл с параметром

Алгоритмы должны соответствовать следующим свойствам, обеспечивающим их применимость:

  • дискретность - разбиение процесса обработки информации на более простые этапы (шаги выполнения), при этом сложные функции обработки могут быть представлены через более простые последовательно выполняемые функции;

  • определенность алгоритма - однозначность выполнения каждого отдельного шага преобразования информации;

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

  • массовость - пригодность алгоритма для решения определенного класса задач.

Алгоритм служит основой для создания программ.

 «Divide et impera (Разделяй и властвуй)» Латинская формулировка принципа

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

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

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

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

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

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

  • рабочие модули - выполнение функций обработки;

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

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

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

Типы связности

В стандарте ISO/IEC/IEEE 24765 и современной литературе предлагается рассматривать следующие типы связности:

  • случайная (англ coincidental);

  • коммуникационная (англ communicational);

  • функциональная (англ. functional);

  • логическая (англ. logical);

  • процедурная (англ procedural);

  • последовательностная (англ. sequential) и

  • временна́я (англ. temporal).

Случайная связность

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

Коммуникационная связность

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

Функциональная связность

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

Логическая связность

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

Процедурная связность

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

Последовательностная связность

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

Временна́я связность

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

Эти виды связности аналогичны используемым семи видам связности в SADT

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

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

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

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

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

  • обозримый по размеру и сложности программный элемент.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Типичные архитектуры программ