ВУЗ: Томский государственный университет систем управления и радиоэлектроники
Категория: Учебное пособие
Дисциплина: Проектирование информационных систем
Добавлен: 21.10.2018
Просмотров: 10755
Скачиваний: 8
36
3)
для
некоторых
наборов
тестовых
данных
обеспечивает
получение
правильного
результата;
4)
для
типичных
наборов
тестовых
данных
обеспечивает
получение
правильного
результата;
5)
для
усложненных
наборов
тестовых
данных
обеспечи-
вает
получение
правильного
результата;
6)
для
всех
возможных
наборов
данных,
удовлетворяю-
щих
спецификации
задачи,
обеспечивает
получение
правильного
результата;
7)
для
всех
возможных
наборов
данных
и
всех
вероятных
условий
ошибочного
входа
обеспечивает
получение
правильного
результата;
8)
для
всех
возможных
наборов
данных
обеспечивает
по-
лучение
правильного
результата.
Естественно,
что
уровень
правильности
8
не
всегда
дос-
тижим
и,
более
того,
не
всегда
необходим.
Обычно
для
про-
граммных
комплексов
достаточно
уровня
правильности
6.
Достижение
каждого
уровня
правильности
требует
затрат,
и
при
проектировании
комплекса
разработчик
сам
должен
обос-
новывать
необходимый
уровень
правильности.
Одним
из
путей,
повышающих
уровень
«правильности»
программ,
является
ве-
рификация.
На
настоящем
уровне
развития
методов
разработки
полная
автоматизация
верификации
невозможна.
Общим
для
различных
систем
верификации
является
представление
программы
в
виде
графа,
с
каждой
дугой
которо-
го
соотносится
некоторый
предикат
(утверждение)
(рис.
3.5).
Рис.
3.5
—
Связь
каждого
оператора
программы
с
утверждениями
А
i
и
A
j
Если
A
i
–
входное
утверждение,
связанное
с
входной
ду-
гой
оператора
S,
а
A
j
— утверждение,
связанное
с
исходящей
дугой
того
же
оператора,
тогда
доказывается
правильность
опе-
ратора
«если
A
i
истинно
и
оператор
S
выполнен,
то
утвержде-
ние
A
j
истинно».
Подобный
процесс
может
быть
повторен
для
каждого
оператора
программы.
Если
A
1
есть
утверждение,
Оператор
S
Предикат
A
i
Предикат
A
j
37
предшествующее
входному
узлу
графа
(начальное
утвержде-
ние),
а
A
n
—
утверждение
на
выходном
узле,
то
«если
A
1
истин-
но
и
программа
выполнена,
то
A
n
истинно»
(рис.
3.6).
Рис.
3.6
—
Определение
входа
и
выхода
программы
с
помощью
предикатов А
1
и
А
n
Подобный
подход
был
формализован
Хоором,
который
сформулировал
ряд
аксиом,
определяющих
влияние
каждого
типа
операторов
в
языке
на
утверждение.
Таким
образом,
дока-
зательство
правильности
программ
сводится
к
доказательству
теорем
исчисления
предикатов.
Естественно,
при
таком
математическом
подходе
результа-
ты
работы
программы
необходимо
сравнивать
с
ее
специфика-
циями.
Каждая
программа
правильна
лишь
по
отношению
к
не-
которому
набору
спецификаций.
Поэтому
возникают
вопросы:
•
Эквивалентна
ли
спецификация
предъявляемым
к
про-
грамме
требованиям?
•
Является
ли
программа
правильной
по
отношению
к
этим
спецификациям?
Это
наиболее
важные
вопросы,
которые
мы
будем
решать
при
анализе
правильности
программ.
3.3
Развитие
методов
разработки
программного
обеспечения
Кроме
традиционных
хорошо
известных
методов
разра-
ботки
(проектирования)
программного
обеспечения,
в
настоя-
щее
время
все
шире
применяются
методы,
ориентированные
на
автоматизированную
разработку.
Начало
Конец
Программа
Предикат
A
1
Предикат
A
n
38
3.3.1 Язык определения задач и анализатор задач
Среди
таких
методов
следует
отметить
разработку
Мичи
-
ганского
университета
ISDOS,
в
состав
которой
входят
две
ба-
зовые
составляющие:
1)
язык
описания
задач
PSL,
предназначенный
для
ото-
бражения
функциональных
требований
и
требований
к
ресурсам.
Этот
язык
содержит
набор
средств
объявле-
ний,
позволяющих
пользователю
определять
объекты
системы,
их
свойства,
а
также
соединять
объекты
по-
средством
взаимосвязи;
2)
анализатор
определения
задач
PSA,
представляющий
собой
процессор,
с
помощью
которого
осуществляется
испытание
предложений,
написанных
на
языке
PSL.
Анализатор
генерирует
базу
данных,
отображающую
системные
требования,
и
осуществляет
проверку
по-
следовательности
и
анализ
полноты
данных.
Он
также
поддерживает
ряд
выходных
документов,
содержащих
сведения
о
выборке
данных,
а
также
об
ошибках,
объ-
ектах,
имеющихся
в
базе
данных,
взаимосвязи
между
ними.
Язык
PSL
имеет
простой
синтаксис
и
ориентирован
на
использование
ключевых
слов.
Основными
операторами
этого
языка
являются:
PROCESS <
имя>
<имя>
определяется
как
новый
процесс;
DESCRIPTION <
текст> <текст>
представляет
описание
функции,
реализуемой
процессом,
средствами
английского
языка;
SUBPARTS ARE <
имя>
процесс
<имя>
связан
с
текущим
процессом
и
расположен
ниже
его
на
дереве
иерархии;
PART OF <
имя>
процесс
<имя>
вызывает
текущий
процесс;
DERIVE <
файл>
файл
<файл>
является
выходным
для
текущего
процесса;
USING <
файл>
файл
<файл>
является
входным
для
текущего
процесса;
39
PROCEDURE <
текст>
<текст>
представляет
описание
на
языке
PDL
алгоритма,
реализуемо-
го
процессом.
Пример:
если
процесс
Y
содержит
предложение
PART
OF
X
;
то
процесс
X
должен
включать
предложение
SUBPARTS
ARE
Y
;.
Система
PSL/PSA
обладает
следующими
характеристи-
ками:
1)
позволяет
пользователю
получить
формализованное
представление
проблемы;
2)
осуществляет
документирование
системных
требова-
ний
в
единообразной
форме;
3)
способствует
выявлению
условий
возникновения
неко-
торых
видов
ошибок,
обусловленных,
в
первую
оче-
редь,
неполнотой
информации
и
нарушением
последо-
вательности
ее
ввода.
Третья
составляющая
часть
ISDOS
—
язык
проектирова-
ния
программ
PDL.
Язык
включает
две
категории
структур.
Имеется
внешний
синтаксис,
построенный
на
основных
типах
операторов
(if-then-else,
sequence
и
др.).
Внешний
син-
таксис предназначен для
соединения
отдельных
компонент
в
программы.
Кроме
того,
существует
внутренний
синтаксис,
со-
ответствующий
конкретному
применению.
Внутренний
синтак-
сис
выражается
предложениями
на
естественном
языке,
кото-
рые
раскрываются
последовательно,
пока
алгоритм
не
окажется
описанным
компонентами
внешнего
синтаксиса.
Пример:
Max: procedure (list);
/*
Поиск наибольшего элемента в списке */
declare
(maxmin, next)
целое;
declare
list
последовательность целых чисел;
maxmin =
первый элемент list;
do while
(
имеются элементы в list)
next =
следующий элемент в list;
maxmin =
наибольший из next и maxmin;
end;
return
(maxmin);
end
Max;
40
Естественно,
что
рассматриваемая
система
не
лишена
не-
достатков.
В
первую
очередь,
это
тот
факт,
что
для
многих
спе-
цификаций
она
излишне
универсальна.
Однако,
учитывая,
что
эта
система
автоматизирована,
выполняет
достаточно
большой
объем
документирования
разработок,
ее
применение
оправдано.
Тем
не
менее
на
этапе
проектирования
используется
ряд
других
подходов,
некоторые
из
которых
мы
рассмотрим.
3.3.2 Система структурного анализа и проектирования
SADT
SADT
—
это
аббревиатура
марки
фирмы
Software
Tech-
nology,
представляет
собой
ручную
графическую
систему,
предназначенную
для
проектирования
больших
программных
комплексов.
Графический
язык
системы
SADT
—
это
иерархи-
ческий
структурированный
набор
диаграмм,
причем
каждый
блок
диаграммы
раскрывается
более
детально
с
помощью
дру-
гой
диаграммы.
Таким
образом,
структура
модели
представля-
ется
с
все
большей
степенью
детализации
по
мере
разработки
проекта
(рис.
3.7).
Рис.
3.7
—
Структура
SADT
(SA
—
формальный
язык
описания
взаи-
мосвязей между
компонентами
системы)
Структура
системы:
Задача
A
(Задача
B
или
C)
и
Задача
D
Задача
F
Задача
A
Задача
B
Задача
D
Задача
C
Задача
F