Design by Contracts (DbC)
Sergey Khaletskiy
Контрактное программирование
Контрактное программирование — это
возможность автоматической проверки
«формальных, точных и верифицируемых
спецификаций программных интерфейсов»
● обязанности сторон:
– клиент: корректные входные данные
– поставщик: корректная работа и результат
● соблюдение контракта
Контрактное программирование
Контрактное программирование
● Основная идея – объединить программный
код и спецификации
● Спецификации (контракты) встраиваются в
программу
● В основе лежит логика Хоара
Тройка Хоара: {P}С{Q}
● P и Q – утверждения
● С – часть программы
● Документация
– предусловия + посусловия + интерфейс
- документирование методов
– инварианты + интерфейс класса –
документирование классов
● Тестирование
– предусловия и инварианты -
ограничения на генерируемые тесты
Решение проблем
Контракт – сугубо декларативное описание требовний.
Задает:
● Типы данных
● Предусловие (precondition)
● Инвариант (invariant)
● Постусловие (postcondition)
Контракт
● Предусловие
● Инвариант
● Вызов функции
● Инвариант
● Постусловие
Последовательность проверки
DcP в PHP
● PhpDeal
https://github.com/lisachenko/php-deal
DcP в PHP
● PHP-Contract
https://github.com/axiom82/PHP-Contract
PHP-Contract
PhpDeal
предусловия/постусловия
PhpDeal
инварианты
Вопросы

More Related Content

PPT
Интернет-проект. Откуда берутся и куда деваются деньги.
PDF
Malakhov Vladimir. ICE-5 (Investment&Construction Engineering): Contract budg...
PPT
Управление качеством
PPTX
Иван Дубровин, Возможные подходы к контрактованию в Agile
PPT
PPTX
dotCSS - 14th of November, 2014
PPTX
Проектирование по контракту
PPTX
Design by Contract basics
Интернет-проект. Откуда берутся и куда деваются деньги.
Malakhov Vladimir. ICE-5 (Investment&Construction Engineering): Contract budg...
Управление качеством
Иван Дубровин, Возможные подходы к контрактованию в Agile
dotCSS - 14th of November, 2014
Проектирование по контракту
Design by Contract basics

Similar to Design by Contracts in PHP (13)

PPT
Выбор типа контракта
PPTX
Code Contracts
PPTX
Design by Contract
PDF
Модуль 3. Лекция 13-14. Cтруктура КП, типы контрактов
ODP
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
PDF
Технический долг: взгляд и действия со стороны QA / QC&AT
PPTX
Программа для учёта договоров "Договор Партнер"
PPTX
Никита Ремизов - Введение в разработку ТЗ
PPTX
Презентация программы "Договор Партнер"
PDF
Разработка веб-сервисов осень 2013 лекция 3
PPTX
ИТ проекты глазами заказчика
PPTX
Александр Кольцов. IT проекты глазами заказчика
PDF
QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...
Выбор типа контракта
Code Contracts
Design by Contract
Модуль 3. Лекция 13-14. Cтруктура КП, типы контрактов
DUMP-2013 Управление разработкой - Переход от проектной разработки к продукто...
Технический долг: взгляд и действия со стороны QA / QC&AT
Программа для учёта договоров "Договор Партнер"
Никита Ремизов - Введение в разработку ТЗ
Презентация программы "Договор Партнер"
Разработка веб-сервисов осень 2013 лекция 3
ИТ проекты глазами заказчика
Александр Кольцов. IT проекты глазами заказчика
QA Fest 2017. Никита Галкин. Контрактное тестирование на примерах или Contrac...
Ad

Design by Contracts in PHP