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

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

 

 

 
 

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

 


background image

 

 

 
 

37

предшествующее

 

входному

 

узлу

 

графа

 

(начальное

 

утвержде-

ние),

 

а

 

A

n

 

 

утверждение

 

на

 

выходном

 

узле,

 

то

 

«если

 

A

1

 

истин-

но

 

и

 

программа

 

выполнена,

 

то

 

A

n

 

истинно»

 

(рис.

 

3.6). 

 

 

Рис.

 

3.6

 

 

Определение

 

входа

 

и

 

выхода

 

программы

 

с

 

помощью

                     

предикатов А

1

 

и

 

А

n

 

 
Подобный

 

подход

 

был

 

формализован

 

Хоором,

 

который

 

сформулировал

 

ряд

 

аксиом,

 

определяющих

 

влияние

 

каждого

 

типа

 

операторов

 

в

 

языке

 

на

 

утверждение.

 

Таким

 

образом,

 

дока-

зательство

 

правильности

 

программ

 

сводится

 

к

 

доказательству

 

теорем

 

исчисления

 

предикатов.

 

Естественно,

 

при

 

таком

 

математическом

 

подходе

 

результа-

ты

 

работы

 

программы

 

необходимо

 

сравнивать

 

с

 

ее

 

специфика-

циями.

 

Каждая

 

программа

 

правильна

 

лишь

 

по

 

отношению

 

к

 

не-

которому

 

набору

 

спецификаций.

 

Поэтому

 

возникают

 

вопросы:

 

 

Эквивалентна

 

ли

 

спецификация

 

предъявляемым

 

к

 

про-

грамме

 

требованиям?

 

 

Является

 

ли

 

программа

 

правильной

 

по

 

отношению

 

к

 

этим

 

спецификациям?

 

Это

 

наиболее

 

важные

 

вопросы,

 

которые

 

мы

 

будем

 

решать

 

при

 

анализе

 

правильности

 

программ.

 

3.3 

Развитие

 

методов

 

разработки

 

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

 

обеспечения

 

Кроме

 

традиционных

 

хорошо

 

известных

 

методов

 

разра-

ботки

 

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

 

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

 

обеспечения,

 

в

 

настоя-

щее

 

время

 

все

 

шире

 

применяются

 

методы,

 

ориентированные

 

на

 

автоматизированную

 

разработку.

 

Начало

 

Конец

 

Программа

 

Предикат

 

A

1

 

Предикат

 

A

n

 


background image

 

 

 
 

38

3.3.1 Язык определения задач и анализатор задач 

Среди

 

таких

 

методов

 

следует

 

отметить

 

разработку

 

Мичи

-

ганского

 

университета

 

ISDOS,

 

в

 

состав

 

которой

 

входят

 

две

 

ба-

зовые

 

составляющие:

 

 

1)

 

язык

 

описания

 

задач

 

PSL,

 

предназначенный

 

для

 

ото-

бражения

 

функциональных

 

требований

 

и

 

требований

 

к

 

ресурсам.

 

Этот

 

язык

 

содержит

 

набор

 

средств

 

объявле-

ний,

 

позволяющих

 

пользователю

 

определять

 

объекты

 

системы,

 

их

 

свойства,

 

а

 

также

 

соединять

 

объекты

 

по-

средством

 

взаимосвязи;

 

 

2)

 

анализатор

 

определения

 

задач

 

PSA,

 

представляющий

 

собой

 

процессор,

 

с

 

помощью

 

которого

 

осуществляется

 

испытание

 

предложений,

 

написанных

 

на

 

языке

 

PSL.

 

Анализатор

 

генерирует

 

базу

 

данных,

 

отображающую

 

системные

 

требования,

 

и

 

осуществляет

 

проверку

 

по-

следовательности

 

и

 

анализ

 

полноты

 

данных.

 

Он

 

также

 

поддерживает

 

ряд

 

выходных

 

документов,

 

содержащих

 

сведения

 

о

 

выборке

 

данных,

 

а

 

также

 

об

 

ошибках,

 

объ-

ектах,

 

имеющихся

 

в

 

базе

 

данных,

 

взаимосвязи

 

между

 

ними.

 

Язык

 

PSL

 

имеет

 

простой

 

синтаксис

 

и

 

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

 

на

 

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

 

ключевых

 

слов.

 

Основными

 

операторами

 

этого

 

языка

 

являются:

 

PROCESS <

имя> 

<имя>

 

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

 

как

 

новый

 

процесс;

 

DESCRIPTION <

текст>  <текст>

 

представляет

 

описание

 

функции,

 

реализуемой

 

процессом,

 

средствами

 

английского

 

языка;

 

SUBPARTS ARE <

имя> 

процесс

 

<имя>

 

связан

 

с

 

текущим

 

процессом

 

и

 

расположен

 

ниже

 

его

 

на

 

дереве

 

иерархии;

 

PART OF <

имя> 

процесс

 

<имя>

 

вызывает

 

текущий

 

процесс;

 

DERIVE <

файл> 

файл

 

<файл>

 

является

 

выходным

 

для

 

текущего

 

процесса;

 

USING <

файл> 

файл

 

<файл>

 

является

 

входным

 

для

 

текущего

 

процесса;

 


background image

 

 

 
 

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; 


background image

 

 

 
 

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