Als nächsten Schritt der Analyse auf Systemebene beschäftigen wir uns mit Visualisierung.
Das ist in der Gliederung der Punkt 3, 2,
3. Und dazu gibt es ein paar Fragen,
nämlich die Fragen, was bei der statischen Analyse,
nein, das sollte nicht hier gemalt werden,
wir sollen nur ein Teiger sein,
was bei der statischen Programmvisualisierung gemacht wird.
Und was bei den dynamischen Programmvisualisierungen gemacht wird.
Bevor wir dahin kommen, lassen Sie uns kurz mal sagen,
worum geht es dabei?
Wir sind bei 3,
2,
3 Visualisierung
Wir erinnern uns daran, dass es darum geht, einen Überblick zu gewinnen.
Wir erinnern uns an die 80-20-Regel und darum,
dass es darum ging, die kritischen Punkte rauszufinden.
Was wir schon gemacht haben mit dem bisherigen Ansätzen,
die sehr diskutierten Ansätzen war,
dass wir mit Metriken Schwachpunkte ermittelt haben oder Punkte ermittelt haben,
wo die Qualität schlechter ist,
wo irgendwelche Kennwerte falsch sind oder schlechter sind oder
auffällig sind,
einfach nur auffällig
Und das ja mit der Abdeckungsanalyse herausgelegt haben, wo kommen wir denn lang?
Was sind die für bestimmte Geschäftsvorfälle, kritischen Punkte?
Und wir wollen jetzt bei diesem Überblick gewinnen, woher geht es uns darum,
dass wir den Ort und die Art der Maßnahmen bestimmen?
Wort und Art
von The Engineering
Maßnahmen festlegen. Darum geht es uns. Und dabei müssen
wir versuchen, diese Zahlen, die Metriken liefern,
irgendwie zu erfassen und nur Zahlen zu erfassen, ist irgendwie schwierig.
Unsere anderen Sinne sind auch sehr, sehr, sehr gut geeignet,
insbesondere unscharfe Informationen zu dem versteckte Informationen zu entdecken.
Und deswegen ist das Grafische ganz gut. Also die grafische
Aufbereitung Insbesondere, wenn es um Zusammenhänge geht. So,
dabei wollen wir zunächst die statische Analyse benutzen und Bei der statischen Analyse geht es uns vor allen Dingen darum,
dass wir die Informationen liefern, also statisch heißt in dem Fall,
wir führen das Programm nicht aus und die Informationen,
die wir dazu gewinnen können, sind zunächst Informationen aus der Struktur.
Das sind also solche Sachen wie die Syntax und Semantik,
Quelltextstruktur, vor allen Dingen die wir daraus gewinnen können,
das ist ein wichtiger Punkt.
Und dann ist es uns, sollte es uns mir gelingen,
dass wir Informationen aus Metriken dazu zusammenbringen.
Und außerdem noch, dass es uns gelingt,
dass wir Informationen über die Entwicklungsgeschichte, Versionierung,
Versionshistorie.
Das scheint mir ein bisschen schöner noch. Und das ist gleichzeitig die Informationen,
das sind die Informationen, die wir hier darstellen können.
Das wäre das, was wir in der Frage gerade gesehen haben.
Also hier, welche Aspekte können bei der statischen Programmvisualisierungen dargestellt werden.
Das sind genau die Sachen, die wir hier gerade genannt haben.
Wir können die Struktur darstellen, wir können Kenntrösen, Metriken darstellen,
wir können uns hinzufügen, das ist sowas wie Qualitätsmerkmale.
Oder wenigstens Indikatoren für solche Qualitätsmerkmale. Und natürlich die Entwicklungsgeschichte
, die Historie. Lassen Sie uns das mal im Detail
an Beispielen angucken und das haben wir auf den Folien.
Ich fange mal an, hier Klassenhierarchien darzustellen,
indem man versucht, solche Beziehungen darzustellen.
Diese Beziehungen sind hier aufgeklappt, ja, in Form Hierarchien
zu visualisieren. Manchmal sind diese Hierarchien ja sehr unübersichtlich,
gerade bei objektorientierten Programmen, wo Vererbung extensiv benutzt worden ist.
Und das ist eigentlich ja die Empfehlung,
das nicht so zu tun,
sondern das nur fachlich zu viel und vorrangig fachlich zu gehen und mit Vererbung sparsam umzugehen,
vor allen Dingen typische Typvererbung zu machen.
Das ist das, was sie bei uns im Besserstudium,
in SE1, SE2 und Softwaretechnik lernen.
Aber viele machen das halt irgendwie anders. Und da haben wir
teilweise gigantische Werbungshierarchien, wo es schwere fällt, uns drin,
sich zurechtzufinden. Ja, hier dieses Beispiel, verwendet Farben,
aber die Farben haben nicht wirklich, spielen nicht wirklich eine Rolle.
Also das ist mehr so wie eine schön gemacht.
Das ist vielleicht ein bisschen ein Nachteil. Dann gibt es
hier, dass man versucht, Navigation zu ermöglichen.
Man kann also hier reinblättern und man kann hier sich in
einzelne Punkte einschalten oder hier so eine Baumstruktur,
wo sie dann zum Beispiel, indem sie das anklicken,
das aufklappen oder weinen sie weiter auf zur Seite,
das anklicken und das nächste aufklappen
Kann man den Fokus wählen, das soll das hier heißen,
und damit können sie in gewisser Weise sich den Überblick gewinnen, so ähnlich wie Browsern.
Ich kann dort hineinblättern, ich kann mir das genauer anschauen.
Das wäre jetzt der Punkt, wo es darum geht,
dass wir uns die Struktur zunutze machen und diese Struktur veranschaulichen.
Es ist eine andere Möglichkeit,
die Struktur im Zusammenhang mit Größe zum Beispiel zu bringen,
stellen solche Tream-Maps dar, Tream-Maps sind empfunden für Baumstrukturen,
das sagt der Name schon, Baumstrukturen, zweidimensional darzustellen.
Das kleine Beispiel links zeigt es uns,
also wenn wir so eine kleine Dreifachverzweigung von der Wurzel her haben,
dann unter jeweils zweifach, würde das so aussehen,
dass wir abwechselnd spalten und Zeilen belegen.
Ja, also dass diese erste des Gesamtkasten immer ein Rechteck steht für einen Knoten,
also dieser Knoten ist das größte Rechteck und das teilt sich
auf in drei Unterknoten und das wären zunächst Spalten.
Also das eine, das zweite,
das dritte und die teilen sich und das erste teilt sich
wieder auf in zwei und in zwei Zweige und damit haben
wir dann quer eine Quereinteilung
Und hier haben wir die Farbe sollen ein bisschen ihnen zeigen,
was da zusammen, wieder Zusammenhang ist.
Aber wir können hier die Fläche noch nutzen als weiterer Informationsträger,
zum Beispiel die Größe, ja, um dann Veranschaulichungen zu machen.
Hier das Mittlere sehen wir wieder,
der mittlere Zweig war diese Spalte hier, die wird auch aufgeteilt,
horizontal, in zwei Elemente und das dritte ist das letzte.
Und hier können wir auch wieder die Fläche nutzen für
irgendetwas anderes, für eine andere Information. Ja,
das ist ganz wunderbar geeignet, um den Raum auszunutzen,
es skaliert, ja, aber wir müssen die Frage sagen,
was interpretieren wir denn
Und am Ende sind nur die Blättern wörsen im Wegentlichen da. Ja,
wir können ja hier, ich kann Ihnen das mal hier,
wir können ja mal das hier angucken, was zeigt uns denn sowas? Na,
wir wissen zunächst erst mal von der Analogie,
vom Bild links, dass also die senkrechten Sachen sind,
spalten, das heißt auf der obersten Ebene haben wir die erste Folge,
was hier drei sind, haben wir hier eins, zwei,
drei, vier, fünf, sechs, sieben, acht, neun, zehn, ganz viele kleine, elf.
Also wir sehen hier die Senkrechten, das sind die Spalten, das sind die Verzweigung auf erster Ebene. Ja,
aber hier sehen wir das und das, das Gelbe und das Rote,
geht dann gar nicht weiter, gibt es keine weiteren tiefen Vererbungs,
aber hier gibt es relativ viele, dann vielleicht zehn solche,
die sind wieder aufgeteilt, manche von denen wieder so aufgeteilt,
hier in drei zum Beispiel und davon eins wieder in Unterpunkte und wieder und wieder und wieder und je nachdem,
wie oft sich Spalten und Zeilen oder hochzentrale vertikale Gitterungen abwechseln,
können wir daran die Verderbungstiefe ablesen oder wir können hier ablesen,
dass es Knoten gibt, die nicht weiter,
die gar nicht viele Elemente enthalten oder hier ganz viele kleine,
ja, diese Informationen kann man hier ablesen oder zum Beispiel hier gibt es ein riesengroßes,
einen riesengroßen Knoten, ja,
also deswegen kann man sich das hier ganz gut anschauen
Ich möchte Ihnen empfehlen, eine Seminararbeit von einem Vorgängerjahr von
Herrn Depont und Herrn Marinovic Springis, sich mal anzuschauen,
die habe ich mit bei den Vorlesungsunterlagen hochgeladen.
Sie haben das sehr schön zusammengestellt, was das für Visualisierungsmöglichkeiten gibt.
Es gibt die Möglichkeit, die dritte Dimension zu nutzen und
das geht dann schon zum nächsten Punkt Metriken hin.
Ja, also hier kam jemand auf die Idee,
so ähnlich wie eine Stadt aus der Vogelperspektive,
etwas darzustellen und hier quantitative Maßnahmen mitzumachen.
Also zum Beispiel könnte man hier als Stadtviertel, ja,
so ein Paket jeweils nehmen und das Paket dann vielleicht Unterpakete und wieder Unterpakete
und darin könnte man die Gebäude als Klassen darstellen.
Also das Braunes sind hier jeweils Klassen und welche,
die Methodenanzahl ist die Höhe, um die Attributzentralbreite und länger.
Also hier gibt es welche, die haben ganz wenig Attribute, aber ganz viele Methoden.
Und hier gibt es welche, die haben ganz wenig Methoden,
aber dafür ganz viele Attribute. Also das hilft uns,
diese Informationen hier so aufbereitet zu haben,
hilft uns deutlich, dass wir hier besondere Ausreißer feststellen,
eben diesen oder diesen oder es gibt Pakete,
die hier nur so ganz kleine Einheiten enthalten oder es gibt was,
welche, die wenig, wenig große Einheiten enthalten.
Das sind interessante Informationen, die uns helfen, dass diese
Sache besser zu erfassen. Ja, also das wäre,
wäre das jetzt, was wir hier gesagt haben,
aus der Struktur und jetzt sind wir schon bei dem nächsten Punkt,
Kenngrößen mit dazu zu verwenden.
Lassen Sie uns weiterschauen, wie könne das passieren?
Also zum Beispiel, wir können versuchen,
kennt die Entitulationship Diagramme oder solche Relationen
darzustellen als Graphen
Oder wir könnten sagen,
wir visualisieren das, größere Farbeposition, indem man sagt,
wo ist denn was, mit welcher Farbe, längere Breite.
Das wäre möglich im zweidimensionalen Raum als Graphen etwas darzustellen.
Hier haben wir zum Beispiel etwas, was uns zeigt,
wie Vererbungshierarchien aussehen könnten. Also hier haben wir deine Elemente,
die Pfeile zeigen jeweils, wo was Besonderes ist.
Zum Beispiel hier gibt es relativ, also was wir hier sehen,
sind Knoten als Kanten, Ehrknoten als Klassen und Kanten als Vererbungsbeziehung.
Also das ist jeweils eine Klasse und die Vererbungsbeziehung.
Und hier gibt es länger Breite
Antribute, Methoden und wenn die Dimensionen so halbwegs proportional zueinander sind,
dann könnte man sagen, das ist irgendwie normal,
aber manchmal gibt es welche,
die sind besonders lang oder sind wir dort aus klein und die Farbe Number of Lines of Code,
also die Anzahl der Quelltextzeilen, die Größe,
einen solchen Einheit.
Und hier gibt es dann Sachen, wo wir dann sagen,
okay, was ist denn hier los?
Hier gibt es eine relativ kleine, die hat dann ganz
viel unten drunter und die haben alle gar keine Vererbungsbeziehungen.
Hier ist was Großes mit vielen Methoden, Tributen,
das ist gar nicht weiter verfeinert. Solche Informationen kann man
sich hier generieren lassen, kann man da ablesen.
Der dritte Punkt war Jetzt, dass wir die Entwicklungsgeschichte,
die Historie uns mit darstellen. Das wäre möglich, indem wir,
ach so, hier war noch was zur Korrelation, also Zeilen und Statements.
Das war noch was zum vorgehenden Punkt. Also hier kann ich dann darstellen,
wenn das ungefähr proportional läuft, Zeilen und Anzahl Statements,
dann ist das ungefähr so, ja, was weiß ich,
eine Zeile im Durchschnitt enthüllt im Durchschnitt ein Statement.
Aber wenn es da Ausweiser gibt,
die hier liegen oder ihr liegen, dann sagen wir,
da sind irgendwie ganz viele in eine Zeile gequetscht und noch
ganz viele Methoden verteilt.
Wenn sowas für uns für die Lesbarkeit interessant ist.
Jetzt zu der Evolution, die gerade angekündigt war,
hier wieder
zwei Beispiele
Das erste Beispiel zeigt Visionsversionshistorien als Code, sogenannter Code-Flow.
Ja, wenn wir das jetzt mal hier im Detail angucken,
dann kann man hier tatsächlich so ein bisschen das nachverfolgen.
Was hat sich denn aus wem entwickelt? Was haben
die Programmierer da gemacht? Das hilft manchmal zu verstehen,
wo ist denn viel gemacht worden und wo ist viel umstrukturiert worden?
Wo ist denn was los? Hier unten,
das sieht er sehr uninteressant aus, da passiert nicht viel.
Und hier hat man mal was hervorgehoben, was irgendwo umstrukturiert wurde.
Ja, so als zweites hier noch eine Evolutionsmatrix,
wo man nochmal sehen kann, wo sich etwas,
wo er etwas verändert worden ist, was hier drangeschrieben ist,
ist dann schon die Darstellung der Interpretation.
Und hier hat die Quelle dazu, wo kann man das finden.
Die Leute sind sehr erfinderisch, was solche Visualisierungen betrifft.
Es gibt wenig systematisches Herangehen, man hat ja ausprobiert,
was kommt bei Entwicklern gut an,
was hilft uns dem Überblick zu gewinnen oder was ist in anderen Disziplinen üblich dafür,
so etwas zu tun.
Genau, jetzt schauen wir nochmal die Fragen an.
Die Fragen, die wir hier gesehen haben, wollte eigentlich,
sorry, ich muss mal hier zu den Fragen zurückgehen.
Wir hatten also gerade gesagt, welche Aspekte das hier sind,
hatten das an einigen Beispielen gesehen und das waren dann im
Wesentlichen diese drei Aspekte.
Struktur, Kenntnis,
Metriken und Entwicklungsgeschichte