Файл: Технология раработки програмного обеспечения УП.pdf

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

 

 
 

46

МЕТОДЫ

 

РАЗРАБОТКИ

 

ПРОГРАММНОГО

 

ОБЕСПЕЧЕНИЯ

 

Проведенный

 

ранее

 

анализ

 

показал,

 

что

 

в

 

настоящее

 

вре-

мя

 

методы

 

разработки

 

программного

 

обеспечения

 

интенсивно

 

развиваются.

 

Однако

 

далеко

 

не

 

все

 

методы

 

находят

 

широкое

 

практическое

 

применение.

 

Цель

 

наших

 

дальнейших

 

исследова-

ний

 

— рассмотреть

 

лишь

 

те

 

методы,

 

которые

 

считаются

 

основ-

ными

 

для

 

разработки

 

хороших

 

программ.

 

4.1 

Язык

 

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

 

программ

 

При

 

создании

 

программ

 

разработчики

 

обычно

 

используют

 

два

 

способа:

 

либо

 

составляют

 

структурную

 

схему

 

программы,

 

либо

 

сразу

 

пишут

 

программу.

 

Очевидно,

 

что

 

при

 

втором

 

спосо-

бе

 

структура

 

программы

 

наверняка

 

окажется

 

нечеткой.

 

Однако

 

известно,

 

что

 

и

 

хорошая

 

структурная

 

схема

 

может

 

привести

 

к

 

созданию

 

программы

 

с

 

плохой

 

структурой.

 

Необходима

 

неко-

торая

 

система

 

записи,

 

с

 

помощью

 

которой

 

стало

 

бы

 

возможным

 

формальное

 

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

 

программ.

 

Для

 

создания

 

такой

 

системы

 

записи

 

был

 

разработан

 

язык

 

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

 

программ

 

PDL.

 

Этот

 

язык

 

строится

 

по

 

образу

 

универсальных

 

языков

 

программирования.

 

Однако

 

следует

 

от-

метить,

 

что

 

языки

 

программирования

 

и

 

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

 

исполь-

зуются

 

для

 

разных

 

целей,

 

поэтому

 

сравнение

 

их

 

недопустимо.

 

Если

 

языки

 

программирования

 

связаны

 

с

 

обработкой

 

структур

 

данных

 

обычных

 

программ,

 

то

 

языки

 

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

 

могут

 

включать

 

такие

 

«элементарные

 

конструкции»,

 

как

 

«решение

 

задачи»

 

или

 

«обращение

 

матрицы»,

 

или

 

вообще

 

не

 

содержать

 

выражений,

 

заданных

 

в

 

явной

 

форме.

 

Если

 

запись

 

программы

 

на

 

языке

 

программирования

 

известна,

 

то

 

этап

 

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

 

не

 

обязателен.

 

Язык

 

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

 

обычно

 

состоит

 

из

 

двух

 

частей:

 

 

заданного

 

набора

 

операторов,

 

построенных

 

по

 

образцу

 

языков

 

программирования;

 

 

общего,

 

обычно

 

неопределяемого

 

синтаксиса,

 

пригод-

ного

 

для

 

описания

 

задач

 

в

 

данной

 

области.

 


background image

 

 

 
 

47

Таким

 

образом,

 

язык

 

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

 

программ

 

включает

 

определенный

 

внешний

 

синтаксис,

 

описывающий

 

логику

 

про-

граммы

 

при

 

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

 

Эта

 

логика

 

строится

 

при

 

помощи

 

управляющих

 

структур,

 

имеющихся

 

в

 

большинстве

 

языков

 

про-

граммирования.

 

С

 

другой

 

стороны,

 

язык

 

PDL

 

содержит

 

неопределенный

 

внутренний

 

синтаксис,

 

который

 

включает

 

все

 

структуры

 

дан-

ных

 

и

 

процедуры

 

по

 

их

 

обработке.

 

Почти

 

любое

 

предложение

 

на

 

естественном

 

языке

 

можно

 

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

 

для

 

описания

 

пре-

образования

 

данных.

 

if X 

неотрицательно 

