Slide 1

Slide 1 text

Как архитектура «прогибалась» Шаломович Максим ЛАНИТ

Slide 2

Slide 2 text

Вступление Тут пока не очень много полезной информации 14-15.11.2019 Software Engineering Conference Russia 2

Slide 3

Slide 3 text

Докладчик Максим Шаломович ИТ-архитектор Проектирую системы и решения Интересуюсь ИТ-проектами и ИТ-процессами Выступаю на конференциях, делюсь опытом Пою, пляшу, крестиком вышиваю 14-15.11.2019 Software Engineering Conference Russia 3

Slide 4

Slide 4 text

Доклад Архитектурная практика в Agile-проектах «Не до архитектуры нам, кодить надо!» «Лучше один раз вовремя, чем семь раз хорошо!» 14-15.11.2019 Software Engineering Conference Russia 4

Slide 5

Slide 5 text

Компания ЛАНИТ • Разработка ИС «под ключ» • Проектирование комплексных решений • Бизнес-проектирование 14-15.11.2019 Software Engineering Conference Russia 5

Slide 6

Slide 6 text

«Типичный заказчик» • Государство • Крупные коммерческие организации 14-15.11.2019 Software Engineering Conference Russia 6

Slide 7

Slide 7 text

«Типичный заказчик» • Государство • Крупные коммерческие организации То есть… • Снаружи – регуляторы, нормативы • Внутри – тяжелые процессы бюджетирования, планирования, оценки рисков 14-15.11.2019 Software Engineering Conference Russia 7

Slide 8

Slide 8 text

Что не так? Первая мысль, которая может прийти вам в голову 14-15.11.2019 Software Engineering Conference Russia 8

Slide 9

Slide 9 text

«У нас будет Agile-проект!» 14-15.11.2019 Software Engineering Conference Russia 9

Slide 10

Slide 10 text

«У нас будет Agile-проект!» • …но с ограниченным бюджетом, четкими сроками сдачи и невозможностью отступать от контракта 14-15.11.2019 Software Engineering Conference Russia 10

Slide 11

Slide 11 text

Проблемы 14-15.11.2019 Software Engineering Conference Russia 11

Slide 12

Slide 12 text

Проблемы • Нет MVP, слишком много деталей 14-15.11.2019 Software Engineering Conference Russia 12

Slide 13

Slide 13 text

Проблемы • Нет MVP, слишком много деталей • Гибкость = «делай, что хочешь, все равно переделывать» 14-15.11.2019 Software Engineering Conference Russia 13

Slide 14

Slide 14 text

Проблемы • Нет MVP, слишком много деталей • Гибкость = «делай, что хочешь, все равно переделывать» • Непредсказуемые затраты 14-15.11.2019 Software Engineering Conference Russia 14

Slide 15

Slide 15 text

Проблемы • Нет MVP, слишком много деталей • Гибкость = «делай, что хочешь, все равно переделывать» • Непредсказуемые затраты • Бюджет все еще ограничен 14-15.11.2019 Software Engineering Conference Russia 15

Slide 16

Slide 16 text

14-15.11.2019 Software Engineering Conference Russia 16

Slide 17

Slide 17 text

«Решения» 14-15.11.2019 Software Engineering Conference Russia 17

Slide 18

Slide 18 text

«Решения» • Сокращаем «ненужные» стадии ЖЦ проекта 14-15.11.2019 Software Engineering Conference Russia 18

Slide 19

Slide 19 text

«Решения» • Сокращаем «ненужные» стадии ЖЦ проекта • Обкладываемся ограничениями ТЗ 14-15.11.2019 Software Engineering Conference Russia 19

Slide 20

Slide 20 text

«Решения» • Сокращаем «ненужные» стадии ЖЦ проекта • Обкладываемся ограничениями ТЗ • Любое изменение проводим через ЗНИ 14-15.11.2019 Software Engineering Conference Russia 20

Slide 21

Slide 21 text

