Содержание
- 2. ПЛАН Введение Сложность программных систем Ошибки в ПО и их последствия Формальные методы Что это такое
- 3. SOFTWARE CRISIS Конференция NATO 1968 Software сложнее hardware Программная инженерия
- 4. СЛОЖНОСТЬ – БОЛЬШИЕ РАЗМЕРЫ
- 5. СЛОЖНОСТЬ ИНТЕРФЕЙСА
- 6. СЛОЖНОСТЬ – МНОГО КОМПОНЕНТОВ
- 7. СЛОЖНОСТЬ ДАННЫХ
- 8. СЛОЖНОСТЬ ПОВЕДЕНИЯ
- 9. СЛОЖНОСТЬ – МНОГО ВАРИАНТОВ
- 10. СЛОЖНОСТЬ – МНОЖЕСТВО ТЕХНОЛОГИЙ
- 11. СТАТИСТИКА ОШИБОК Основная причина – сложность Среднее количество ошибок на 1000 строк кода
- 12. РИСКИ, СВЯЗАННЫЕ С ОШИБКАМИ Космические аппараты Mariner I (1962) Фобос-1 (1988) Ariane 5 (1996) Mars Climate
- 13. ЧТО ДЕЛАТЬ? Не делать ошибок Невозможно из-за сложности Предотвращение ошибок Тщательный анализ требований и возможных решений
- 14. ВОЗМОЖНОЕ РЕШЕНИЕ Программные системы – одни из самых сложных искусственных систем Нужны методы построения программного обеспечения
- 15. ИСТОКИ ФОРМАЛЬНЫХ МЕТОДОВ Формальные языки [N. Chomsky 1956] BNF и описание языков FORTRAN, ALGOL60 [J. Backus
- 16. «КЛАССИЧЕСКИЙ» ПРОЦЕСС РАЗРАБОТКИ Формализуем постановку задачи (требования к ПО) Строим проектные решения (возможно, в несколько шагов)
- 17. СПОСОБЫ ОПРЕДЕЛЕНИЯ СЕМАНТИКИ Денотационная семантика Программы – функции, задаваемые явно На основе множеств и отношений На
- 18. ИСПОЛЬЗУЕМЫЕ ФОРМАЛИЗМЫ Логико-алгебраические Различные логики Предикаты, теории типов, временные, модальные, … Различные алгебраические структуры Исполнимые Различные
- 19. ПРИМЕР I – МАШИННЫЕ ЦЕЛЫЕ ЧИСЛА Как реализовать целые числа в компьютере? Образец – обычные целые
- 20. ПРИМЕР I – ФОРМАЛЬНАЯ МОДЕЛЬ Z/232Z Кольцо вычетов по модулю 232 {[0], [1], [2], …, [232-3],
- 21. ПРИМЕР II – МЕХАНИЧЕСКИЙ ПРЕСС электродвигатель сцепление шатун ползун насадка деталь защитная дверца Действия рабочего Заменить
- 22. ПРИМЕР II – ПРАВИЛА БЕЗОПАСНОСТИ Дверца должна перекрывать доступ к работающему прессу При включении сцепления с
- 23. ПРИМЕР II – УПРОЩЕНИЕ Поскольку выключение двигателя выключает весь пресс (обычно), трудно контролировать включено ли сцепление
- 24. ПРИМЕР II – ДОПУСТИМЫЕ СЦЕНАРИИ Обработка одной детали Замена детали без выключения двигателя Неудачная попытка закрыть
- 25. ПРИМЕР II - ТРЕБОВАНИЯ [clutch engaged] ⇒ [door closed] [door closed] ⇒ [motor working] ¬[motor working]
- 26. ПРИМЕР II – КОНЕЧНЫЙ АВТОМАТ Состояние – текущее положение двигателя, дверки и сцепления 0 0 0
- 27. ПРИМЕР III – СПИСОК Абстрактный тип данных List – список объектов типа E Операции empty :
- 28. ПРИМЕР IV – ПОИСК ЭЛЕМЕНТА В СПИСКЕ В этом примере список – из Лисп List ≡
- 29. ПРИМЕР IV – СПЕЦИФИКАЦИЯ Результат поиска элемента, удовлетворяющего P : E → Bool res(l, P) ≡
- 30. СООТВЕТСТВИЕ КАРРИ-ХОВАРДА В конструктивной логике или конструктивных теориях типов Доказательство ~ Программа Логическое выражение ~ Тип
- 31. ПРИМЕР IV – ИЗВЛЕЧЕНИЕ ПРОГРАММЫ Строим доказательство res(l, P) ≡ {e : E | contains(l, e)
- 32. ОГРАНИЧЕНИЯ ФОРМАЛЬНЫХ МЕТОДОВ Трансформации спецификаций в программы (correctness by construction) работают только для ограниченного набора задач
- 33. ПЛЮСЫ ФОРМАЛЬНОСТИ Требования анализируются систематично и детально Возникает глубокое понимание задачи Получаемое решение доказуемо корректно (если
- 34. «ЛЕГКИЕ» ФОРМАЛЬНЫЕ МЕТОДЫ Формализация требований Сохраняем аккуратность анализа Сохраняем бонус глубокого понимания Формальную модель решения не
- 35. ТЕХНИКИ ВЕРИФИКАЦИИ Статический анализ + проверка моделей Тестирование на основе моделей Инструмент анализа do { ;
- 36. ПРИМЕР V – ALTERNATING BIT PROTOCOL Протокол канального уровня 7-уровневая модель OSI Физический уровень Канальный уровень
- 37. ПРИМЕР V – ОТПРАВИТЕЛЬ typedef enum { frame_arrival, cksum_err, timeout } event_type; #include "protocol.h" void sender()
- 38. ПРИМЕР V – ПОЛУЧАТЕЛЬ void receiver() { seq_nr frame_expected; /* номер ожидаемого кадра */ frame r,
- 39. ПРИМЕР V – АВТОМАТ Состояние: номер посылаемого кадра, номер ожидаемого кадра и содержимое канала (номер кадра,
- 40. Четные и нечетные посылаемые кадры чередуются Четность посылаемого кадра не меняется два раза без изменения четности
- 41. ОБЛАСТЬ ПРИМЕНИМОСТИ Где формализация требований оправдана? Стандарты Устоявшиеся протоколы, интерфейсы и языки Системное ПО Широко используемые
- 42. ИНТЕРФЕЙСНЫЕ СТАНДАРТЫ Программно-аппаратные интерфейсы x86, MIPS, ARM Телекоммуникационные и аппаратные протоколы Ethernet, Wi-Fi, IP, TCP, HTTP,
- 43. ИНТЕРФЕЙСНЫЙ СТАНДАРТ – ЭЛЕКТРОСЕТИ
- 44. ОДНОЗНАЧНОСТЬ И СОВМЕСТИМОСТЬ
- 45. ПРИМЕР VI – ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ Представляют вещественные числа Бесконечное (даже несчетное) множество представляется конечным
- 46. ПРИМЕР VI – ПРЕДСТАВЛЕНИЕ ЧИСЕЛ Нормализованные: E > 0 ∧ E Денормализованные: E = 0 X
- 47. ПРИМЕР VI – НЕКОТОРЫЕ ЗНАЧЕНИЯ
- 48. ПРИМЕР VI – ОПЕРАЦИИ +, –, *, / fma(x,y,z)=x*y+z [2008] remainder(x,y) = x–y*n : n=round(x/y) sqrt
- 49. ПРИМЕР VI – РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЙ Корректное округление– 4 режима к +∞ к –∞ к 0 к
- 50. ПРИМЕР VI – ТРЕБОВАНИЯ К SIN В POSIX NAME sin, sinf, sinl - sine function SYNOPSIS
- 51. ПРИМЕР VI – POSIX VERSUS IEEE 754 IEEE 1003.1 (POSIX) 63 действительных функций + 22 complex
- 52. ПРИМЕР VI – ДРУГИЕ ПРОТИВОРЕЧИЯ Ограничения значений POSIX : f(x) = x при денорм. x и
- 53. ПРИМЕР VI – КОРРЕКТНОЕ СВОЙСТВО tan(x), atan(x) – тангенс и арктангенс tan(atan(x)) ~ x при x
- 54. ПРИМЕР VI – ТЕСТИРОВАНИЕ БИБЛИОТЕК
- 55. ПРИМЕР VI – РЕЗУЛЬТАТЫ ТЕСТОВ rint(262144.25)↑ = 262144 Exact 1 ulp errors* 2-5 ulp errors 6-210
- 56. ПРИМЕР VI – ОДИНАКОВЫЕ РЕЗУЛЬТАТЫ Unsupported
- 57. БОНУСЫ ФОРМАЛИЗАЦИИ Представление требований в виде математической модели Возможности анализа Однозначности Непротиворечивости Полноты Возможности проверки (верификации)
- 58. ОБЕСПЕЧЕНИЕ АДЕКВАТНОСТИ Как проверить понимание? Переформулировка + оценка + правка Представить информацию в другой форме Текст
- 59. ПРИМЕР VII – STRTOD(), POSIX strtod – преобразование строки в число с плавающей точкой Интерфейс double
- 60. ПРИМЕР VII – РАЗМЕТКА ТРЕБОВАНИЙ The expected form of the subject sequence is an optional plus
- 61. ПРИМЕР VII – РАЗБОР СТРОКИ Radix character ( [whitespace] )* ( '+' | '-' )? (
- 62. ПРИМЕР VII – ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ не число ? result = 0, endptr = &nptr errno =may
- 63. ПРИМЕР VII – СПЕЦИФИКАЦИЯ STRTOD() specification Unifloat* strtod_spec(CString* st, CString** endptr, ErrorCode* errno) { pre {
- 64. ПРИМЕР VII – АНАЛОГ STRTOD() ИЗ QT double QString::toDouble ( bool * ok = 0 )
- 65. ПРИМЕР VIII – DOM http://www.w3.org/DOM/DOMTR Основные документы Core http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407 HTML http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109 Style (StyleSheets + CSS)http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113 Traversal
- 66. ПРИМЕР VIII – ОСНОВНЫЕ ЧАСТИ DOM
- 67. ПРИМЕР VIII – РАЗМЕТКА ТРЕБОВАНИЙ Node insertBefore (Node newChild, Node refChild) Inserts the node newChild before
- 68. ПРИМЕР VIII – НЕОДНОЗНАЧНОСТИ Что имеется в виду под «the node being inserted»? DocumentFragment или его
- 69. ПРИМЕР VIII – ПОДДЕРЖКА В БРАУЗЕРАХ
- 70. ЗАКЛЮЧЕНИЕ I «Классические» формальные методы слишком трудоемки для подавляющего большинства сложных задач Формализация требований одна уже
- 71. ЗАКЛЮЧЕНИЕ II Формализация – не панацея Не гарантирует адекватности модели, для этого нужны дополнительные усилия В
- 73. Скачать презентацию