then return 

(

квадратный корень из X – 

             

действительное число); 

else return 

(

квадратный корень из X – 

             

мнимое число); 

В

 

этом

 

случае

 

на

 

языке

 

PDL

 

фиксируется

 

логика

 

про-

граммы

 

if

 

 

then

 

 

else

,

 

а

 

внутренние

 

выражения

 

(напри-

мер,

 

«квадратный

 

корень»)

 

не

 

определяются.

 

Далее

 

должно

 

производиться

 

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

 

с

 

помощью

 

PDL-программы

 

«извлечение

 

квадратного

 

корня

 

из

 

X

».

 

Язык

 

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

 

обычно

 

называют

 

псевдокодом.

 

Язык

 

PDL

 

включает

 

шесть

 

групп

 

операторов.

 

Оператор

 

выбора.

 

 

а)

 

if

 

выражение;

 

 

 then 

оператор

1

 

 else 

оператор

2

Оба

 

оператора

 

могут

 

быть

 

последовательностью

 

операто-

ров,

 

входящих

 

в

 

группу

 

do

 

 

end

.

 

 

б)

 

do case

 (

выражение); 

 

 /

индекс

1

оператор

1

  

... 

 

 /

индекс

n

оператор

n

 

 else 

оператор

n+1

 

 end

Оператор

 

case

 

используется

 

для

 

выбора

 

из

 

многих

 

вари-

антов.

 

Оператор

 

case

 

вычисляет

 

выражение

 

и

 

выполняет

 

тот

 


background image

 

 

 
 

48

оператор,

 

у

 

которого

 

индекс

 

равен

 

значению

 

выражения.

 

Если

 

ни-

какой

 

из

 

индексов

 

не

 

равен

 

значению

 

выражения,

 

то

 

выполняется

 

оператор

 

else

 

(если

 

он,

 

конечно,

 

имеется).

 

Как

 

и

 

оператор

 

if

,

 

ка-

ждый

 

из

 

этих

 

операторов

 

может

 

входить

 

в

 

группу

 

do

 

 

end

.

 

Оператор

 

цикла.

 

 

а)

 

do

 

while

 

(

выражение); 

 

   

набор

 

операторов; 

 

 end

Набор

 

операторов

 

выполняется

 

до

 

тех

 

пор,

 

пока

 

значение

 

выражения

 

остается

 

истинным.

 

 

б)

 

do

 

переменная

 

=

 

выраж

1

 

to

 

выраж

2

 

by

 

выраж

3

 

   

набор

 

операторов; 

 

 end

При

 

вхождении

 

в

 

цикл

 

в

 

первый

 

раз

 

вычисляются

 

значе-

ния

 

выраж

1

,

 

выраж

2

 

и

 

выраж

3

.

 

Приращение

 

(

выраж

3

)

 

может

 

быть

 

положительным,

 

отрицательным

 

или

 

опущено

 

(по

 

умол-

чанию

 

предполагается

 

равным

 

+1).

 

Цикл

 

выполняется

 

любое

 

число

 

раз.

 

Оператор

 

описания

 

данных.

 

declare

 

имя атрибуты;

 

Имена

 

объявляются

 

для

 

переменных

 

со

 

списками

 

атрибу-

тов.

 

Атрибуты

 

могут

 

быть

 

стандартными

 

типами

 

данных

 

языка

 

программирования

 

(real,

 

float

,

 

integer

 

и

 

др.)

 

или

 

струк-

турами

 

данных

 

высокого

 

уровня

 

(рис.

 

4.1).

 

 

Рис.

 

4.1

 

 

Структура

 

данных

 

в

 

языке

 

PDL

 

A

 

E

 

F

 

B

 

C

 

D

 


background image

 

 

 
 

49

Для

 

определения

 

сложных

 

структур

 

данных

 

используются

 

структуры

 

типа:

 

 

declare

 1 A, 

 

            2 B, 

 

                3 C, 

 

                3 D, 

 

            2 E, 

 

            2 F;

 

Это

 

соответствует

 

структуре

 

дерева,

 

изображенного

 

на

 

