Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УЧЕБНОЕ ПОСОБИЕ Глухова Лилия Александровна 2007.pdf
Скачиваний:
624
Добавлен:
15.06.2014
Размер:
921.37 Кб
Скачать

2)Модульный подход в среднем требует большего времени работы центрального процессора (в среднем на 5 - 10%) за счет времени обращения к модулям.

3)Модульность программы приводит к увеличению объема программ(в среднем на 5 - 10%).

Методы проектирования модульных программ делятся на 3 группы:

1)Методы нисходящего проектирования.

2)Методы расширения ядра.

3)Методы восходящего проектирования.

На практике обычно применяются различные сочетания этих методов.

4.2. Метод нисходящего проектирования

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

Суть метода заключается в следующем.

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

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

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

не будут

окончательно

уточнены.

Когда

модули

становятся

настолько

просты и

прозрачны, что их можно непосредственно программировать, принимается

решение о прекращении дальнейшего проектирования.

 

 

Таким

образом, на

каждом

шаге

разработки

уточняется

реализация

фрагмента алгоритма, то есть решается более простая задача.

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

СТБ ИСО/МЭК 12207-2003 [8].

Метод нисходящего проектирования основан на двух стратегиях [12]:

1)пошаговое уточнение (данная стратегия разработана Е. Дейкстрой)

2)анализ сообщений (данная стратегия базируется на работах группы авторов: Йодана, Константайна, Мейерса).

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

67

4.2.1. Пошаговое уточнение

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

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

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

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

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

2)использование комментариев для описания обработки данных.

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

Общее правило записи текста разрабатываемой программы: служебные

слова, которыми начинается и заканчивается та или иная

управляющая

конструкция, записываются на одной вертикали; все вложенные в данную

конструкцию псевдокоды (или комментарии или операторы) и управляющие

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

 

 

Преимущества метода пошагового уточнения:

 

 

1) Основное

внимание

при

его

использовании

обращается

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

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

корректности процесса разработки на всех этапах.

 

 

 

 

Недостаток

метода

пошагового

уточнения: на

поздних

этапах

проектирования

может

обнаружиться

необходимость

в

структурн

изменениях, требующих пересмотра более ранних решений.

4.2.2.Кодирование программы с помощью псевдокода и управляющих конструкций структурного программирования

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

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

68

Таким

образом, фактически проектируется

управляющая

структура

программы.

 

 

 

 

На этапе, когда принимается решение о прекращении дальнейшего

уточнения,

оставшиеся

неопределенными

подфункции

становят

вызываемыми модулями (или подпрограммами), а проектируемый модуль– управляющим модулем.

Пример 4.1.

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

Первый этап пошагового уточнения.

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

Рrogram Обработка_пакетов.

Второй этап пошагового уточнения.

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

Program Обработка_пакетов; Сортировать_группы_по_управляющим_записям Отделить_группы_с_правильными_управляющими_записями_от_ групп_с_неправильными_управляющими_записями_и_обработать {*}

EndРrogram.

Фрагмент программы, детализированный на втором этапе, располагается правее детализированного на первом этапе.

Третий этап пошагового уточнения.

 

 

 

 

Дальнейшая

детализация

программы. Детализация

фрагмента *.

Возможно

появление

необходимости

в

использовании

управляющ

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

Program Обработка_пакетов; Сортировать_группы_по_управляющим_записям

Взять_первую_группу

While не_конец_входного_файла Do Взять_правильную_управляющую_запись Обработать_группу_записей

End

Обработать_группы_с_неправильной_управляющей_записью

EndРrogram.

69

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

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

4.2.3.Использование комментариев для описания обработки данных

 

Вторым из рассматриваемых способов реализации пошагового уточнения

 

является использование комментариев для описания обработки данных.

 

 

При этом способе на каждом этапе уточнений используются управляющие

 

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

 

детализируются. Они описываются в виде комментариев.

 

 

 

На каждом этапе уточнений блоки, представленные комментариями,

 

частично детализируются. Но сами комментарии при этом не выбрасываются.

 

В

результате

после

окончания

проектирования

получается

хо

прокомментированная программа.

 

 

 

 

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

 

 

1)Заголовки. Объясняют назначение основных блоков программы на отдельных этапах пошаговой детализации.

2)Построчные. Описывают мелкие фрагменты программы.

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

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

отсутствие в ней комментариев. В среднем нужно руководствоваться следующими нормами комментариев:

·4 - 5 строк комментария-заголовка на каждую подпрограмму или блок;

·по одному комментарию на каждые2 - 3 строки исходного текста для построчных комментариев.

Пример 4.2.

Рассмотрим тот же пример проектирования некоторой абстрактной программы, который был рассмотрен в примере4.1. Пусть программа

70

обрабатывает пакеты

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

из

групп

записей, каждая

группа

сопровождается

управляющей

записью, имеет

заголовок и окончание.

 

 

 

 

 

 

 

Первый этап пошагового уточнения.

 

 

 

 

 

Записывается

 

вводный

комментарий

и

комментарий

к

заголовк

программы.

 

 

 

 

 

 

 

 

{Программа обработки пакетов записей. Разработчик Иванов И.И.} {Заголовок программы}

Второй этап пошагового уточнения.

 

 

 

 

Сохраняются

комментарии

предыдущего

этапа

и

добавляю

комментарии текущего этапа.

{Программа обработки пакетов записей. Разработчик Иванов И.И.} {Заголовок программы}

Program {Обработка пакетов}

{Сортировка групп по управляющим записям} {Отделение групп с правильными управляющими записями от

групп с неправильными управляющими записями и их обработка} {*} EndРrogram.

Третий этап пошагового уточнения.

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

{Программа обработки пакетов записей. Разработчик Иванов И.И.} {Заголовок программы}

Program {Обработка пакетов}

{Сортировка групп по управляющим записям} {Отделение групп с правильными управляющими записями от

групп с неправильными управляющими записями и их обработка} {Взятие первой группы}

While {не конец входного файла} Do

{Взятие правильной управляющей записи} {Обработка группы записей}

End

{Обработка групп с неправильной управляющей записью} EndРrogram.

71