Основы объектно-ориентированного программирования
Базисные механизмы надежности
Базисные механизмы надежности
О корректности ПО
Выражение спецификаций
Формула корректности
Сильные и слабые условия
Введение утверждений в программные тексты
Предусловия и постусловия
Класс стек
Предусловия
Постусловия
Педагогическое замечание
Контракты и надежность ПО
Права и обязательства
Интуиция (Дзен) и искусство программной надежности: больше гарантий и меньше проверок
Утверждения не являются механизмом проверки вводимых данных
Утверждения это не управляющие структуры
Ошибки, дефекты и другие насекомые
Работа с утверждениями
Императив и аппликатив (применимость)
Замечание о пустоте структур
Проектирование предусловий: толерантное или требовательное?
Предусловия и статус экспорта
Толерантные модули
Инварианты класса
Определение и пример
Форма и свойства инвариантов класса
Инвариант в момент изменения
Кто должен обеспечить сохранность инвариантов
Роль инвариантов класса в программной инженерии
Инварианты и контракты
Когда класс корректен?
Корректность класса
Роль процедур создания
Ревизия массивов
Связывание с АТД
Не просто коллекция функций
Компоненты класса и АТД функции
Выражение аксиом
Функция абстракции
Инварианты реализации
Инструкция утверждения
Инварианты и варианты цикла
Трудности циклов
Сделаем циклы корректными
Ингредиенты доказательства корректности цикла
Синтаксис цикла
Использование утверждений
Утверждения как средство для написания корректного ПО
Использование утверждений для документирования: краткая форма класса
Мониторинг утверждений в период выполнения
Мониторинг утверждений в период выполнения - 2
Каков оптимальный уровень мониторинга?
Нужен ли мониторинг в период выполнения?
Выразительная сила утверждений
Включение функций в утверждения
Инварианты класса и семантика ссылок
Что дальше
Ключевые концепции
Библиографические замечания
Библиографические замечания - 2
У11.1 Комплексные числа
У11.2 Класс и его АТД
У11.3 Полные утверждения для стеков
У11.4 Экспортирование размера
У11.6 Утверждения и экспорт
У11.7 Поиск жучков (bugs)
У11.8 Нарушение инварианта
У11.9 Генерация случайных чисел
У11.10 Модуль "очередь"
У11.11 Модуль "множество"
Постскриптум: Катастрофа Ариан 5
Содержание раздела