- •Понятие «правильного» и «надежного» пс.
- •Источники ошибок в пс.
- •Методы борьбы с ошибками.
- •Жизненный цикл программного средства.
- •Понятие качества пс. Критерии.
- •Внешнее описание пс. Назначение и состав.
- •Функциональная и нефункциональная спецификация.
- •Архитектура пс. Основные классы архитектур.
- •Методы разработки структуры программы. Восходящая разработка.
- •Методы разработки структуры программы. Нисходящая разработка.
- •Конструктивный подход к разработке пс. Особенности и сфера применения.
- •Архитектурный подход к разработке пс. Особенности и сфера применения.
- •Понятие модульного программирования. Достоинства и недостатки.
- •Характеристики программного модуля. Критерии.
- •Порядок разработки программного модуля.
- •Понятие структурного программирования. Псевдокод.
- •Понятие отладки программного модуля. Восходящее тестирование.
- •Понятие отладки программного модуля. Нисходящее тестирование.
-
Методы разработки структуры программы. Восходящая разработка.
Спецификация программного модуля содержит синтаксическую спецификацию его входов, позволяющую построить на используемом языке программирование правильное обращение к нему. Функциональная спецификация модуля строится также, как и функциональная спецификация ПС. В процессе разработки программы модульная структура может формироваться по-разному, обычно используется 2 метода: метод восходящей и нисходящей разработки.
Метод восходящей разработки
Сначала строится модульная структура программы в виде дерева, затем поочередно программируются модули программы, начиная с самого нижнего уровня (листья дерева, самых маленьких модулей). Модули программируются в таком порядке, чтобы для каждого нового модуля были созданы уже все модули, к которым он обращается. Затем происходит поочередное тестирование и отладка в таком же порядке. Такой расклад не рекомендуется. Это связано со следующим:
-
Для программирования какого-либо модуля совсем не требуется текста описывающий модуль, для этого достаточно чтобы каждый модуль был лишь специфицирован.
-
Каждая программа подчиняется некоторым внутренним для нее соображениям, например, структура данных, набор исходных переменных и т.д. на который накладывай свой отпечаток предметная область в которой функционирует приложение. Поэтому модули часто требуют перепрограммирования, когда происходит уточнение этой глобальной информации. Таким образом, наблюдается большой объем отладочного программирования и при этом не гарантируется, что тестирование модуля будет происходить в тех же условиях, что и в рабочей программе.
-
Методы разработки структуры программы. Нисходящая разработка.
В процессе разработки программы модульная структура может формироваться по-разному, обычно используется 2 метода: метод восходящей и нисходящей разработки.
Метод снисходящей разработки
Заключается в следующем: сначала также строится модульная структура в виде дерева, но программирование происходит в другом направлении, начиная с самого верхнего (головного) уровня и только затем переходит к программированию других модулей. Когда все модули запрограммированы происходит программирование и отладка. В этом случае вся глобальная информация формируется своевременно, т.е. просчеты в программировании модулей сводятся к минимуму, облегчается тестирование, поскольку головной модуль уже создан и можно лишь его запустить. Также все модули тестируются в естественном состоянии информационной среды. Если головной модуль обращается к еще незапрограммированному модулю, то он заменяется на имитатор (т.е. простой программный фрагмент, сигнализирующий о том, что произошел факт обращения к модулю с необходимыми входными параметрами). Таким образом объем отладочного программирования сводится к созданию простых имитаторов. Также имитаторы удобно использовать для того чтобы они возвращали строго определенные значения.
-
Конструктивный подход к разработке пс. Особенности и сфера применения.
Представляет собой модификацию снисходящей разработки. Программирование начинается с головного модуля исходя из спецификации программы в целом, при этом спецификация программы головного модуля является спецификацией программы, так как именно он ответственен за выполнение функций. В процессе программирования головного модуля, в случае если программа достаточно большая, выделяются подзадачи (т.е. внутренние функции). В терминах в которых программируется головной модуль, таким образом, что для каждой выделяемой подзадачи создается спецификация реализующего ее фрагменты программы, который в дальнейшем может быть представлен под деревом модулей. В головном модуле для обращения к выделенной функцией строят соответствующие обращения, в соответствии с созданной спецификацией. Таким образом на первом шаге разработке создается верхняя (начальная) часть дерева. В результате создается дооформление дерева программы.
Конструктивный подход имеет ряд положительных особенностей в отношении архитектурного, а именно поскольку в конструктивном подходе головной модуль уже создан, следовательно, программа уже готова к работе, поэтому появляется возможность выпуска на рынок не полностью доделанной программы, которая решает только основные функции. В дальнейшем функционал приложения может быть доведен до требуемого, однако приложение уже может использоваться в конкретных целях, например, для определения особенностей функционирования программы.