Технология стерильного цеха

Основные идеи технологии стерильного цеха (cleanroom process model) были предложены Харланом Миллзом в середине 80-х годов ХХ века. Технология складывается из следующих частей (рис. 13) [1994]:

* разработка функциональных и пользовательских спецификаций;

* инкрементальное планирование разработки;

* формальная верификация;

* статистическое тестирование.

 

Рис. 13. Технология стерильного цеха

 

Процесс проектирования связан с представлением программы как функций в виде так называемых ‘ящиков’:

- черного ящика с фиксированными аргументами (стимулами) и результатами (ответами);

- ящика с состоянием, в котором выделяется внутреннее состояние;

- прозрачного (белого,) ящика, представляющего реализацию в виде совокупности функций при пошаговом уточнении.

 

Замечание о методе ящиков

Обратим внимание на то, что понятия “черный” и “прозрачный” ящик уже встречались нами при рассмотрении тестирования программных продуктов. Метод ящиков удобен, когда нам надо работать с функциями либо с закрытой, либо с открытой реализацией.

Использование ящиков определяют следующие три принципа:

- все определенные при проектировании данные скрыты (инкапсулированы) в ящиках;

- все процессы определены как использующие ящики последовательно или параллельно;

- каждый ящик занимает определенное место в системной иерархии. Черный ящик представляет собой точную спецификацию внешнего, видимого с пользовательской точки зрения поведения. Ящик получает стимулы S от пользователя и выдает ответ R. Каждый ответ черного ящика определяется его текущей историей стимулов SH, как следующая функция:

(S, SH) => ( R )

На основании одних и тех же стимулов мы можем получить разные ответы, базирующиеся на истории использования. Рассмотрим калькулятор с двумя историями стимулов:

- Clear 3 1 4

- Cleaг 3 1 4 +

Если следующим стимулом будет число 1, то на основании первой истории калькулятор выдаст ответ 3141, а на основании второй — 1. Определять поведение черных ящиков очень удобно с помощью табличных спецификаций.

Ящик с состояниями получаем из черного ящика выделением элементов истории стимулов, которые сохраняют состояние (инварианты состояния в процессе выполнения действий в черном ящике. Функция преобразования ящика с состояниями выглядит так:

(S, OS) => (R, NS)

Здесь OS — старое состояние, а NS — новое. Хотя с пользовательской точки зрения поведение черного ящика и ящика с состоянием выглядит одинаково. истории стимулов заменяются ссылками на старое состояние и новое состояние, требуемое преобразованием.

Прозрачный ящик получаем из ящика с состояниями, определяя процедуру, выполняющую требуемое преобразование. Таким образом, прозрачный ящик — это просто программа, реализующая соответствующий ящик с состоянием.

(S, OS) => (R, NS) by procedure

Проектирование процедуры прозрачного ящика выглядит как последовательное определение функций назначения и преобразование их в структуру управления и новые функции назначения. Пример проектирования процедуры прозрачного ящика [Linger 1994] приведен на рис. 14.

 

Рис. 14. Пример проектирования процедуры прозрачного ящика

Обрат внимание на то. что в данной технологии отсутствует такой процесс, как отладка. Его заменяет процесс формальной верификации. Для каждой управляющей структуры проверяется соответствующее условие корректности.

Технология стерильного цеха предполагает бригадную работу, т. е. проектирование, уточнение, инспекция и подготовка тестов ведется разными людьми.