
- •2) Проблема разрешимости
- •4) Эффективный ап, классы эквивалентности, управляемый ап.
- •5) Простой ап, его протокол. Репозиция ап.
- •6)Сети Петри: граф, структура, назначение, маркировка. Выполнение сп.
- •7)Особенности моделирования сетями Петри
- •8) Свойства сп:
- •9) Дерево достижимости
- •10)Анализ свойств сетей Петри с помощью дерева достижимости.
- •14) Виды конечных автоматов
- •15) Работа ка. Автоматы-преобразователи и автоматы-распознаватели.
- •16) Прямое произведение ка. Эквивалентность автоматов.
- •17) Нахождение эквивалентных состояний ка. Теорема Мура
- •18) Минимизация ка.
- •19) Взаимодействующие последовательные процессы (впп).
- •20) Протоколы впп и операции с ними.
- •21) Свойства параллельных вычислительных процессов (пвп).
- •22.3) Программирование пвп. Признаки параллельности.
- •24) Моделирование пвп: метод процесс/канал.
- •25)Моделирование пвп: метод обмена сообщениями.
- •26)Моделирование пвп: метод параллелизма данных.
- •27)Моделирование пвп: метод использования общей памяти.
- •28) Семантическая теория программ. Метаязыки для описания синтаксиса.
- •30) Семантическая теория программ. Денотационная семантика.
- •31) Семантическая теория программ. Операционная и декларативная семантика.
- •32) Аксиоматическая семантика
- •33) Жизненный цикл по. Основные модели жизненного цикла.
- •34) Верификация как этап жизненного цикла по.
32) Аксиоматическая семантика
Использует систему аксиом для описания конструкций языка программирования.
Основывается на методах доказательства теорем.
Семантику каждой синтаксической конструкции языка можно определить как некий набор аксиом или правил вывода, который можно использовать для вывода результатов выполнения этой конструкции.
Когда программа выполнена, мы получаем доказательство того, что вычисленные результаты удовлетворяют необходимым ограничениям на их значения относительно входных значений.
Пример описания аксиоматической семантики
Оператор присваивания: x := E,
где x - переменная,
E – выражение (типы x и E совпадают)
Составной оператор: begin S1; S2; ... ; Sn end
где Si – простой оператор
Оператор выбора: if B1 → S1 П B2 → S2 ... П Bn → Sn fi
где 0, B1, B2, ..., Bn - логические выражения(охраны) –
всюду определенные функции,
S1, S2, ..., Sn - операторы, Bi → Si - охраняемая команда,
П - разделитель, if и fi - операторные скобки.
Оператор цикла: do B1 → S1 П B2 → S2 ... П Bn → Sn od
Особенности аксиоматической семантики
При определении семантики полного языка программирования для каждого вида операторов языка должны быть сформулированы аксиома или правило логического вывода.
Не все операторы описываемы в языке предикатов.
«Трудно построить множество основных аксиом, достаточно ограниченное для того, чтобы избежать противоречий, но достаточно богатое для того, чтобы служить отправной точкой для доказательства высказываний о программах» (Э. Дейкстра).
Решение: разработка языка, подразумевающего использование аксиоматического метода, т.е. содержащей только те операторы, для которых могут быть написаны аксиомы или правила логического вывода.
33) Жизненный цикл по. Основные модели жизненного цикла.
Один из способов организации коллективных работ состоит в разбиении процесса разработки на отдельные последовательные стадии, после полного прохождения которых получается конечный продукт или его часть. Такие стадии называют жизненным циклом разработки программной системы.
Жизненный цикл начинается с формирования общего представления о разрабатываемой системе и его формализации в виде требований верхнего уровня.
Завершается жизненный цикл разработки вводом системы в эксплуатацию.
Особенность КЖЦ: переход к следующему этапу происходит только тогда, когда полностью завершены все работы предыдущего этапа.
I этап: составляется концептуальная структура системы, описываются общие принципы ее построения, правила взаимодействия с окружающим миром, - определяются системные требования.
II этап: по системным требованиям составляются требования к программному обеспечению - здесь основное внимание уделяется функциональности программной компоненты, программным интерфейсам.
Все программные комплексы выполняются на какой-либо аппаратной платформе. Если в ходе проекта требуется также разработка аппаратной компоненты, параллельно с требованиями к программному обеспечению идет подготовка требований к аппаратному обеспечению.
III этап: на основе требований к программному обеспечению составляется детальная спецификация архитектуры системы - описываются разбиение системы по конкретным модулям, интерфейсы между ними, заголовки отдельных функций и т.п.
IV этап: пишется программный код, соответствующий детальной спецификации.
V этап: выполняется тестирование - проверка соответствия программного кода требованиям, определенным на предыдущих этапах.
Модели жизненного цикла: V-образный жизненный цикл
Особенность VЖЦ: наличие процессов двух видов
основные процессы разработки, аналогичные процессам КЖЦ
процессы верификации, представляющие собой цепь обратной связи по отношению к основным процессам
Модели жизненного цикла: Спиральный жизненный цикл
Особенность СЖЦ: система разрабатывается постепенно, проходя постоянные согласования с заказчиком.
Разработка системы происходит повторяющимися этапами - витками спирали.
Каждый виток спирали - один каскадный или V-образный жизненный цикл.
В конце каждого витка получается законченная версия системы, реализующая некоторый набор функций. Затем она предъявляется пользователю, на следующий виток переносится вся документация, разработанная на предыдущем витке, и процесс повторяется.
На каждом витке спирали функциональность системы расширяется, постепенно дорастая до полной.
Модели жизненного цикла: Экстремальное программирование
Для систем, требования к которым изменяются достаточно часто, необходимо еще больше уменьшить длительность витка спирального жизненного цикла. В связи с этим стали весьма популярными быстрые жизненные циклы разработки, например, жизненный цикл в методологии eXtreme Programming (XP).
Основная идея жизненного цикла экстремального подхода - максимальное укорачивание длительности одного этапа жизненного цикла и тесное взаимодействие с заказчиком. На каждом этапе происходит реализация и тестирование одной функции системы, после завершения которых система сразу передается заказчику на проверку или эксплуатацию.
Основная проблема - интерфейсы между модулями, реализующими эту функцию. Если во всех предыдущих типах жизненного цикла интерфейсы достаточно четко определяются в самом начале разработки, поскольку заранее известны все модули, то при экстремальном подходе интерфейсы проектируются "на лету", вместе с разрабатываемыми модулями.
Четыре вида процессов модели жизненного цикла
Основной процесс разработки
Процесс верификации
Процесс управления разработкой
Вспомогательные (поддерживающие) процессы