Собираем кубик Рубика: восстановление архитектурного...

57
29 октября 2016 Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы Павел Музыка Архитектор приложений

Upload: custis

Post on 14-Apr-2017

237 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

29 октября 2016

Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Павел МузыкаАрхитектор приложений

Page 2: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

2/57

План

Постановка задачи

Архитектурное описание Viewpoint в

Software & Enterprise

Architecture

Software archaeologyПримеры реальных

диаграмм

Архитектурный репозиторий

Page 3: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

3/57

Где мы

Постановка задачи

Архитектурное описание Viewpoint в

Software & Enterprise

Architecture

Software archaeologyПримеры реальных

диаграмм

Архитектурный репозиторий

Page 4: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

О чем система Распределенная система сбора

финансовой отчетности: шесть стран

Система business-critical: не собрали финансовую отчетность – не можем управлять бизнесом

4/57

Page 5: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Наследие… Терабайты финансовых учетных данных

Разработка системы начата в начале 2000-х

Недавно (в 2012 году) был крупный реинжиниринг системы

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

5/57

Page 6: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Структура системы Четыре функциональных модуля

Трехзвенка, две эпохи технологий UI, два разных кодогенератора для нужд БД и др.

Основной блок вычислений – в базе данных (Oracle)

+ Есть мощный движок построения отчетности на C#

6/57

Page 7: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Ситуация После двухлетнего неторопливого

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

В команде нет ни одного разработчика, который работал бы над системой больше года

+ Два аналитика, один из которых пришел три месяца назад

7/57

Page 8: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

8/57

А как устроена система?

Page 9: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Существующее описание Внутренняя wiki (много текста: 302 страницы)

Множество сделанных в Visio диаграмм, разложенных как в Svn, так и на сетевом хранилище

Актуальность большинства документов – 2012 год

9/57

Page 10: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

10/57

Где мы

Постановка задачи

Архитектурное описание Viewpoint в

Software & Enterprise

Architecture

Software archaeologyПримеры реальных

диаграмм

Архитектурный репозиторий

Page 11: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Архитектура vs. архитектурное описание Архитектура – фундаментальное устройство

самой системы

Архитектурное описание – описание устройства системы как внутреннего устройства так и внешних интерфейсов

с системным окружением с использующей системой с обеспечивающей системой

11/57

Page 12: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

12/57

Исходный код – это архитектура или архитектурное описание?

Page 13: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Зачем описывать архитектуру? Для совместного проектирования

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

Для передачи знаний о системе Ее назначение и устройство Методика разработки и поставки Способы использования

13/57

Page 14: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

С какой позиции описывать?

14/57

Page 15: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Как правильно описать кубик Рубика?

15/57

Page 16: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Точка зрения в архитектуре В 1977 году Douglas T. Ross, K. E. Schoman

предложили использовать концепции Context, Viewpoint и Vantage point

В 1992 году Anthony Finkelstein с коллегами предложили различать representation и specification

В стандарте IEEE 1471 это разделение стало называться Viewpoint и View соответственно

16/57

Page 17: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Viewpoint vs. View

17/57

Viewpoint содержитопределение описания

View содержитсамо описание

Viewpoint задает типы моделей

(язык описания)View содержитсами модели

Page 18: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Пример одного из View

18/57

Page 19: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

19/57

Где мы

Постановка задачи

Архитектурное описание Viewpoint в

Software & Enterprise

Architecture

Software archaeologyПримеры реальных

диаграмм

Архитектурный репозиторий

Page 20: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

4+1 Architectural View Model

20/57

Page 21: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

ISO/IEEE 42010 Жестко не регламентирует сами

viewpoint’ы

Дает метаописание viewpoint’а

Предлагает использовать Reference Model of Open Distributed Processing (RM-ODP)

21/57

Page 22: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

RM-ODP viewpoints

22/57

Page 23: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Siemens

23/57

Page 24: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Rozanski & Woods

24/57

Page 25: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Тем временем на другом конце Вселенной…

25/57

…в пространстве Enterprise

Page 26: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Zachman Framework

26/57

Page 27: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

TOGAF

27/57

Page 28: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

ArchiMate

28/57

Page 29: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

ArchiMate 3.0

29/57

Page 30: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

30/57

Где мы

Постановка задачи

Архитектурное описание Viewpoint в

Software & Enterprise

Architecture

Software archaeologyПримеры реальных

диаграмм

Архитектурный репозиторий

Page 31: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Бизнес-функции

31/57

Основные стейкхолдеры: Бизнес-пользователи Операционные менеджеры Служба эксплуатации Бизнес-аналитики

