Das nächste Bestandteil, den wir brauchen, um guten Entwurf
zu erreichen, sind klare Zuständigkeiten. Wieder das Gleiche,
was ich eben schon gesagt habe, Menschen sollen das gut verstehen,
sie sollen wissen, was gehört wozu,
weil dann nach einer Änderung immer klar ist, was gehört denn,
wenn ich etwas ergänze, wo muss ich das hintun?
So wie wenn sie zu Hause aufräumen und sagen, jedes hat seinen Platz.
So soll ein fachlichen Entwurf, auch in großen Systemen,
alles seinen Platz haben und das ist am besten Zuständigkeit. Wir lassen uns versuchen,
dass lassen uns versuchen, das klar zu machen,
Responsibility heißt das auf Englisch und wir wollen nicht einfach nur Sammlungen machen,
irgendwie alles zusammen, schön objektorientiert mit Kapsel drumherum,
Nein, wir sollen Sachen zusammenkapseln, wird die gut zusammenpassen,
die wirklich eine gemeinsame Aufgabe haben.
Und nicht nur, weil sie miteinander zu tun haben. Das heißt,
wir packen dieses enge Kopplung, eine lose Kopplung,
enge Kuhision, noch etwas weiter, weil wir sagen,
das, was eng zusammengehört, was gleiche Zuständigkeiten hat,
was das hat auch auf jeden Fall eine enge Kopplung.
Und deswegen versuchen wir, Aufgaben zu identifizieren. Tatsächlich ist das,
obwohl es so simpel klingt, etwas,
wo man eine Weile darüber diskutieren muss und wo die Anmeinungen auch auseinandergehen,
deswegen ist es gut,
mit Kollegen das zu diskutieren und zu sagen,
was ist denn hier ein gemeinsames Prinzip,
Was ist denn mir eine wirklich gute fachliche Klasse?
Was ist eine wirklich gute Komponente, die eine abgeschlossene Einheit darstellt?
Bin ich noch vermischt mit allen möglichen anderen?
Das brauchen wir in den beiden Märkten in ganz vielen Sachen,
ein gutes Service, eine gute App, hat eine konkrete Aufgabe,
möglichst eine und nicht alles mögliche, für eines ist sie zuständig.
So, wir haben also dieses Prinzip,
auf Englisch heißt das Separation of Concerns,
das ist dein Extra, das ist einer der alten Herren,
der Vorkämpfer der Informatik,
der Software Engineering,
die das gemacht haben,
lange vor der Objektorientierung und wir verwenden das
Und zwar waren wir als so eine Möglichkeit in unserem Beispiel auch.
Nehmen wir mal an, wir wollen ein System in unserer Mediathek,
wollen wir etwas Neues hinzufügen. Wir wollen vormerken einführen.
Eine neue Funktion, die es vorher irgendwie noch nicht gab.
So und alles ist schon klar, das sollten in die
Gui das reinpacken, einen Button und so weiter.
Aber wo packen wir diese Informationen hin? Sie wissen schon,
Material hat was mit Wangen zu tun, aber wo gehört das zu?
Machen wir da was ganz Neues,
die Vormerkung oder packen wir das so ein,
der fachlichen Objekte,
die wir schon haben
Und das können wir zunächst erst mal anfangen und sagen,
okay, da gibt es ein Werkzeug. Neuer Tätigkeit,
neues Werkzeug, Vormerkzeug, Merkwerk vor, Werkzeug zurück.
So, und das Vormerken, womit hat das zu tun?
Hat das mit dem Verleihen zu tun? Ja, und
das Verleihen hat mit Verleihenkarten zu tun. Sollte mir hier
eine Vormerkkarte machen, ja, das wäre durchaus denkbar.
Um sowas zu verstehen, um das richtig zu machen.
Oder vielleicht gehört das ja auch ganz woanders hin. Hat diese Rebecca Dovsburg,
die auf zwei vor den vorher schon da stand,
hat sich zum Beispiel so ein Schema ausgedacht,
Dieses Schema erinnert an Karteikarten, ein Zettelchen, mit dem man das notiert.
Sie haben vielleicht sowas mal gemacht im Vokabeln zu lernen.
Solche Kerzen macht man auch, um Sachen zu strukturieren,
um Arbeitsorganisationen zu machen. Es gibt ja heute so ganz tolle Blocks,
wie man seine Arbeit organisiert, wie man seine Wohnung aufwandt und wie auch immer.
Also damit kann man sich besser organisieren.
Das wollen wir ja mit Softwaresystemen auch machen. Klaas,
Responsibility, Collaboration Cup, mit CRT-Karten ist eine Methode.
Da gibt es ein nettes Buch drüber. Man kann
diese Methode gut anwenden, um ein gemeinsames Verständnis über die
Vorgehensweise in einem Team
zu machen
Sie können es natürlich auch aus ihrer Erfahrung heraus schöpfen.
Aber dann ist es schwierig, anderen zu erklären,
es ist sehr viel besser, so eine Methode zu verwenden,
um das eine ziemliche Erklärung, wie arbeiten wir jetzt gemeinsam.
Dieses THC-Methode möchte ich Ihnen deswegen hier nur ganz,
ganz kurz vorstellen, man nutzt Karten,
um zu sagen, wofür ist etwas zuständig.
Ja, ich gebe zunächst erstmal einen Namen, der einen
guten Begriff darstellt, einen wichtigen Begriff aus dem Anwendungsgebiet.
Und dann sage ich, was soll denn das Ding machen?
In dem Fall eine Klasse oder eine Komponente.
Welche Dienstleistung? Für wen soll das alles das machen?
Ja, und dann soll ich sagen,
womit soll es denn
auch noch zusammenarbeiten
Sie das auf dem Satz von Karten geschrieben haben,
dann haben die schon viel weniger, als wenn wir diese tausend Seiten Textbeschreibung haben,
dann haben wir vielleicht nur noch 70 Karten.
Ja, und 70 Karten sind immer noch viel,
vielleicht können wir sogar noch ein paar zusammenpassen, das ist nur noch 50.
Und dann haben wir die Chance, dass wir Teilbereiche zu
schönen Modulen zusammenpacken und dass ebenfalls Zuständigkeiten festlegen. Ja,
so hier nochmal das Literatur, die Literatur dazu,
Sie sehen eine Jahreszahl,
die Leute haben sich schon lange Gedanken gemacht und daran,
dass wir Ihnen das heute noch empfehlen,
können Sie es sagen,
wenn Sie es daraus ablesen,
das ist sehr bewährtes Wissen ist,
was sich nicht erläutert
Um mal ein Beispiel zu zeigen, wie so eine Karte mal aussehen könnte.
Das hat nichts mit Klassensymbolen zu tun. Einfach nur,
die Karte hat einen Namen. Sie hat Zuständigkeiten an Dienstleistungen.
Und mit womit hat sie denn zu tun? Indem man das
so alles aufschreibt, kann man das sehr gut übersichtlich machen.
Meine Empfehlung ist immer, machen Sie das lotis?
Machen Sie das tatsächlich mit Papierkarte? Wenn Sie keine Kappen haben,
nehmen Sie A4-Zettel. Und legen Sie die Zettel an den Tisch,
hängen Sie die an eine große Wand,
diskutieren Sie mit dem Team dazu.
Alles mal besser als in einem Tool versteckt,
in einer Datenbank, da sieht man es nicht.
Packen Sie es sichtbar hin und das wird am besten
mit Papier
Soweit dazu. Wir haben diese Zuständigkeiten, eine Möglichkeit der
Zuständigkeiten ist zum Beispiel die Trennung zwischen fachlichen und technisch.
Hat mit diesen Zuständigkeiten zu tun, ja,
die Metapher, man soll nicht Äpfel mit Birnen vermischen,
kennen sie alle, ja, und wir wollen versuchen,
das eine Trenor zu machen.
Warum wählt ein Dozent das von ihnen? Weil es Leute gibt,
die sich eher technisch affin befinden und die Technik,
die ganz genau wissen, welches Java-Paket,
welche Version, was ist wofür?
Und welche, die
das Fachliche besser verstehen
Und diese beiden nehmen die Leute,
die das Fachliche verstehen sollen, bitte fachliche Klassen bearbeiten.
Da verstehen sie das meiste davon und machen nichts falsch.
Und die Leute, die die technischen Experten sind, sollen die technischen Klassen bearbeiten.
Und davon wissen sie am meisten und machen nichts falsch.
Ja, wenn die es gemischt ist,
dann macht so jemand, der die fahrtechnischen Sachen macht,
macht vielleicht so eine fachliche Regel kaputt.
Oder jemand das Fachliche macht, der macht das technisch
ganz schlecht und dann haben wir eine Geschichte zu Performance.
Diese Trennung ist eine Idee, weil Menschen so unterschiedlich sind.
Ja, also wiederum die Zuständigkeiten, damit die Menschen sich zurechtfinden.
So, damit haben wir das mit den Zuständigkeiten
schon relativ geklärt
Es gibt ein paar Indikatoren dafür, dass Zuständigkeiten schlecht sind und das ist,
wenn wir mehrere Sachen, wenn wir Sachen haben, die sehr groß sind.
Das Große ist so ein bisschen verdächtig, und zwar nicht nur verdächtig,
weil es uns ein Schwert zu verstehen ist,
unübersichtlich ist, wenn wir eine ganz große Klasse haben,
eine ganz große Komponente,
eine sehr lange Methode oder eine lange Bedingungskette, sondern auch,
weil zu vermuten ist, dass das Ding so groß ist,
weil jemand immer noch was dazu gepackt hat und 20 Prozent davon passt gar nicht dazu.
Also deswegen Kirche großen Einheiten, eine Klasse,
die sich der Meinung ist, sie ist für alles zuständig,
eine Methode, die furchtbar lang sind, eine Klasse mit 100 Methoden,
ja, dann ist sehr stark zu vermuten,
wie steht es ein Hinweisarten.
Dass die Sachen vermischt sind. Trennen sie es auf,
teilen sie es auf, die Verständlichkeit wird sehr viel besser,
die Leute werden es ihnen danken.
Das geht natürlich, diese Aufteilung liegt natürlich am besten,
bevor wir 10.0001 auf Kutt geschrieben haben unter 100.000.
Das heißt, arbeiten sie mit diesen Karten,
dann ist die Aufteilung sehr viel leichter und sehr viel klarer.
Und wenn das Neues hinzukommt, und sie karten wieder raus,
und schauen sie, wo passt es am besten hin
Ich meine, hilft es sich auch,
hilft es auch noch eine Klasse später nochmal auszuteilen.
Manchmal natürlich auch Sachen zusammenzupassen. Soweit zu korpionen Korressionen,
die fragen dazu, hier CRC-Karten, wie können Sie
sinnvoll eingesetzt werden? Sie können sinnvoll eingesetzt werden,
um einen Überblick zu gewinnen, um darüber zu diskutieren,
was sind denn wichtige Aufgaben, was sind wichtige Zuständigkeiten,
wie kopieren wir die?
Soweit dazu