Kihagyás

Szoftver vizualizáció

A szoftver vizualizáció célja az adatok grafikus megjelenítése, a szoftver tulajdonságainak látható módon való ábrázolása valamilyen jelképrendszer (metafora) alapján. Bemenete az ábrázolandó adatok, jelen esetben valamilyen információ a szoftverről. Kimenete különböző grafikus elemek megjelenítése, pl. kép vagy videó.

Feladat

Keress legalább 5 különböző szoftver vizualizációs példát!

Megoldás

  • UML diagramok: szerkezet és viselkedés megjelenítése
  • Grafikonok: számszerű tulajdonságok grafikus ábrázolása (pl. metrikák)
  • Git hálózatok: a fejlesztés menetének megjelenítése -> GitHub
  • Folyamatábrák, adatfolyam diagram: az információ, illetőleg adatáramlás megjelenítése
  • Képernyőtervek, mockup-ok: grafikus felületek szerkezetének bemutatása -> Wiki

Vizualizáció fajtái, csoportosítása

Nagyon sok tulajdonság szerint lehet csoportosítani. Ezek sokszor szubjektív szempontok és bár általában létezik valamilyen sokak által elfogadott felosztás, mégis a határok nincsenek jól definiálva. Néhány szempont a csoportok definiálásához:

  • Dinamikusság: állókép, videó, animáció
  • Interaktivitás: UML diagramok vs. Git hálózatok - lehet-e változtatni a megjelenítést a vizualizáció újra elkészítése nélkül?
  • Absztrakció szintje: UML diagramok vs. képernyőtervek - mennyire áll közel a jelképrendszer a valódi objektumhoz?
  • Adatdimenziók: oszlopdiagram vs. osztálydiagram. Az első esetben mennyiségek közötti eltéréseket emelünk ki, míg a második esetben az osztályok neve, adattagjai, kapcsolatai kerülnek reprezentálásra.
  • Metafora: a jelképrendszer, amit használunk. Pl. szín, magasság, távolság, gráfok, fizikai objektum modellek (épületek, fák, ...)

Néhány metafora

Oszlopdiagram

  • elvont metafora, pl.: 100 °C miért „magasabb” mint a 0 °C
  • magasság, szín, távolság (oszlopok csoportosítása)
  • alapvetően kifejezi az értékek közti eltérés nagyságát egymáshoz képest

Deployment diagram (UML)

  • elvont metafora, pl.: a szerver hasonlít egy „dobozra” a valóságban?
  • gráf metafora egyedi címkékkel
  • elemek és köztük lévő kapcsolatok ábrázolása

Code metropolis

  • hivatalos oldal
  • valósághű, de elvont metafora, pl.: Léteznek épületek a valóságban? Forráskód metódus hasonlít egy szobára?
  • város metafora, épületek tulajdonságaival fejezi ki az adatok tulajdonságait
  • sok, elvont metrika közötti kapcsolat és korreláció érzékelését teszi lehetővé

Fritzing ábra

  • hivatalos oldal
  • valósághű és nem elvont metafora, pl.: Mennyire hasonlít egy Arduino a képen láthatóra? Léteznek LED-ek a valóságban?
  • gráf metafora, egyedi csomópont megjelenítéssel (képek)
  • próba áramkörök elemei közötti kapcsolat megjelenítése

Gyakorló feladatok

Milyen metaforákat használnak az alábbi vizualizációk?

Vizualizáció fázisai

  1. adatok→ Szűrés (Filtering) →adatok: Célja fölösleges adatok eldobása, adatok előkészítése. Példák a vizsgált osztályok kiválasztás az osztálydiagramhoz, vagy értékek normálása oszlopdiagram számára.
  2. adatok→ Hozzárendelés (Mapping) →geometria: Célja az információ átalakítása grafikus elemek tulajdonságaivá. Példák az osztályok közötti kapcsolatokat jelölő nyílvégek típusának meghatározása az osztálydiagramon a kapcsolatok tulajdonságai alapján, vagy az oszlopok (képpontban vett) magasságának kiszámítása az adatok nagysága alapján az oszlopdiagramhoz.
  3. geometria→ Ábrázolás (Rendering) →kép, videó, ...: Célja a grafikus anyag előállítása: képek készítése, videó fájlba mentése, stb. Példa: elkészítjük a képfájlokat (JPEG, PNG,stb.) amelyek tartalmazzák az osztály- vagy az oszlopdiagramot.
  4. kép, videó, ... → Megjelenítés (Display, Playback) →adat: Célja a felhasználó számára (ember, célközönség) megjelenítjük a kész ábrát. Példák az Excelben megtekintjük az elkészült oszlopdiagramot,vagy a megbeszélésen átnézzük a kinyomtatott osztálydiagramot a többi fejlesztővel.

A megjelenítés során levont, megértett következtetések (új adatok) további folyamatok bemenetei lehetnek, pl.: egy új vizualizációé.

Gyakorló feladat

Határozzuk meg hogy pontosan hogyan jelennek meg a vizualizáció fázisai az alábbi vizualizációk során?

  • Linux Kernel életciklusának bemutatása a Gource-al: Video
  • Méret (logical Lines of Code) és Komplexitás (McCabe-komplexitás) közti kirívó esetek keresése pontdiagram: Scatter plot és SonarQube segítségével
  • Módosítandó szoftver fő komponenseinek bemutatása komponens diagram segítségével

