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

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

 
 

16

лишь

36 %

на

этапе

кодирования.

Однако

эти

ошибки

могут

быть

очень

дорогостоящими

(DO

4

I=1,5

и

DO

4

I=1.5

).

В

общем

случае

кодирование

освоено

лучше,

чем

другие

этапы

создания

программ,

и

очень

четко

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

2.5 

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

Этап

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

обычно

в

финансовых

затратах

со-

ставляет

половину

расходов

на

создание

системы.

Плохо

спла-

нированное

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

приводит

к

существенному

увеличе-

нию

сроков

разработки

системы

и

является

основной

причиной

срывов

графиков

разработки.

В

процессе

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

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

данные,

харак-

терные

для

системы

в

рабочем

состоянии,

т.е.

данные

для

тес-

тирования

выбираются

случайным

образом.

План

проведения

испытаний

должен

быть

составлен

заранее,

обычно

на

этапе

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

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

подразумевает

три

стадии:

автономное;

комплексное

и

системное.

При

автономном

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

модуль

проверяется

с

по-

мощью

данных,

подготовленных

программистом.

При

этом

программная

среда

модуля

имитируется

с

помощью

программ

управления

тестированием,

содержащих

фиктивные

программы

вместо

реальных

подпрограмм,

с

которыми

имеется

обращение

из

данного

модуля

(заглушки).

Подобную

процедуру

называют

про-

граммным

тестированием,

а

программу

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

UUT 

(тестирующей

программой).

Модуль,

прошедший

автономное

тес-

тирование,

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

комплексному

тестированию.

В

процессе

комплексного

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

проводится

совме-

стная

проверка

групп

программных

компонент.

В

результате

имеем

полностью

проверенную

систему.

На

данном

этапе

тес-

тирование

обнаруживает

ошибки,

пропущенные

на

стадии

ав-

тономного

тестирования.

Исправление

этих

ошибок

может

со-

ставлять до ¼ от общих

затрат.

Системное

(или

оценочное)

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

это

завер-

шающая

стадия

проверки

системы,

т.е.

проверка

системы

в

це-


background image

 
 

17

лом

с

помощью

независимых

тестов.

Независимость

тестов

яв-

ляется

главным

требованием.

Обычно

Заказчик

на

стадии

при-

емки

работ

настаивает

на

проведении

собственного

системного

тестирования.

Для

случая,

когда

сравниваются

характеристики

нескольких

систем

(имеется

альтернативная

разработка),

такая

процедура

известна

как

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

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

В

процессе

тестирования,

для

определения

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

выполнения

программы

вводится

ряд

критериев:

1)

каждый

оператор

должен

быть

выполнен,

по

крайней

мере,

один

раз

для

заданного

набора

тестов,

и

про-

грамма

должна

выдать

правильный

результат;

2)

каждая

ветвь

программы

должна

быть

опробована,

и

программа

при

этом

должна

выдать

правильный

ре-

зультат;

3)

каждый

путь

в

программе

должен

быть

испытан

хотя

бы

один

раз

с

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

набора

тестовых

данных,

и

программа

должна

выдать

правильный

результат;

4)

для

каждой

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

программы

необходимо

располагать

набором

тестовых

данных,

позволяющих

установить,

что

программа

правильно

реализует

дан-

ную

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

Хотя

критерии

1)

и

2)

кажутся

схожими,

в

действительно-

сти

они

сильно

разнятся.

Например,

арифметический

оператор 

IF

в

Fortran:

IF

 (

Выражение) N1, N2, N3. 

Критерий

1)

подразумевает,

что

IF

должен

быть

выпол-

нен,

в

то

время

как

2)

подразумевает

различные

наборы

данных,

для

того

чтобы

выполнились

условия

N1

,

N2

,

N3

(т.е.

передачу

на

эти

метки).

В

общем

случае

не

существует

единого

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

критерия,

определяющего

«хорошо

проверенную»

программу.

Тесно

связаны

с

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

понятия

«верификация»

и

«испытание».

Испытание

системы

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

посредством

тести-

рования.

Цель

такой

проверки

показать,

что

система

функ-


background image

 
 

18

ционирует

в

соответствии

с

разработанными

на

нее

специфика-

циями.

Верификация

заключается

в

выполнении

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

что

программа

удовлетворяет

своим

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

Современный

процесс

разработки

программ

не

позволяет

реализовать

обе

указанные

концепции.

Для

ситуаций,

не

кон-

тролируемых

тестовыми

данными,

система,

прошедшая

испы-

тания,

может

дать

неверные

результаты.

После

проведения

ве-

рификации

система

работает

правильно

лишь

относительно

первоначальных

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

и

допущений

о

