Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы метрологии стандартизации сертификации.doc
Скачиваний:
19
Добавлен:
30.04.2019
Размер:
17.75 Mб
Скачать

2.8.2. Генетические технологические модели

Синтезирующее программирование

Синтезирующее программирование предполагает синтез Программы по ее спецификации. В отличие от программы, которая написана на алгоритмическом языке и предназначена для исполнения на вычислительной машине после трансляции в ис­полняемый код, документ на языке спецификаций является лишь базисом для последующей реализации. Для получения этой реализации необходимо решить перечисленные ниже основные задачи, доопределить детали, которые нельзя выразить с помощью языка спецификации, но необходимые для получения исполняемого кода:

  • выбрать язык реализации и аппаратно-программную платформу для реализации;

  • зафиксировать отображение понятий языка спецификаций на язык реализации и аппаратно-программную платформу;

  • осуществить трансформацию представления (из спецификации в исполняемую программу на языке реализации;

  • отладить и протестировать исполняемую программу.

Автоматическая генерация программ по спецификациям возможна для многих языков спецификаций, среди которых особо выделим SDL, ASN.1, LOTOS, Estelle,UML.

Сборочное (расширяемое) программирование

Сборочное программирование предполагает, что программа собирается путем переиспользования уже известных фрагментов (рис. 2.22).

Рис. 2.22. Сборочное программирование

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

Спецификация — подробное описание некоторой работы, подлежащей выполнению.

По уровню формализации существует три класса специфи­каций:

• словесные спецификации, обработка которых может осу­ществляться обычным текстовым редактором;

• модельные (структурированные) спецификации, которые предполагают построение схем, диаграмм, других инфор­мационных структур;

• формальные спецификации, получаемые строгим формаль­ным способом с использованием математических форма­лизмов.

Конкретизирующее программирование

Конкретизирующее программирование предполагает, что ча­стные, специальные программы извлекаются из универсальной.

Наиболее известная технология конкретизирующего про­граммирования — это модель с применением паттернов проек­тирования. Паттерн (шаблон) проектирования — описание взаи­модействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте.

Паттерны проектирования упрощают повторное использова­ние удачных проектных и архитектурных решений.

Паттерн состоит из четырех основных элементов:

• имени — однозначно описывающего проблему проектиро­вания;

• задачи — описания того, когда следует применять паттерн для конкретизации;

• решения — абстрактного описания элементов дизайна и отношений между ними;

• результатов — следствий применения паттерна.

Дополнительно к паттернам существуют каркасы (framework) — наборы взаимодействующих классов, составляющих по­вторно используемый дизайн для конкретного класса программ. Каркас диктует определенную архитектуру приложения, в нем ак­кумулированы проектные решения, общие для проектной облас­ти. Например, существуют каркасы, которые используются для разработки компиляторов.

Эволюционное прототипирование

Этот подход объединяет следующие основные черты:

• итерационную разработку прототипа;

• тесное взаимодействие с заказчиком.

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

Рис. 2.23. Эволюционное прототипирование

Итеративная разработка

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

Постадийная разработка

Постадийная разработка предназначена решить недостаток предыдущих подходов — невозможность определения сроков за­вершения проекта. Начиная разработку, программист хорошо знает, что будет собой представлять создаваемый программный продукт.

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

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