{"id":904,"date":"2017-01-12T08:00:30","date_gmt":"2017-01-12T07:00:30","guid":{"rendered":"https:\/\/se-trends.de\/?p=904"},"modified":"2017-01-12T10:31:55","modified_gmt":"2017-01-12T09:31:55","slug":"object-orientation-with-a-difference-guest-article-by-carsten-pitz","status":"publish","type":"post","link":"https:\/\/www.se-trends.de\/en\/objektorientierung-mal-anders-gastbeitrag-von-carsten-pitz\/","title":{"rendered":"Object orientation with a difference: Guest article by Carsten Pitz"},"content":{"rendered":"<p>Der heutige Beitrag wurde von Carsten Pitz geschrieben, der von der einfachen Programmierung \u00fcber die Objektorientierung schlie\u00dflich 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\u00f6ffentlichen. Im heutigen Artikel stellt er sich vor und erkl\u00e4rt, wie er \u00fcberhaupt dort angekommen ist, wo er sich heute befindet.<\/p>\n<h2>(m)eine kleine Vorstellung<\/h2>\n<p>Michael hat mich, Carsten Pitz eingeladen ein paar Gastbetr\u00e4ge f\u00fcr SE-Trends zu schreiben. Diese Einladung habe ich dankend angenommen, denn diese Einladung er\u00f6ffnet mir die M\u00f6glichkeit meine Ideen und Erfahrungen in diesem Forum zu pr\u00e4sentieren.<\/p>\n<p>Bevor ich mit meiner kleinen Beitragsreihe starte m\u00f6chte ich mich jedoch vorher kurz vorstellen. Denn zum Verst\u00e4ndnis der Beitr\u00e4ge halte ich eine grobe Kenntnis<\/p>\n<ul>\n<li>meines Kontextes,<\/li>\n<li>die Art und Weise wie ich denke und<\/li>\n<li>die Art wie ich abstrahiere, formalisiere<\/li>\n<\/ul>\n<p>f\u00fcr hilfreich.<\/p>\n<h2>Was mache ich aktuell?<\/h2>\n<p>Seit etwa 15 Jahren bin ich als IT Berater unterwegs.<\/p>\n<p>Der untere Teil des V-Modell V, die Kodierung und die Entwicklertests ist nur noch &#8222;Hobby&#8220;. Dies mache ich privat, um \u201egeerdet\u201c zu bleiben. Aber auch um die Anwendbarkeit von neuen Technologien zu evaluieren und deren Grenzen auszuloten. Ich habe bewusst den Begriff &#8222;Kodierung&#8220; und nicht den Begriff &#8222;Entwicklung&#8220; verwendet, da f\u00fcr mich die Entwicklung bereits mit dem Zuordnen von Anforderungen zu Elementen, der Architektur beginnt.<\/p>\n<h2>Was bleibt vom V?<\/h2>\n<p><!--more--><\/p>\n<p>Dort befinden sich noch<\/p>\n<ul>\n<li>Anforderungsaufnahme, Analyse und Dokumentation<\/li>\n<li>die Architektur (mein Fokus ;-))<\/li>\n<li>die Testphasen bis hin zur Abnahme und<\/li>\n<li>schon wieder im waagerechten Teil des V die Produkteinf\u00fchrung.<\/li>\n<\/ul>\n<p>Mein letztes und gewisserma\u00dfen auch aktuelles Projekt liegt klar in meinem Fokus, der Architektur.<\/p>\n<blockquote><p>Das untere Teil vom V ist mein Hobby, mein beruflicher Fokus die Architektur (Carsten Pitz) [tweetthis]Das untere Teil vom V ist mein Hobby, mein beruflicher Fokus die Architektur (Carsten Pitz)[\/tweetthis]<\/p><\/blockquote>\n<p>In meinem vorletzten Projekt lag das ganze V, in voller Auspr\u00e4gung in meiner Verantwortung. Dort war ich &#8222;\u00dcbergeordneter Qualit\u00e4tssicherungsverantwortlicher&#8220; in einem internationalen (EU, OECD, \u2026) Multi-Projekt, mit den Aufgaben:<\/p>\n<ul>\n<li>Prozesse untersuchen und bewerten (PM, SE, Test)<\/li>\n<li>Architekturkonzepte untersuchen und bewerten<\/li>\n<li>Aufwandssch\u00e4tzungen untersuchen und bewerten<\/li>\n<li>Risiken aufzeigen und Ma\u00dfnahmen zur Minimierung von Risiken vorschlagen<\/li>\n<\/ul>\n<h2>Meine vor OO \u00c4ra<\/h2>\n<p>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. \u201eRichtige\u201c 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\u00e4chst mit BASIC und sp\u00e4ter auch mit Z80 Assembler.<\/p>\n<p>Naja, ich habe nicht nur programmiert, ich habe auch am Rechner herum gel\u00f6tet. Irgendwann war dieser defekt und ich habe diesen reklamiert. Ohne jeglichen Kommentar bekam ich Post-wendend einen Sinclair ZX81 zu gesendet. Sp\u00e4ter habe ich einen defekten Sinclair ZX Spectrum \u00fcbernommen und mir diesen repariert.<\/p>\n<p>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 \u201enackt\u201c wie die heutigen. Dennoch: der eingebaute MS BASIC Interpreter war ein herber R\u00fcckschritt gegen\u00fcber dem BASIC des Sinclair ZX Spectrum.<\/p>\n<p>Also beriet sich mein Vater mit einem seiner Arbeitskollegen und kam mit ein paar Disketten zur\u00fcck. Darauf befanden sich der IBM Professional FORTRAN v2.0 Compiler und ein IBM XEdit Clone. Jawohl, das war ein Fortschritt. Mit einem deutlich h\u00f6heren \u201eKomfort\u201c als BASIC mir bot, hatte ich die Runtime Performance von Assembler. Dies er\u00f6ffnete mir komplett neue Welten.<\/p>\n<ul>\n<li>Zum FORTRAN gesellte sich dann die <a href=\"https:\/\/de.wikipedia.org\/wiki\/Niklaus_Wirth#Ver.C3.B6ffentlichungen\" target=\"_blank\">Niklaus Wirth Reihe<\/a><\/li>\n<li>Pascal (Borland Turbo Pascal),<\/li>\n<li>Modula 2 (Fitted Software Tools Modula) und<\/li>\n<li>Oberon (der Compiler von der ETH Z\u00fcrich) sowie<\/li>\n<li>C\/C++ (AT&amp;T CFront und Glockenspiel C++ unter UNIX, Microsoft VisualC unter DOS)<\/li>\n<\/ul>\n<p>Ach ja, den eher \u201einoffiziellen\u201c IBM Professional FORTRAN v2.0 Compiler habe ich recht schnell durch eine offizielle Lizenz des Lahey Personal FORTRAN Compilers ersetzt ;-)<\/p>\n<h2>Meine OO Anf\u00e4nge<\/h2>\n<p>Mein erster Zugang zu OO war <a href=\"https:\/\/de.wikipedia.org\/wiki\/Oberon_(Programmiersprache)\" target=\"_blank\">Oberon<\/a>. Ich halte Oberon immer noch f\u00fcr einen genialen Wurf. Aber Oberon hat leider nie eine gr\u00f6\u00dfere Bedeutung erlangt.<\/p>\n<p>Dennoch war Oberon meine erste OO Sprache. Ich habe viel \u00fcber OO gelesen, aber, was war daran das so \u00fcberw\u00e4ltigend Neue?<\/p>\n<blockquote><p>Meine Frage \u201eWas bringt mir OO als wesentliches Neues?\u201c kl\u00e4rte sich erst, als ich 1998 zu UML kam (Carsten Pitz) [tweetthis]Was OO neues bring verstand ich erst, als ich 1998 zu UML kam (Carsten Pitz)[\/tweetthis]<\/p><\/blockquote>\n<p>Die Kapselung von Code und Daten zu einer Einheit beachtete ich bereits in meinen FORTRAN, Pascal und Modula 2 Programmen. Die \u201eVererbung\u201c, die M\u00f6glichkeit eine bestehende Implementierung zu erweitern, hatte ich durch \u201edelegation\u201c realisiert.<\/p>\n<p>Die von mir unabh\u00e4ngig von der OO Bewegung eingef\u00fchrte Kapselung von Code und Daten zu einer Einheit sowie die inkrementelle Erweiterung von Funktionalit\u00e4t ist ein gutes Beispiel meines Drangs Dinge zu strukturieren, zu formalisieren.<\/p>\n<p>Gut, in Oberon gab es dedizierte Sprachmittel hierzu, die diese Techniken vereinfachten, vor Allem lesbarer machten.<\/p>\n<p>Aber, was war daran das so \u00fcberw\u00e4ltigend Neue?<\/p>\n<p>Diese Frage blieb mir. Sie blieb mir auch noch, als ich mit C++ meine zweite OO Sprache nutzte.<\/p>\n<h2>OO mal anders<\/h2>\n<p>Meine Frage \u201eWas bringt mir OO als wesentliches Neues?\u201c kl\u00e4rte sich erst, als ich 1998 zu UML kam. Die heute noch h\u00e4ufig bel\u00e4chelten \u201euse cases\u201c (Anwendungsf\u00e4lle) brachten mich auf eine Idee.<\/p>\n<p>Ein Objekt<\/p>\n<ul>\n<li>besitzt Ged\u00e4chnis (Zustand) und Verhalten<br \/>\n\u2192 ist ein Akteur<\/li>\n<li>ist autonom und besitzt eine Privatsph\u00e4re<br \/>\n\u2192 kann seinen Zustand vor fremdem Zugriff sch\u00fctzen<\/li>\n<\/ul>\n<p>\u2192 Architektur als Choreographie von Akteuren<\/p>\n<p>Zur Privatsph\u00e4re<\/p>\n<ul>\n<li>public<br \/>\n\u2192 jeder kann zugreifen<\/li>\n<li>protected<br \/>\n\u2192 Zugriff auf Komponente beschr\u00e4nkt<\/li>\n<li>private<br \/>\n\u2192 nur Objekt selbst kann zugreifen<\/li>\n<\/ul>\n<p>Zu den set\/get-Methoden<\/p>\n<ul>\n<li>read only<br \/>\n\u2192 set = private<br \/>\n\u2192 get = protected | public<\/li>\n<li>write only<br \/>\n\u2192 set = protected | public<br \/>\n\u2192 get = private<\/li>\n<li>read\/write<br \/>\n\u2192 set = protected | public<br \/>\n\u2192 get = protected | public<\/li>\n<li>Plausibilisierung der Eingaben (pre-condition check)<br \/>\n\u2192 Sinn &amp; Zweck der set-Methode<\/li>\n<li>Plausibilisierung der Ausgaben (post-condition check)<br \/>\n\u2192 Sinn &amp; Zweck der get-Methode<\/li>\n<\/ul>\n<p>Dieses Prinzip konnte ich wenig sp\u00e4ter, im Jahr 2002 einer \u201eFeuertaufe\u201c unterziehen. Eine real-time f\u00e4hige Middleware die auf 32 Prozessor Systemen mit ~900 Threads lief. Es funktionierte auf Anhieb. Der Ansatz dieser Middleware \u2013 von mir &#8222;yet another client server glue&#8220; genannt \u2013 war meinem damaligen Br\u00f6tchengeber nach dem Sichten des Konzepts zu \u201einnovativ\u201c. Mein alternativer Vorschlag auf Basis von IBM MQ l\u00e4uft im \u00fcbrigen immer noch. Im Vorgriff auf den dritten Teil meiner kleinen Vorstellung: Mein dritter Vorschlag basierte auf BEA Iceberg (sp\u00e4ter M3 genannt und heute unter dem Namen Oracle BEA WebLogic bekannt).<\/p>\n<p>Zur\u00fcck zum &#8222;yet another client server glue&#8220;: 2002 hatten wir eine EU Ausschreibung gewonnen. Unser Angebotsteam bestand aus meinem neuen Chef h\u00f6chstpers\u00f6nlich, einem Kollegen und mir selbst. Mein zuvor entwickeltes Middlewarekonzept passte nahezu perfekt. Also bot ich es an und es wurde akzeptiert.<\/p>\n<p>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\u00dfteil des urspr\u00fcnglichen Modells 1:1 \u00fcbernehmen k\u00f6nnen. Die Freigabe dazu hatte ich mir bei meinem vorigen Arbeitgeber erbeten und erhalten.<\/p>\n<blockquote><p>Zum Gl\u00fcck war damals noch nicht bekannt, dass angeblich agiles Vorgehen und formale Modellierung nicht vereinbar sind (Carsten Pitz) [tweetthis]Zum Gl\u00fcck war damals noch nicht bekannt, dass angeblich agil und formal nicht vereinbar sind (Carsten Pitz)[\/tweetthis]<\/p><\/blockquote>\n<p>Im \u00dcbrigen, dieses Projekt war mein erstes agiles Projekt. Zum Gl\u00fcck war damals noch nicht bekannt, dass angeblich agiles Vorgehen und formale Modellierung nicht vereinbar sind. So habe ich \u2013 naiv wie ich war \u2013 einfach UML Modelle (ein Vorgriff auf den zweiten Teil meiner Vorstellung) erstellt und diese pr\u00e4sentiert. Es hat wunderbar funktioniert. Wir haben das Projekt &#8222;on time &amp; on budget&#8220; abgeschlossen, und der Kunde war \u00e4u\u00dferst zufrieden.<\/p>\n<p>Aber dieses Thema k\u00f6nnte zu einem weiteren Gastbeitrag von mir werden. Besteht Interesse?<\/p>\n<p>Kontaktinformationen von <a href=\"https:\/\/se-trends.de\/carsten-pitz\/\">Carsten Pitz sind auf seiner Gastautorenseite<\/a> zu finden.<\/p>\n<p style=\"text-align: right;\"><span style=\"color: #999999;\">Bild: Carsten Pitz<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today's article was written by Carsten Pitz, who went from simple programming to object orientation and finally ended up in systems engineering, and has gained a lot of experience in MBSE in particular. Carsten will be publishing guest articles on SE-Trends approximately every 4-6 weeks. In today's article, he introduces himself and explains how he got there in the first place,...<\/p>","protected":false},"author":4,"featured_media":906,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[141,44],"tags":[107,178,179,63,180,135],"class_list":["post-904","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-menschen","category-wissen","tag-architektur","tag-carsten-pitz","tag-gastbeitrag","tag-modellierung","tag-objektorientierung","tag-v-modell"],"_links":{"self":[{"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/posts\/904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/comments?post=904"}],"version-history":[{"count":0,"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/posts\/904\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/media\/906"}],"wp:attachment":[{"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/media?parent=904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/categories?post=904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.se-trends.de\/en\/wp-json\/wp\/v2\/tags?post=904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}