Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Планирование кодирования и тестирования программ

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

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

Возможны два "чистых" варианта, определяемых направлениями в иерархической схеме:

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

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

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

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

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

 

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

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

 

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

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

 

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

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

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

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

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

 

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

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

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

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

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

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

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

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




 

Комментарии:


Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru