Собираем кубик Рубика
-
Upload
cee-secr -
Category
Data & Analytics
-
view
113 -
download
0
Transcript of Собираем кубик Рубика
![Page 1: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/1.jpg)
29 октября 2016
Собираем кубик Рубика: восстановление архитектурного описания корпоративной распределенной системы
Павел МузыкаАрхитектор приложений
![Page 2: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/2.jpg)
2/57
План
Постановка задачи
Архитектурное описание Viewpoint в
Software & Enterprise
Architecture
Software archaeologyПримеры реальных
диаграмм
Архитектурный репозиторий
![Page 3: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/3.jpg)
3/57
Где мы
Постановка задачи
Архитектурное описание Viewpoint в
Software & Enterprise
Architecture
Software archaeologyПримеры реальных
диаграмм
Архитектурный репозиторий
![Page 4: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/4.jpg)
О чем система Распределенная система сбора
финансовой отчетности: шесть стран
Система business-critical: не собрали финансовую отчетность – не можем управлять бизнесом
4/57
![Page 5: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/5.jpg)
Наследие… Терабайты финансовых учетных данных
Разработка системы начата в начале 2000-х
Недавно (в 2012 году) был крупный реинжиниринг системы
За время существования системы состав команды полностью поменялся несколько раз
5/57
![Page 6: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/6.jpg)
Структура системы Четыре функциональных модуля
Трехзвенка, две эпохи технологий UI, два разных кодогенератора для нужд БД и др.
Основной блок вычислений – в базе данных (Oracle)
+ Есть мощный движок построения отчетности на C#
6/57
![Page 7: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/7.jpg)
Ситуация После двухлетнего неторопливого
сопровождения заказчик поставил задачу существенного развития системы
В команде нет ни одного разработчика, который работал бы над системой больше года
+ Два аналитика, один из которых пришел три месяца назад
7/57
![Page 8: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/8.jpg)
8/57
А как устроена система?
![Page 9: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/9.jpg)
Существующее описание Внутренняя wiki (много текста: 302 страницы)
Множество сделанных в Visio диаграмм, разложенных как в Svn, так и на сетевом хранилище
Актуальность большинства документов – 2012 год
9/57
![Page 10: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/10.jpg)
10/57
Где мы
Постановка задачи
Архитектурное описание Viewpoint в
Software & Enterprise
Architecture
Software archaeologyПримеры реальных
диаграмм
Архитектурный репозиторий
![Page 11: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/11.jpg)
Архитектура vs. архитектурное описание Архитектура – фундаментальное устройство
самой системы
Архитектурное описание – описание устройства системы как внутреннего устройства так и внешних интерфейсов
с системным окружением с использующей системой с обеспечивающей системой
11/57
![Page 12: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/12.jpg)
12/57
Исходный код – это архитектура или архитектурное описание?
![Page 13: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/13.jpg)
Зачем описывать архитектуру? Для совместного проектирования
Согласовывать изменения с заказчиком Обсуждать изменения с разработчиками Сравнивать различные варианты
Для передачи знаний о системе Ее назначение и устройство Методика разработки и поставки Способы использования
13/57
![Page 14: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/14.jpg)
С какой позиции описывать?
14/57
![Page 15: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/15.jpg)
Как правильно описать кубик Рубика?
15/57
![Page 16: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/16.jpg)
Точка зрения в архитектуре В 1977 году Douglas T. Ross, K. E. Schoman
предложили использовать концепции Context, Viewpoint и Vantage point
В 1992 году Anthony Finkelstein с коллегами предложили различать representation и specification
В стандарте IEEE 1471 это разделение стало называться Viewpoint и View соответственно
16/57
![Page 17: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/17.jpg)
Viewpoint vs. View
17/57
Viewpoint содержитопределение описания
View содержитсамо описание
Viewpoint задает типы моделей
(язык описания)View содержитсами модели
![Page 18: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/18.jpg)
Пример одного из View
18/57
![Page 19: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/19.jpg)
19/57
Где мы
Постановка задачи
Архитектурное описание Viewpoint в
Software & Enterprise
Architecture
Software archaeologyПримеры реальных
диаграмм
Архитектурный репозиторий
![Page 20: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/20.jpg)
4+1 Architectural View Model
20/57
![Page 21: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/21.jpg)
ISO/IEEE 42010 Жестко не регламентирует сами
viewpoint’ы
Дает метаописание viewpoint’а
Предлагает использовать Reference Model of Open Distributed Processing (RM-ODP)
21/57
![Page 22: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/22.jpg)
RM-ODP viewpoints
22/57
![Page 23: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/23.jpg)
Siemens
23/57
![Page 24: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/24.jpg)
Rozanski & Woods
24/57
![Page 25: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/25.jpg)
Тем временем на другом конце Вселенной…
25/57
…в пространстве Enterprise
![Page 26: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/26.jpg)
Zachman Framework
26/57
![Page 27: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/27.jpg)
TOGAF
27/57
![Page 28: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/28.jpg)
ArchiMate
28/57
![Page 29: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/29.jpg)
ArchiMate 3.0
29/57
![Page 30: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/30.jpg)
30/57
Где мы
Постановка задачи
Архитектурное описание Viewpoint в
Software & Enterprise
Architecture
Software archaeologyПримеры реальных
диаграмм
Архитектурный репозиторий
![Page 31: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/31.jpg)
Бизнес-функции
31/57
Основные стейкхолдеры: Бизнес-пользователи Операционные менеджеры Служба эксплуатации Бизнес-аналитики
Назначение: Показывает основной поток
данных и исполнения при сборе финансовой отчетности
![Page 32: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/32.jpg)
Функциональная карта
32/57
![Page 33: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/33.jpg)
Application Usage Viewpoint (ArchiMate)
33/57
![Page 34: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/34.jpg)
Функциональная карта
34/57
Основные стейкхолдеры: Бизнес-аналитики Архитекторы Операционные менеджеры
Назначение: Показать
какие бизнес-функции какими компонентами системы посредством каких сервисов реализуются
![Page 35: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/35.jpg)
Встройка системы в операционное окружение
35/57
![Page 36: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/36.jpg)
Компоненты системы
36/57
![Page 37: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/37.jpg)
Одного уровня детализации мало
37/57
Структуры данных
Компоненты
Функции, поведение, потоки
данных
Встройка в системное окружение и интеграция
![Page 38: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/38.jpg)
Потоки данных
38/57
![Page 39: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/39.jpg)
И еще более детально
39/57
![Page 40: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/40.jpg)
40/57
Где мы
Постановка задачи
Архитектурное описание Viewpoint в
Software & Enterprise
Architecture
Software archaeologyПримеры реальных
диаграмм
Архитектурный репозиторий
![Page 41: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/41.jpg)
Software Archaeology Для восстановления описания архитектуры
уже существующей системы не подходят методы описания архитектуры в процессе проектирования
Так же как для сборки (решения) кубика Рубика не подходят инструкции по его сборке (монтажу из частей)
41/57
![Page 42: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/42.jpg)
Практики в Software archaeology Чтение существующей документации
и ее актуализация
Интервью с экспертами, пользователями и другими включенными в процесс персонами
Исследование поведения системы
Исследование структуры системы
Постановка архитектурного процесса
42/57
![Page 43: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/43.jpg)
Прочтите всю документацию!
43/57
![Page 44: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/44.jpg)
Рисуйте картинки и обсуждайте их!
44/57
![Page 45: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/45.jpg)
Метод тестирования гипотез Проводим первое интервью, задаем вопросы
на понимание
В оффлайне обдумываем, фиксируем понимание, рисуем диаграммы
Проводим второе интервью с главным вопросом «я правильно понял, что оно так?»
Получаем ответ «конечно же нет, оно должно быть вот так»
Уходим на второй раунд обдумывания и фиксирования в оффлайне
45/57
![Page 46: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/46.jpg)
Особенности интервьюирования Записывайте звук и видео, если это возможно
Нужно различать, о какой системе вам рассказывают: о целевой, обеспечивающей или использующей
Процесс сильно цикличен – желательно сокращать время между итерациями
Структура необходимых viewpoint'ов будет рождаться постепенно, поэтому нужно двигаться сверху вниз: от концептуального к детальному
46/57
![Page 47: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/47.jpg)
Интервьюируем заказчика и пользователя Цель – составить сценарии использования системы
47/57
Структуры данных
Компоненты
Функции, поведение, потоки
данных
Встройка в системное окружение и интеграция
![Page 48: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/48.jpg)
Интервьюируем аналитиков Цель – выявить принципы, заложенные в систему, описать деление
на функциональные блоки
48/57
Структуры данных
Компоненты
Функции, поведение, потоки
данных
Встройка в системное окружение и интеграция
![Page 49: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/49.jpg)
Интервьюируем разработчиков Цель – получить детальную архитектуру функциональных блоков
или компонентов
49/57
Структуры данных
Компоненты
Функции, поведение, потоки
данных
Встройка в системное окружение и интеграция
![Page 50: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/50.jpg)
Самостоятельные раскопки Исследуем поведение
Подключаемся к тестовому стенду и пытаемся работать с системой
Если есть автоматические тесты или тестовые сценарии для QA, то обязательно их смотрим
Исследуем структуры Открываем среду разработки и читаем код Если среда позволяет, то строим диаграммы
по фрагментам системы
50/57
![Page 51: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/51.jpg)
Раскопки в структуре базы
51/57
![Page 52: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/52.jpg)
52/57
Где мы
Постановка задачи
Архитектурное описание Viewpoint в
Software & Enterprise
Architecture
Software archaeologyПримеры реальных
диаграмм
Архитектурный репозиторий
![Page 53: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/53.jpg)
Зачем? Мало однажды восстановить архитектурное
описание – надо поддерживать его актуальность
53/57
![Page 54: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/54.jpg)
Структура репозитория
54/57
![Page 55: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/55.jpg)
Как это сделано у нас Основной репозиторий – это wiki
Вся структура описания – в wiki, связи между viewpoint’ами – там же
Исходники диаграмм – в Enterprise Architect или Visio
Enterprise Architect – инструмент коллективной работы с диаграммами
Автоматизирована выгрузка диаграмм в wiki из Enterprise Architect и Visio
55/57
![Page 56: Собираем кубик Рубика](https://reader035.fdocument.pub/reader035/viewer/2022062823/586fb2ee1a28abe57d8b6a8d/html5/thumbnails/56.jpg)
Подводя итогиРезультат: После восстановления архитектурного описания мы
смогли согласовать масштаб изменений с заказчиком и снять основные риски
Выводы: Восстановить архитектурное описание дорого в момент
возникновения необходимости и поэтому не всегда возможно
Важно ставить практики управления архитектурой и поддерживать описание в актуальном состоянии
56/57