Architektur – DIE Erfolgsbasis

Software Architektur ist von zentraler Bedeutung und kann einfach erklärt werden. Ein Vergleich mit der Überbauung einer Siedlung ermöglicht Parallelen zur Software Architektur. Auch als technischer Laie können Sie die richtigen Fragen stellen und verstehen die groben Zusammenhänge.

Ein Blick in die Überbauung einer Siedlung

Als konkretes Beispiel betrachten wir die Überbauung einer neuen Siedlung mit Einfamilienhäusern (EFH) auf der grünen Wiese. Der Käufer kann zwischen 3 Varianten wählen:

  • 5 Zimmer EFH mit Flachdach, ohne Garage
  • 5 Zimmer EFH mit Giebeldach und Garage
  • 5 Zimmer EFH mit Giebeldach, Garage und Solaranlage für die Stromerzeugung

Architektur-Gebauede

Als Architekt stellt sich die Frage, ob diese 3 Varianten fix geplant werden oder ob ein Modulbaukasten besser wäre:

  • Auswahl Anzahl Zimmer (5 oder 6.5)
  • Mit / ohne Garage
  • Flachdach oder Giebeldach
  • Mit / ohne Solaranlage

Vergleich der beiden Varianten:

3 fixe Varianten Modulbaukasten
Einfacher komplexer
Schneller realisiert (falls keine Zusatzwünsche) Mehr Aufwand zu Beginn (= teurer)
Nicht flexibel: Neue Anforderungen führen zu neuen Varianten Einfacher erweiterbar, z.B. Anzahl Nasszellen wählbar

Mehr Varianten

Gefahr von zu vielen Varianten im Laufe der Zeit Gefahr von zu vielen (kleinen) Modulen, die Übersicht geht verloren

 

Der Architekt muss entscheiden, welche Flexibilität nötig ist resp. welche Rahmenbedingungen gegeben sind:

  • Soll der Kunde kaufen, was vordefiniert ist (Auswahl aus genau 3 Varianten)
  • Wie viele EFH sollen insgesamt gebaut resp. verkauft werden
  • Wann muss das erste EFH verkauft sein, wie lange darf es max. dauern, bis alle EFH verkauft sind
  • Wie viel darf ein EFH kosten: Ein Konkurrenzvergleich liefert wichtige Informationen

Die Zukunft kann niemand voraussagen. Die Wahl der richtigen / besseren Variante ist immer verbunden mit einer subjektiven Einschätzung der Zukunft.

Von den Bauwerken zur Software Architektur

Als Vergleich wird die Entwicklung einer Buchhaltungs-Software herangezogen. Die Siedlung entspricht der Buchhaltungs-Software, das EFH einem Kunden (privat oder geschäftlich).

Es gibt wieder 3 Varianten:

  • Light: Einfache Buchhaltung, nicht mandantenfähig, ohne MWSt, keine Schnittstellen zu anderen Systemen
  • Simple: Doppelte Buchhaltung, mandantenfähig, mit MWSt, keine Schnittstellen zu anderen Systemen
  • Advanced: Doppelte Buchhaltung, mandantenfähig, mit MWSt, Schnittstellen zu anderen Systemen

Buchhaltung

Als Modulbaukasten gibt es folgende Konfigurationsmöglichkeiten:

  • Einfache oder doppelte Buchhaltung
  • Mit / ohne MWSt
  • Mandantenfähig
  • Schnittstellen (z.B. Export von Buchungen im csv-Format)

Marketing / Verkauf müssen folgende Fragen beantworten:

  • Wie lange darf es max. dauern, bis eine erste Variante verkauft werden kann und wie hoch dürfen die Entwicklungskosten dafür sein
  • Welche Variante ist es: Light oder Simple? Die komplizierteste Variante wird selten als Erste umgesetzt.
  • Wann müssen die anderen Varianten bereit sein und wie hoch dürfen die Entwicklungskosten dafür sein
  • Sind weitere Varianten denkbar: Doppelte Buchhaltung, nicht mandantenfähig, ohne MWSt

Danach muss die Technik entscheiden, ob die fixen Varianten oder der Modulbaukasten umgesetzt werden.

Wechsel der Architektur

Ein Wechsel der Architektur ist kostspielig. Die Architektur der Software widerspiegelt sich in der Grundstruktur der Anwendung:

  • Eingesetzte Tools und Technologien
  • Struktur der Kernfunktionalitäten (Module, Ablauf, Daten)
  • Definition der Schnittstellen

