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

32) Аксиоматическая семантика

  • Использует систему аксиом для описания конструкций языка программирования.

  • Основывается на методах доказательства теорем.

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

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

Пример описания аксиоматической семантики

  • Оператор присваивания: x := E,

где x - переменная,

E – выражение (типы x и E совпадают)

  • Составной оператор: begin S1; S2; ... ; Sn end

где Si – простой оператор

  • Оператор выбора: if B1 → S1 П B2 → S2 ... П BnSn 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).

  • Основная идея жизненного цикла экстремального подхода - максимальное укорачивание длительности одного этапа жизненного цикла и тесное взаимодействие с заказчиком. На каждом этапе происходит реализация и тестирование одной функции системы, после завершения которых система сразу передается заказчику на проверку или эксплуатацию.

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

Четыре вида процессов модели жизненного цикла

  • Основной процесс разработки

  • Процесс верификации

  • Процесс управления разработкой

  • Вспомогательные (поддерживающие) процессы