Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК по курсу ТРПС / ТРПС - Комплексное пособие.doc
Скачиваний:
199
Добавлен:
12.03.2015
Размер:
2.63 Mб
Скачать

4.5. Генетические технологические подходы

Генетические подходыявляются строгими подходами. Они основаны на аналогии разработки ПО и различных (в частности, биологических) процессов происхождения.

Выделяют генетические подходы следующих трёх видов:

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

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

3. Сборочное программирование.

Перечисленные виды подходов оказываются тесно связанными с методологиями разработки ПО. Подход 1 ориентирован на методологии императивного (в том числе структурного и параллельного) программирования и ООП. Подходы 2 и 3 ориентированы на специальные методологии, которые рассмотрены при описании указанных видов генетических подходов. Методологии логического и функционального программирования могут лежать в основе подходов 1 и 2. Методология сентенциального программирования лежит в основе подхода 2. Методологии ограничительного, событийного и автоматного программирования могут лежать в основе подходов любых видов.

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

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

Синтезирующее программирование– вид подходов, предполагающих синтез программы по её спецификации (в общем понимании – по постановке проблемы и методу её решения). В отличие от программы на алгоритмическом языке (реализации) документ на языке спецификаций является лишь базисом для реализации.

Для получения программы необходимо решить следующие основные задачи:

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

2. Выбрать алгоритмический язык реализации, а также программно-аппаратную платформу для реализации.

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

4. Осуществить трансформацию представления – преобразование из спецификации в код программы на языке реализации.

5. Протестировать полученный код программы.

Существует ряд подходов различного уровня применения в процессах ЖЦ, которые относятся к синтезирующему программированию и связаны с соответствующим языком спецификации. К таким языкам спецификации относятся следующие: UML– язык спецификации для объектно-ориентированной разработки ПО;SDL– язык для однозначного специфицирования и описания поведения реактивных и распределённых систем;ASN.1– стандартный гибкий язык описания структур данных для представления, кодирования, передачи и декодирования данных. Автоматическая генерация программ возможна для многих языков спецификаций, в частности для перечисленных выше языков.

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

Конкретизирующее программирование– вид подходов, предполагающих извлечение программы из существующей универсальной программы путём конкретизации общих элементов. Существует много подходов различного уровня применения в процессах ЖЦ, относящихся к конкретизирующему программированию.

Среди них следует отметить следующие подходы:

1. Обобщённое программирование.

2. Подход на основе паттернов и анти-паттернов.

3. Подход на основе архитектурных стилей.

Обобщённое программирование– подход, ориентированный на написание алгоритмов на уровне языка программирования, применимых к различным типам данных. Он основан на шаблонах.Шаблон– фрагмент кода, настраиваемый на требуемое представление при трансляции или выполнении программы.

Подход на основе паттернов или анти-паттерновориентирован на соответственно применение или избегание некоторых решений, уже опробованных в различных проектах.Паттерн(образец) – повторно используемое решение для часто встречающейся проблемы в определённом контексте. В настоящее время существуют паттерны для многих областей деятельности, но в области разработки они были классифицированы для облегчения проектирования систем.Анти-паттерн, илиловушка(тж. западня) – часто встречающееся неправильно используемое решение для некоторой проблемы в определённом контексте. Как паттерн является примером хорошего процесса разрешения проблемы, так и анти-паттерн является примером плохого процесса.

Подход на основе архитектурных стилейориентирован на первоначальное определение архитектуры разрабатываемой системы.Архитектурный стиль– это набор архитектурных структур, ориентированный на разработку системы для конкретной ПрО. М. Шоу и Д. Гарлан предложили использовать каталог таких стилей для их идентификации и документирования, а также облегчения использования в дальнейшем на практике. Каждый архитектурный стиль обычно имеет определённое концептуальное представление –архитектурный паттерн, и связанное с некоторой методологией разработки реализационное представление –архитектурный каркас.

При этом первый и третий подходы можно рассматривать как определённые разновидности второго подхода. Поэтому некоторые рассматривают эти подходы как соответствующие своей определённой методологии, используя для неё название шаблонно-ориентированное программирование.