Результат 14-15.11.2019 Software Engineering Conference Russia 21

Slide 22

Slide 22 text

Результат • «Гибкость» есть только на словах 14-15.11.2019 Software Engineering Conference Russia 22

Slide 23

Slide 23 text

Результат • «Гибкость» есть только на словах • Каждое изменение может привести к переработке большой части ИС 14-15.11.2019 Software Engineering Conference Russia 23

Slide 24

Slide 24 text

Результат • «Гибкость» есть только на словах • Каждое изменение может привести к переработке большой части ИС • Каждое изменение стоит дорого 14-15.11.2019 Software Engineering Conference Russia 24

Slide 25

Slide 25 text

«У нас должна быть гибкая архитектура!» Следующая мысль, которая может прийти к вам в голову 14-15.11.2019 Software Engineering Conference Russia 25

Slide 26

Slide 26 text

Типовой ЖЦ «гибкого» ИТ- проекта • Предварительное планирование • Разработка по итерациям • Анализ (спецификации) • Разработка (код) • Тестирование (тесты) • «Приемка» (обратная связь) 14-15.11.2019 Software Engineering Conference Russia 26

Slide 27

Slide 27 text

Точки принятия архитектурных решений • Предварительное планирование с проектированием • Разработка по итерациям • Анализ (спецификации) • Проектирование • Разработка (код) • Тестирование (тесты) • Архитектурный надзор • «Приемка» (обратная связь) 14-15.11.2019 Software Engineering Conference Russia 27

Slide 28

Slide 28 text

Предварительное планирование с проектированием 14-15.11.2019 Software Engineering Conference Russia 28

Slide 29

Slide 29 text

Предварительное планирование с проектированием • Технологический стек 14-15.11.2019 Software Engineering Conference Russia 29

Slide 30

Slide 30 text

Предварительное планирование с проектированием • Технологический стек • Переиспользуемые компоненты системного уровня 14-15.11.2019 Software Engineering Conference Russia 30

Slide 31

Slide 31 text

Предварительное планирование с проектированием • Технологический стек • Переиспользуемые компоненты системного уровня • Верхнеуровневое описание архитектуры 14-15.11.2019 Software Engineering Conference Russia 31

Slide 32

Slide 32 text

Предварительное планирование с проектированием • Технологический стек • Переиспользуемые компоненты системного уровня • Верхнеуровневое описание архитектуры • Показатели качества 14-15.11.2019 Software Engineering Conference Russia 32

Slide 33

Slide 33 text

Предварительное планирование… …без проектирования …с проектированием 14-15.11.2019 Software Engineering Conference Russia 33

Slide 34

Slide 34 text

Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП, ТЗ, ЁПРСТ) 14-15.11.2019 Software Engineering Conference Russia 34

Slide 35

Slide 35 text

Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП, ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты 14-15.11.2019 Software Engineering Conference Russia 35

Slide 36

Slide 36 text

Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП, ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты Разработка не использует результаты этого этапа 14-15.11.2019 Software Engineering Conference Russia 36

Slide 37

Slide 37 text

Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП, ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты Разработка не использует результаты этого этапа Документы максимально практические 14-15.11.2019 Software Engineering Conference Russia 37

Slide 38

Slide 38 text

Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП, ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты Разработка не использует результаты этого этапа Документы максимально практические Основные потребности выявляются по ходу, no-DUF 14-15.11.2019 Software Engineering Conference Russia 38

Slide 39

Slide 39 text

Предварительное планирование… …без проектирования …с проектированием Формальный набор документов (ТП, ТЗ, ЁПРСТ) Документы позволяют зафиксировать важные моменты Разработка не использует результаты этого этапа Документы максимально практические Основные потребности выявляются по ходу, no-DUF Just-in-time DUF с набором опций 14-15.11.2019 Software Engineering Conference Russia 39

Slide 40

Slide 40 text

Анализ и разработка итерации с проектированием 14-15.11.2019 Software Engineering Conference Russia 40

Slide 41

Slide 41 text

Анализ и разработка итерации с проектированием • Определение порядка реализации сценариев с учетом архитектурных приоритетов 14-15.11.2019 Software Engineering Conference Russia 41

Slide 42

Slide 42 text

Анализ и разработка итерации с проектированием • Определение порядка реализации сценариев с учетом архитектурных приоритетов • Детальное проектирование критичных сценариев (+ технические практики) 14-15.11.2019 Software Engineering Conference Russia 42

Slide 43

Slide 43 text

Анализ и разработка итерации с проектированием • Определение порядка реализации сценариев с учетом архитектурных приоритетов • Детальное проектирование критичных сценариев (+ технические практики) • Контроль актуальности предварительной архитектуры 14-15.11.2019 Software Engineering Conference Russia 43

Slide 44

Slide 44 text

Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia 44 …без проектирования …с проектированием

Slide 45

Slide 45 text

Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia 45 …без проектирования …с проектированием Архитектура устаревает и перестает отвечать на вопросы разработки

Slide 46

Slide 46 text

Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia 46 …без проектирования …с проектированием Архитектура устаревает и перестает отвечать на вопросы разработки Архитектура обновляется по результатам изменения/ добавления требований

Slide 47

Slide 47 text

Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia 47 …без проектирования …с проектированием Архитектура устаревает и перестает отвечать на вопросы разработки Архитектура обновляется по результатам изменения/ добавления требований Критичные сценарии могут быть некачественно реализованы

Slide 48

Slide 48 text

Анализ и разработка в итерации… 14-15.11.2019 Software Engineering Conference Russia 48 …без проектирования …с проектированием Архитектура устаревает и перестает отвечать на вопросы разработки Архитектура обновляется по результатам изменения/ добавления требований Критичные сценарии могут быть некачественно реализованы Критичные сценарии детализируются перед разработкой

Slide 49

Slide 49 text

Архитектурный надзор… 14-15.11.2019 Software Engineering Conference Russia 49 …не выполняется …выполняется

Slide 50

Slide 50 text

Архитектурный надзор… 14-15.11.2019 Software Engineering Conference Russia 50 …не выполняется …выполняется Нет результатов реализации архитектурных решений

Slide 51

Slide 51 text

Архитектурный надзор… 14-15.11.2019 Software Engineering Conference Russia 51 …не выполняется …выполняется Нет результатов реализации архитектурных решений Проверка архитектурных опций и гипотез через практику

Slide 52

Slide 52 text

Архитектурный надзор… 14-15.11.2019 Software Engineering Conference Russia 52 …не выполняется …выполняется Нет результатов реализации архитектурных решений Проверка архитектурных опций и гипотез через практику Причина (история) реализации неочевидна

Slide 53

Slide 53 text

Архитектурный надзор… 14-15.11.2019 Software Engineering Conference Russia 53 …не выполняется …выполняется Нет результатов реализации архитектурных решений Проверка архитектурных опций и гипотез через практику Причина (история) реализации неочевидна Появляется обоснование принятых решений и реализации (ADR)

Slide 54

Slide 54 text

Итог Краткое резюме всего, что я тут вам наговорил 14-15.11.2019 Software Engineering Conference Russia 54

Slide 55

Slide 55 text

Архитектура в Agile-проектах позволяет 14-15.11.2019 Software Engineering Conference Russia 55

Slide 56

Slide 56 text

Архитектура в Agile-проектах позволяет • Удерживать целостность постоянно изменяемого и развиваемого решения 14-15.11.2019 Software Engineering Conference Russia 56

Slide 57

Slide 57 text

Архитектура в Agile-проектах позволяет • Удерживать целостность постоянно изменяемого и развиваемого решения • Оптимально развивать решение 14-15.11.2019 Software Engineering Conference Russia 57

Slide 58

Slide 58 text

Выводы 14-15.11.2019 Software Engineering Conference Russia 58

Slide 59