Bei einem Wechsel müssen nicht alle Punkte betroffen sein. Jeder einzelne Punkt für sich alleine betrachtet kann mit Aufwand verbunden sein.

Technisch ist ein Wechsel machbar. Je später der Wechsel erfolgt desto teurer wird es. Sind z.B. schon Lizenzen für das Buchhaltungsprogramm verkauft worden, muss der technische Support sichergestellt werden. Diese Kunden sind nicht bereit, für eine neue Version, die keine neuen Funktionen beinhaltet, Geld zu bezahlen. Eine Migration dieser Kunden auf die neue Architektur kostet auf jeden Fall Zeit (und somit auch Geld).

Ein paar Tipps

  • Im Zweifelsfall einfach als kompliziert: Eine einfache Architektur ist übersichtlicher und leichter verständlich.
  • Nicht zu sehr in die Zukunft schauen: Es ist besser, nicht alle Eventualitäten von Anfang an zu berücksichtigen. Meist kommt es anders als zu Beginn gedacht. Was nicht von Anfang an gebraucht wird aber schon realisiert ist, kostet mehr und macht die Architektur komplizierter.
  • Sind die Module beim Modulbaukasten zu klein, besteht die Gefahr, dass die Architektur zu kompliziert ist. Jedes Modul hat Schnittstellen und kommuniziert mit den anderen Modulen. Je mehr Module es gibt, desto komplexer wird es. Vor lauter Bäumen sehen Sie den Wald nicht mehr. In diesem Fall können mehrere Module zu einem einzigen zusammengefasst werden.

Fazit

  • Parallelen zum Bauwesen erlauben, die Grundzüge einer Software Architektur besser zu verstehen und die richtigen Fragen als Laie zu stellen.
  • Es ist besser, mit einer (zu) einfachen Architektur zu starten und diese zu verfeinern als mit einer (zu) komplizierten.
  • Ein Wechsel der Architektur ist immer mit (hohen) Kosten verbunden und sollte vermieden werden.

Effiziente Software Begutachtung im Überblick

Haben Sie Ärger mit ihrem Software-Lieferanten oder möchten eine Aussage bezüglich Qualität ihrer Software? Mit ein paar Tagen Aufwand und der Pareto-Regel resultiert eine aussagekräftige Begutachtung. So wird’s gemacht.

Code Review

Die 3 wichtigsten Bereiche sind:

Architektur

Die Architektur resp. Struktur der Software ist von zentraler Bedeutung. Die meisten Anwendungen haben eine Benutzeroberfläche, bilden Firmenprozesse ab und speichern Daten. Dies ist eine sog. 3-Schichten-Architektur:

  • Benutzeroberfläche: Führt den Benutzer zielgerichtet zum gewünschten Ergebnis (Webanwendung, Desktop-Anwendung und/oder mobile Anwendung)
  • Geschäftslogik: Bildet die Firmenprozesse ab. Das Firmen-Wissen steckt in dieser Schicht. Dies ist der wichtigste Teil und muss wieder verwendbar sein.
  • Datenhaltung: Die Daten werden persistent gespeichert (Filesystem, Datenbank).

Die Struktur gibt einen ersten Hinweis auf die Granularität: Ist die Anwendung unterteilt in (zu) viele Unterprojekte oder gibt es ein riesiges Projekt, das alles beinhaltet.

Schnittstellen

Braucht die Anwendung Informationen von fremden Systemen oder liefert sie Informationen an fremde Systeme? Schnittstellen sind heikel. Es ist wichtig, dass diese gekapselt sind, damit Änderungen nicht die gesamte Anwendung betreffen. Und die Software muss robust resp. fehlertolerant sein.

Time for Code Review

Fremdprodukte

Um das Rad nicht neu zu erfinden, werden Fremdprodukte eingesetzt. Die Anzahl eingesetzter Fremdprodukte gibt einen Anhaltspunkt bez. Komplexität der Anwendung. Dabei unterscheide ich 2 Arten:

  • Komplexe Produkte wie z.B. eine Bibliothek zur Erstellung der Benutzeroberfläche oder zur Erstellung von Excel-Files ohne die Installation von Office.
  • Einfache Produkte wie z.B. ein Mapper (kopiert Daten von einem Objekt ins andere, hat keine Logik).

Für beide Arten gilt: Im Lauf der Zeit wird es neuere Versionen geben. Irgendwann muss auf eine neuere Version gewechselt werden. Dabei kann es passieren, dass die neue Version nicht mehr kompatibel ist und es zu einem ungeplanten Mehraufwand kommt. Oder ein Fremdprodukt wird abgekündigt und ein Ersatz muss gesucht werden.

