Anti Pattern: Golden Hammer

Anti Pattern: Golden Hammer

 „Wenn mein einziges Werkzeug ein Hammer ist, sieht jedes Problem wie ein Nagel aus.“ – Abraham Maslow

Beschreibung

Ein goldener Hammer ist eine Art Wunderwaffe, ein bevorzugter Lösungsweg oder ein beliebtes Produkt, mit dem das Team viel Erfahrung hat und der irrtümlich als universell anwendbar angesehen wird. Alternativen werden kaum betrachtet.

Auswirkungen

Das Problem hierbei ist, dass die Lösung oder das Produkt nur scheinbar zu den gegebenen Anforderungen passen.

Es kann unter Umständen passieren, dass das Produkt Teile des Designs oder der Erweiterbarkeit festlegt, indem z.B. nur Schnittstellen desselben Herstellers oder eines bestimmten Betriebssystems verwendet werden können. Der Einsatz einer bestimmten Lösung kann auch zu einer schlechteren Skalierbarkeit und Performanz führen als eine andere Lösung. Als Folge können die Kosten explodieren oder Termine nicht eingehalten werden.

Lösung

Hier ist ein Umdenken bei den Entwicklern und im Management erforderlich. Alternative Lösungsansätze und die hierbei entstehenden Vor- und Nachteile sollten ständig im Auge behalten werden. Es kann auch hilfreich sein, das Projektteam stärker zu diversifizieren, indem mehr Leute aus unterschiedlichen Firmen und anderen Fachgebieten eingestellt werden.

Eine Weiterbildung durch Fortbildungen, Seminare, Bücher etc. hilft dabei, die Entwickler immer auf dem neusten Stand der Entwicklung zu halten, nicht nur im Bereich der Softwaretechnologie, sondern auch auf Organisationsebene.

Bei unserer 3-tägigen Grundausbildung für Softwarearchitekten, dem Foundation Level Training, erhalten Sie das nötige Know How, um Architekturen für kleine und mittlere Systeme zu entwerfen und zu dokumentieren. Am Ende der Softwarearchitektur Schulung haben Sie das Rüstzeug, um problembezogene Entwurfsentscheidungen auf der Basis Ihrer vorab erworbenen Praxiserfahrungen zu treffen.

Entwicklerdokumentation mit PlantUML

Entwicklerdokumentation mit PlantUML

Bei einer unserer letzten Night Schools stellte ich eine neue Möglichkeit vor, auf entwicklungsnahe Art und Weise IT-Systeme zu dokumentieren. Die Night Schools sind unsere internen Weiterbildungsevents, bei der immer abwechselnd ein Kollege/eine Kollegin ein aktuelles Thema aus dem Softwarearchitektur Bereich für das Team aufbereitet und vorstellt.

Die Unified Modelling Language UML ist der aktuelle Standard zur Dokumentation von statischen Strukturen und dynamischen Abläufen in IT-Systemen.  Auch in der Architekturdokumentation wird UML oftmals eingesetzt.

UML hat aber durchaus seine Schattenseiten, da es häufig mit komplexen Modellierungs- oder Zeichenprogrammen à la VISIO erstellt wird. Das Ergebnis der Modellierung ist dann eine Reihe von Word- oder PDF-Dateien mit eingebetteten JPEG- oder PNG-Grafiken. Entwickler dagegen arbeiten mit Textdateien in einer Entwicklungsumgebung, die oftmals an eine komplexe Build-Pipeline angeschlossen ist und alle Arbeitsergebnisse auf Wunsch auch gleich versioniert und deployed. So kann jede Änderung über alle Versionen problemlos zurückverfolgt werden. Dieser Ansatz scheitert leider bei Office-Dateien, da hier jede neue Version einer Datei als gänzlich neues Artefakt behandelt wird. Es kommt bei der Modellierung mit UML nicht nur zu einem Medienbruch, sondern auch die Arbeitsergebnisse können nicht nahtlos in die Entwicklungspipeline aufgenommen werden. In diese Bresche springt nun Plant-UML.

