Object orientation with a difference: Guest article by Carsten Pitz

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 to where he is today.
(m)a little introduction
Michael has invited me, Carsten Pitz, to write a few guest articles for SE-Trends. I gratefully accepted this invitation, as it gives me the opportunity to present my ideas and experiences in this forum.
Before I start my little series of articles, however, I would like to briefly introduce myself. Because in order to understand the contributions, I think a rough knowledge of
- of my context,
- the way I think and
- the way I abstract, formalize
for helpful.
What am I currently doing?
I have been working as an IT consultant for about 15 years.
The lower part of V-Modell V, the coding and the developer tests, is just a "hobby". I do this privately to stay "grounded". But also to evaluate the applicability of new technologies and explore their limits. I deliberately used the term "coding" and not the term "development", because for me development already begins with the assignment of requirements to elements, the architecture.
What remains of the V?
There are still
- Requirements recording, analysis and documentation
- the architecture (my focus ;-))
- the test phases through to acceptance and
- again in the horizontal part of the V the product launch.
My last and, to a certain extent, current project is clearly focused on architecture.
The lower part of the V is my hobby, my professional focus is architecture (Carsten Pitz) [tweetthis]The lower part of the V is my hobby, my professional focus is architecture (Carsten Pitz)[/tweetthis]
In my penultimate project, I was responsible for the whole V in its entirety. There I was the "overall quality assurance manager" in an international (EU, OECD, ...) multi-project, with the following tasks:
- Examine and evaluate processes (PM, SE, test)
- Examine and evaluate architectural concepts
- Examine and evaluate cost estimates
- Identify risks and propose measures to minimize risks
My pre-OO era
At the end of the quinta, my physics teacher invited my parents over and suggested that they buy me a computer. That was in 1979 and I was 12 years old. "Real" computers were still quite expensive back then. My favorites, the TRS-80 from Tandy Radio Shack or the TI-99 from Texas Instruments, were too expensive for my parents. So I ended up with a Sinclair ZX80. I initially programmed with BASIC and later also with Z80 Assembler.
Well, I didn't just program, I also soldered around on the computer. At some point it was defective and I complained about it. Without any comment, I was sent a Sinclair ZX81 by post. Later I took over a defective Sinclair ZX Spectrum and had it repaired.
When I started studying electrical engineering at RWTH Aachen University, my father bought me an IBM-compatible PC. The PCs at that time were not quite as "naked" as today's PCs. Nevertheless, the built-in MS BASIC interpreter was a bitter step backwards compared to the BASIC of the Sinclair ZX Spectrum.
So my father consulted with one of his work colleagues and came back with a couple of floppy disks. They contained the IBM Professional FORTRAN v2.0 compiler and an IBM XEdit clone. Yes, that was progress. With a much higher "comfort" than BASIC offered me, I had the runtime performance of assembler. This opened up completely new worlds for me.
- FORTRAN was then joined by the Niklaus Wirth Series
- Pascal (Borland Turbo Pascal),
- Modula 2 (Fitted Software Tools Modula) and
- Oberon (the compiler from ETH Zurich) and
- C/C++ (AT&T CFront and Glockenspiel C++ under UNIX, Microsoft VisualC under DOS)
By the way, I quickly replaced the rather "unofficial" IBM Professional FORTRAN v2.0 compiler with an official license of the Lahey Personal FORTRAN compiler ;-)
My OO beginnings
My first access to OO was Oberon. I still think Oberon is a brilliant idea. But unfortunately Oberon never achieved any major significance.
Nevertheless, Oberon was my first OO language. I read a lot about OO, but what was so overwhelmingly new about it?
My question "What does OO bring me as a significant new feature?" was only clarified when I came to UML in 1998 (Carsten Pitz) [tweetthis]I only understood what OO brings new when I came to UML in 1998 (Carsten Pitz)[/tweetthis]
I had already considered the encapsulation of code and data into a single unit in my FORTRAN, Pascal and Modula 2 programs. I had realized "inheritance", the possibility of extending an existing implementation, through "delegation".
The encapsulation of code and data into a single unit, which I introduced independently of the OO movement, and the incremental expansion of functionality is a good example of my urge to structure and formalize things.
Well, in Oberon there were dedicated language tools for this, which simplified these techniques and above all made them more readable.
But what was so overwhelmingly new about it?
This question stayed with me. It also stayed with me when I started using C++, my second OO language.
OO with a difference
My question "What is the main new benefit of OO for me?" only became clear when I came across UML in 1998. The "use cases", which are still often ridiculed today, gave me an idea.
An object
- has memory (state) and behavior
→ is an actor - is autonomous and has privacy
→ can protect its status from unauthorized access
→ Architecture as a choreography of actors
Privacy
- public
→ anyone can access - protected
→ Access to component restricted - private
→ only object itself can access
About the set/get methods
- read only
→ set = private
→ get = protected | public - write only
→ set = protected | public
→ get = private - read/write
→ set = protected | public
→ get = protected | public - Plausibility check of the entries (pre-condition check)
→ Sense & purpose of the set method - Plausibility check of expenses (post-condition check)
→ Sense & purpose of the get method
A little later, in 2002, I was able to subject this principle to a "baptism of fire". A real-time capable middleware that ran on 32 processor systems with ~900 threads. It worked right away. The approach of this middleware - which I called "yet another client server glue" - was too "innovative" for my employer at the time after seeing the concept. Incidentally, my alternative proposal based on IBM MQ is still running. In anticipation of the third part of my little introduction: My third proposal was based on BEA Iceberg (later called M3 and now known as Oracle BEA WebLogic).
Back to the "yet another client server glue": In 2002, we won an EU tender. Our bid team consisted of my new boss himself, a colleague and myself. My previously developed middleware concept was a near-perfect fit. So I offered it and it was accepted.
OK, it just fitted almost perfectly, hard real-time became soft real-time, i.e. the deadline scheduler gave way to a round-robin scheduler. The BPM component was extended. But the core, the idea behind it was the same, so I was able to adopt a large part of the original model 1:1. I had requested and received approval for this from my previous employer.
Fortunately, it was not yet known at the time that agile approaches and formal modeling are supposedly incompatible (Carsten Pitz) [tweetthis]Fortunately, it was not yet known at the time that agile approaches and formal modeling are supposedly incompatible (Carsten Pitz)[/tweetthis]
Incidentally, this project was my first agile project. Fortunately, it was not yet known at the time that an agile approach and formal modeling are supposedly incompatible. So - naive as I was - I simply created UML models (an anticipation of the second part of my presentation) and presented them. It worked wonderfully. We completed the project "on time & on budget" and the customer was extremely satisfied.
But this topic could become another guest post from me. Are you interested?
Contact information from Carsten Pitz are on his guest author page to find.
Picture: Carsten Pitz






