27
Максим Юнусов Архитектура в Agile проекте E-mail: [email protected] Skype: myunusov ИТ-субботник Омск 6 апреля 2013

2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

  • Upload
    -

  • View
    226

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Максим Юнусов

Архитектура в Agile проекте

E-mail: [email protected]

Skype: myunusov

ИТ-субботник Омск

6 апреля 2013

Page 2: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Докладчик

Java разработчик и архитектор компании Luxoft

Консультант по анализу и проектированию ПО

Тренер

– Курсы по программированию на языке Java

– Курсы подготовки архитекторов

– Курсы по различным методологиям и практикам разработки ПО

– Курсы по продуктам и методологии Rational

Page 3: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Исторический экскурс

Page 4: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Архитектура в классическом пониманииАрхитектураАрхитектура -

это базовая организация системы,

воплощенная в ее компонентах, их отношениях между собой и с окружением,

а также принципы, определяющие проектирование и развитие системы

[IEEE 1471]

Ключевой принцип RUP («Дух RUP»)

создавать архитектурный каркас как можно раньше

Page 5: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Agile-манифест разработки ПО

Люди и взаимодействие важнее процессов и инструментов

Работающий продукт важнее исчерпывающей документации

Сотрудничество с заказчиком важнее согласования условий контракта

Готовность к изменениям важнее следования первоначальному плану

http://agilemanifesto.org/iso/ru/

Page 6: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Архитектура в “раннем” Agile

Большое и Подробное Предварительное Большое и Подробное Предварительное ПроектированиеПроектирование

«Отлить в граните»

Page 7: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Архитектура в “раннем” Agile (продолжение) Рефакторинг

Реактивный подход

«Решим эти проблемы позже» (“fix-it-later”)

Вносите в проект лишь такие изменения, которые могут указать дорогу к возможностям его улучшения

[Оуэр (Auer) и Бек (Beck) (Auer и Beck, 1996)]

Page 8: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Миф о рефакторинге

Рефакторинг сделает вам архитектуру

Исправление архитектурных проблем на поздних фазах проекта (после написания кода) стоит в сотни раз дороже, чем на этапе первичного конструирования системы

Page 9: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Проблемы

неизбежная неразбериха на старте

катастрофические «авралы» с массовым рефакторингом и переделками практически на каждой очередной итерации

реюз – безусловное зло

низкое качество продукта («работает, и ладно»)

«эффект автобуса»

Page 10: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Принципы дизайна

S (SRP) Принцип единственной обязанности

O (OCP) Принцип открытости/закрытости

L (LSP) Принцип подстановки Лискоу

I (ISP) Принцип разделения интерфейса

D (DIP) Принцип инверсии зависимостей

Page 11: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Архитектура в “развитом” Agile

термин "архитектураархитектура" передает идею основных элементов системы, тех ее частей, которые трудно изменитькоторые трудно изменить. Они являются фундаментом, на котором можно построить все остальное

[Статья "Проектирования больше нет?", Мартин Фаулер 2004 г.]

loan архитектура ?инкрементальная архитектура ?

Page 12: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Процесс

Page 13: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Архитектурные взаимодействия в Agile проектах

[James Madison http://www.infoq.com/articles/agile-architecture]

Предварительное планирование

Доска задач и баклог

Участие в спринте

Работающая система

Page 14: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Предварительное планирование

принимает основные решения по аппаратному и программному обеспечению

определяет важные шаблоны проектирования на высоком на детальном уровне

определяет основные возможности для повторного использования компонентов и сервисов

создает высокоуровневые диаграммы

описывает атрибуты качества

определяет каналы взаимодействия встречаясь с заинтересованными лицами (stakeholders), чтобы понять их проблемы и показать им основное техническое направление

Page 15: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Описывает атрибуты качества

Атрибуты качества представляют формальное выражение факторов качества ПО

Внешние факторы Внутренние факторы

Могут быть обнаружены пользователями

Понятны только для профессионалов

Page 16: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Факторы качества по Бертрану Мейеру

Page 17: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Качества ценные в Agile

Модульность Тестируемость

Простота Ясность

VS

Page 18: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Определяет важные шаблоны проектирования на высоком и на детальном уровне

базируясь на нефункциональных требованиях и архитектурных мотивах

Примеры

– Паттерны DDD

– DSL

– Onion

– MVP

– DCI

Page 19: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Определяет основные возможности для повторного использования компонентов и сервисов

«Горизонтальное» разделение труда

Ключевые механизмы

Архитектурный «довесок» к Scrum (stand-up) митингу

Page 20: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Принимает основные решения по аппаратному и программному обеспечению (hardware and software)

в основном используя существующие корпоративные стандарты

приводит “доказательства правильности концепции” (proofs-of-concept) при необходимости использования новых продуктов

“работает только простое”

Page 21: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Создает высокоуровневые диаграммы

UML sketch

Page 22: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Групповое ревью (Inspection, team review)

С некоторой периодичностью вся команда собирается перед проектором и оценивает новые архитектурные решения

–Повышается эффективность ревью за счет количества рецензентов

–Способствует передаче знаний и взаимному обучению

–Обеспечивает приятие архитектурных решений всей командой (commit от каждого разработчика)

"Коллективный архитектор"

Page 23: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Доска задач и баклог

Архитектор должен посещать ранние сессии по определению задач на доске (storyboarding) и добавлять архитектурные user story, которые задают фундамент или определяют архитектурное направление

Архитектор должен посещать последующие сессии по определению задач на доске между спринтами, чтобы вносить архитектурные user story, которые «настраивают» архитектуру или корректируют нежелательные отклонения

Архитектор должен работать с product owner-ом, чтобы приоритезировать эти истории и построить их в соответствии с бизнес функциональностью в спринтах

Page 24: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Архитектурный баклог

Ключевые механизмыЧасть задач может быть не выполнена, рекомендуется их приоритезация

Page 25: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Участие в спринте

Доверяй команде

Ad-hoc ревью

Участие в реализации оправданно, если спринт сошел с верного пути в архитектурном или другом смысле

Page 26: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
Page 27: 2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте

Спасибо за внимание!

E-mail: [email protected]

Skype: myunusov