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

Контрольные вопросы

1. Охарактеризуйте генетические технологические подходы. Перечислите виды генетических подходов. Как они связаны с методологиями разработки ПО?

2. Какая связь между генетическими и формальными генетическими подходами?

3. В чём суть синтезирующего программирования? Какие задачи необходимо решить при синтезирующем программировании?

4. Перечислите и поясните языки спецификации, часто применяемые в подходах синтезирующего программирования.

5. В чём суть конкретизирующего программирования? Перечислите подходы конкретизирующего программирования.

6. Охарактеризуйте обобщённое программирование.

7. Охарактеризуйте подход на основе паттернов и анти-паттернов.

8. Охарактеризуйте подход на основе архитектурных стилей.

9. В чём суть сборочного программирования? Какие есть способы поддержки этого вида подходов? Перечислите подходы сборочного программирования.

10. Охарактеризуйте модульное сборочное программирование.

11. Охарактеризуйте объектное сборочное программирование.

12. Охарактеризуйте компонентное сборочное программирование.

13. Охарактеризуйте аспектное сборочное программирование.

Лекция 15 Тема лекции

Подходы разработки ПО (продолжение).

План лекции

1. Формальные технологические подходы:

– Формальные генетические подходы.

– Подходы формальной разработки.

Основное содержание

Формальные подходыоснованы на применении математических принципов к разработке ПО. Выделяют формальные подходы следующих трёх видов:

1. Формальные генетические подходы.

2. Подходы формальной разработки.

3. Смешанные формальные подходы: Инженерия стерильного цеха (CrSE).

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

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

В 1975 г. Э.В. Дейкстра в работе «Охраняемые команды, недетерминированность и формальное порождение программ» высказал идею и сформулировал свои положения по доказательству программ. В 1984 г. А.П. Ершов в своём докладе предложил термин «доказательное программирование». Доказательное программирование– разработка ПО, обладающая свойством доказательности правильности создаваемого продукта. А.П. Ершов указал три вида доказательного программирования, которые тесно связаны с видами генетических подходов. Поэтому эти виды получили в дальнейшем название формальных генетических подходов.

Выделяют следующие формальные генетические подходы: 1. Формальное синтезирующее программирование;2. Формальное конкретизирующее программирование;3. Формальное сборочное программирование.

Перечисленные подходы ориентированы в основном на решение проблем вычислительного характера и часто применяются в комбинации. Фактически генетические подходы являются упрощением этих подходов с целью существенного расширения ПрО и ускорения разработки ПО.

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

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

В настоящее время формальное синтезирующее программирование является редко используемым подходом доказательного программирования.

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

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

В настоящее время формальное конкретизирующее программирование является часто используемым подходом доказательного программирования.

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

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

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

Модели ЖЦ для подходов формальной разработки являются модификацией и/или конкретизацией описанной ниже модели трансформации. Трансформационная модельилиМодель трансформациианалогична каскадной, но ориентирована на использование формальных методов в процессах ЖЦ. Принцип модели этого подхода (рис.15.1) заключается создании формальной спецификации и её трансформации путём формальных преобразований в код системы.

Рис.15.1. Схема трансформационной модели

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

Процесс «Анализ» предназначен для определения требований к системе и их представления в виде (обычной) спецификации требований. Кроме этого в этот процесс входит отнесение создаваемой системы к определённому классу систем. Процесс «Специфицирование» заключается в формализации полученной спецификации требований в виде формальной спецификации. Формальная спецификация– это спецификация на систему, записанная на некотором формальном языке, т.е. математическое описание системы. Кроме этого, в рамках этого процесса (или отдельного параллельного процесса «Проектирование») обычно разрабатывается архитектура системы. Процесс «Трансформация» позволяет итерационно – с помощью формальных преобразований – получить код системы из формальной спецификации. Процесс «Инспектирование» представляет собой статическую верификацию исходного представления системы, к которому относятся спецификация требований, формальная спецификация, архитектура системы, программный код.

Кроме указанной последовательности процессов выделяют другую, параллельную ей последовательность процессов (рис.15.1). Процесс «Профилирование» заключается в построении операционного профиля системы на основе класса этой системы.Операционный профиль– это спецификация, включающая в себя классы входных данных и вероятность их появления при нормальных режимах работы системы. Операционный профиль обычно строится на основе анализа существующих систем данного класса с учётом новых возможностей новой системы или предположения об использовании этой системы различными группами пользователей. Процесс «Генерация тестов» предполагает формирование набора статистических тестов, соответствующих операционному профилю системы. Процесс «Тестирование» означает выполнение статистического тестирования системы и определения характеристик этой системы по полученным результатам.

Процесс «Сопровождение» имеет стандартное назначение.

Рассмотрим кратко языки и подходы формальной разработки.

Нотация Z(Z notation) – ЯФС, названный по теории множеств Цермело – Френкеля и основанный на стандартной математической системе обозначений, используемой аксиоматической теорией множеств, лямбда-исчислением и логикой предикатов первого порядка.Язык общей алгебраической спецификации(CASL) – общецелевой ЯФС, основанный на логике первого порядка с индукцией и поддерживающий некоторые дополнительные возможности.B‑Метод– подход формальной разработки, использующий формальный методB. Метод базируется на языкеАбстрактно-машинная нотация(AMN) – ЯФС для спецификации абстрактных машин, основанный на теории обобщённых подстановок.Венский метод разработки (VDM) – подход формальной разработки с использованием ЯФСVDM‑SLдля моделирования систем на высоком уровне абстракции.

Исчисление процессовилиАлгебры процессов– разнородное семейство связанных языков и подходов формального моделирования параллельных систем. Обеспечивает возможность высокоуровневого описания взаимодействия, коммуникации и синхронизации набора независимых процессов, в также манипуляции описаниями процессов. Несмотря на чрезвычайное разнообразие подходов исчисления процессов, можно выделить следующие три общие особенности.1. Представление взаимодействия между независимыми процессами как коммуникации, а не как модификации разделяемых переменных.2. Описание процессов и систем с использованием небольшого набора примитивов, а также операторов для комбинирования этих примитивов.3. Определение алгебраических законов для процессных операторов, которые позволяют манипулировать процессными выражениями с помощью эквациональных рассуждений.

Самыми известными до сих пор подходами исчисления процессов являются CCS,CSPиACP. Современными подходами исчисления процессов являются‑исчисление, исчисление среды,PEPA(Алгебра процессов для оценки производительности), исчисление слияния.