Training - Beratung - Projektarbeiten

www.David-Tielke.de

Vortrag “Softwarekomponenten” bei der UG Soest/Lippstadt

Gestern war ich als Sprecher bei der neu gegründeten UG Soest/Lippstadt unterwegs, wo ich in 2,5 Stunden eine Kurzfassung meines Workshops “Architekturen mit Softwarekomponenten” als Vortrag präsentieren durfte. Die Insgesamt ca. 30 Teilnehmer hörten in dieser Zeit einiges zu Problemen vieler Anwendungen, Grundlagen wie SRP, ISP, IoC & Co sowie eine ausführliche Erläuterung von Mehrschichtenarchitekturen und wie diese effizienter mit Softwarekomponenten umgesetzt werden können. Alle Materialien dieses Vortrages stelle ich nun hier zur Verfügung.

Die neue UG Soest/Lippstadt ist deutschlandweit die erste UG die versucht zwei Städte gemeinsam zu verbinden und so finden die Treffen an jedem ersten Donnerstag im Monat statt. Der Ort wechselt dabei monatlich zwischen Soest  (Aagon GmbH) und Lippstadt (Ferber-Software GmbH) und ist, zumindest gestern in Lippstadt, dank zentraler Lage in der nähe des Bahnhofs, ideal zu erreichen. Wie jede andere neu gegründete UG ist auch die UG Soest/Lippstadt noch auf der Suche nach neuen Mitgliedern, wer also in diesem Bereich wohnhaft ist oder gar arbeitet, sollte sich das Ganze auf jeden Fall einmal anschauen.

Links
Folien & Projekte
UG Soest / Lippstadt

Softwarearchitektur: Komponenten Teil 1 - Was wir von anderen Industrien lernen können.

imageWenn man erfahrene Entwickler fragt, wie man große und Komplexe Softwareprojekte umsetzt, bekommt man meistens zwei Dinge zu hören: Schichten und Komponenten. Beiden ist gemeinsam, dass sie dazu dienen, innerhalb meines Softwaresystems klare Grenzen zwischen Funktionalitäten zu ziehen und sie in Module aufzuteilen mit all den einhergehenden Vorteilen wie besserer Wiederverwendbarkeit, Wartbarkeit, Testbarkeit und – vor allem – der besseren Verteilbarkeit auf einzelne Entwickler.

Herr Ober da liegt ein Haar neben meiner Suppe…

Schaut man über den Tellerrand hinaus in andere Ingenieursbereiche erkennt man, dass dort identische Probleme existieren – und gelöst wurden: durch Modularität. Modular ist etwas, was in sich eine geschlossene Einheit bildet und über verschiedene definierte Schnittstelle angesprochen wird und seinerseits die Fähigkeiten anderer Module ebenfalls über definierte Schnittstellen nutzt. Für Benutzer eines Moduls ist deren innerer Aufbau meist vollkommen unwichtig. Betrachtet man das Modul einer Backstraße zum backen von Brot, so ist klar: Es benötigt Mehl, Hefe und Wasser und produziert Brot, mehr muss ich von Außen nicht wissen um damit Brot herzustellen. Angeschlossen an ein Mehlsilo, ein Hefesilo und eine Wasserleitung kann es also los gehen. Klar wachsen Backstraßen nicht auf Bäumen, sie müssen von irgendjemandem gebaut werden. Bei dem Bau solch eines Systems, schauen wir uns die Lösung zu zwei Problemen an, die wir auch in der Softwareentwicklung haben:

  1. Wie und wo fangen wir bei großen Systemen an zu entwickeln?
  2. Wie können wir die Arbeit auf mehrere Personen aufteilen?

Aus dem Bereich der Mathematik und der Informatik kennt man die Taktik des “Divide And Conquer” (Teile und herrsche), welches besagt das man ein großes Problem in viele kleinere Probleme unterteilt. Das macht man so lange bis alle kleinen Probleme lösen werden können und somit das Gesamtproblem gelöst ist.

Fangen wir also an unser “Problem” aufzuteilen: Eine Backstraße besteht (vermutlich, Leser der Backindustrie mögen mich bitte korrigieren) aus den Untermodulen Teigverarbeitung, Teigherstellung und Backofen wobei in das Modul Teigverarbeitung die Eingabe von Mehl, Hefe und Wasser erhält.