Die Idee von Plant-UML ist, mit Hilfe von einfachen Textdateien, die eine bestimmte Plant-UML-Syntax verwenden, automatisiert UML-Diagramme zu erzeugen und als PNG, SVG oder ASCII-Art anzeigen zu lassen. Dies geschieht interaktiv, sodass der Autor per Knopfdruck gleich das Arbeitsergebnis sehen kann. Auf der Plant-UML Homepage kann dies ganz einfach kostenfrei selbst ausprobiert werden >> http://www.plantuml.com/plantuml/uml/. Unterstützt werden Anwendungsfalldiagramme, Klassendiagramme, Sequenzdiagramme, Aktivitätsdiagramme, State-Machines, Objektdiagramme, Deploymentdiagramme, Komponentendiagramme und Timing-Diagramme. Alle werden mit einer einfachen Syntax definiert und übernehmen das Layout der Objekte im Diagramm automatisch. Trotzdem kann eine ganze Reihe von zusätzlichen Items verwendet werden, um die UML-Diagramme noch aussagekräftiger zu gestalten. Dies geht von konfigurierbaren Farben bis hin zu Legenden und Infoboxen. Mir gefällt am besten, dass Plant-UML sich direkt in den Build-Prozess integrieren lässt und die UML-Diagramme nicht nur in ASCIIdoc-Dokumente eingefügt werden können, sondern diese sich auch bei jedem Build neu erzeugen. Damit wird eine Dokumentation erreicht, die genauso einfach und effektiv verwaltet werden kann wie der Quellcode selbst. Ein Medienbruch bleibt aus.

Neben den UML-Diagrammen kann Plant-UML aber noch mehr: Es ist möglich, Datenbanktabellen mittels Entity-Relationship-Diagrammen zu beschreiben, neue Ideen in Form von Mindmaps darzustellen und Arbeitspakete mit Hilfe von Work-Breakdown-Diagrammen (WBD) zu beschreiben. Es ist sogar möglich, Projektplanungen mittels Gantt-Diagrammen wie in MS Project zu erstellen. Alle diese Diagramme werden ebenso einfach mit Hilfe von Textschnipseln definiert. Der eigentliche Höhepunkt ist aus meiner Sicht aber die Möglichkeit, ein Wireframe einer Oberfläche aus einer Textdarstellung zu erstellen. Probieren Sie es doch einfach mal aus und teilen Sie Ihre Erfahrung mit uns über die Kommentare.

Axel Feix, Software Architekt & Managing Consultant bei ITech Progress

OOP 2020 unter dem Motto “Into the Unknown” | Wir sind dabei!

OOP 2020 unter dem Motto “Into the Unknown” | Wir sind dabei!

Kaum ein Berufsfeld ist so vielfältig und breit gefächert wie das des Software-Architekten. Gleichzeitig gibt es wenige Branchen, die sich so sehr der Innovation verschrieben haben wie unsere. Das ist Fluch und Segen gleichermaßen, denn so spannend es ist, Neues zu kreieren, so hoch ist auch die Verantwortung – gegenüber unseren Kunden, unseren Mitarbeitern bzw. Kollegen und am Ende auch gegenüber unserer Gesellschaft.

Besuchen Sie uns an Stand 3.3!

Gehen Sie mit uns den Weg in die Zukunft auf der OOP 2020, der Konferenz für Software-Architektur vom 03. – 07.02.2020 in München! Wir, ITech Progress und die ITech Academy, sind als Aussteller vom 04. – 06.02.2020 am Stand mit der Nummer 3.3 für Sie da. Wir freuen uns auf den Austausch über unsere Arbeit im Bereich Systems- und Software Engineering und laden Sie herzlich ein, unsere ITech Academy mit ihrem breiten Portfolio an Schulungen zum Certified Professional for Software Architecture (CPSA) des International Software Architecture Qualification Board (iSAQB), kennen zulernen.

Aktionen und Gewinnspiele

Unter allen Besuchern unseres Standes verlosen wir ein CPSA-Training Ihrer Wahl und geben jedem die Chance bei unserem Gewinnspiel „3-gewinnt“ tolle Preise wie Mahbouba Gharbis Buch „Basiswissen für Softwarearchitekten“ zu gewinnen.

Das erwartet Sie auf der OOP

Unter dem Motto „Into the Unknown“ bietet die OOP in bis zu 9 parallelen Tracks praxisnahe Sessions u.a. zu IT-Sicherheit, Architektur, Microservices, Software-Entwicklung, Business Agilität, AI, DevOps, Cloud, Domain-Driven Design und vielem mehr.

Die OOP ist der Treffpunkt von Mitarbeitern des Konzernumfelds, da die Konferenz die Verbindung zwischen Software und Business herstellt. Sowohl technische Experten (Architekten, Entwickler, Requirements-Engineers, Tester, etc.) als auch Projektleiter und IT-Führungskräfte erhalten einen exzellenten Blick über den aktuellen Stand des modernen Software-Engineering. Neben vielversprechenden Konzepten für zukünftige Herausforderungen werden auch in der Praxis bewährte Techniken diskutiert. Unter OOP-KONFERENZ.DE finden Sie detaillierte Informationen zur Konferenz und der Ausstellung.

Wir sind jetzt schon gespannt auf den Austausch mit Ihnen und freuen uns auf drei spannende Tage!