Tippek a vizualizáció elkészítéséhez

  • Mindig tartsuk szem előtt a célt amiért a vizualizáció készült: milyen összefüggéseket szeretnénk bemutatni, mire szeretnénk felhívni a figyelmet, mely adatokat szeretnénk további vizsgálat alá vetni,stb.
  • Koncentráljunk a lényegre, pl.: nem kell minden osztályát bezsúfolni egyetlen egy osztálydiagramra
  • Mindig adjunk leíró szöveget a megjelenített adatokhoz, ami elmondja a vizualizáció célját és vázolja a vele elért eredményeket.
  • Koncentráljunk arra hogy mi mit jelent, ne arra hogy mit látunk a képen. Pl.: „A fekete dobozból három nyíl megy a piros dobozokba.” helyett „A rendszer belépési pontját a fekete doboz jelzi, melyből a három fő komponens felé áramolhat az információ (piros dobozok).”
  • Ha egy ábrát nagyon sokáig kell magyarázni akkor az az ábra lehet nem megfelelő.
  • Használjunk konzisztens jelölést. Pl.: adott végű nyíl adott típusú kapcsolatot jelentsen mindenhol. Ebben nagy segítséget jelent a szabványos jelölések, pl.: UML.
  • Nem mindenki egyformán gondolkodik, ami számunkra egyértelmű az másnak lehet érthetetlen. Kérjük ki a többi csapattag véleményét!
  • Amit a másik csapattagnak szóban elmondtunk az ábrán szereplő dolgokról, azt valószínűleg nem lehet leolvasni az ábráról. Ezeket az információkat vagy írjuk le vagy javítsuk az ábrát.
  • Gondoljunk a fogyatékkal élőkre, pl.: érthető az ábra egy színtévesztő számára is?
  • Ügyeljünk arra hogy a megfelelő metaforát és technikát válaszuk. Pl.: Fritzing ábra kezdőknek, kapcsolási rajz tapasztalt mérnököknek.
  • Mindig tartsuk szem előtt hogy milyen módon jelenik majd meg az ábra. Pl.: nyomtatás (nincs nagyítás, ált. fekete-fehér), monitor (hova tesszük a magyarázó szöveget) vagy kivetítő (nem minden szín látszik jól)

Vizualizáció Codemetropolis-sal

Kódvizualizációs eszköz, amely a Minecraft világát használja fel a cél megvalósítására. A város metaforát használja.

kep

A következőképpen készítjük el a vizuaéizációt:

  1. Elemzés: Statikus elemzővel vizsgáljuk a program szerkezetét. Kimenet program szerkezete.
  2. Leképezés: A vizuális elemekhez metrikákat rendelünk. A kimenet a város elemeinek leírása lesz.
  3. Elrendezés: A vizuális elemek térbeli elrendezését definiáljuk. A kimenet a város leírása.
  4. Megjelenítés: Az épületeket blokkokká alakítjuk. Kimenet: Minecraft világ.

CodeMetropolis

Minden csapat kap egy Minecraft accountot (amennyiben ezt a Coospacen kéri a gyakorlatveztőtől).

Függőségek

  • Java JRE 1.8+
  • Minecraft client 1.8
  • Elemzéshez SourceMeter

Bemutató videó

Minecraft beállítása

kep

CodeMetropolis futtatása:

  • CodeMetropolis_1.4-bin.zip és examples.zip kibontása
  • examples-ből kibontott állományok másolása a CodeMetropolis_1.4-bin mappába
  • ugyanoda program gráf (.graph) bemásolása, a gráf a SourceMeter alapú elemzés eredménye
  • generate.bat testreszabása, futtatása
  • kimenet: worlds könyvtárban található világ

Világ betöltése Minecraft-tal:

  • Másoljuk át a teljes demo mappát a következő helyre: %appdata%.minecraft\saves Pl.: C:\Users\username\AppData\Roaming.minecraft\saves
  • Indítsuk el a Minecraft-ot

generate.bat

1
2
3
4
java -jar ./codemetropolis-toolchain-converter-1.4.0.jar -t sourcemeter -s ./log4j-1.2.17.graph
java -jar ./codemetropolis-toolchain-mapping-1.4.0.jar -i ./converterToMapping.xml -m ./sourcemeter_mapping_example.xml
java -jar ./codemetropolis-toolchain-placing-1.4.0.jar -i ./mappingToPlacing.xml
java -jar ./codemetropolis-toolchain-rendering-1.4.0.jar -i ./placingToRendering.xml -world ./world/

Figyelem: Linux alatt: !/bin/bash Linux esetében az Oracle java verziót használjuk! (sudo update-alternatives --config java)

kep

Parancsok

  • Kreatív módba váltás: /gamemode 1
  • Teleportálás: /tp x y z (ahol az y a függőleges)
  • F3: debug info, pozíció (Looking at...)

Parancsok engedélyezése:

kep

Pozíció és tájékozódás

  • Osztály keresése:
  • placingToRendering.xml
  • Megkeresni az osztály nevét
  • <position x="32" y="63" z="51"/>
  • Kicsit mellé érdemes teleportálni...

Példa formátum a leképezésre

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<mapping version=“2.0">
<linking source="package" target="ground"/>
<linking source="class" target="garden">
<linking source="method" target="floor">
    <binding from="LLOC" to="height"/>
    <binding from="NII" to="width"/>
    <binding from="NOI" to="length"/>
...
</linking>
...

Utolsó frissítés: 2021-05-06 09:44:37