image

Wie dabei dieser Teig erzeugt wird, wie die Rohlinge geformt werden oder wie gebacken wird – das interessiert den Benutzer von Außen nicht. Hauptsache an den Schnittstellen steht das definierte Ergebnis mit den definierten Eigenschaften bereit.

Nun ist so eine Teigherstellungsmaschine (die in der Backstraße enthalten ist) auch kein einfaches Modul und so ist es ebenfalls aus Untermodulen zusammengesetzt, die – ihr werdet es nicht glauben – über fest definierte Schnittstellen miteinander kommunizieren (gähn…)

image

Mangels Maschinenbaustudium vermute ich das solch ein Modul aus einem Mixer (zum vermengen der Zutaten) und einem Kneter (der alles zu einem Teig knetet) bestehen wird. Dieses Spiel könnte man nun so lange treiben, bis man bei Schrauben und Kabeln der einzelnen Module angekommen ist.

image

Haben wir den überschaubaren Level der Schrauben und Kabel erreicht, kann losgebaut werden. Die Module auf unterster Ebene können auf die Ingenieure verteilt werden, da sie ja keine anderen Komponenten brauchen um fertiggestellt zu werden. Aber auch an den Modulen der oberen Schichten kann gebaut werden (Halterungen, Rohre, Kabel, usw.) weil deren Arbeit ebenfalls unabhängig ist – auch von Untermodulen. Denn deren Ausmaße und Schnittstellen sind je genau definiert – die Ingenieure müssen dies nur beim Bau berücksichtigen. Wurde unsere Beispiel sauber durchspezifiziert, kann an 6 Stellen losgebaut werden.

Und wie man sich die Brötchen, die aus der Backstraße kommen, mit der Softwareentwicklung verdienen kann, indem man sich genau das Prinzip zu nutze macht, schauen wir uns im nächsten Teil an… Weil jetzt habe ich Hunger!

Mobile Developer Conference 2012 in Hamburg

Am 13.2 und 14.2 fand, wie jedes Jahr, die Mobile Developer Conference 2012 statt. An zwei Tagen wurden in jeweils drei Tracks aktuelle T20120213_MDevCon_Tielke_0010hemen rund um iOS, Android, Windows Phone 7 und natürlich auch Trends präsentiert und mit den Teilnehmern diskutiert. Die sehr gut besuchte Konferenz fand im Radisson Blue auf dem Hamburger Messegelände statt und bot, mit großen und gut ausgestatteten Konferenzräumen die idealen Rahmenbedingungen für eine großartige Konferenz. Zum ersten Mal war auch ich mit einem Vortrag dabei. Da die Entwicklung von mobilen Anwendungen auf immer mehr Plattformen publiziert werden muss und es dabei wichtig ist, die Kosten in einem erträglichen Rahmen zu halten und eine gut erweiterbare und wartbare Software zu schaffen, wählte ich als Thema “Unite the Worlds – .NET als Backend”. In dem 60-minütigen Vortrag ging es neben der Frage “Warum überhaupt ein einheitliches Backend bei mobilen Anwendungen?” vor allem um die konkrete Umsetzung und warum Microsoft .NET dafür eine ideale Plattform ist. Der komplett gefüllte Raum bot eine super Atmosphäre und spannende Fragen und Diskussionen mit den Teilnehmern und hat wirklich enorm viel Spaß gemacht. Nach dem Vortrag entstand eine rege Diskussion mit den Teilnehmern in der Lounge, bei der sich viele als überrascht zeigten, wie einfach ein Backend mit .NET zu realisieren ist und wie viele Probleme damit vermieden werden können.

Zusätzlich führte der Chefredakteur Markus Stäuble mit mir ein Interview zu meiner Markteinschätzung von Windows Phone 7:

Ich möchte mich auf diesem Wege noch einmal bei allen Teilnehmern für die rege Teilnahme und das Feedback bedanken und hoffe mit meinem Vortrag den ein oder anderen entscheidenden Impuls für Ihre mobilen Projekte gegeben zu haben. Natürlich möchte ich mich auch bei der Neuen Mediengesellschaft Ulm für die Einladung zu dieser Konferenz bedanken und hoffe beim nächsten Mal wieder dabei sein zu können.

Links:
Mobile Developer Conference 2012
Fotos auf Facebook