Nachdem wir beim ersten und zweiten Teil uns über Fehlervermeidung und das Vertragsmodell
unterhalten haben, schaue ich sage mir nun etwas dazu,
wie das Vertragsmodell im Jabber aussieht.
Bei dem Vertragsmodell im Jabachen wäre hier die Frage 5,
wie sollte das umgesetzt werden? Grundsätzlich muss man mal sagen,
so toll wie das Vertragsmodell ist,
und ich hatte ja die Sprache Eifel genannt,
wo das unterstützt wird,
in Jabba gibt es leider dafür seitens der Programmiersprache
keine Unterstützung
Das heißt, keine Unterstützung heißt nicht,
dass man es nicht machen kann, aber es bedeutet,
dass Vor- und Nachbedingungen in Varianten in der Sprache selber nicht vorgesehen sind.
Es gibt da keine Syntagselemente, wie inzwischen Pre-Codition und Post-Condition,
wie das in der Programmiersprache eifel ist.
Wenn man überlegt, wie wichtig das doch sei für fehlerfreien Behandlungen,
fragt man sich, warum ist das so?
Und James Goesling hat mal in einem Interview gesagt,
einer der Designer der Sprache.
Ja, sie wollten das irgendwie zu Anfang machen,
aber viele Programmierer haben das nicht verstanden.
Das war ihnen zu kompliziert. Und da hat er
etwas dann nicht gemacht
Später war es dann schwierig, das noch einzusetzen,
nachdem die Sprache einmal etabliert und in der Welt war.
Tatsächlich muss man sagen, und das ist,
was weiß ich, persönlich für einen Kollegen gehört habe,
wie ich es ja von mir schon erwähnt habe,
Programmiersprache für Eifel, ist nicht sehr weit verbreitet.
Sie wird mit wenigen Softwareprojekten eingesetzt und mir wurde er gesagt,
dass in manchen Projekten von diesem Pre- und Post-Conditions,
von den Programmierern, auch wenn es das in der Sprache gibt,
muss er wenig gemacht wird.
Das hängt also ein bisschen davon ab,
wie wichtig das den Programmierern ist,
wie wichtig das für das Scottlegeprojekt ist
Damit, dass wir, das sage ich so ein bisschen als Trost,
auch wenn das in der Programmiersprache Elfel eben eingebaut ist,
bedeutet es noch lange nicht, dass die Leute das machen.
Und wenn es hier im Java nicht eingebaut ist,
bedeutet es noch lange nicht, dass man es nicht macht.
Ja, man kann das tatsächlich machen. Und zwar kann man
das dir in dem Fall machen, dann nehmen wir das Selbstprogramm technisch umsetzt.
Selbstmachen bedeutet natürlich, wir müssen Disziplin ausüben.
Oder in einem Projekt müssen alle darüber auf Dachwürde einstimmen,
dass man das macht. Und zwar gibt es die Anweisung,
das schlimme Wort Serd ist hier erst hilfreich, ist sehr, sehr hilfreich.
Dafür müssen wir dazu sagen, dass es normalerweise nicht aktiviert ist. Wir müssen erst einschalten,
indem wir bei der virtuellen Maschine das Argument Enable Assertions Act dazugeben,
über die wir in Maschine starten,
EA heißt der Schalter dazu, auf der Kommandozeile,
bei dem Eclipse, was ihr das in den Einstellungen.
Wenn wir das manuell umsetzen von Handumsätzen, ist es also wichtig,
dass der Programmierer das versteht, und deswegen ist das so wichtig,
dass wir das klar beschreiben, also das ist ein Punkt,
wir verlagern diese Aufgabe vollem Programmiersprachanweisung in die Dokumentation die Überprüfung können wir dann durch Behilfe der Programmiersprache tatsächlich nicht machen.
Der erste Teil, Dokumentation, wir machen das in einem Schnittstemm-Kommentar,
das heißt, das Stück Kommentar,
was vor einer Schnittstelle steht, was die Schnittstelle beschreibt,
da schreiben wir das mit rein, was ist denn dafür wichtig.
Ich glaube, es war diese Folie hier genau der Dienstleister,
wir erinnern uns, dass der Dienstleister ja Informationen über den Vertrag enthält,
zum Beispiel Informationen über die Vorbedingungen.
Und deswegen schreiben wir das in den Schnittstellenkommentar des Dienstleisters mit rein,
damit die Vertragsinformation für den Tilienten erfolgreich ist.
Das ist die Dokumentation des Vertrages, also die Verpackung ist da in den Kommentaren.
Und zur Prüfung, das können wir machen,
indem wir bei der Implementierung der Methode dazuschreiben, Vorbedingungen prüfen,
das machen wir mit dem Schlüsselwort in Sird und für die Nachbedingungen machen wir vor dem Return eine Prüfung.
In Varianten gehen meistens nicht so,
sondern das können wir nur im Klassenkommentar darstellen
Dieses rote Ausrufezeichen sagt uns, okay, irgendwas ist hier nicht so ganz toll.
Und der Nachteil dieses Vorgehens ist natürlich, wir packen das nur in die Dokumentation.
Wenn jemand irgendwie ignorant ist und das gar nicht liest oder es nicht versteht,
ist das Risiko, dass er später in Änderungen,
wir meistens nicht im Zusammenhang mit Entwicklungen passieren,
sondern irgendjemand später macht da was rum,
dass man das dann irgendwie aufweicht, das Gegenteilige macht und sowas.
Jedenfalls, dass es so inkonsistenzen kommt. Und sei es nur,
sich inkonsistenzen zwischen Kommentar und Programm text. Das ist eine sehr große Gefahr,
dass man das dann falsch versteht, also wenn vorne steht,
Die Summe berechnet sich aus Atmungs teil und im Kommentar steht,
es wird zwei addiert, dein Läden lesen alle Leute erst mal den Kommentaren,
so, ach, so ist das.
Und dann gucken sie nicht mehr ins Programm an,
weil das ist der Kommentars für Insolvention, als natürliche Sprache besser zu verstehen.
Also wenn hier Programmwechsel im Kommentar, was unterschiedliches sagen,
ist das so ein bisschen noch schlimmer, als wenn es kein Kommentar gäbe.
Ja, wir sagen ja immer, Kommentar ist gut,
aber unter anderem wegen dieser Gefahr der Innenkonsistenzen ist ja auch ein zu viel in Kommentargeschichten.
Aber hier geht es darum, dass wir hier nur
die Möglichkeit haben, dass im Kommentar in der Dokumentation unterzubringen
Das wäre wieder der Punkt, das ein bisschen nachterlich ist.
Wie können wir das machen? Wir haben die Möglichkeit, Javadok zu benutzen.
Javadok ist ja im Framework ein Tool, was uns ermöglicht,
Schlüsselwörter zu formulieren, wie dann in der Dokumentation aufgenommen werden.
Und das wäre in dem Fall eine Möglichkeit,
die Vertragsinformation über den Dienstleister, bei der Klasse des Dienstleisters,
für den Klienten darzustellen und sie vorbedienen, den Nachfolger dienen Variante.
Sie erinnern sich vielleicht vom letzten Semester in SE1,
das Javadok aus quältigsten HTML-Dokumentationen herstellen, viele Programme, viele Projekte setzen sowas erfolgreich ein,
um ein Internet als Dokumentation, erst mal vom Windokumentation zu haben.
So, wir wollen also beim Dienstleister diese Vertragsinformationen reinschreiben und das geht mit dem Javadox und Cuire,
mit dem Javadox Text, Macquire in den Chur,
in den Vorbedienungen, die Nachbedienungen darstellen, zum Beispiel,
wir wollen in eine Liste suchen,
gibt es da halt nur die Artikel und Wir prüfen,
wir haben die Vorbedingungen, die man enthält,
diese Artikel nicht.
Und nachbedingung, ihr enthält die Artikel.
Und das wäre vorbedingt nachbedingt, nämlich sehr einfachen Fall.
Wir werden uns über Übung da genauere, schwierigere Fälle anschauen.
Das war die Dokumentation nun zu der Überprüfung. Die Überprüfung
müssen wir versuchen, mit dem Fehlermechanismen von Java zu machen.
Die Fehlermechanismen, Java sind normalerweise dessen, den Septches.
Und das wäre zum Beispiel, dass wir die Möglichkeit,
dass wir Eine Contract-Klasse entwickeln für das Wann.
Freiburg wäre zum Beispiel wieder ein Konjekt mit Wann machen,
mit dem Vertrags- oder wo es jetzt die Werkzeug-Automaten material,
Metapher, Wann eingewendet wird, wäre es zum Beispiel möglich,
dass man das für eine Kontraktklasse hat, die von ja dann weitere Sachen abgeleitet sind.
Da könnte man zum Beispiel zu Require formulieren. Wenn das
die Oberklasse für alle Sachen ist, wunderbar, einheitliche Darstellung,
aber dann könnte man das nicht so richtig leicht entfernen,
weil es halt da drin steht
Der zweite Punkt, was möglich wäre, dass man es dezentral macht,
das ist das erste der zentral in einer gemeinsamen Oberklasse.
Und das Dezentrale wäre überall dort, wo man es braucht,
man könnte eine Sird-Einweisung machen. Ja, also Sird war diese Prüfung,
ja, das ist sehr knapp, man kann nicht,
zur Laufzeit kann ich das eben auch abschalten,
aber die Nachteile, Weitbescheiden ist halt,
das einschalten könnte, vergessen sein.
Und nochmal zur Erinnerung, Sie müssen das mit erstem KIA,
würde ich Bescheid da Ihre Arbeit so einschalten,
dann würde ich das überhaupt dazu.
Schauen wir uns an,
wie diese Asserd-Anweisungen gelaufen sind
Es gibt zwei Anweisungen, zwei Typen. Und zwar einmal,
wo wir nur die Prüfung dahinter haben,
es hören und die Prüfung sind die Cola.
Und das zweite, es hört die Prüfung,
dann ein String oder eine andere Anweisung auswahlen, die ausgeführt wird.
Und dann das Sinn. Ja, das zweite können wir immer dann verwenden,
wenn wir beim Vertragsmodell auch etwas sagen wollen. Ja,
das Training, der liefert euch im Fehlertext und diesen Fehlertext,
den können wir wunderbar nutzen, um den von dem Klienten Programmierer,
das vielen beim Testen zu informieren, ohne Geist.
Das und das sollte jetzt anders sein.
Beim Würfel ziehen wollen wir keine Zahl,
die negativ ist als bekannt oder beim Konto darf das nicht aufgerufen werden,
wenn derjenige gar kein Konto bei uns hat oder irgend so was.
Und wir haben ein Beispiel dafür für die Kontoklasse. Ja,
ich möchte einen Betrag einzahlen und der Einzahlungsbetrag sollte halt konserviert sein.
Ich kann einen Schuben übergeben und Vorbild in der Künde waren zum Beispiel sagen,
hier, die dürfen in der Vorbedingung und dann kommt ein Textentag verletzt,
der tragt größere Hunde.
Als weiterführendes haben wir jetzt hier eine Folge,
die das genau mit, wie Sanders sieht.
Ich möchte sie darauf hinweisen
Hier haben wir so einen kleinen Keks, der soll heißen,
für die Cracks, wenn sie immer mit diesem Keks sehen,
geht es in eine Folie, die weiterführend ist, umher enthält.
Und wir behandeln das so, dass wir die in der
Folievorlesung nur so rudimentär behandeln. Sie können sicher sein,
dass sie nicht in der Prüfung drankommt,
aber sie ist doch seit ihm Einstoß geben,
wenn sich dann Kapazitäten haben, Interesse haben,
sich generell damit zu verschäftigen.
Hier geht es darum, wieso denn von der Asseur-Abweisung
bei Sun abgeraten wird. Das ist ganz gut,
solche Argumente zu kennen, damit man diese in der Diskussion
mit Kollegen mit Programmierern
auch mal betrachten kann
Unsere Empfehlung ist, man sollte immer die Ässöteinweisung verwenden, damit man Kontrolle hat.
Und dass man das Vertragsmodell vor allen Dingen eben während der Entwicklung benutzt,
dass man das vielleicht nicht mehr so sehr benutzt,
wenn die Software im Betrieb ist,
weil das nicht mehr dann so gut ist,
wenn dann Fehler auftreten.
Wenn diese Fehler auftreten, dann diese Fehler typischerweise als Exceptions in Jahrwahl
dargestellt und behandelt und diese Exceptions sind dann die Vertragsverletzungen.
Das ist ein Programmierfehler und deswegen sollte,
wenn das wirklich, wenn da was passiert,
sollte,
eine Reaktion passieren
Eine Reaktion bei fehlenden Zuschlusssicherungen im Bereich Vorbedingungen, aber auch im Bereich Nachbedingungen ist so,
dass man da eigentlich als Entwickler nichts mehr machen kann.
Dann ist das nicht erfüllt, aber es muss irgendwie ein Programm,
wie nicht auch was Schlimmes passiert sein,
dass also der Klient, obwohl er geprüft hat,
dass er die Vorbildung wirklich auch ausführt,
tatsächlich eine Aufrufbestelle hat des Dienstleisters,
ohne die Vorbedingungen vorzuholen für irgendwie nicht erfüllt hat,
da ist Göttingens faul und da kann man auch nicht machen
Ja, in Ausnahmefallen, Fällen tritt es auf,
das in der Vorbedingung liegt ja schön, die Vorbedingungen nicht liefert,
dann kommt diese Acception oder wenn der Dienstleister die Nachbedingungen,
die in Variante folgt, dann wird er auch zum Fussel im Seption 7.
Und das wäre dann das Mittel, um das zu ermitteln. So,
als kleine Zusammenfassung, wir haben jetzt diskutiert,
dass dieses Vertragsmodell eine Abbildung ist, ja, realen,
fünffachen, irrealen Verträgen, im Sinne von Arbeitsteilung,
in dem Fall zwischen Aufrufer,
destriktierend und demjenigen,
der aufrufen wird,
der hinlässt
Dienstleister. Diese Vorbedingungen und Randbeugen sind beim Dienstleister erfüllt,
also an dieser Klasse selber. Wir schauen nochmal hier,
dieses Bild zeichnet das. Also hier steht drin,
die Vorbedingungen, hier steht die Nachbedingungen drin.
Und das sind Vertragsrelevante Sachen. Also sollte nicht anders sein,
lieber das jetzt dargestellt, sondern das ist möglich für den Vertrag.
Soweit dazu und weiter wird es dann gehen mit den Testen