Advanced Software-Architecture – Der Weg zum Certified Professional for Software Architecture (2)

Advanced Software-Architecture – Der Weg zum Certified Professional for Software Architecture (2)

Ende des letzten Jahres berichtete ich von meinen Erfahrungen und Eindrücken des Foundation Levels des „Certified Professional for Software Architecture“ (CPSA) Programms des iSAQB Vereins. Den ersten Blog des neuen Jahres möchte ich nun nutzen um über meinen weiteren Weg zu berichten, der mich letztlich zum Abschluss des Advanced Levels brachte.

Read More

Advanced Software-Architecture – Der Weg zum Certified Professional for Software Architecture

Advanced Software-Architecture – Der Weg zum Certified Professional for Software Architecture

Das Ende des Jahres ist eine gute Gelegenheit das vergangene Jahr Revue passieren zu lassen und sich Gedanken darüber zu machen, wohin es im nächsten Jahr geht.

Das Jahr 2017 stand für mich im Zeichen der Zertifizierung zum „Certified Professional for Software Architecture - Advanced - durch den iSAQB“. Eine herausfordernde Zertifizierung, die über mehrere Schritte erreicht werden kann. Über den ersten, möchte ich hier berichten.

Read More

WWDC 2017 - Was Apple für Entwickler Neues zu bieten hatte

WWDC 2017 - Was Apple für Entwickler Neues zu bieten hatte

Vom 6.-9. Juni 2017 fand in diesem Jahr die alljährliche Entwickler-Konferenz von Apple statt. Viele wissen davon nichts oder sehen nur die im Anschluss auf vielen Tech-Seiten veröffentlichten Artikel zu den Themen, die von Tim Cook, Craig Federighi und Phil Schiller in der allerersten Keynote präsentiert werden. Nur die wenigsten wissen, dass die Konferenz von Montag bis Freitag dauert und noch viele Details und sogar völlig unerwähnte Themen erst in den kleineren Präsentationen ans Licht kommen.

Read More

10 Libraries, die Architektur und Entwicklung einer iOS-App enorm verbessern

10 Libraries, die Architektur und Entwicklung einer iOS-App enorm verbessern

Die Verwendung von Libraries kann die Konzeption und Entwicklung von Apps erheblich erleichtern: Der Code wird besser strukturiert, übersichtlich und kürzer. In einem vorhergehenden Blogbeitrag haben wir bereits die 10 wichtigsten Libraries für Android-Entwickler vorgestellt. Nun wollen wir einen Blick auf das Angebot an iOS-Libriaries werfen. Wir haben uns auf GitHub umgesehen und für euch die 10 besten Libraries ausgesucht, die euch beim Programmieren von iPhone- und iPad-Apps Arbeit abnehmen.

Read More

10 Android Libraries, die Architektur und Entwicklung einer Android App enorm verbessern

10 Android Libraries, die Architektur und Entwicklung einer Android App enorm verbessern

Beim Konzipieren und Programmieren von Android Apps wird es - je größer die App wird - immer unübersichtlicher und der Code immer umfangreicher und komplizierter. Wie kann man wieder mehr Übersicht in die Architektur der App bringen? Und wie kann man beim Erstellen des Codes für immer wiederkehrende Basisfunktionalitäten Zeit und Platz sparen? Die wachsende Zahl von Android Libraries bietet hierfür einen umfangreichen Fundus an Helfern. Wir haben uns zahlreiche Libraries angeschaut und die 10 besten rausgesucht, die die Arbeit eines Android-Programmierer wirklich einfacher machen.

Read More

Architecture without Architects

Architecture without Architects