рисунке.

 

Для

 

ссылки

 

на

 

элементы

 

подобных

 

структур

 

использу-

ется

 

система

 

уточненных

 

имен.

 

Таким

 

образом,

 

на

 

узел

 

C

 

мож-

но

 

ссылаться

 

как

 

на

 

A.B.C,

 

хотя

 

к

 

C

 

можно

 

обращаться

 

и

 

непо-

средственно,

 

если

 

это

 

имя

 

используется

 

однозначно.

 

Другие

 

операторы.

 

 

а)

 

переменная = выражение;

 

 

б)

 

call

 

имя процедуры(список аргументов);

 

 

в)

 

return

 (

значение);

 

 

г)

 

имя procedure (список параметров);

 

 

    

список операторов; 

 

 

end

 

д)

 

get

 (

список данных для ввода);

 

 

е)

 

put

 (

список данных для вывода);

 

Все

 

параметры

 

в

 

процедуре

 

вызываются

 

с

 

помощью

 

ссы-

лок

 

(т.е.

 

адреса

 

переменных

 

передаются

 

в

 

процедуру).

 

Область

 

действия

 

имен

 

 

в

 

блоке,

 

где

 

проведено

 

их

 

описание.

 

Оператор

 

leave

.

 

Оператор

 

leave

 

обеспечивает

 

выход

 

из

 

цикла,

 

организо-

ванного

 

с

 

помощью

 

оператора

 

do

.

 

Оператор

 

leave

 

является

 

типом

 

управляющего

 

оператора

 

перехода.

 

Предложения

 

на

 

естественном

 

языке.

 

Кроме

 

указанных

 

пяти

 

классов

 

операторов,

 

любое

 

пред-

ложение,

 

написанное

 

на

 

естественном

 

языке,

 

можно

 

использо-

вать

 

как

 

оператор

 

языка

 

PDL.

 

 

а)

 

Найти наибольший элемент в массиве B; 

 

б)

 

do

 

для всех X из {a, b, c}; 

 

в)

 

A = 

первый  элемент B, который  больше 

чем C. 


background image

 

 

 
 

50

Для

 

языка

 

PDL

 

разработаны

 

специальные

 

трансляторы.

 

С

 

помощью

 

таких

 

трансляторов

 

можно

 

получать

 

документацию,

 

которая

 

необходима

 

для

 

изучения

 

и

 

сопровождения

 

любой

 

сис-

темы.

 

Кроме

 

того,

 

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

 

с

 

помощью

 

языка,

 

сходного

 

с

 

языком

 

программирования,

 

в

 

значительной

 

мере

 

уменьшает

 

количество

 

ошибок.

 

4.2 

Стратегия

 

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

 

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

разработка 

Язык

 

программирования

 

является

 

лишь

 

средством

 

разра-

ботки

 

проектов.

 

Важное

 

место

 

в

 

построении

 

правильных

 

проек-

тов

 

играет

 

методология

 

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

 

При

 

разработке

 

про-

грамм

 

на

 

этапе

 

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

 

обычно

 

используется

 

два

 

под-

хода:

 

нисходящий

 

и

 

восходящий.

 

Суть

 

нисходящего

 

проектиро-

вания

 

можно

 

объяснить

 

следующей

 

схемой

 

(рис.

 

4.2).

 

 

Рис.

 

4.2

 

 

Пример

 

базисной

 

схемы

 

На

 

приведенной

 

базисной

 

схеме

 

каждый

 

блок

 

 

это

 

мо-

дуль

 

системы.

 

При

 

этом

 

вызов

 

каждого

 

модуля

 

производится

 

модулем

 

более

 

высокого

 

уровня.

 

При

 

нисходящем

 

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

 

вначале

 

проектируется

 

управляющая

 

программа

 

 

драйвер.

 

Управляющий

 

модуль

 

может

 

быть

 

представлен

 

программой

 

на

 

PDL.

 

DRIVER

 

AAA

 

AAB

 

AA

 

ACA

 

ACB

 

AC

 

AB

 

A

 

BA

 

BB

 

B

 

CA

 

C