Доклады / Архитектура в Agile: переосмысляя идею модульности и компонентности
Знакомо ли вам:
- Как нам выполнять работу итерациями, если у нас реализация одной фичи занимает месяц-два?
- Декомпозируйте!
- Да мы декомпозируем: всё разбито на модули, но каждый модуль жестко зависит от всех остальных и мы вынуждены делать синхронные правки в каждом, а потом еще долго-долго тестировать и стабилизировать!..
Или:
- Как нам в Agile с его итеративным процессом и инкрементальным дизайном не вырастить код-гидру, т.е. когда правишь один баг, а в результате привносишь еще N?
- Декомпозируйте!
- Так мы и так используем объектно-ориентированный подход, т.е. вся логика разбита по классам, но при этом каждый класс зависит от других стапятьсот классов, так что исправления в одном неведомым образом стреляют в другом...
И наконец:
- Мы всё медленнее и медленее развиваем наш продукт - у нас тяжелый и сильно связанный код. Что нам делать?
- Вы знаете/используете Inversion-of-Control?
- Конечно! У нас все сервисы оформлены в виде интерфейсов, а глобальный контекст работает по принципу Service Locator-а
- А зачем вы используете глобальные контексты?
- Так это же удобно! И разве можно иначе?!
Основная цель доклада - показать, что декомпозицию можно и нужно делать и как при этом обеспечить слабую связанность кода. При этом будут рассмотрены все три уровня: отдельные классы и их взаимодействие; организация модуля в целом; взаимодействие между модулями.
Целевая аудитория: разработчики, архитекторы, руководители проектов с техническим background-ом.
Уровень аудитории: практикующие, эксперты
Направления: Engineering & Quality
Докладчик
Андрей Бибичев
iPi Soft (Москва)
Комментарии
Зарегистрируйтесь, чтобы оставлять комментарии