Контракт Теория
Контракт - это формальная, точная и верифицируемая спецификация интерфейсов компонентов системы. При этом, кроме обычного определения абстрактных типов данных, также используются предусловия, постусловия и инварианты.
Свойства контракта
- Контракт появляется на этапе проектирования системы и может рассматриваться как договоренность между разработчиками
- Контракт должен быть однозначным (не допускающим неоднозначного толкования)
Назначение
- С помощью контрактов мы можем проводить границы между логически обособленными компонентами приложения
- Обязывают разработчиков придерживаться договоренностей, что повышает стабильность системы при рефакторинге.
- Упрощают масштабирование приложения
- Позволяют распараллелить процесс разработки и затем бесконфликтно соединить независимые компоненты
Этапы проектирования
- Определение онтологии (описание сущностей)
- Описание бизнес-логики, выделение компонентов (сервисов) системы на основе требований бизнеса
- Описание контрактов компонентов
- Реализация логики компонентов в рамках установленных контрактов
Онтология — это описание сущностей системы и отношений между ними
Реализация онтологии
- Модели базы данных
- DataObject
Namespaces
- \App\Contracts — Контракты компонентов системы
- \App\Services — Реализация компонентов системы
- \App\Models Онтология проекта
- \App\Services\ServiceA — Все, что связано с функционированием сервиса
- \App\Services\ServiceA\Contracts — Реализация контрактов внутри сервиса
- \App\Services\ServiceA\Models — онтология сервиса
Конспект создан на основе видео Автор Артём Прозоров
Комментарии
Отправить комментарий