Zadanie

Vizualizácia softvérových artefaktov v 3D priestore

Počet tímov: 1
Vedúci tímu: Ing. Peter Kapec

V súčasnosti s rastúcou zložitosťou softvérových projektov je žiadúce rýchle pochopenie softvéru. Zorientovanie sa v zdrojových kódoch rozsiahleho projektu môže aj skúsenému programátorovi pri absencii kvalitnej dokumentácie zabrať mnoho času. O to horšie sú na tom programátori, ktorí systém nepoznajú a majú za úlohu v systéme vykonať požadované zmeny. Pojem softvér však pokrýva nielen samotný zdrojový kód, ale aj mnoho ďalších súvisiacich artefaktov ako sú dokumentácie, diagramy, revízie atd. Rôznorodosť prepojení medzi týmito artefaktmi však sťažuje ich organizovanie a často aj rýchle získanie požadovaných informácii.

Vizualizácia softvéru a vizuálne dolovanie v softvéri má za ciel urýchliť získavanie znalostí zo softvéru a pomôcť pri jeho porozumení. Pomocou vizualizácie je používateľovi poskytnutý pohľad na grafickú podobu softvérových artefaktov, čím ho odbremeňuje napríklad od pracného študovania množstva riadkov zdrojového kódu. Pri celkovom pohľade na grafickú reprezentáciu môžu vojsť do popredia skryté štruktúry, ktoré nemusia byť priamo viditeľné. Následným filtrovaním sa používateľ môže rýchlo dopracovať k podrobnostiam o ktoré má záujem.

Cieľom projektu bude vytvorenie komplexného a modulárneho systému na vizualizáciu softvérových artefaktov a vzťahov medzi nimi v 3D priestore. Na vizualizáciu softvéru budú použité zobrazenia pomocou grafov, keďže grafy sú vhodné na reprezentovanie vzťahov medzi entitami. V zobrazení budú 3D telesá reprezentovať entity zdrojového kódu a hrany medzi týmito entitami budú reprezentovať rôzne vzťahy ako napr. dedenie, vzťah inštancie a triedy, graf volaní funkcií a pod.

Riešenie bude musieť zahŕňať nasledovné oblasti:

  • podpora štandardov pre uchovávanie grafov ako napr. GXL, GraphXML, GraphML
  • analýza zdrojových kódov pre zvolený programovací jazyk, prípadne iné artefakty
  • dátové úložisko pre uchovávanie grafových reprezentácií softvérových artefaktov získaných analýzou
  • dopytovanie sa dátového úložiska, ktoré umožní vyhľadávanie a filtrovanie
  • interaktívna vizualizácia v 3D priestore
  • vizualizácia rozsiahlych grafov pomocou známych 3D vizualizačných algoritmov
  • podporu skriptovacích jazykov pre účely prototypovania

Pre riešenie projektu sú potrebné predchádzajúce skúsenosti z oblasti vizualizácie a počítačovej grafiky. Skúsenosti s analýzou zdrojových kódov a tvorbou dátových úložísk sú vítané.