Objektorientierung mal anders: Gastbeitrag von Carsten Pitz
Der heutige Beitrag wurde von Carsten Pitz geschrieben, der von der einfachen Programmierung über die Objektorientierung schließlich beim Systems Engineering gelandet ist, und insbesondere im MBSE viel Erfahrung gesammelt hat. Carsten wird bei SE-Trends etwa alle 4-6 Wochen Gastartikel veröffentlichen. Im heutigen Artikel stellt er sich vor und erklärt, wie er überhaupt dort angekommen ist, wo er sich heute befindet.
(m)eine kleine Vorstellung
Michael hat mich, Carsten Pitz eingeladen ein paar Gastbeträge für SE-Trends zu schreiben. Diese Einladung habe ich dankend angenommen, denn diese Einladung eröffnet mir die Möglichkeit meine Ideen und Erfahrungen in diesem Forum zu präsentieren.
Bevor ich mit meiner kleinen Beitragsreihe starte möchte ich mich jedoch vorher kurz vorstellen. Denn zum Verständnis der Beiträge halte ich eine grobe Kenntnis
- meines Kontextes,
- die Art und Weise wie ich denke und
- die Art wie ich abstrahiere, formalisiere
für hilfreich.
Was mache ich aktuell?
Seit etwa 15 Jahren bin ich als IT Berater unterwegs.
Der untere Teil des V-Modell V, die Kodierung und die Entwicklertests ist nur noch „Hobby“. Dies mache ich privat, um „geerdet“ zu bleiben. Aber auch um die Anwendbarkeit von neuen Technologien zu evaluieren und deren Grenzen auszuloten. Ich habe bewusst den Begriff „Kodierung“ und nicht den Begriff „Entwicklung“ verwendet, da für mich die Entwicklung bereits mit dem Zuordnen von Anforderungen zu Elementen, der Architektur beginnt.
Was bleibt vom V?
Dort befinden sich noch
- Anforderungsaufnahme, Analyse und Dokumentation
- die Architektur (mein Fokus ;-))
- die Testphasen bis hin zur Abnahme und
- schon wieder im waagerechten Teil des V die Produkteinführung.
Mein letztes und gewissermaßen auch aktuelles Projekt liegt klar in meinem Fokus, der Architektur.
Das untere Teil vom V ist mein Hobby, mein beruflicher Fokus die Architektur (Carsten Pitz)
Twittern
In meinem vorletzten Projekt lag das ganze V, in voller Ausprägung in meiner Verantwortung. Dort war ich „Übergeordneter Qualitätssicherungsverantwortlicher“ in einem internationalen (EU, OECD, …) Multi-Projekt, mit den Aufgaben:
- Prozesse untersuchen und bewerten (PM, SE, Test)
- Architekturkonzepte untersuchen und bewerten
- Aufwandsschätzungen untersuchen und bewerten
- Risiken aufzeigen und Maßnahmen zur Minimierung von Risiken vorschlagen
Meine vor OO Ära
Zum Ende der Quinta lud mein Physiklehrer meine Eltern ein und legte ihnen nahe mir einen Computer zu kaufen. Das war 1979 und ich war 12 Jahre alt. „Richtige“ Computer waren damals noch recht teuer. Meine Favoriten der TRS-80 von Tandy Radio Shack oder der TI-99 von Texas Instruments waren meinen Eltern zu teuer. So wurde es ein Sinclair ZX80. Mit diesem programmierte ich zunächst mit BASIC und später auch mit Z80 Assembler.
Naja, ich habe nicht nur programmiert, ich habe auch am Rechner herum gelötet. Irgendwann war dieser defekt und ich habe diesen reklamiert. Ohne jeglichen Kommentar bekam ich Post-wendend einen Sinclair ZX81 zu gesendet. Später habe ich einen defekten Sinclair ZX Spectrum übernommen und mir diesen repariert.
Zu Beginn meines Elektrotechnik Studiums an der RWTH Aachen hat mir mein Vater einen IBM kompatiblen PC gekauft. Die damaligen PCs waren zwar nicht gar so „nackt“ wie die heutigen. Dennoch: der eingebaute MS BASIC Interpreter war ein herber Rückschritt gegenüber dem BASIC des Sinclair ZX Spectrum.
Also beriet sich mein Vater mit einem seiner Arbeitskollegen und kam mit ein paar Disketten zurück. Darauf befanden sich der IBM Professional FORTRAN v2.0 Compiler und ein IBM XEdit Clone. Jawohl, das war ein Fortschritt. Mit einem deutlich höheren „Komfort“ als BASIC mir bot, hatte ich die Runtime Performance von Assembler. Dies eröffnete mir komplett neue Welten.
- Zum FORTRAN gesellte sich dann die Niklaus Wirth Reihe
- Pascal (Borland Turbo Pascal),
- Modula 2 (Fitted Software Tools Modula) und
- Oberon (der Compiler von der ETH Zürich) sowie
- C/C++ (AT&T CFront und Glockenspiel C++ unter UNIX, Microsoft VisualC unter DOS)
Ach ja, den eher „inoffiziellen“ IBM Professional FORTRAN v2.0 Compiler habe ich recht schnell durch eine offizielle Lizenz des Lahey Personal FORTRAN Compilers ersetzt 😉
Meine OO Anfänge
Mein erster Zugang zu OO war Oberon. Ich halte Oberon immer noch für einen genialen Wurf. Aber Oberon hat leider nie eine größere Bedeutung erlangt.
Dennoch war Oberon meine erste OO Sprache. Ich habe viel über OO gelesen, aber, was war daran das so überwältigend Neue?
Meine Frage „Was bringt mir OO als wesentliches Neues?“ klärte sich erst, als ich 1998 zu UML kam (Carsten Pitz)
Twittern
Die Kapselung von Code und Daten zu einer Einheit beachtete ich bereits in meinen FORTRAN, Pascal und Modula 2 Programmen. Die „Vererbung“, die Möglichkeit eine bestehende Implementierung zu erweitern, hatte ich durch „delegation“ realisiert.
Die von mir unabhängig von der OO Bewegung eingeführte Kapselung von Code und Daten zu einer Einheit sowie die inkrementelle Erweiterung von Funktionalität ist ein gutes Beispiel meines Drangs Dinge zu strukturieren, zu formalisieren.
Gut, in Oberon gab es dedizierte Sprachmittel hierzu, die diese Techniken vereinfachten, vor Allem lesbarer machten.
Aber, was war daran das so überwältigend Neue?
Diese Frage blieb mir. Sie blieb mir auch noch, als ich mit C++ meine zweite OO Sprache nutzte.
OO mal anders
Meine Frage „Was bringt mir OO als wesentliches Neues?“ klärte sich erst, als ich 1998 zu UML kam. Die heute noch häufig belächelten „use cases“ (Anwendungsfälle) brachten mich auf eine Idee.
Ein Objekt
- besitzt Gedächnis (Zustand) und Verhalten
→ ist ein Akteur - ist autonom und besitzt eine Privatsphäre
→ kann seinen Zustand vor fremdem Zugriff schützen
→ Architektur als Choreographie von Akteuren
Zur Privatsphäre
- public
→ jeder kann zugreifen - protected
→ Zugriff auf Komponente beschränkt - private
→ nur Objekt selbst kann zugreifen
Zu den set/get-Methoden
- read only
→ set = private
→ get = protected | public - write only
→ set = protected | public
→ get = private - read/write
→ set = protected | public
→ get = protected | public - Plausibilisierung der Eingaben (pre-condition check)
→ Sinn & Zweck der set-Methode - Plausibilisierung der Ausgaben (post-condition check)
→ Sinn & Zweck der get-Methode
Dieses Prinzip konnte ich wenig später, im Jahr 2002 einer „Feuertaufe“ unterziehen. Eine real-time fähige Middleware die auf 32 Prozessor Systemen mit ~900 Threads lief. Es funktionierte auf Anhieb. Der Ansatz dieser Middleware – von mir „yet another client server glue“ genannt – war meinem damaligen Brötchengeber nach dem Sichten des Konzepts zu „innovativ“. Mein alternativer Vorschlag auf Basis von IBM MQ läuft im übrigen immer noch. Im Vorgriff auf den dritten Teil meiner kleinen Vorstellung: Mein dritter Vorschlag basierte auf BEA Iceberg (später M3 genannt und heute unter dem Namen Oracle BEA WebLogic bekannt).
Zurück zum „yet another client server glue“: 2002 hatten wir eine EU Ausschreibung gewonnen. Unser Angebotsteam bestand aus meinem neuen Chef höchstpersönlich, einem Kollegen und mir selbst. Mein zuvor entwickeltes Middlewarekonzept passte nahezu perfekt. Also bot ich es an und es wurde akzeptiert.
OK, es passte nur nahezu perfekt, aus hard real-time wurde soft real-time, sprich der deadline scheduler wich einem round-robin scheduler. Die BPM Komponente wurde erweitert. Aber der Kern, die Idee dahinter war gleich, so habe ich einen Großteil des ursprünglichen Modells 1:1 übernehmen können. Die Freigabe dazu hatte ich mir bei meinem vorigen Arbeitgeber erbeten und erhalten.
Zum Glück war damals noch nicht bekannt, dass angeblich agiles Vorgehen und formale Modellierung nicht vereinbar sind (Carsten Pitz)
Twittern
Im Übrigen, dieses Projekt war mein erstes agiles Projekt. Zum Glück war damals noch nicht bekannt, dass angeblich agiles Vorgehen und formale Modellierung nicht vereinbar sind. So habe ich – naiv wie ich war – einfach UML Modelle (ein Vorgriff auf den zweiten Teil meiner Vorstellung) erstellt und diese präsentiert. Es hat wunderbar funktioniert. Wir haben das Projekt „on time & on budget“ abgeschlossen, und der Kunde war äußerst zufrieden.
Aber dieses Thema könnte zu einem weiteren Gastbeitrag von mir werden. Besteht Interesse?
Kontaktinformationen von Carsten Pitz sind auf seiner Gastautorenseite zu finden.
Bild: Carsten Pitz