form_spec

advertisement
Методы формальной спецификации программ
4 курс, 3-й поток, 7-й и 8-й семестры.
лекции (64 часа), экзамен в 8-м семестре
семинары (64 часа), зачет без оценки в 7-м и 8-м семестре
Кафедра, отвечающая за курс:
системного программирования
Составители программы:
проф., доктор физ.-мат. наук Петренко А. К.,
канд. физ.-мат. наук Мансуров Н. Н.
Лекторы:
проф., доктор физ.-мат. наук Петренко А.К.,
Фролов А. М., Караулов А. А.
Аннотация
В курсе рассматривается широкий спектр подходов к формальной спецификации
программ от классических языков формальной спецификации до языков проектирования
и определения архитектуры. Помимо собственно проблем специфицирования затрагиваются
вопросы моделирования, пошагового проектирования, анализа программ и программной
архитектуры, методы аналитической верификации и тестирования на основе формальных
спецификаций. Курс базируется на следующих языках спецификации и формальных
нотациях: RSL, SDL, MSC с привлечением примеров на UML и других языках спецификации
и моделирования.
Программа курса
ПЕРВАЯ ЧАСТЬ (7-й семестр)
Понятие строгих и формальных методах разработки программ. Место строгих
и формальных методов процессах разработки программ. Виды использования строгих
и формальных методов: моделирование, специфицирование, верификация. Моделирование
и абстракция. Виды абстрагирования. Парадигмы моделирования и спецификации.
Методология RAISE - строгий подход к индустриальной программной инженерии;
язык RSL. Типы, аксиомы, значения. Алгебраические спецификации, явные и неявные
формы спецификации операций. Абстракция и уточнение в RSL. Пошаговое уточнение
в RAISE. Параллельность. Недетерминизм и «недоспецификация». Задача проверки
реализации на соответствие требований, специфицированных для модели.
2
Верификация
Статическая
и
программ.
Верификация
динамическая
моделей
верификация.
и
верификация
Подходы
реализаций.
статической
верификации.
Верификация моделей программ.
Динамическая верификация программ. Верификация и валидация. Тестирование.
Тестирование на основе моделей. Связь между тестированием на основе моделей
и разработкой на основе моделей (MDA). Методы «черного ящика» и «белого ящика».
Классы эквивалентности тестовых наборов. Критерии полноты тестового покрытия.
Декомпозиция тестовых наборов и подзадачи тестирования, унифицированные архитектуры
тестовых наборов. Конечные автоматы (КА): детерминированные и недетерминированные,
расширенные КА, Statecharts. Задачи тестирования на основе моделей: проверка
на соответствие
конечному
автомату,
построение
дерева
переходов,
построение
различающей последовательности, метод Василевского, uio-последовательности, проверка
на
соответствие
обобщенному
конечному
автомату.
Формальные
спецификации
как источник для построения тестовых наборов.
Формальная
спецификация
структур
данных.
Спецификация
и
тестирование
трансляторов и других языковых процессоров. Спецификация языков программирования.
Абстрактный синтаксис, статическая семантика, динамическая семантика. Денотационная
семантика,
операционная
семантика.
Well-formed-функции.
Атрибутные грамматики
как средство описания статической и динамической семантики.
ЧАСТЬ ВТОРАЯ (8-семестр)
Обзор
основных
этапов
объектно-ориентированного
процесса
разработки
программного обеспечения. Этап анализа требований. Этап системного анализа. Этап
системного
проектирования.
Этап
детального
проектирования.
Структурная
и функциональная точки зрения при составлении описаний программных средств.
Сценарные модели. Сбор требований к проектируемой программной системе.
Функциональные и нефункциональные требования. Основные понятия сценарных моделей:
агент, сценарий, интерфейс. Неформальные диаграммы сценарных моделей. Табличное
представление сценария. Словарь системы. Формализация сценарных моделей.
Язык диаграмм взаимодействия. Понятие графической грамматики. Графический
синтаксис диаграмм взаимодействия. Основные понятия диаграмм взаимодействия: объект,
временная ось, событие. Основные события диаграмм взаимодействия: сообщения, действия,
создание объектов, уничтожение объектов. Семантика диаграмм взаимодействия.
Состояния. Композиция и декомпозиция диаграмм взаимодействия. Формализация
сценариев посредством состояний.
3
Архитектурные модели. Понятие архитектуры системы. Архитектуры системы
и эволюция системы. Понятие устойчивости системы к изменениям. Компоненты системы
с точки зрения информации, управления и представления. Функциональный и объектноориентированный подходы к организации системы. Компоненты трех видов: интерфейсные,
информационные и управляющие. Выявление компонентов каждого вида. Неформальные
архитектурные диаграммы.
Язык спецификаций и описаний (SDL). Средства описания архитектуры программной
системы. Средства описания поведения программной системы. Структурные компоненты.
Каналы. Сигналы, списки сигналов. Структурные типы и пакеты. Формализация
архитектурных моделей.
Концепция взаимодействующих конечных автоматов. Процесс как носитель поведения.
Входной порт процесса. Состояния и переходы. Помеченные переходы.
Типы данных в языке SDL. Базовые типы, структуры, массивы, таблицы, множества.
Операции работы с данными. Определение переменных. Условия.
Динамическая семантика языка SDL.
Верификация
SDL
моделей.
Динамическое
выполнение
SDL
спецификации.
Верификация сценарной модели.
Литература
Основная:
1. Кузьменкова Е.А., Петренко А.К. Формальная спецификация программ на языке RSL
(методическое пособие по практикуму) – М.: Издат. отдел факультета ВМК МГУ, 2000.
2. Кузьменкова Е.А., Петренко А.К. Формальная спецификация программ на языке RSL
(конспект ллекций) – М.: Издат. отдел факультета ВМК МГУ, 2001.
3. Мансуров Н.Н., Майлингова О.Л. Методы формальной спецификации программ: языки
MSC и SDL – М.: Издат. отдел факультета ВМК МГУ, 1998.
4. Мейер Б. Объектно-ориентированное конструирование программных систем.: Пер.
с англ.: – М.: "Русская Редакция", 2005, 1232 стр.
5. Бейзер Б. Тестирование черного ящика. Технологии функционального тестирования
программного обеспечения и систем – СПб.: Издательство: Питер, 2004г., 320 стр.
Дополнительная:
1.
The RAISE specification language. Prentice Hall, 1992.
2.
RAISE Tools Reference Manual. LACOS/CRI/DOC/13/1/V2, 1994.
4
3.
Лисков Б., Дж. Гатэг. Использование абстракций и спецификаций при разработке
программ – М.: Мир, 1989.
4.
Хоар Ч., Взаимодействующие последовательные процессы – М.: Мир, 1985.
5.
Jacobson I. Object Oriented Software Engineering, Addison-Wesley, 1996.
6.
Карабегов А.В., Тер-Микаэлян Т.М., Введение в язык SDL – М.: Радио и связь, 1993.
7.
ITU-T Recommendation Z.100. Specification and Description Language (SDL), Geneva, 1993.
8.
ITU-T Recommendation Z.120. Message Sequence Chart (MSC), Geneva, 1992.
Download