Dependency graph для міграційного impact
Migration dependency graph показує не лише список модулів, а напрямлені звʼязки між source runtime, framework, build plugins, libraries, integrations, deployment і data/protocol boundaries. На графі важливо бачити target constraints, affected paths і вузли з великим blast radius.
Це окремий артефакт від MODULE_INVENTORY: inventory описує окремі модулі, а migration graph допомагає визначити порядок переходу та compatibility impact між компонентами.
Вузли, ребра та обмеження
| Елемент | Приклад змісту | Чому важливо |
|---|---|---|
| Node | runtime, framework, plugin, client, protocol | окрема surface для migration decision |
| Directed edge | application → framework або service → protocol | показує напрям впливу та порядок перевірки |
| Constraint | supported version, ABI, config, data format | визначає blocking або conditional path |
| Affected flow | endpoint, job, event, persistence operation | повʼязує graph із observable behavior |
| Unknown | непідтверджена transitive dependency | блокує необґрунтований compatibility claim |
Compatibility matrix як рішення, а не score
Матриця сумісності розкладає source-to-target рішення за вимірами: API, configuration, ABI, runtime, data format, protocol і operations. Для кожної клітинки потрібні status, evidence і owner. Статуси на кшталт compatible, requires verification, blocking або Unknown не можна заміняти одним загальним числом.
Risk map може показати пріоритет і наслідок ризику, але не замінює технічного рішення про те, чи конкретна пара source/target сумісна.
Порядок побудови graph і matrix
- Почніть із affected flow і його entry point, а не з повного списку пакетів.
- Додайте source/target nodes та direct і transitive dependencies, наскільки вони підтверджені.
- Позначте directed edges, version constraints і high-impact hubs.
- Для кожного critical edge заповніть compatibility dimensions і evidence.
- Призначте owner для Unknown та blocking items.
- Виберіть найменший pilot, який перевіряє головну compatibility hypothesis.
Канонічне джерело уроку · JavaRush
Відкрити матеріал JavaRush