Назначение: Показывает основной поток

данных и исполнения при сборе финансовой отчетности

Page 32: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Функциональная карта

32/57

Page 33: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Application Usage Viewpoint (ArchiMate)

33/57

Page 34: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Функциональная карта

34/57

Основные стейкхолдеры: Бизнес-аналитики Архитекторы Операционные менеджеры

Назначение: Показать

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

Page 35: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Встройка системы в операционное окружение

35/57

Page 36: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Компоненты системы

36/57

Page 37: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Одного уровня детализации мало

37/57

Структуры данных

Компоненты

Функции, поведение, потоки

данных

Встройка в системное окружение и интеграция

Page 38: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Потоки данных

38/57

Page 39: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

И еще более детально

39/57

Page 40: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

40/57

Где мы

Постановка задачи

Архитектурное описание Viewpoint в

Software & Enterprise

Architecture

Software archaeologyПримеры реальных

диаграмм

Архитектурный репозиторий

Page 41: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Software Archaeology Для восстановления описания архитектуры

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

Так же как для сборки (решения) кубика Рубика не подходят инструкции по его сборке (монтажу из частей)

41/57

Page 42: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Практики в Software archaeology Чтение существующей документации

и ее актуализация

Интервью с экспертами, пользователями и другими включенными в процесс персонами

Исследование поведения системы

Исследование структуры системы

Постановка архитектурного процесса

42/57

Page 43: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Прочтите всю документацию!

43/57

Page 44: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Рисуйте картинки и обсуждайте их!

44/57

Page 45: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Метод тестирования гипотез Проводим первое интервью, задаем вопросы

на понимание

В оффлайне обдумываем, фиксируем понимание, рисуем диаграммы

Проводим второе интервью с главным вопросом «я правильно понял, что оно так?»

Получаем ответ «конечно же нет, оно должно быть вот так»

Уходим на второй раунд обдумывания и фиксирования в оффлайне

45/57

Page 46: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Особенности интервьюирования Записывайте звук и видео, если это возможно

Нужно различать, о какой системе вам рассказывают: о целевой, обеспечивающей или использующей

Процесс сильно цикличен – желательно сокращать время между итерациями

Структура необходимых viewpoint'ов будет рождаться постепенно, поэтому нужно двигаться сверху вниз: от концептуального к детальному

46/57

Page 47: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Интервьюируем заказчика и пользователя Цель – составить сценарии использования системы

47/57

Структуры данных

Компоненты

Функции, поведение, потоки

данных

Встройка в системное окружение и интеграция

Page 48: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Интервьюируем аналитиков Цель – выявить принципы, заложенные в систему, описать деление

на функциональные блоки

48/57

Структуры данных

Компоненты

Функции, поведение, потоки

данных

Встройка в системное окружение и интеграция

Page 49: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Интервьюируем разработчиков Цель – получить детальную архитектуру функциональных блоков

или компонентов

49/57

Структуры данных

Компоненты

Функции, поведение, потоки

данных

Встройка в системное окружение и интеграция

Page 50: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Самостоятельные раскопки Исследуем поведение

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

Если есть автоматические тесты или тестовые сценарии для QA, то обязательно их смотрим

Исследуем структуры Открываем среду разработки и читаем код Если среда позволяет, то строим диаграммы

по фрагментам системы

50/57

Page 51: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

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

51/57

Page 52: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

52/57

Где мы

Постановка задачи

Архитектурное описание Viewpoint в

Software & Enterprise

Architecture

Software archaeologyПримеры реальных

диаграмм

Архитектурный репозиторий

Page 53: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Зачем? Мало однажды восстановить архитектурное

описание – надо поддерживать его актуальность

53/57

Page 54: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Структура репозитория

54/57

Page 55: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Как это сделано у нас Основной репозиторий – это wiki

Вся структура описания – в wiki, связи между viewpoint’ами – там же

Исходники диаграмм – в Enterprise Architect или Visio

Enterprise Architect – инструмент коллективной работы с диаграммами

Автоматизирована выгрузка диаграмм в wiki из Enterprise Architect и Visio

55/57

Page 56: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Подводя итогиРезультат: После восстановления архитектурного описания мы

смогли согласовать масштаб изменений с заказчиком и снять основные риски

Выводы: Восстановить архитектурное описание дорого в момент

возникновения необходимости и поэтому не всегда возможно

Важно ставить практики управления архитектурой и поддерживать описание в актуальном состоянии

56/57

Page 57: Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы

Спасибо!Вопросы?

57/57

Павел Музыка

[email protected]