Ayhan Doger

Software Architect

Ayhan Doger

Software Architect

Ayhan Doger

Software Architect

Object-orientation (OO)

Object-orientation (OO) is a paradigm for software developers to specify the model of a software system to be engineered in the language of the real world scenario. This way the required system is modelled with business classes, objects and users as well as real business processes. The naming and taxonomy of the used object and attribute names in the model map are taken from the real scenario context.

„Object-oriented programming (OOP) is a programming language model organized around objects rather than „actions“ and data rather than logic.  (Rouse 2018)

The following unified modelling language (UML) class diagram shows classes and their specifications in the  object-oriented model (OOM) of  a software I had developed, called XMSS (eXtended Management Support Systems). In the top of the boxes, the names of the classes, followed by a list of the object attributes and properties in the mid-part of the box and in the lower part of the box are listed the functions belonging to the class of  objects, separated into the domain layer (dt. Fachkonzept-Schicht) and the user interface (UI) layer (dt. UI-Schicht) (see fig. 1).

Fig. 1: UML-Class Diagramm (Source: Doger 2006, S. 90)

Sequence diagrams help to visualize the sequence of the interactions between classes. Below the sequence of the usage of the classes modelled above is depicted (see Fig. 2). Class diagrams have a weight on the model structure and sequence diagrams a weight on the processes of classes. The behaviour of the classes is considered in three layers, the UI layer, the domain layer and the data layer (see Fig. 2).

Fig. 2: UML sequence diagramm (Source: Doger 2006, S. 88)

The deployment diagram gives an overview on the placement of the system components and their interactions within the system landscape (see Fig. 3).

Fig. 3: UML deployment diagramm (Source: Doger 2006, S. 91)

Design Patterns

Design Patterns is a concept going back to the traditional arts and science of architecture. It is impressive how architects invented design concepts centuries ago, which are currently helpful in software design, such as the findings of the holistic and futuristic architect Buckminster Fuller. Bucky, as he was called, invented highly „user-centered“ architectural constructions and did a great job for the reduction of complexity in the engineering of software architectures.

The so-called ‚Gang of Four‘ is a group of four authors, who released the book, Design Patterns: Elements of Reusable Object-Oriented Software, introducing 23 design patterns linked with UML diagrams, coding concepts in languages, tools, etc. (cf. Carr 2009).

Several methods, frameworks, libraries, tools and programming languages are available around the OOP. You will get to know them in the next article.

Unified Modelling Language (UML)

The modelling process can be supported by modelling languages, such as the unified modelling language (UML) providing different views and diagram types to reduce complexity, such as  use-case-, class-, object- , activity-, sequence-, state-, component- and deployment diagrams, etc. UML provides a special graphical notation syntax (see usage above Fig. 1-3), specifying models intuitively capable, offering several complexity levels, regarding the requirements.

I use UML intensively in order to make structures and processes as transparent as possible in a multimodal way and strongly recommend it in modelling software.

 

<< Previous Article I >>               << Next Article III >>

Bibliography

Carr, R. (2009): Gang of Four Design Patterns
http://www.blackwasp.co.uk/gofpatterns.aspx

Doger, N. A. (2006): „XMSS – eXtended Management Support Systems (MSS) Erweiterung von MSS mit Hilfe von neuen Medien auf der Grundlage von kognitiven und KI-basierten Konzepten“. Master Thesis. Professor D. Ehrenberg. Universität Göttingen.

Rouse, M. (2018): Object-oriented Programming (OOP)
https://searchmicroservices.techtarget.com/definition/object-oriented-programming-OOP