Лекция 2 Виды формальных спецификаций. Практические задачи курса

advertisement
Лекция 2
Виды формальных
спецификаций.
Практические задачи курса
Виды использования моделей
жизненном цикле ПО
Фазы жизненного
цикла
Цель фазы
Уточнение в понимании задачи
Согласование с заказчиком
Прототипирование
Оценка реализуемости
Проектирование
(поиск подходящих
решений)
Реверс-инженерия
ВМиК МГУ.
Сентябрь-декабрь 2001
Получить программную систему
Понимание организации (legacy)
системы
Фиксация полученного знания
для хранения и передачи
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
2
Пример: спецификации для
целей прототипирования
Фазы жизненного
цикла
Прототипирование
Цель фазы
Уточнение в понимании задачи
Согласование с заказчиком
Оценка реализуемости
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
3
Неформальное описание
системы


Имеется система, предоставляющая
программный интерфейс (ПИ, или
Application Program Interface - API)
Система реализует «очередь»
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
4
Первый шаг формализации.
Выбор терминов (денотатов)

Типы данных



Операции




Очередь - Queue
Элемент очереди - Element
Поставить в очередь - append
Кого обслуживать следующим? - first
Кто останется после этого? - rest
Константа

Пустая очередь - empty
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
5
Alexander
Petrenko:
Сигнатура (структура) интерфейса
- простейший вид спецификации
Мы описали
структуру, то
есть набор
элементов, виды
связи и
соьственно
связи между
QUEUE
элементами.
=
class
type
value
Element,
Queue
empty : Queue,
append : Element >< Queue -> Queue,
first : Queue -~-> Element,
rest : Queue -~-> Queue
end
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
6
Требования к спецификации.
Спецификация должна:

быть простой/естественной для





реализитора/пользователя/
дизайнера тестов/тестировщика/
менеджера требований-инженера по качеству
позволять проверять внутреннюю
согласованность/консистентность
быть недвусмысленной для объективности
анализа
быть полной (определена область допустимых
значений для всех функций и все сценарии
использования)
не содержать лишних ограничений на
реалиизацию
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
7
Упражнение: Как бы я написал(а)
спецификацию очереди
Знаю
Оцениваю сам
Оцениваю по
отношению к
сформулированным
требованиям
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
8
Известные виды
спецификаций



Алгебраические/аксиоматические
Явные/исполнимые/алгоритмические
Неявные/неисполнимые/ограничения
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
9
Очередь. Алгебраическая
спецификация
QUEUE = class
type
Element,
Queue
value
empty: Queue,
append : Element >< Queue -> Queue,
first : Queue -~-> Element,
rest : Queue -~-> Queue
axiom forall e : Element, q : Queue :empty ~= append (e,q),
first(append(e, empty)) is e,
rest(append(e,empty)) is empty,
first(append(e, q)) is if q=empty then e
else first(q) end,
rest(append(e,q)) is if q=empty then empty
else append(rest(q)) end
end
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
10
Пример трансформаций типа
re-writing
…
axiom forall e : Element, q : Queue :empty ~= append (e,q),
first(append(e, empty)) is e,
rest(append(e,empty)) is empty,
first(append(e, q)) is if q=empty then e
else first(q) end,
rest(append(e,q)) is if q=empty then empty
else append(e, rest(q)) end
end
rest(append(a, append (b, empty))) 
append(a, rest(append (b, empty))) 
append(a, empty)
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
11
Очередь.
Явная спецификация
QUEUE = class
type
Element,
Queue = Element-list
value
empty: Queue,
append : Element >< Queue -> Queue,
first : Queue -~-> Element,
rest : Queue -~-> Queue
axiom forall e : Element, q : Queue :empty is <..>,
append(e,q) is q ^ <.e.>,
first(q) is hd q pre q~=<..>,
rest(q) is tl q pre q~=<..>
end
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
12
Очередь.
Явная спецификация (зеркало)
...
axiom forall e : Element, q : Queue :empty is <..>,
append(e,q) is <.e.> ^ q,
first(q) is q(len q)
pre q~=<..> ,
rest(q) is
variable x: Queue = <.q(1).>
for i = <.2..len q.> do
x:=x ^ q(i) end
pre q~=<..>
end
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
13
Очередь.
Неявная спецификация
QUEUE = class
type
Element,
Queue = Element-list
value
empty: Queue,
append : Element >< Queue -> Queue,
first : Queue -~-> Element,
rest : Queue -~-> Queue
axiom forall e : Element, q : Queue :empty is <..>,
append(e,q1) as post q1 ^ <.e.> = q2,
first(q) as e
post hd q= e pre q~=<..>,
rest(q1) as q2
post exists e : Element :- <.e.> ^ q1 = q2
pre q~=<..>,
end
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
14
Очередь. Неявная
спецификация (зеркало)
QUEUE = class
type
Element,
Queue = Element-list
value
empty: Queue,
append : Element >< Queue -> Queue,
first : Queue -~-> Element,
rest : Queue -~-> Queue
axiom forall e : Element, q : Queue :empty is <..>,
append(e,q1) as q2 post <.e.> ^ q1 = q2,
first(q1) as e
post exists q2 : Queue :- q2 ^ <.e.> = q1
rest(q1) as q2
post tl q1= q2 pre q1~=<..>,
end
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
15
Практические цели курса.
Научиться:




Строить (абстрактные) модели
Изменять уровень абстракции
Анализировать модели (проверять ее
консистентность)
Анализировать согласованность
моделей, при помощи:


Уточнения (refinement)
Тестирования
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
16
Языки и методологии
спецификаций
Языки
Методологии
RSL
VDM-SL
RAISE
VDM
VDM++
Development process for
real-time systems (IFAD)
Z
Eiffell
ADL/ADL2
iContract
ВМиК МГУ.
Сентябрь-декабрь 2001
Design-by-contract
<noname>
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
17
Ключевые слова
аксиоматические
алгебраические
денотат
жизненный цикл ПО
исполнимые спецификации
консистентность
методология разработки
неявные спецификации
ограничения
программный интерфейс
сигнатура
тестирование
уточнение
формальные спецификации
программ
явные спецификации
языки спецификаций
ВМиК МГУ.
Сентябрь-декабрь 2001
axiomatic
algebraic
denotate
software life-cycle
executable specification
consistency
development method
implicit specification
constraints
Application Program Interface
- API
signature
testing
refinement
formal specification of
software
explicit specification
specification languages
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
18
Дополнительная литература

Б.Мейер. Программная инженерия
как предмет обучения.- Открытые
системы, Июль-Август 2001, стр.8086.
ВМиК МГУ.
Сентябрь-декабрь 2001
А.К.Петренко. Формальные спецификации
программ - I. Лекция 2
19
Download