Andreas Bruns

Softwareentwicklung für Oldenburg und Bremen

Technische Basis für Web-Anwendungen auswählen

Manchmal haben wir bei der Realisierung einer individuellen Web-Anwendung das Privileg, auf der grünen Wiese loslegen zu können. Wenn wir auf keine betrieblichen Rahmenbedingungen und technischen Altlasten Rücksicht nehmen müssen, steht uns ein breites Spektrum an guten Technologien zur Verfügung – damit haben wir die Qual der Wahl ;-).

Vielleicht gibt es auch schon ein fertiges System, das nach passender Konfiguration oder durch eine Modul-Erweiterung unseren Ansprüchen entspricht. Wir müssen uns natürlich erst einmal die Anforderungen an unser System anschauen. Das können beispielsweise folgende Anforderungen sein:

Fachlich

  • Komplexität der eigentlichen Fachlichkeit, z.B. umfangreiche Prozessregeln
  • Erstellung + Gestaltung eigener Seiten durch den Betreiber (CMS-Funktionalität)
  • Funktionalität eines Online-Shops nötig unter Beachtung rechtlicher Richtlinien
  • Login für diverse Benutzer-Rollen mit eigenen Rechten nötig
  • Internationalisierung: Unterstützung diverser Sprachen (z.B. exotische Schreibrichtung)
  • Erstellung von Formularen oder eigenen Datentypen

Technisch (Betrieb, Entwicklung, User-Interface)

  • Möglichkeiten zur Erweiterung, z.B. Modul-Mechanismus
  • Performanz, z.B. durchschnittliche Antwortzeit
  • Sicherheit, beispielsweise durch Nutzung einer Security-Bibliothek
  • Unterstützung bei Betrieb und Entwicklung (Doku, Fachbücher, Berater)
  • Schnittstellen zu anderen Systemen
  • weiterer Funktionsumfang, beispielsweise Administrator-Werkzeuge
  • festgelegte Systemumgebung, beispielsweise LAMP-System (Linux, Apache, MySQL, PHP)
  • User-Interface: CSS, Widgets, Unterstützung für Responsive Webdesign
  • Lizenz: kommerzielle Lizenz oder Open-Source-Lizenz

Das ist schon eine umfangreiche Liste an Kriterien und sobald wir uns die konkret zu erstellende Web-Anwendung anschauen, dann werden uns noch zahlreiche weitere Kriterien einfallen. Einer der ersten Schritte, die ich als Software-Entwickler bei der Umsetzung des Systems mit dem Kunden bestimmen muss, ist die Festlegung der technischen Basis. In größeren Projekten mit Consultant-Unternehmen trifft die Entscheidung ein Software-Architekt oder das ganze Entwicklungsteam gemeinsam.

Unabhängig davon, wie klein das Projekt ist, wird man stets bestehende Software-Bibliotheken von anderen Anbietern verwenden, beispielsweise für Daten-Persistierung, E-Mail, Messaging-Mechansimen oder Session-Management. Es stellt sich nur die Frage, in wieweit die Bibliotheken bereits zu einem Web-Framework oder Web-System (z.B. CMS oder Web-Shop) miteinander kombiniert sind. Folgende Abstufungen sehe ich da:

1. keine Verwendung von Web-Frameworks

  • die benötigten Bibliotheken werden individuell ausgewählt ohne Einsatz eines Frameworks
  • maximale Unabhängigkeit
  • System kann sehr schlank realisiert werden
  • Aufwand kann sehr hoch sein
  • gravierende Umsetzungsfehler möglich (z.B Security)
  • keine einzuhaltende Vorgaben (kann vor- und nachteilig sein)

2. Verwendung eines Web-Frameworks

  • Frameworks bilden bereits einen funktionierenden Rahmen, wobei die Komponenten anzupassen sind
  • Gesamtaufwand ist wahrscheinlich geringer
  • grundlegende Architektur-Entscheidungen sind damit getroffen
  • einzusetzende Techniken sind eventuell mit dem Framework festgelegt
  • Dokumentation bereits vorhanden
  • Vergleich von Web-Frameworks der englischen Wikipedia: hier
  • Oft genutzte Prinzipien: Convention over Configuration, Don’t repeat yourself, KISS
  • Beispiele: Ruby on Rails (Ruby), Play (Java/Scala), Zend Framework (PHP), CakePHP (PHP), Django (Python)

3. Verwendung eines fertigen Web-Systems

Fazit: viele Möglichkeiten

Bei den vielen Frameworks und Systemen ist es schwer, eine Entscheidung zu treffen. Wir können sicherlich mit jeder technischen Basis unser Ziel erreichen, allerdings soll der betriebene Aufwand möglichst gering bleiben. Den umfangreichen Lösungsraum können wir mit den folgenden Fragen einigermaßen einengen:

  1. Verwendung nur von Bibliotheken, eines Web-Frameworks, eines CMS oder Web-Shops?
  2. welche Systemumgebung soll verwendet werden, also auch welche Programmiersprache?
  3. welche Kandidaten decken die benötigten Anforderungen ab?

Und falls uns die Auswahl immer noch schwer fällt, dann hilft vielleicht die Weisheit aus meiner letzten Architektur-Fortbildung: Software-Architekten treffen keine falschen oder richtigen Entscheidungen, sondern die passenden Entscheidungen unter Abwägung der zum Zeitpunkt bekannten Anforderungen und Annahmen. Und Philippe Kruchten, der Entwickler des Rational Unified Process (RUP), bemerkte entsprechend:

„The life of a software architect is a long and rapid succession of suboptimal design decisions taken partly in the dark. „

Kommentare sind geschlossen.