Design by Contracts in PHP
-
Upload
sergei-khaletskiy -
Category
Technology
-
view
1.189 -
download
0
description
Transcript of Design by Contracts in PHP
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 инварианты
Вопросы