Slide 59 text

Выводы • Архитектурные задачи надо решать явно 14-15.11.2019 Software Engineering Conference Russia 59

Slide 60

Slide 60 text

Выводы • Архитектурные задачи надо решать явно • Архитектор – не Ivory Tower эксперт 14-15.11.2019 Software Engineering Conference Russia 60

Slide 61

Slide 61 text

Выводы • Архитектурные задачи надо решать явно • Архитектор – не Ivory Tower эксперт • Архитектор не должен быть узким звеном цепи производства 14-15.11.2019 Software Engineering Conference Russia 61

Slide 62

Slide 62 text

Выводы • Архитектурные задачи надо решать явно • Архитектор – не Ivory Tower эксперт • Архитектор не должен быть узким звеном цепи производства • Перечень точек принятия решений, решений и комментариев и ссылки – в приложенных материалах 14-15.11.2019 Software Engineering Conference Russia 62

Slide 63

Slide 63 text

Жду ваших вопросов! 14-15.11.2019 Software Engineering Conference Russia 63 Шаломович Максим, архитектор, ЛАНИТ Мои контакты Полезные материалы

Slide 64

Slide 64 text

«Типичный заказчик» • Государство, около-государство, крупный энтерпрайз 14-15.11.2019 Software Engineering Conference Russia 64

Slide 65

Slide 65 text

«Типичный заказчик» • Государство, около-государство, крупный энтерпрайз • Снаружи – регуляторы, нормативы 14-15.11.2019 Software Engineering Conference Russia 65

Slide 66

Slide 66 text

Далее – рассказ о том, как архитектура существует в таких условиях 14-15.11.2019 Software Engineering Conference Russia 66

Slide 67

Slide 67 text

Далее – рассказ о том, как архитектура существует в таких условиях • Мой опыт и опыт моих коллег 14-15.11.2019 Software Engineering Conference Russia 67

Slide 68

Slide 68 text

Далее – рассказ о том, как архитектура существует в таких условиях • Мой опыт и опыт моих коллег • Универсального рецепта нет 14-15.11.2019 Software Engineering Conference Russia 68

Slide 69

Slide 69 text

Далее – рассказ о том, как архитектура существует в таких условиях • Мой опыт и опыт моих коллег • Универсального рецепта нет • Есть несколько советов Капитана Очевидность 14-15.11.2019 Software Engineering Conference Russia 69

Slide 70

Slide 70 text

Очень полезное определение • Набор практик и взаимодействий, которые применяют архитекторы ПО/ системы/ предприятия в гибкой разработке программного обеспечения 14-15.11.2019 Software Engineering Conference Russia 70

Slide 71

Slide 71 text

Очень полезное определение • Набор практик и взаимодействий, которые применяют архитекторы ПО/ системы/ предприятия в гибкой разработке программного обеспечения • (…иногда – неосознанно, неудачно и с непредсказуемым результатом) 14-15.11.2019 Software Engineering Conference Russia 71

Slide 72

Slide 72 text

Agile Architecture Interactions • Обзорная статья в IEEE Software magazine от 2011 года 14-15.11.2019 Software Engineering Conference Russia 72

Slide 73

Slide 73 text

Agile Architecture Interactions • Обзорная статья в IEEE Software magazine от 2011 года • Ключевые мысли: • Точки взаимодействия (Interaction point) • Функции архитектора (Architecture function) • Навыки архитектора (Critical skills) 14-15.11.2019 Software Engineering Conference Russia 73

Slide 74

Slide 74 text

Agile Architecture Interactions • Обзорная статья в IEEE Software magazine от 2011 года • Ключевые мысли: • Точки взаимодействия (Interaction point) • Функции архитектора (Architecture function) • Навыки архитектора (Critical skills) 14-15.11.2019 Software Engineering Conference Russia 74

Slide 75

Slide 75 text

