Wenn wir also Schwachstellen suchen auf der, in einem System
, sollten wir zunächst mit dem gesamten System starten.
Das heißt, wir starten mit der Analyse auf der Ebene des gesamten Systems.
Bevor wir dann auf uns verfeinern, detaillieren,
auf die Entwurfsarchitekturebene runtergehen und später uns mit dem Quellcode beschäftigen.
Direkt mit dem Quellcode, das ist in vielen Fällen bei Leckersystemen zu groß.
Deswegen starten wir zunächst erstmal mit dem Überblick.
Dieser Überblick hat natürlich wenig Details. Deswegen müssen wir Maßnahmen
einsetzen, die uns wenig Zeit kosten und wenig Aufwand kosten
Können sich vorstellen, wenn wir insgesamt nur, sagen wir mal,
drei Personen sind für ein gigantisch großes System und haben vier Wochen Zeit,
um etwas durchzuführen,
dass wir nicht drei Tage mit der Analyse durchzubringen können,
wo in welchem Systemteil wir denn starten.
Sondern das muss relativ mit die geringem Aufwand sein.
Das heißt, bei der Analyse auf Systemebene spielt der Aufwand
eine große Rolle. Fragen dazu sind vor allen Dingen,
oder wir können ja noch vom letzten Mal hier eine für den Zielen,
da geht es uns darum zu sagen, wo liegen unsere Prioritäten,
bevor wir eigentlich zu den Schwachstellen kommen.
Das heißt, auf der Systemebene wird es uns kaum gelingen,
Schwachstellen zu finden, vielleicht in manchen Fällen schon,
aber wir können zunächst erst mal sagen,
wo setzen wir denn unsere Prioritäten?
Dazu gestatten wir mit Qualitätsmerkmalen. Welche sind welche Ebene sind,
welche Sachen sind denn wichtig, um eine Betrachtung auf der Blackbox-Ebene zu machen?
Wenn wir also mal hier starten, hört,
das sollte ein schwarter Stift sein,
bei zwei Systemen
Ebene. Denn machen wir zunächst erstmal eine Blackbox-Betrachtung.
Da können uns einerseits Prioritäten helfen, worauf kümmern wir uns,
dass zum Beispiel die Qualitätsziele und zum anderen,
dass wir eine globale Bewertung vornehmen.
Da können uns
Metriken helfen
Und das sind auch schon die Punkte, wo das Ganze zusammenhängt.
Wir beginnen mal mit den Metriken. Ja,
das entspricht ja auch unserer Gliederung hier, die Metriken.
Und da fangen wir an mit den Qualitätsmerkmalen, die wichtig sind.
Welche Qualitätsmerkmale gibt es denn? Qualitätsmerkmale, die an Software
gestellt wird, haben wir hier auf einer Folie.
Ich empfehle hier immer, einen Standard zu nehmen,
weil die Begriffe in der Praxis sehr unterschiedlich verwendet werden.
Und dieser Standard, diese Begriffe, die Begriffsdefinition stehen,
bei dem andere, bei diesem Standard 25010,
Und es gab noch einen Vorgänger.
Vielleicht schreiben wir den noch mit dran. Der Vorgänger Standort 91.26
war sehr ähnlich. Insofern könnten Sie den auch verwenden,
je nachdem, in welcher, was in der Firma bereitet üblich ist.
Auf jeden Fall hilft es, die Begriffe hieraus zu verwenden.
Deswegen möchte ich kurz mit Ihnen diese Begriffe durchgehen für diejenigen von Ihnen,
die das noch nicht in früheren Lehrveranstaltungen haben.
Bitte prägen Sie sich diese Begriffe ein. Es kann sein
, dass wir in der Prüfung drauf kommen.
Ich gehe kurz die Sachen durch
Man teilt es in äußere und innere Qualitätsmerkmale,
das sind hier alles äußere Qualitätsmerkmale.
Nein, man schreibt es ein kleines bisschen anders,
die Striche gewinnen.
Hier darüber,
da ist er
Äußerer ist sie, heißen sie deswegen,
weil sie der Anwender unmittelbar bemerkt.
Wir können gleich mal zu den nächsten springen, ja,
hier gibt es auch noch.
Das sind auch noch Äußerem. Und das sind dann
die inneren Qualitätsmerkmale
Vom Entwickler zu bemerken, ja, hier können wir das Bildchen
mal ein bisschen hochschieben oder so, geht es auch.
Ich muss ja hier nicht gerade das alles verdecken.
So, vielleicht gehen wir die kurz durch für diejenigen von
der Ihnen, die das noch nicht kennen.
Zunächst haben wir hier Funktionalität auf deutsche Funktionalität,
darum geht es, die Passung,
ja, es sind Funktionen komplett,
wo ist denn
mein Laserpointer
Aus der Laserfreunde. Also es geht um Funktionalität und sind die Funktionen komplett,
sind die Funktionen korrekt und sind sie angemessen für das Ziel.
Das ist sozusagen das Verhalten im Normalbetrieb. Bleiben wir doch bei Verhalten. Und dementsprechend ist die Zuverlässigkeit,
das ist das, was wir hier im nächsten Block haben,
Ja, also Zuverlässigkeit, Real, Liability, das ist das,
wo es um das Verhalten im Gestörten, im schwierigen Fall geht.
Verhalten unter erschwerten Bedingungen. So, und Verhalten unter erschwerten Bedingungen,
da ist die Verfügbarkeit, spielt dabei eine große Rolle Availability,
die Fehlertoleranz, das könnte man auch mit Robustheit bezeichnen,
wo es darum geht, also scheinen sie sich ruhig dran,
hier, Full Terrence, während im Deutschen auch Robustheit entsprechend,
also wie stark ist dein System von Fehlern betroffen,
beziehungsweise wie schwach beeinflusst es Fehler.
Und dann die neue Stadtfähigkeit, Widerstandfähigkeit, wie kann man es wieder herstellen? Ja,
also wenn ich die alte Version von PowerPoint war,
zum Beispiel so, da gab es keine Backup-Dateien regelmäßig und
wenn ihnen die Programmdatei irgendwie gerade Copy-Paste von Word heraus mit irgendwelchen Kommentarformatierungen,
der Wupps war das, das ist ja,
ich arbeite viel mit PowerPoint,
klar,
da war die Datei korrupt,
sie konnten sie
nicht öffnen
Und wehe, sie hatten keine alte Kopie davon.
Ja, dann konnten sie das Ganze noch mal neu machen.
Also das wäre sowas, jeder Stadtfähigkeit, das Gleiche griff zu,
auf Datenbank, wenn dann irgendwelche Inkonsistenzen erzeugt werden durch Fehler,
dann wird es schwierig, das wieder zu starten.
Und das Ganze hat mit zu tun mit Reife,
das wurde hier in der, das war in dem Beibemerk,
in der Vorgängerversion, ist so 91.26 nicht drin.
Aber hier geht es also insgesamt Verhalten unter normalen Bedingungen,
Verhalten unter erschwerten Bedingungen. Der nächste Fall Performance und Effizienz
, Zeitverhalten, da geht es um Ressourcen
Das ist hier der Schwerpunkt.
Welche Ressourcen da eine Rolle spielen und solche Ressourcen sind.
Für uns immer. Welchen Zeit oder welchen Kapazität? Die
Prozessorleistung, also dann haben wir häufig Speicherplatz, Eisressource.
Und Netzwerk, Kapazität. Es gibt natürlich noch weitere Ressourcen,
wie unter bestimmten Bedingungen ist Energie eine wichtige Ressource oder auch die Papiermenge,
die man so bedruckt,
ist eine Ressource oder wenn sie viele Briefe versenden,
Pottomenge, die sie so produzieren mit ihrem System.
Solche Sachen spielen eine Rolle. Im Prinzip geht es immer darum,
dass man möglichst effizient damit umgeht,
also Effizienz heißt Verhältnis von Input zu Output.
Und Zeit spielt eine ganz besondere Rolle,
weil das für den Entwickler am stärksten merkbar ist.
Das nächste ist Benutzbarkeit, Usability. Ich schreibe es mal
dran. Im Deutschen auch häufig als Ergonomie bezeichnet
Das kann man schlecht übersetzen, Usabilities, das bessere Wort dabei.
Das hat zu tun mit dem Aufwand Benutzbarkeit, drückt das aus,
dieses Barkeit, also der Aufwand für die Benutzung.
Und der Aufwand für das Lernen, die erstmalige Benutzung,
unterscheidet sich hier von der vom Aufwand für die Operation,
den normalen Betrieb, also ich würde es mal übersetzen,
mit der häufigen Benutzung.
So, und das Bildchen wieder weg, dass es sie
nicht stört. Ja, und sie können sich vorstellen,
für die erstmalige Benutzung ist das intuitiver, ganz wichtig.
Für die häufige Benutzung ist sowas wichtig,
wie gibt es heute Keys, dass man stellt ihnen her muss,
oder muss man immer mit der Maus erstmal durch die Bedühnfelder aufklappen,
was total nervig ist.
Oder sowas sind die Standardeinstellungen immer gleich vom letzten Mal
in den Dialog gleich drin.
Das ist alles Operability. Ja, dann spielt natürlich weiterhin
eine Rolle,
dass Benutzerfehler
irgendwie abgefangen werden
Aber Ästhetik spielt auch eine Rolle, nämlich,
wenn es eine Abwehr gibt,
weil man es altmodisch findet oder bockig oder ich hasse dieses System,
automatisch sinkt, steigt der Aufwand für die Benutzung.
Das wäre dieser Begriff Benutzbarkeit hier oder es sind die Effizienz.
Und die Accessibility, das ist sozusagen Zugriff für gehandicapte Personen,
das ist zum Beispiel wichtig, dass man Vorlesemechanismen unterstützt,
dass man Möglichkeiten zu vergrößern hat,
dass es Möglichkeiten gibt, eine Sprachbedienung zu machen.
Das spielt ja auch für den Benutzungsaufwand
eine Rolle
Dann haben wir die erste Hälfte durchgegangen,
es passte nicht alles auf eine Folie, wir machen weiter mit Security,
ich denke, dazu brauche ich nicht viel zu sagen.
Sie kennen diese CIA-Kriterien, da gibt es extra Vorlesungen dazu,
CIA wäre jetzt also hier die Confidentiality Accountability in Integrity und da gibt es noch die NON-Reducation,
dass man es nicht abstreiten kann und die Authentizisisisierung von demjenigen,
der es getan hat.
Ja, also das sind auch Sachen,
die merkt der Benutzer und deswegen ist das wichtig,
Kompatibilität, wir arbeiten häufig in heterogenen Systemen,
man könnte auch sagen, in der Operabilität,
hier ist es wichtig, hier zeigt sich zum Beispiel,
dass und enorm sinnvoll ist.
Ja, hier ist es ganz klar,
in der Operabilität ist unter der Kompatibilität eingeordnet.
In dem Standard ist es halt so.
Es könnte sein, sie kommen in eine Firma,
da ist man genau anderer Meinung, macht es andersrum.
Aber hier ist es so und man kann sich gut an so einen Standort orientieren,
weil der übergreifend von den großen Playern gemeinsam aufgesteckt worden ist.
Koexistenz, das Nebeneinander, da sie zum Beispiel zwei Mailsysteme haben,
die auf den gleichen Server zugreifen. Und es gibt dabei
keine Probleme oder hier in der Aperabilität war eher so,
dass man die Mailsysteme miteinander, dass man Daten übergeben kann.
Soweit, das sind alles Dinge, die der Benutzer merkt.
Und jetzt kommen wir zu den Sachen,
die die Benutzer, die der Benutzer nicht merkt.
Ich schreibe mal, dass ihr Deutsch dazu Wartbarkeit ist.
Maintainability, der Aufwand für Wartung. Kaufwand, ich schreibe
es gleich mal für Veränderungen. Ich sage gleich mal,
das ist das zentrale Merkmal, was das bei der zentrale Qualitätsziel,
was wichtig ist für Software Reengineering
Dass wir wollen Systeme wieder verändern. Sie erinnern sich,
dass Wartbarkeit das Kriterium war, was im Stage Model dazu führte,
dass man da nach rechts unten langsam langsam wandert,
in den Zustand, wo man nichts mehr ändern kann.
Wartbarkeit ist das zentrale Punkt, weil der Aufwand für Veränderungen
uns daran hindert, evolutionäre Veränderungen zu machen.
Deswegen gucken wir das an, das ist typischerweise das zentrale Medium,
das zentrale Qualitätsziel, was wir bei Wartbarkeit adressieren würden.
Natürlich gibt es auch Wart, Änderungsmaßnahmen für Performance,
Änderungsmaßnahmen für Sicherheit, Änderungsmaßnahmen für Zuverlässigkeit,
alles das gibt es auch,
aber Wartbarkeit ist beim Re-Engineering
das häufigste Ziel
Wenn wir sagen, Aufwand für Veränderungen, dann sind Teilaufwände hier drin.
Wir fangen ja hier an, eine Lizability.
Das wäre sozusagen der Aufwand für das Verstehen. Modifiability,
der nächste Punkt ist dann der Aufwand für das Durchführen der Änderung.
Und Testability ist der Aufwand für das Testen,
ganz klar
So, es gibt noch weitere Qualitätsuntermerkmale, die man hier dazugenommen hat, Wiederverwendbarkeit und Modularität, die eben bei wichtigen Beitrag dazu leisten, dass die anderen Ziele erreicht werden können. Ja,
aber für das Aufwand, für das Verstehen und Aufwand,
für das Durchführen von Änderungen, das sind Punkte,
die eine ganz große Rolle spielen und nur um ein Beispiel,
wir kommen jetzt gleich noch drauf, woran man Schwachstellen sich zeigen,
aber zum Beispiel für das Verstehen ist wichtig,
dass es eine klare Struktur gibt, dass es klare Beziehungen gibt,
dass das Ganze eins zu eins möglichst den Anforderungen der Struktur,
der Funktionalität entspricht, der Anforderungen widerspricht,
und während für Durchführung vor allen Dingen sowas wichtig ist,
wie lose Kopplung,
dass sich eine Änderung nicht so weit auspflanzt.
Das ist der Aufwand, wenn ich eine kleine Änderung mache,
dass sich das ganze System scheinbar zu betreffen habe.
Das spielt eine Rolle. Und Testbarkeit,
wenn die Sachen gut entkoppelt sind,
dass ich also nicht einen gigantischen Testaufwand aufbaue,
erstmal bauen muss, mit einer Datenbank aufsetzen,
eine Netzwerkstruktur aufsetzen, damit ich einen kleinen Test machen kann,
sondern das ist entkoppelt.
Ich kann mit Mockups arbeiten. Das ist auch ein Punkt,
in dem es späteren Teil der Vorlesung nochmal direkt darauf zurückkommen wird.
Soweit, soweit zu Wartbarkeit und ganz wichtig eben,
das ist das zentrale Merkmal
Dann haben wir noch ein achtes Kriterium, die Portierbarkeit,
Portability, von den Maßnahmen des Software-Engineering her, ist das ziemlich ähnlich.
Wir versuchen, Änderungen leichter durchzuführen, aber die Änderungen der Umgebung.
Ja, also hier ist es, ich schreibe das auch
noch mal dran, das wäre Aufwand für Änderungen der Umgebung.
So, und diese Änderungen können wir dadurch erzielen,
dass wir es anpassen können,
dass wir es installieren können oder dass wir etwas ersetzen können.
Das kann man jeweils
einzeln messen
Das Ganze dient dir jetzt ja nur, dieser Punkt,
Qualitätsdiskussion dient dir ja nur dazu,
dass wir darüber reden, was sind denn die Prioritäten?
Wir müssen ermitteln, was sind die Ziele,
die der Auftraggeber möchte und daraufhin sagen, worauf fokussieren wir uns das?
Also diese Fragen zu den, zu den Qualitätszielen, diesen und diesen,
sollten sie natürlich vor allen Dingen mit den Auftrag vom Auftraggeber bekommen,
er muss sagen, wofür geben wir dein Geld aus?
Er möchte ganz wenig Geld ausgeben und sie haben nicht so viele Ressourcen,
nicht so viele schlaue Entwickler, die das machen können und wir müssen uns jetzt darauf kokussieren, was sind denn die wichtigen Punkte?
Und dass, da können wir nochmal alt,
da können wir nochmal hier auf die Fragen schauen,
ja, also das wäre zum Beispiel die Frage, zwei,
nennen sie Qualitätsmerkmale, die beim Re-Engineering adressiert werden können,
das ist vorrangig die Wartbarkeit, Maintainability, aber manchmal auch Performance,
Security, Availability, solche Re-Aarability.
Das können auch Untermerkmale sein, diese Hauptmerkmale,
deswegen haben wir die jetzt hier kurz alle genannt.
So, und das sind natürlich auch dann die Dinge,
die wir hier bei der Frage 3 haben,
welche Qualitätskriterien sollten da auf der Systemebene bedeutsam sein,
na genau die, die mit hoher Priorität sind.
Ja, also wenn für den Auftraggeber es total wichtig ist,
er muss Security erhöhen,
damit er von Visa Zahlungsverkehr machen mit Visa Zahlungsverkehr machen kann oder er muss Security erhöhen,
damit es der Markt besser akzeptiert und damit er auch ein Zertifikat kriegt,
dann werden sie sich darauf konzentrieren.
Aber in ganz vielen Fällen ist es einfach Wartbarkeit. So,
jetzt kommen wir zu den Fragen 4, 5,
6, nämlich quantitative Kenngrößen und das sind,
das ist hier das zweite, zweite Punkt,
nämlich Metriken.
Ja, wir kommen jetzt zu den Metriken
Wir schauen nochmal in die Gliederung. Ja,
wir haben jetzt hier gerade mal den ersten Gliederungspunkt behandelt.
Wir gehen jetzt hier zu niedrig.
Metriken, ich habe es, das stand im Schwarz.
Quentin Taritive. Kenngrößen. Ich gebe diesen Namen als Synonym an,
oder vielleicht könnte man auch noch das so machen,
recht wirklich Synonym.
Der Begriff Metriken hat sich etabliert
Unter Informatikern, die sagen, ja, alles,
was ich messe, das ist jetzt eine Metrik,
aber jeden Physiker oder Naturwissenschaftler rollen sich da die Fußnägel hoch.
Eine Metrik ist etwas, was unbeeinflusst von anderen ist. Ja,
es gab, wenn sie die Physik verfolgt haben,
dann wissen sie vielleicht, wie man das mit der Masse macht,
so anfangen mit und dachte, Masse ist etwas,
das hängt von nichts anderem ab.
Das ist so eine Grundbasis, es ist eine Metrik,
seit der Relativitätstheorie von Eintwort Einstein, weiß man,
das ist sehr wohl, wenn das andere eigentlich nicht von der Geschwindigkeit.
Also deswegen etwas nahe in der Lichtgeschwindigkeit hat, eine unendliche
Masse nahezu unendliche Masse. Und so sind die Sachen,
müssen die Sachen eigentlich unabhängig sein voneinander. Und wir werden gleich merken,
wenn wir uns damit beschäftigen, was man so messen kann,
dass die Sachen bei Leibe nicht unabhängig sind.
Deswegen ist es besser zu sagen, ja,
es handelt sich hier um quantitative Kenngrößen.
Das wäre der bessere Name. Nur dummerweise hilft mir das nicht.
Also wenn ich mich als Matthias Riebisch hinstelle und sage,
liebe Leute, das heißt qualitative Kenngrößen,
mein direktes Umfeld akzeptiert das nach einer Weile vielleicht,
die werden aber nicht vollstanden von anderen.
Der Name Metriken ist nun
mal etabliert
Sollten es besser wissen, sollten sagen, okay, eigentlich geht es,
es sind gerade mal Kenngrößen. Ja, also Kenngrößen bedeutet,
ich messe es nicht wirklich, sondern ich habe einen Indikator dafür.
Das ist ungefähr so, wie diese Statistiken, die sagen, ja, Rotweintrinker leben länger. Ja,
das kann auch in der Stichprobe liegen, dass sie sagen,
ja, okay, ein Trinken von Rotwein ist ein Indiz dafür,
dass jemand vielleicht besser lebt, aber nicht viel hilft,
viel, viel Rotwein, gleich langes Leben,
sondern vielleicht einfach nur, er gehört zu einer Gesellschaftsschicht,
die sich bessere Gesundheitsvorsorge leisten.
Oder die gesünderen Berufen arbeitet
Weil er einfach zu ihrem oberen Gesellschaftsschichten gehört,
die einfachen Leute trinken Bier und Schnaps. So,
und deswegen ist dieses Rotweintrinken eigentlich gar nicht der Indikator für Gesundheit,
sondern der nur der Endikator für die Lebensschichte, für die Gesellschaftsschicht.
So ungefähr ist das mit den Kenngrößen auf.
Wir müssen sehr genau aufpassen, was messen wir hier?
Viele Sachen sind gar nicht so wirklich zu messen.
Schauen wir uns das mal mit den Metriken an.
Und wir gehen hier gleich dazu, wie man zu
den Metriken kommt. Sachen, die wir messen können,
sind meistens Sachen, die man zählen kann.
Ja, vielleicht, ne, ich mache erst mal,
bleibt man noch mal bei dem Schriftlichen.
Und zwar gibt es
sogenannte objektive und subjektive Metriken
Bei Objektiv ist schon klar,
das hängt nicht von Personen ab, das ist gut messbar.
Die Interpretation ist aber schwierig. Es gibt keine klaren Schwellwerte
Subjektive Metriken sind genau das Gegenteil. Sie sind klar,
was die Aussage betrifft. Also zu den Zielen,
was Qualitätsmerkmale betrifft.
Also gut interpretierbar
Und die Messung, das schreibt mir groß. Die Messung
ist aber sehr auf die Personen bezogen. Hier ist wieder
mein Bierchen störend, das machen wir mal einfach klar,
was Sie wissen, wie ich aussehe. Ja,
also dieses, das ist der Punkt, wo wir sagen,
okay, es gibt die Objektive und subjektive Metriken.
Gut, messbar heißt auch einfach messbar.
Ja, und das ist das, was wir wollen.
Wir haben nicht so viel Zeit. Ich möchte mal erinnern,
was ich gerade vorher sagte, bei den Zielen.
Wir müssen uns relativ schnell entscheiden, wo machen wir denn jetzt was?
Und da kann man kein ewiges Metriprogramm aufsetzen,
sondern wir möchten mal, es muss auf Knopfdruck und sagt,
dort und dort sind diese 20 Prozent schlechten Kandidaten.
Ja, und deswegen brauchen wir die Metriken,
die für eine relativ pauschale, globale Bewertung aufs System eben.
So, wie gehen wir dabei vor? Dabei gehen wir so vor,
dass wir uns von den Zielen von den Zielen ausgeben.
Ja, also wir starten hier links bei den Zielen
und versuchen dazu zu kommen, Metriken aufzustellen.
Ich habe das mal hier für ein konkretes Beispiel gemacht.
Dafür gibt es keine vorgefertigte Lösung. Das ist ganz ihrer Kreativität zu überlassen,
aus den, ich sag mal, sie haben ein Metrikpaket gekauft,
ein Software-Poket-Pragramm, das bietet eben tausend Metriken.
Und nun müssen sie rauskriegen,
welche von den tausend sind es denn und das,
was wir hier sagen, das sind ja typischerweise,
die sind gut messbar, das liefert das Metrik-Tool,
aber es gibt keine klaren Schwellwerte.
Und dann müssen sie sagen,
was ist denn jetzt gut und was ist denn jetzt schlecht?
Als Extrembeispiel möchte ich ihn mal nennen,
Lines of Gut
Das ist so das, wenn ich jemanden nach mittrigen frage,
kommt immer Lines of Code. Ja, was sagt mir denn,
wie will Code sein, dass sie an seiner Code sein?
Klar gezählt, man zählt die Carrisha Turns im Text.
So, aber was sagt mir das? Ist viel schlecht,
ist viel gut, wie ist das mit Wortbarkeit,
hat das irgendwie irgendetwas damit zu tun?
Ist ein großes Programm automatisch schlechter, ist Microsoft Office Word,
ist das automatisch schlechter als ein Text Editor,
nur weil es mir
ein Zeil enthält
Nein, beileibe nicht. Es kommt darauf an,
wie denn, wie denn das korreliert mit anderen Metriken.
Es kann also zum Beispiel, das kann...
Hier gibt es keine richtige Aussage über Qualitätsmerkmalen.
Ja, das ist ein Extrembeispiel. Ja,
das muss man gerne rot, damit sie das alle,
damit ich von keinem von ihnen der Prüfung höre,
Metriken, Lines of Code wäre.
Tolle Sache für Qualität. Ja, also das ist jetzt
das Extrembeispiel. Vielleicht schreibe ich immer noch davor
extremes Beispiel
Extremes Beispiel 1 of Good. So, genau,
wir haben aber das, was typischerweise die Metriken lief,
Metrikprogramme liefern, sind gut messbare Metriken und wir müssen jetzt sagen, welche helfen uns denn.
Zu den Subjektiven sagen wir auch gleich noch was. So,
was ich Ihnen vorschlage, ist ein zielgerichtetes Vorgehen,
wo man startet mit einem Qualitätsziel,
nehmen wir mal an, das wäre der klassische Fall,
wir wollen Schwachstellen im Kurt bezüglich Wartbarkeit finden und sagen,
okay, es kommt jetzt darauf ein,
dass das System verständlich ist, dass es für den Verstehensaufwand wichtig
Und dass es strukturiert ist für den Aufwand von Veränderbarkeit
oder auch das Verstehen spielt eine Rolle.
Ja, und dann sagen wir, okay,
wie können wir denn das verfeinern, dass wir solchen Metriken hinkommen?
Und da ist eine Idee, dass wir Entwurfsprinzipien als Verfeindungsstufe nehmen.
Zum Beispiel das Entwurfsprinzip Modularität, das kennen Sie alle,
ich fasse Einheiten zusammen zu einem, alles, was zusammengefasst, zusammengehört, wird zusammengefasst.
Und dann kapsle ich das noch. Ja, so,
und da wäre gut, in Kapselung eine wichtige Entwurfsregelschmale,
Schnittstellen, ungeringe Kopplung zwischen Modul. Außerdem sage ich mir,
okay, ein Entwurfsziel, was hier die beiden Sachen unterstützt,
ist Abstraktion, wenn ich die spezielleren Sachen verpacke und verschiebe zu speziellen Einheiten,
zum Beispiel, wenn ich Vererbung nutze oder Interfaces oder sowas,
dann trage ich bei zur Kupplung auch bei.
Und hier kommt es auch darauf hin, dass ich
schmale Schnittstellen habe. Das ist hier so ein Punkt,
hohe Koalition, diese abstrakten Schnittstellen können dich verwenden.
Und vielleicht, dass ich vor Erbung sage, okay,
es rede wirklich ein Ziel. Sie wissen alle,
Vererbung ist nicht ganz unproblematisch, aber nehmen das auch.
Und natürlich wird es mir helfen beim Viertelsverstehen,
wenn das Ganze einfach wäre
So ein Sprichwort, das wird einfach einstellen zugeschrieben,
lasst uns die Dinge einfach, so einfach machen wie möglich, aber nicht einfacher.
Also mit der Einfachheit hat er so eine Sache,
manche Sachen sind einfach komplex, aber wir möchten keine zusätzliche Komplexität haben,
wie er Menschen nur hinzugefügt hat,
weil er noch was drumherum gebaut hat.
Ja, sondern nur die Komplexität,
die wirklich nötig ist, weil die Aufgabe sie erfordert.
Und diese Komversität können wir messen im Sinne von Struktur von Klassen
, von Methoden, von Verbindung. So,
und da haben wir tatsächlich dann,
wenn wir das so weit getrieben haben hier,
dass wir das auf ein Buchswebeln runterbesetzt haben,
wir haben bei sowas ganz allgemein wie Wirkbarkeit gestattet,
dann sind wir in der Lage hier tatsächlich ein paar Metriken aufzugeben,
die wir aus unserem 1000 Metriken,
unseres Metrikpakets auswählen
Und diese Metriken können uns dann helfen, zu sagen,
ja, wie sieht es denn aus?
Typischerweise fragt man deinen Experten, die dann sagen,
wo würdest du denn die Grenze ziehen?
Wo würdest du denn den Schwellwert nehmen? Was ist denn
die Schwelle für öffentliche Methoden? Wie viel sollte man denn
maximal haben, damit man das noch als gut gekapselt betrachtet?
Oder wie viele Parameter wollen wir denn maximal heben?
Also wir versuchen hier zu minimieren, zu minimieren, zu minimieren.
Ja, hier versuchen wir mal die Referenzen zu abstracken lassen,
zu maximieren. So weiter. Und nun,
diese Lines of Code pro Methode, das ist tatsächlich,
hier kommt mal Lines of Code drin, aber pro Methode.
Das heißt, wir wollen eigentlich nur nicht so große
Methoden haben
So, und diese ganzen, die Abkürzung zu L kommen,
kommt jetzt gleich noch, diese Metriken können uns dann helfen,
als Indikator zu dienen für Wattbarkeit.
Das bedeutet nicht automatisch, wenn ich irgendwo ganz viele öffentliche Methoden habe,
ist das Ganze schlecht. Es könnte ja eine Versagenlasse sein.
Aber es ist ein Indikator dafür, dort mal genauer hinzuschauen.
Das ist ja das, was wir am Ende wollen.
Wir wollen die 20 Prozent Problemkinder rausbekommen, für die wir uns,
auf die wir uns konzentrieren müssen mit unseren wenigen Ressourcen.
Die schauen wir uns genauer an und vielleicht bei denen investieren wir
tatsächlich Arbeit, um diese zu restrukturieren, zu überarbeiten.
Wenn wir Bevor ich zu dem Beispiel komme,
lassen wir uns noch mal kurz zu den Fragen zurückspringen,
dass wir nicht verpassen, die zur Verhandlung zu ändern.
Ja, also wir wollen hier die Frage 4,
was sind qualitative Kenngrößen, die Indikatoren bilden?
Ja, Indizien. Ja, und diese qualitativen Kenngrößen
sind halt welche, die wir von irgendwas ableiten.
Und ableitend darauf zu zielen. Und jetzt hier diese Frage
zum Beispiel, das war in dem Beispiel drin,
was trägt denn so Strukturiertheit bei, was trägt zur Verständlichkeit bei?
Das sind Sachen, die Sie aus diesem Bildchen eben
entnehmen können
Ich möchte Ihnen jetzt ein Metrikbeispiel vorstellen, dieses Metrikbeispiel ist schon etwas älter.
Sie sehen hier die Jahresangabe 1994. Es gab tatsächlich das Vorläuferpaper
von den beiden Autoren, ist 1991 geschrieben worden.
Und das war ein Punkt, wo man sagt, okay,
wie leite ich das denn ab? Hier gibt es vom letzten,
von vor zwei Jahren eine sehr gute Seminararbeit,
wo das genauer erklärt wird, das,
was ich hier dazu sage, können Sie da wunderbar nachlesen.
Diese Seminararbeit finden Sie bei den Materialien zur Vorlesung. Ich möchte die kurz durchgehen,
wo man hier einfach diese Metriken mal darstellt und die zwei Abkürzungen, CBO,
Und LCUM haben sie vom vorhergehenden Bild dann hier erklärt,
also ihr habt mir das CBO und hier war das LCUM.
Also white it methods per Class, das nimmt man wie
viele Methoden sind pro Klasse und man zieht schnell das ins Verhältnis.
Die Länge des längsten Pfades der Vererbungshierarchie, das ist,
sie können sich vorstellen, das möchte ich minimieren.
Ich möchte so eine furchtbar tiefe Vererbungshierarchie, möchte ich eigentlich nicht.
Nicht null, aber nicht so furchtbar tief.
Wie viele Abhängigkeiten finde ich zwischen den Klassen?
Das möchte ich auch versuchen zu verringern, weil das sind die Dinge,
wo ich sich in der Änderung ausbreite. Ja,
das war also jedem vorhergehenden Beispiel, CBO,
das war vor allen Dingen für die geringe Kopplung wichtig,
ja, aber es spielt auch für eine Rolle für die Komplexität der Verbindung,
also für Einfachheit und für Modularität spielt das beides eine Rolle.
Dann die Anzahl der direkten Zugklassen in der Vererbungshierarchie,
je mehr ich dort habe, desto klarer ist das gekoppelt,
auch wenn es zu viele sind, ist vielleicht auch die Frage,
ist das denn wirklich noch gut?
Jedes Metri, das ist so ein klarer Punkt,
wo man sagen kann, nur die eine Zahl,
wenn die schlecht ist oder gut ist,
besagt das noch nichts,
ich muss es im Zusammenhang sehen,
also das Ganze gewichtet
Wir können schnell sagen, so ganz automatisch auswerten, wenn ich das nicht kann.
Und jetzt Response for Klaas ist ein bisschen komplizierter,
von der Formulierung her,
die Anzahl der Methoden einer Klasse und die daraus aufrufen,
Methoden anderer Klasse, das ist die Zusammenhang zwischen,
wie häufig werden die denn aufgerufen, wo dann mangelnde Korresionen,
ja, man sagt, wie unterschiedlich sind denn die Methoden.
Man kann natürlich nicht sagen, eigentlich würde Korresion ja bedeuten,
die haben viel miteinander zu tun. Und wenn die Methoden
viel miteinander zu tun haben, das bedeutet es diesen fachlich ähnlich.
Aber diese fachliche Ähnlichkeit, Das wäre jetzt so was Subjektives hier.
Wie sind denn Sachen fachlich ähnlich? Das wäre total gut
, diese Zahl zu haben. Aber,
weil das hat direkt was damit zu tun, je gut,
je besser das fachlich gegliedert ist, wunderbar hervorragend.
Aber, ob etwas fachlich zusammenhängt,
das hängt sehr auf wieder Personen ab, die es bewährt hat,
jemand, der das Fachgebiet so einschätzt und jemand anzieht,
das Fachgebiet so, dann sagt der eine hat das,
ja, beides speichert.
Und der andere sagt, nein, das andere sind,
das eine sind Bewegungsdaten, das andere ist ein Stammdaten.
Das sind ganz unterschiedliche Meinungen. Und deswegen, wenn sie da
die falsche Person haben, kommt ein anderes Ergebnis raus.
Obwohl das sacher, fachliche Bewertung total gut wäre.
Was wir also machen können, ist, wir können das machen,
und das wäre jetzt hier, indem wir nur zählen,
wie unterschiedlich sind die Methode in ihrem Zugriff.
Und das ist, mir folgt man in dieser Form.
Leider haben wir nicht so viel Zeittag, genau darauf einzugehen,
was ich Ihnen damit vermitteln möchte, ist erstens, dass es richtig arbeitet.
Sie müssen also, um sowas aufzustellen,
wirklich sich konzentriert daran machen und das sinnvoll zu verfeinern,
dass sie am Ende hier zu sinnvollen Schlüssen kommen,
aber wenn sie die haben, müssen sie selbst noch schwer werden dazu festlegen.
Und das kann man häufig machen, indem man vergleicht,
das sollte eigentlich nicht klingeln. Wenn man einen Vergleich hat
zwischen zwischen den verschiedenen, zwischen guten und schlechten Beispielen.
So, das wäre ein Punkt, den wir für Metriken machen.
Damit haben wir die Fragen, die wir hier zur Wiederholung
hatten, auch beantwortet und können diesen kleinen Abschnitt beenden