Die Begriffe „Architektur“ und „Architekt“ hat die Softwareentwicklung aus der Baubranche adoptiert. Eine klug gewählte Softwarearchitektur, die sich auf bewährte Strukturmuster stützt und dadurch Flexibilität und Wartbarkeit bietet, ist unbestreitbar Teil eines erfolgreichen Softwareprojektes. Hier ist die Analogie des Begriffs „Architektur“ zwischen Bau- und Softwareindustrie richtig. Aber ist die begriffliche Gleichsetzung darüber hinaus nicht eher irreführend? Welche Rolle sollte ein Softwarearchitekt überhaupt innerhalb eines Softwareprojekts spielen? Ist der Softwarearchitekt vielleicht sogar überflüssig?

Read More

Software Architecture Summit 2016

Vom 16. – 18.03.2016 fand der Software Architecture Summit in München statt. An diesem Informations- und Trainingsevent für Softwarearchitekten, Senior-Entwickler und IT-Projektleiter nahm ich, Steffen Kleeberg, in diesem Jahr teil. In halb- bzw. ganztägigen Workshops gingen deutschsprachige und internationale Architektur-Experten tief ins Detail, sodass die Entscheidung, welche Vorträge ich besuchen würde, nicht leichtfiel.

Read More

Einfache Java-Bytecode-Instrumentalisierung

Einfache Java-Bytecode-Instrumentalisierung

In modernen Architekturen ist der Einsatz von Frameworks und 3rd Party Libraries selbstverständlich. Erfolgt die Entwicklung in einem Unternehmen, so sind die Zuständigkeiten für das Gesamtsystem häufig unter anderem zwischen den Teams der technischen Architektur und der Entwicklung verteilt. Besteht das Bedürfnis seitens des Teams Entwicklung, zu Analysezwecken in die Frameworks und Libraries programmatisch tiefer einzugreifen, als von der Architektur vorgesehen, sind solche Änderungen in der Regel mit extra Aufwand seitens Team Architektur verbunden. Neben dem zusätzlichen Aufwand spielen die Sicherheit und die Qualität des Frameworks eine wichtige Rolle – Änderungen im Framework, die nur eine ganz spezielle und unter Umständen einmalig auftretende Frage beantworten, aber nicht in der Produktion wirksam sein sollen, sind zu vermeiden.

Read More

Das - Liskov Substitution Principle - LSP

Das - Liskov Substitution Principle - LSP

ubtypes must be substitutable for their base types. 

So, das „S“ und das „O“ der SOLID-Prinzipien haben unser Design hinsichtlich der Qualitätsmerkmale wie Wartbarkeit, Testbarkeit und Erweiterbarkeit bereits erheblich verbessert. Wir haben gesehen, dass es Sinn macht, einer Klasse möglichst nur eine Verantwortlichkeit zu übertragen (Single Responsibility Principle) und Programmcode offen für Erweiterungen, aber geschlossen für Änderungen zu implementieren (Open Closed Principle).

Read More

Das Open-Closed Principle (OCP)

Das Open-Closed Principle (OCP)

Software sollte lesbar, modular und wartbar sein. Leider entsteht im Laufe der Entwicklung, vor allem aber auch bei Weiterentwicklungen, immer wieder schlechtes Software-Design. Im schlimmsten Fall treten Programmfehler bei bereits längst getesteten Funktionalitäten auf. Die Beachtung der SOLID-Prinzipien objektorientierter Softwareentwicklung kann helfen, diese Fehler zu vermeiden und Programmcode wartbar zu halten. Insbesondere die Wartbarkeit ist von großer Bedeutung, da man selten Softwareentwicklung auf der grünen Wiese betreibt, sondern in den allermeisten Fällen auf vorhandenem Programmcode aufbaut.

Read More

Das Single Responsibility Principle (SRP)

Das Single Responsibility Principle (SRP)

There should never be more than one reason for a class to change.

Heute beginnen wir mit dem ersten SOLID–Prinzip: Eine Klasse sollte immer eine einzige Verantwortung haben, oder anders ausgedrückt: Es sollte nie mehr als einen Grund geben, eine Klasse zu ändern (Single Responsibility Principle, SRP).

Das SRP wendet man an, um übersichtliche, leicht erweiterbare und einfach zu wartende Software zu konzipieren.