Zusammenfassung

Je nach Grösse und Komplexität der Anwendung ist die grobe Analyse obiger Punkte in 1-3 Tagen gemacht. Das Resultat ist eine Liste mit Punkten zur detaillierten Abklärung.

Die technischen Details sind hier.

Excel-Anwendungen im Unternehmen – Gefahr oder Segen?

Excel bietet mehr als Tabellenkalkulationen: Charts, komplexe Berechnungen oder umfangreiche Formulare sind nur einige Beispiele. Excel ist weit verbreitet und der Quasi-Standard. Es braucht wenig Zeit, um eine Excel-Anwendung zu erstellen.

Neben Excel gibt es die Möglichkeit, massgeschneiderte, firmenspezifische Anwendungen zu entwickeln. Eine solche Anwendung bietet bei gewissen Einsatzgebieten Vorteile. Die Vor- und Nachteile der Ansätze werden gegenübergestellt. Eine Checkliste hilft, die richtige Wahl zu treffen.

 

Excel Anwendung

Checkliste

Die Features beziehen sich auf typische Anwendungen in KMU’s. Die Checkliste ermöglicht eine erste Einschätzung, ob eine Excel-, Desktop oder Webanwendung Sinn macht.

Feature Excel Desktop Webanwendung
Benutzer-führung / Usability Möglich
kann sehr aufwendig sein
Ja
Wizzard: Benutzer füllt Daten in vordefinierter Reihenfolge aus
Navigation: Hilft für  Überblick
Ja
Wizzard: Benutzer füllt Daten in vordefinierter Reihenfolge aus
Navigation: Hilft für  Überblick
Validierung Eingabedaten Möglich

kann sehr aufwendig sein

Ja

Z.B. mit Tooltips, Fehler-meldungen

Ja

Z.B. mit Tooltips, Fehler-meldungen

Benutzer muss jederzeit Zugriff haben Kaum möglich

Zugriff von privat meist unmöglich

Zugriff von mobilen Geräten meist nicht möglich

Kaum möglich

Zugriff von privat meist unmöglich

Zugriff von mobilen Geräten gar nicht möglich

Ja

Zugriff von privat OK

Zugriff von mobilen Geräten OK

Mehrsprachig Kaum möglich

Keine Unterstützung

Ja

Wird von allen gängigen Programmier-sprachen unterstützt

Ja

Wird von allen gängigen Programmier-sprachen unterstützt

Daten von Schnittstellen (extern) holen Kaum möglich Ja

Muss programmiert werden

Ja

Muss programmiert werden

Nachvollzieh-barkeit: Wer hat wann welche Eingaben gemacht Kaum möglich Ja

Muss programmiert werden

Ja

Muss programmiert werden

Integration in Office-Anwendungen Optimal Möglich

Muss programmiert werden

Möglich

Muss programmiert werden

Schutz von Firmen-Wissen Gering

Wer das Excel hat, kennt die Logik

Hoch

Quellcode ist für Aussenstehende nicht verfügbar

Hoch

Quellcode ist für Aussenstehende nicht verfügbar

Modularität: Gleiche Funktionalität nur 1x vorhanden Schwierig

Meist sind die einzelnen Excel-Files isoliert

Möglich

Muss vom Entwickler umgesetzt werden

Möglich

Muss vom Entwickler umgesetzt werden

Immer die neuste Version der Anwendung verwenden Nicht garantiert

Es zirkulieren alte Excel-Sheets

Garantiert.

Benutzer muss Update machen.

Garantiert

Passiert automatisch

Kompatibilität Aufwand gering

Aufwand für verschiedene Excel-Versionen

Aufwand gering

Aufwand für verschiedene Betriebssysteme

Aufwand mittel

Aufwand für verschiedene Browser

Aufwand für erstmalige Entwicklung Gering

Schnelle Fortschritte

Je umfang-reicher desto schwieriger

Mittel

Es braucht Abklärungen bez. Architektur / Struktur

Eher hoch

Es braucht Abklärungen bez. Architektur / Struktur

Hosting

Aufwand für Weiterent-wicklung Mittel

Ab einer gewissen Grösse / Komplexität unübersichtlich

Gering

Voraussetzung: Struktur passt

Gering

Voraussetzung: Struktur passt

Begriffserklärung für diesen Blog

Firmenspezifische Anwendung

Eine Anwendung ist ein Computerprogramm. Eine firmenspezifische Anwendung liefert auf spezifische Anwendungsfälle der Firma eine massgeschneiderte Lösung.