поведении

ок-

ружающей

среды;

формальные

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

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

программ

весьма

сложны

и

слабо

разработаны.

Общий

процесс

создания

правильных

программ

с

помо-

щью

процедур

испытания

и

верификации

называется

аттеста-

цией.

Различаются

три

вида

отклонения

от

нормальной

работы

системы.

Сбой

системы

это

явление,

связанное

с

нарушением

системой

установленных

на

нее

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

Данные,

при

обработке

которых

правильными

алгорит-

мами

системы

происходит

сбой,

называются

выбросом.

Ис-

правление

выброса

можно

предусмотреть

в

программе,

так

что

не

каждый

выброс

может

приводить

к

сбою.

Ошибка

это

алгоритмический

дефект,

который

создает

выброс

(программная

ошибка).

Различают

понятия

«правильная»

и

«надежная»

програм-

ма.

Правильная

программа

это

та,

что

удовлетворяет

своим

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

Что

касается

надежной

программы,

то

она

не

обязательно

является

правильной,

но

выдает

приемлемый

ре-

зультат

даже

в

том

случае,

когда

входные

данные

либо

условия

ее

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

не

удовлетворяют

принятым

допущениям.

Естественно

стремление

иметь

«живую»

(robustness)

систему,

т.е.

систему,

способную

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

широкий

спектр

вход

-

ных

данных

при

неблагоприятных

условиях.

Система

является

правильной,

если

в

системе

нет

ошибок,

а

ее

внутренние

данные

не

содержат

выбросов.

Система

назы-

вается

надежной,

если,

несмотря

на

сбои,

она

продолжает

удов-


background image

 
 

19

летворительно

функционировать.

Это

особо

видно

на

примере

операционной

системы

(ОС),

включающей

систему

обработки

сбоев.

При

обнаружении

выброса

такая

система

прекращает

работу

с

сохранением

текущей

информации

и

возможности

продолжения

работы

после

устранения

выброса.

2.6 

Эксплуатация

и

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

С

учетом

затрат

на

эксплуатацию

и

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

вре-

менные

затраты

на

разработку

программной

системы

можно

представить

так

(рис.

2.5):

1)

анализ

требований;

2)

определение

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

3)

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

4)

кодирование;

5)

автономное

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

6)

комплексное

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

7)

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

Рис.

2.5

Временные

затраты

на

реализацию

этапов

жизненного

цикла

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

обеспечения

Анализ

требований

(3%)

Определение

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

(3%)

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

(5%)

Кодирование

(7%)

Автономное

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

(8%)

Комплексное

тес-

тирование

(7%)

Сопровождение

(67%)


background image

 
 

20

Ни

одна

из

вычислительных

систем

не

остается

неизмен-

ной

по

мере

ее

эксплуатации.

Это

объясняется

несколькими

причинами,

среди

которых

можно

выделить

следующие:

1.

Заказчик

обычно

не

может

четко

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

свои

требования,

редко

бывает

удовлетворен

созданной

сис-

темой

и

поэтому

настаивает

на

внесении

изменений

в

готовую

систему.

2.

Могут

быть

обнаружены

ошибки,

пропущенные

при

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

3.

Могут

потребоваться

специальные

модификации

сис-

темы

для

частных

условий

функционирования,

связан-

ные

с

различными

применениями.

4.

Сопровождение

многочисленных

компонентов

систе-

мы.

Рассмотрим

затраты,

оказывающие

наибольшее

влияние

на

процесс

разработки

системы.

В

первую

очередь

следует

от-

метить,

что

методы

разработки,

стимулирующие

раннее

завер-

шение

проекта,

могут

привести

к

весьма

высоким

затратам

по

сопровождению.

Поэтому

не

следует

ориентироваться

на

воз-

можно

ранний

переход

на

этап

кодирования.

Хотя

написание

кодов

и

создает

иллюзию

благополучия

у

руководителя

проек-

та,

однако

это

чревато

такими

последствиями,

как

многократное

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

и

возникновение

большого

числа

проблем

на

бо-

лее

позднем

этапе

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

Задачу

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

обычно

трактуют

как

задачу

отра-

ботки

непомерно

возрастающего

числа

версий

системы.

Пусть

некоторая

система

содержит

компоненты

A,

B,

C

и

установлена

у

потребителей

I,

II,

III

(рис.

2.6).

Рис.

2.6

Исходные

системы

потребителей

В

процессе

эксплуатации

системы

потребитель

I

обнару-

жил

ошибку

и

сообщил

об

этом

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

Последний

кор-

ректирует

ее

и

направляет

исправленный

модуль

A

’ 

всем

поль-

A

B

C

I

A

B

C

III

A

B

C

II