Agile Architecture Interactions • Обзорная статья в IEEE Software magazine от 2011 года • Ключевые мысли: • Точки взаимодействия (Interaction point) • Функции архитектора (Architecture function) – могут сильно отличаться от «общепринятых» • Навыки архитектора (Critical skills) 14-15.11.2019 Software Engineering Conference Russia 75

Slide 76

Slide 76 text

Agile Architecture Interactions • Обзорная статья в IEEE Software magazine от 2011 года • Ключевые мысли: • Точки взаимодействия (Interaction point) • Функции архитектора (Architecture function) – могут сильно отличаться от «общепринятых» • Навыки архитектора (Critical skills) - также могут отличаться, плюс – выходят за пределы доклада 14-15.11.2019 Software Engineering Conference Russia 76

Slide 77

Slide 77 text

Точки взаимодействия (принятия решений) Предварительное планирование (Up-front planning) Наполнение «бэклога» (Storyboarding) Работа в итерации/ спринте Анализ результатов 14-15.11.2019 Software Engineering Conference Russia 77

Slide 78

Slide 78 text

Общий подход • Гибкая архитектура тоже требует предварительных решений (см. статью Брауна про эволюционную архитектуру) 14-15.11.2019 Software Engineering Conference Russia 78

Slide 79

Slide 79 text

Общий подход • Гибкая архитектура тоже требует предварительных решений (см. статью Брауна про эволюционную архитектуру) • Основной результат – набор опций 14-15.11.2019 Software Engineering Conference Russia 79

Slide 80

Slide 80 text

Общий подход • Гибкая архитектура тоже требует предварительных решений (см. статью Брауна про эволюционную архитектуру) • Основной результат – набор опций • Журнал для всех решений (см. например ADR) 14-15.11.2019 Software Engineering Conference Russia 80

Slide 81

Slide 81 text

Технологический стек 14-15.11.2019 Software Engineering Conference Russia 81 • Соответствует корпоративным политикам • Соответствует возможностям команды • Не нужен «космос»

Slide 82

Slide 82 text

Переиспользуемые компоненты системного уровня 14-15.11.2019 Software Engineering Conference Russia 82 • Декомпозиция системы (см. статью Парнаса и мой доклад про декомпозицию) • Определение применимых паттернов уровня системы

Slide 83

Slide 83 text

Верхнеуровневое описание архитектуры 14-15.11.2019 Software Engineering Conference Russia 83 • Оценка потребностей «сверху» • Максимально простые средства коммуникации • Максимально практическое описание (Model to Code gap, см. статью Брауна про архитектуру и код)

Slide 84

Slide 84 text

Показатели качества 14-15.11.2019 Software Engineering Conference Russia 84 • Выявление архитектурных требований (см. мой доклад про архитектурные требования) • Привлечение всех возможных заинтересованных лиц и поиск компромиссов

Slide 85

Slide 85 text

Определение порядка реализации сценариев 14-15.11.2019 Software Engineering Conference Russia 85 • Критичные бизнес-сценарии (a-la MVP) - вперед • Проверку архитектурных гипотез и опций – вперед • Атрибуты качества - вперед

Slide 86

Slide 86 text

Программная архитектура отдельного компонента или сценария 14-15.11.2019 Software Engineering Conference Russia 86 • Выделенный архитектор компонента – «красиво», но долго. Применяем только для критичных решений • Для всего остального – набор правил (фреймворк) и поддерживающие инструменты

Slide 87

Slide 87 text

Контроль актуальности архитектурных решений 14-15.11.2019 Software Engineering Conference Russia 87 • Постоянное взаимодействие с командами • Явно принимаем технический долг (в идеале – через Заказчика)

Slide 88

Slide 88 text

Технические практики (правила и инструменты) • «Monolith first», при условии: • Multi-module build • Структурированный монолит • Управление зависимостями через API • Управление общими зависимостями • Использование абстракций • Замена хранилищ данных • Замена транспорта • Замена взаимодействий 14-15.11.2019 Software Engineering Conference Russia 88