Mit welcher Technologie (Excel, Desktop, Webanwendung) die firmenspezifische Anwendung umgesetzt wird, spielt aus Sicht der Anwender keine Rolle.

Excel-Anwendung

Eine Excel-Anwendung besteht aus einem Excel-File (.xlsx oder .xls). Häufig braucht es Makros, welche mit VBA (Visual Basic for Applications) programmiert werden. Damit die Excel-Anwendung verwendet werden kann, muss Excel auf dem Gerät installiert sein.

Desktop Anwendung

Eine Desktopanwendung wird auf einem bestimmten Gerät (PC, Laptop) installiert. Eine Windows-Anwendung wird typischerweise als Desktopanwendung (exe-File) geliefert und muss vom Benutzer installiert werden.

Webanwendung

Eine Webanwendung braucht keine Installation. Es braucht lediglich einen Browser. Auf Webanwendungen kann auch von mobilen Geräten zugegriffen werden.

Zusammenfassung

Die Checkliste gibt eine erste Einschätzung. Fällt diese klar zugunsten einer Anwendungsart aus, sind keine weiteren Abklärungen nötig. Bei Unsicherheit kann es Sinn machen, zuerst die Excel-Anwendung (als Prototyp) zu erstellen. Zu einem späteren Zeitpunkt kann diese durch eine Desktop- oder Webanwendung ersetzt werden.

Software-Fehler minimieren

Software-Fehler minimieren will jeder. Nicht jeder Fehler hat die gleichen Auswirkungen auf Kosten und Termine. Ein wichtiger Faktor ist, in welcher Entwicklungsphase der Software-Fehler gefunden wird. Im Grundsatz gilt: Je früher ein Fehler gefunden wird, desto einfacher und günstiger ist dessen Behebung.

Der Teufel im Detail
Der Teufel im Detail

Software-Fehler: V-Modell

Am Beispiel des V-Modells wird klar:  Erkennen Sie einen Fehler während der Systemanforderungsanalyse, hat dies meist keine weitreichenden Konsequenzen. Es braucht Denkarbeit, die Fehlerbehebung geschieht auf Papier. Der Aufwand beträgt einige Stunden.

V-Modell
V-Modell

Ein Software-Fehler bei der Abnahme kann fatal sein. Erfüllen Sie beispielsweise die Anforderungen an die Performance (Antwortzeiten) nicht, sind folgende Schritte nötig:

  • Überarbeitung System-Architektur, System-Entwurf, Software-Architektur
  • Überarbeitung Software-Entwurf (Code anpassen)
  • Durchführen der Tests auf allen Stufen

Projektverzögerung durch Software-Fehler

Ein solcher Software-Fehler kann eine Projekt-Verzögerung von Wochen oder gar Monaten verursachen. Das hat fatale Folgen. Darum lohnt es sich, während den sogenannten Papier-Phasen des Projektes Reviews durchzuführen. Die zusätzliche Zeit, die Sie aufwenden, ist optimal investiert. Dadurch können Sie teure Fehler in späteren Phasen minimieren.

Falls Sie die kritischen Faktoren erst gegen Ende der Entwicklung prüfen können, stellt dies ein erhebliches Risiko dar. Ziel ist es, die kritischen Faktoren möglichst früh zu verifizieren. Dazu gibt es folgende Möglichkeiten:

  • Verwenden Sie ein anderes Entwicklungsmodell (z.B. Scrum). Dies funktioniert nicht von heute auf morgen, da in ihrem Unternehmen das entsprechende Wissen vorhanden sein muss.
  • Realisieren Sie einen Prototyp, der vergleichbar mit der realen Anwendung ist. Dies führt in der Regel zu Mehraufwand.
  • Teilverifizierung in frühen Testphasen (z.B. Integrationstest). Der Mehraufwand ist gering. Sie können nicht das ganze System prüfen.
Software-Fehler minimieren
Software Fehler

Optimale Software-Entwicklung

Für die optimale Software-Entwicklung sind folgende Schritte nötig:

 

  • Frühzeitiger Einbezug der relevanten Personen (je nach Phase verschieden)
  • Durchführung von Reviews
  • Analyse der möglichen Risiken
  • Minimierung gewisser Risiken: nicht jedes Risiko muss minimiert werden, ein Risiko kann bewusst in Kauf genommen werden.

Auf diese Weise können grobe Fehler zwar nicht verhindert, aber grösstenteils minimiert werden.

Weiterführende Links:

Scrum: http://de.wikipedia.org/wiki/Scrum

Review: http://de.wikipedia.org/wiki/Review_(Softwaretest)