Graf závislostí (dependency graph)

Aktualizované Sep 18, 2026

Graf závislostí (dependency graph) je mapa vzťahov medzi časťami softvérového systému, teda medzi modulmi, službami, knižnicami a dátovými úložiskami. Pri audite legacy codebase ukazuje, ktoré komponenty na sebe závisia, a pomáha vystopovať pravdepodobný dopad zmeny alebo náhrady ktoréhokoľvek z nich.

Graf závislostí (dependency graph) mapuje vzťahy medzi časťami softvérového systému. Jeho uzly predstavujú komponenty ako moduly, služby, balíčky alebo databázy. Spojenia ukazujú, ktoré komponenty volajú, importujú, čítajú alebo inak závisia jeden od druhého. V legacy systéme táto mapa zviditeľní skryté cesty zmien ešte pred začiatkom refactoringu.

Čo graf odhalí

Závislosti existujú na viacerých úrovniach. Zdrojové súbory importujú iné súbory. Moduly volajú zdieľané knižnice. Služby si vymieňajú dáta cez API alebo fronty. Aplikácie závisia aj od databáz, plánovaných úloh a externých systémov. Použiteľný graf jasne hovorí, čo predstavuje každý uzol a aký typ vzťahu zachytáva každé spojenie.

Záleží na smere. Ak modul A volá modul B, zmena v B môže ovplyvniť A aj vtedy, keď sa samotného A nikto nedotkol. Graf dokáže odhaliť aj cykly, kde dva komponenty závisia jeden od druhého a nedajú sa meniť ani nasadzovať nezávisle.

Signál v grafeČo môže znamenaťČo overiť
Veľa prichádzajúcich spojeníŠiroko používaný komponentKompatibilitu pri zmene rozhrania
Veľa odchádzajúcich spojeníKomponent závislý od mnohých inýchCesty pri zlyhaní a pri upgrade
Cyklus závislostíKomponenty sa nedajú ľahko izolovaťRozhodnutia o hraniciach a vlastníctve
Nepripojený uzolNepoužívaný alebo samostatne prevádzkovaný kódReálne použitie za behu pred odstránením

Prečo legacy systémy potrebujú mapu

Staršie codebase často obsahujú vzťahy, ktoré v aktuálnej dokumentácii chýbajú. Zdieľaná databázová tabuľka dokáže prepojiť inak oddelené moduly. Plánovaný proces dodáva dáta, ktorých existenciu aplikácia jednoducho predpokladá. Knižnica zostáva zamknutá na starej verzii, pretože viaceré komponenty sa spoliehajú na správanie, ktoré sa v novších verziách zmenilo.

Audit legacy codebase porovnáva graf s konfiguráciou za behu, so súbormi pre nasadenie a so samotným kódom. Vďaka tomu sa diagram nepovažuje za úplný vtedy, keď dynamické volania alebo prevádzkové závislosti stoja mimo neho.

Ako graf formuje migračný plán

Graf podporuje analýzu dopadov: stopuje, čoho sa môže dotknúť presun, zmena alebo zánik komponentu. Pomáha aj určiť poradie migrácie. Komponenty na okraji grafu sa zvyčajne izolujú ľahšie. Centrálne komponenty väčšinou potrebujú stabilné rozhrania skôr, než sa dá pohnúť závislým kódom.

Migračný plán zvyčajne využíva graf takto:

  • Nájsť hranice. Zoskupiť kód a dáta, ktoré sa menia spoločne.
  • Zoradiť prácu. Presúvať komponenty bez toho, aby sa rozbili ich konzumenti.
  • Nájsť zdieľané služby. Identifikovať kód, ktorý pred oddelením potrebuje rozhranie.
  • Naplánovať overenie. Zamerať testy na spojenia, cez ktoré zmena prechádza.

Ako graf súvisí s ostatnými dôkazmi auditu

Graf závislostí opisuje štruktúru, nie kvalitu. Nehovorí, či je komponent správny, dobre otestovaný alebo často menený. Na tieto otázky treba výsledky testov, históriu zmien a priame code review.

V spojení s technickým dlhom graf ukáže, kde sa prekrýva štrukturálna závislosť s cenou opravy. Zároveň poskytuje použiteľnú mapu pri preberaní a migrácii neznámej codebase, pretože tím dokáže vystopovať zmenu ďalej než len po súbor, v ktorom začína.