Read More

SOLID – ein Schritt zu mehr Professionalität in der Software-Branche

SOLID – ein Schritt zu mehr Professionalität in der Software-Branche

Schon vor vielen Jahren saß ich mal in einer Straßenbahn, wir standen an einer Haltestelle, es ging nicht weiter. Plötzlich hörten alle Motoren auf zu summen, alle Lichter gingen aus – und nach einiger Zeit wieder an. An der Anzeige über dem Fahrer blinkte die Firmware-Versionsanzeige auf. Was war passiert? Offenbar war die Straßenbahn „abgestürzt“ und der Fahrer hatte sie in seiner Not einfach neu gebootet.

Read More

Beideskönner. Wie das Gemini Blueprint Projekt Spring und OSGi miteinander sprechen lässt

Beideskönner. Wie das Gemini Blueprint Projekt Spring und OSGi miteinander sprechen lässt

Es könnte doch eigentlich alles so schön sein.

In der Theorie lernen wir von Programmierers Kindesalter an, wie moderne Architekturen aussehen, wie moderne objekt- und vor allem service-orientierte Konzepte funktionieren. Dass über Bausteingrenzen hinweg munter und verteilt kommuniziert wird, dass ein hoher Wiederverwendungswert einzelner Bausteine zum schnellen voranschreiten in der Projekt-Entwicklung führt und dass wir das Rad nur noch selten neu erfinden müssen. Modernes Programmieren gleicht mehr dem zusammensetzen von Bausteinen zur Entwicklung einer Lösung statt dem klassischen Entwickeln von Bausteinen selbst.

Als Spring noch das allgemein gängige Handwerkszeug war, um Bausteine von Software Architekturen elegant zu entkoppeln, gab es keine Sprachbarriere. Spring-Beans konnten sich wunderbar untereinander und mit Hibernate unterhalten, mit gut zusammengestellten Konfigurationsdateien waren schnell große Projekte aufgesetzt und zusammengepuzzelt.

Nun stellt seit einigen Jahren OSGi die spring’sche Vormachtstellung in Frage bzw. greift unterstützend und maßgebend in neuere Systemarchitekturen ein. Daher scheint es nur folgerichtig, eine verständliche Antwort auf die Frage „Was ist OSGi?“ zu suchen und zu untersuchen inwiefern OSGi mit Spring kombiniert werden kann.

Also, was ist das nun, OSGi und warum gilt es überhaupt darüber nachzudenken zukünftige Systeme in ein OSGi Umfeld zu integrieren, wenn Spring doch unsere Probleme bisher ganz vorzüglich lösen konnte?

Read More

Software-Lizenzen – ein Überblick

Software-Lizenzen – ein Überblick

Es steht außer Frage, dass Software heute immer komplexer und mächtiger wird. Häufig wird Funktionalität benötigt, die deutlich an der Kernthematik des eigenen Produkts vorbeigeht. Das Spektrum ist dabei weit gefächert. Von Modulen für sichere SSH-Verbindungen über Hilfsklassen, die die Arbeit mit bestimmten Datentypen vereinfachen, bis hin zu Bibliotheken, die die grafische Präsentation unterstützen, besteht hier ein riesiges Spektrum an benötigter Software.

Read More

Inversion of Control

Inversion of Control

Vergleichbar mit der Konstruktion eines Wolkenkratzers, müssen bei der Erstellung einer Software Architektur-Richtlinien definiert und berücksichtigt werden. Wird dies nicht befolgt, stürzt die Konstruktion über kurz oder lang ein.
Inversion of Control gibt dem Entwickler ein effektives Tool an die Hand, um Software auf Klassenebene so solide zu bauen, dass auch bei größeren Umbaumaßnahmen oder langjähriger Weiterentwicklung die Architekturaspekte Erweiterbarkeit, Wiederverwendbarkeit, Testbarkeit nicht in Mitleidenschaft geraten.

Read More