9 июня(суббота) 2012 Москва

Телефон: +7 (495) 502-33-78
E-mail: 2012@devconf.ru

Архив 2012 года - актуальная информация тут

Применение DDD методологии в PHP

Александр Новиков, ведущий разработчик (Time&Space, Профессионалы.ру)
Доклад(30 мин)    Презентация (ppt, 10.1 Mb)

Расскажу о том, как сосредоточить усилия разработчиков проекта на самом главном участке работ - моделировании предметной области. Поделюсь опытом использования Domain Driven Design в проекте на PHP. Затрону в докладе следующие вопросы:
- разделение приложения на слои
- типы объектов в слое, моделирующем предметную область
- особенности юнит-тестирования
- рефакторинг на различных этапах разработки


Подробно:
Цель доклада - представить методологию DDD как эффективный способ
структурирования программного кода. Суть методологии заключается в том, что внутренняя структура программы определяется не столько программистами, сколько специалистами в предметной области. Программные модули, классы и
методы получают в качестве имён названия понятий, которыми пользуются
специалисты в рассказе о своей сфере деятельности. Благодаря этому
разработчики могут объяснить логику работы программы на языке, который
понятен представителям заказчика. В силу лучшего владения предметом
последние могут выявить ошибки и места, которые не соответствуют
действительности. Единый язык является в DDD-проекте важным механизмом
обеспечения обратной связи.
DDD-подход накладывает на архитектуру проекта определённые требования.
По мере погружения разработчиков в предметную область создаваемые классы
подвергаются как незначительным, так и радикальным изменениям.
Архитектурное решение должно, с одной стороны, облегчать модификацию
кода, а с другой стороны, должно обеспечивать сохранение целостности
программы. Частое внесение изменений в текст программы не должно
приводить к возникновению многочисленных ошибок. В общем случае,
достигнуть этой цели возможно путём отделения модели предметной области
от вспомогательных операций.
В нашем проекте по визуализации данных на стороне сервера была реализованя
многозвенная архитектура. Выделено пять слоёв, объединяющих классы
схожего назначения:
– интегрирующий слой
– слой контроллеров
– слой предметной области– слой сервисов
– слой доступа к данным
Каждый слой имеет фабрику объектов, назначение которой заключается в том,
чтобы описывать зависимости классов (dependency injection) и создавать
экземпляры классов с учётом конфигурационных настроек системы.
Гибкая архитектура и единый язык проекта позволяют получить важные
преимущества. Значительно возрастает ценность программного продукта,
поскольку в нём находят отражение факты, известные только специалистам-
практикам. Риск неудачи проекта и стоимомть разработки снижаются, так как
выявление ошибок происходит на ранних этапах жизненного цикла
программного обеспечения.


Программа конференции