Download - Архитектура в Agile проекте
![Page 1: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/1.jpg)
Максим Юнусов
Архитектура в Agile проекте
E-mail: [email protected]
Skype: myunusov
ИТ-субботник Омск
6 апреля 2013
![Page 2: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/2.jpg)
Докладчик
Java разработчик и архитектор компании Luxoft
Консультант по анализу и проектированию ПО
Тренер
– Курсы по программированию на языке Java
– Курсы подготовки архитекторов
– Курсы по различным методологиям и практикам разработки ПО
– Курсы по продуктам и методологии Rational
![Page 3: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/3.jpg)
Исторический экскурс
![Page 4: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/4.jpg)
Архитектура в классическом пониманииАрхитектураАрхитектура -
это базовая организация системы,
воплощенная в ее компонентах, их отношениях между собой и с окружением,
а также принципы, определяющие проектирование и развитие системы
[IEEE 1471]
Ключевой принцип RUP («Дух RUP»)
создавать архитектурный каркас как можно раньше
![Page 5: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/5.jpg)
Agile-манифест разработки ПО
Люди и взаимодействие важнее процессов и инструментов
Работающий продукт важнее исчерпывающей документации
Сотрудничество с заказчиком важнее согласования условий контракта
Готовность к изменениям важнее следования первоначальному плану
http://agilemanifesto.org/iso/ru/
![Page 6: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/6.jpg)
Архитектура в “раннем” Agile
Большое и Подробное Предварительное Большое и Подробное Предварительное ПроектированиеПроектирование
«Отлить в граните»
![Page 7: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/7.jpg)
Архитектура в “раннем” Agile (продолжение) Рефакторинг
Реактивный подход
«Решим эти проблемы позже» (“fix-it-later”)
Вносите в проект лишь такие изменения, которые могут указать дорогу к возможностям его улучшения
[Оуэр (Auer) и Бек (Beck) (Auer и Beck, 1996)]
![Page 8: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/8.jpg)
Миф о рефакторинге
Рефакторинг сделает вам архитектуру
Исправление архитектурных проблем на поздних фазах проекта (после написания кода) стоит в сотни раз дороже, чем на этапе первичного конструирования системы
![Page 9: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/9.jpg)
Проблемы
неизбежная неразбериха на старте
катастрофические «авралы» с массовым рефакторингом и переделками практически на каждой очередной итерации
реюз – безусловное зло
низкое качество продукта («работает, и ладно»)
«эффект автобуса»
![Page 10: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/10.jpg)
Принципы дизайна
S (SRP) Принцип единственной обязанности
O (OCP) Принцип открытости/закрытости
L (LSP) Принцип подстановки Лискоу
I (ISP) Принцип разделения интерфейса
D (DIP) Принцип инверсии зависимостей
![Page 11: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/11.jpg)
Архитектура в “развитом” Agile
термин "архитектураархитектура" передает идею основных элементов системы, тех ее частей, которые трудно изменитькоторые трудно изменить. Они являются фундаментом, на котором можно построить все остальное
[Статья "Проектирования больше нет?", Мартин Фаулер 2004 г.]
loan архитектура ?инкрементальная архитектура ?
![Page 12: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/12.jpg)
Процесс
![Page 13: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/13.jpg)
Архитектурные взаимодействия в Agile проектах
[James Madison http://www.infoq.com/articles/agile-architecture]
Предварительное планирование
Доска задач и баклог
Участие в спринте
Работающая система
![Page 14: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/14.jpg)
Предварительное планирование
принимает основные решения по аппаратному и программному обеспечению
определяет важные шаблоны проектирования на высоком на детальном уровне
определяет основные возможности для повторного использования компонентов и сервисов
создает высокоуровневые диаграммы
описывает атрибуты качества
определяет каналы взаимодействия встречаясь с заинтересованными лицами (stakeholders), чтобы понять их проблемы и показать им основное техническое направление
![Page 15: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/15.jpg)
Описывает атрибуты качества
Атрибуты качества представляют формальное выражение факторов качества ПО
Внешние факторы Внутренние факторы
Могут быть обнаружены пользователями
Понятны только для профессионалов
![Page 16: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/16.jpg)
Факторы качества по Бертрану Мейеру
![Page 17: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/17.jpg)
Качества ценные в Agile
Модульность Тестируемость
Простота Ясность
VS
![Page 18: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/18.jpg)
Определяет важные шаблоны проектирования на высоком и на детальном уровне
базируясь на нефункциональных требованиях и архитектурных мотивах
Примеры
– Паттерны DDD
– DSL
– Onion
– MVP
– DCI
![Page 19: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/19.jpg)
Определяет основные возможности для повторного использования компонентов и сервисов
«Горизонтальное» разделение труда
Ключевые механизмы
Архитектурный «довесок» к Scrum (stand-up) митингу
![Page 20: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/20.jpg)
Принимает основные решения по аппаратному и программному обеспечению (hardware and software)
в основном используя существующие корпоративные стандарты
приводит “доказательства правильности концепции” (proofs-of-concept) при необходимости использования новых продуктов
“работает только простое”
![Page 21: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/21.jpg)
Создает высокоуровневые диаграммы
UML sketch
![Page 22: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/22.jpg)
Групповое ревью (Inspection, team review)
С некоторой периодичностью вся команда собирается перед проектором и оценивает новые архитектурные решения
–Повышается эффективность ревью за счет количества рецензентов
–Способствует передаче знаний и взаимному обучению
–Обеспечивает приятие архитектурных решений всей командой (commit от каждого разработчика)
"Коллективный архитектор"
![Page 23: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/23.jpg)
Доска задач и баклог
Архитектор должен посещать ранние сессии по определению задач на доске (storyboarding) и добавлять архитектурные user story, которые задают фундамент или определяют архитектурное направление
Архитектор должен посещать последующие сессии по определению задач на доске между спринтами, чтобы вносить архитектурные user story, которые «настраивают» архитектуру или корректируют нежелательные отклонения
Архитектор должен работать с product owner-ом, чтобы приоритезировать эти истории и построить их в соответствии с бизнес функциональностью в спринтах
![Page 24: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/24.jpg)
Архитектурный баклог
Ключевые механизмыЧасть задач может быть не выполнена, рекомендуется их приоритезация
![Page 25: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/25.jpg)
Участие в спринте
Доверяй команде
Ad-hoc ревью
Участие в реализации оправданно, если спринт сошел с верного пути в архитектурном или другом смысле
![Page 26: Архитектура в Agile проекте](https://reader035.vdocuments.mx/reader035/viewer/2022081719/5455c77db1af9f39378b4a97/html5/thumbnails/26.jpg)