Ideen im Web verändern die Welt – Aber wie plane ich sie performant und sicher?

Ideen im Web verändern die Welt – Aber wie plane ich sie performant und sicher?

Das Internet ist kürzlich 50 Jahre alt geworden und verbindet heute fast ohne Grenzen sowohl Menschen als auch Maschinen miteinander. Das stetige Wachstum des Internets führt dazu, dass Content immer dynamischer wird, Speicherplatz und Bandbreite günstiger und die Bedeutung von Cloud- und Enterprise Computing steigt. Die Antwort der IT auf diese Herausforderungen sind Web-Architekturen.

In diesem Jahr sind Technologien wie JAMstack, Progressive Web Apps, GraphQL in großem Maße neu in Webanwendungen integriert worden. Diese Neuerungen haben Vorteile für die Nutzer in Hinsicht auf die Leistungsfähigkeit, Verlässlichkeit und Verfügbarkeit der Anwendungen. Unternehmen profitieren durch die geringeren Webentwicklungskosten, die bessere Ressourcennutzung und eine größere Verbreitung und Verfügbarkeit ihrer Webanwendungen.

Wie man Technologien wie diese in das Design neuer Web-Architekturen integriert, lernen Sie in unserer dreitägigen iSAQB-zertifizierten Web-Architektur-Schulung. Wir bringen Ihnen die Grundlagen und -konzepte sowie Qualitätsanforderungen bei, sodass Sie verschiedene Web-Architekturstile unterscheiden können und anhand dessen Software-Systeme, wie z.B. REST-konforme Web-Anwendungen und Web-Services oder auch Single-URI-/Single-Method-Anwendungen, selbstständig entwerfen können. Anhand von Web Application Frameworks wie Spring, Netflix Stack u.A. wird in die Welt der Praxis eingetaucht und Web-Architekturen werden begutachtet und bewertet.

Auf Basis dieser und weiterer theoretischer Grundlagen, führen praktische Übungen in die Arbeit mit Web-Architekturen ein und bieten erste Gelegenheit, das erworbene Wissen anzuwenden.
Das Web-Training ist eines von aktuell 14 Modulen des Schulungsprogramms der ITech Academy zum Certified Professional for Software Architecture – Advanced Level (CPSA-A). Sichern Sie sich jetzt noch den Frühbucherrabatt von 100€ und den Kombirabatt von 200€ (ab 2 Teilnehmern pro Buchung) bis sechs Wochen vor Schulungsbeginn!

iSAQB Lehrplan: Web-Architekturen (WEB)

Anti Pattern: Reinvent the Wheel

Anti Pattern: Reinvent the Wheel

Alle guten Dinge sind drei! Es geht weiter in unserer Anti-Pattern Reihe, in der wir gängige Fehler aus der Softwaretechnik aufzeigen und Tipps geben, wie man sie zukünftig vermeidet beziehungsweise nachträglich behebt. Diesmal geht es darum wie man das Rad neu erfindet, beziehungsweise wie man es besser nicht macht, denn wer immer weiter dreht, dreht auch langsam durch.

Bei unserer 3-tägigen Grundausbildung für Softwarearchitekten, dem Foundation Level Training, bekommst du das nötige Know How, um von Anfang an gute und überschaubare Lösungsmuster zu entwickeln. Wer eine bestehende Architektur systematisch verbessern möchte, dem empfehlen wir unser Advanced Level Training IMPROVE – Evolution und Verbesserung von Softwarearchitekturen.

Beschreibung

Bevor man sprichwörtlich das Rad neu erfindet und beispielsweise auch nur eine Zeile Code selbst schreibt, sollte man sich erst genau umschauen, ob das nicht bereits jemand vor einem getan hat. Jedes neu erfundene Rad muss getestet, gewartet und dokumentiert werden und das kann den Aufwand und somit die Kosten gewaltig in die Höhe treiben.

Auswirkungen

In diesem Fall ist das Problem vieler Softwareentwicklungsprojekten, dass die Software meist von Grund auf entwickelt wird. Top-Down Analyse und Design führen dabei oft zu neuen Architekturen und Individualsoftware, ohne dass ein Entwickler sich nach bereits vorhandenen Bibliotheken umschaut.

Ein weiteres Problem sind mangelnde Kommunikation und Technologietransfer zwischen einzelnen Entwicklungsteams oder Abteilungen.

Lösung

Bevor man mit der Entwicklung anfängt, sollte man sich erst erkundigen, ob es bereits eine Bibliothek gibt, welche dem gewünschten Ziel schon sehr nahe kommt. Denn „es gibt eigentlich nichts, was es nicht schon gibt!“