ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Проектирование информационных систем
Добавлен: 21.10.2018
Просмотров: 10759
Скачиваний: 8
46
4
МЕТОДЫ
РАЗРАБОТКИ
ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ
Проведенный
ранее
анализ
показал,
что
в
настоящее
вре-
мя
методы
разработки
программного
обеспечения
интенсивно
развиваются.
Однако
далеко
не
все
методы
находят
широкое
практическое
применение.
Цель
наших
дальнейших
исследова-
ний
— рассмотреть
лишь
те
методы,
которые
считаются
основ-
ными
для
разработки
хороших
программ.
4.1
Язык
проектирования
программ
При
создании
программ
разработчики
обычно
используют
два
способа:
либо
составляют
структурную
схему
программы,
либо
сразу
пишут
программу.
Очевидно,
что
при
втором
спосо-
бе
структура
программы
наверняка
окажется
нечеткой.
Однако
известно,
что
и
хорошая
структурная
схема
может
привести
к
созданию
программы
с
плохой
структурой.
Необходима
неко-
торая
система
записи,
с
помощью
которой
стало
бы
возможным
формальное
проектирование
программ.
Для
создания
такой
системы
записи
был
разработан
язык
проектирования
программ
PDL.
Этот
язык
строится
по
образу
универсальных
языков
программирования.
Однако
следует
от-
метить,
что
языки
программирования
и
проектирования
исполь-
зуются
для
разных
целей,
поэтому
сравнение
их
недопустимо.
Если
языки
программирования
связаны
с
обработкой
структур
данных
обычных
программ,
то
языки
проектирования
могут
включать
такие
«элементарные
конструкции»,
как
«решение
задачи»
или
«обращение
матрицы»,
или
вообще
не
содержать
выражений,
заданных
в
явной
форме.
Если
запись
программы
на
языке
программирования
известна,
то
этап
проектирования
не
обязателен.
Язык
проектирования
обычно
состоит
из
двух
частей:
−
заданного
набора
операторов,
построенных
по
образцу
языков
программирования;
−
общего,
обычно
неопределяемого
синтаксиса,
пригод-
ного
для
описания
задач
в
данной
области.
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
вычисляет
выражение
и
выполняет
тот
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
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.
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