Stufe Implementierung: Softwarearchitektuen und Programmierstile

TestmanagementDie Welt verändern, ein Bug nach dem anderen…

Stacks Image 1560735
Der Weise schämt sich seiner Fehler, aber nicht, sie zu korrigieren.

Konfuzius

Stufe: Implementierung

Image Map
Unter Implementierung im Softwareentwicklungsprozess versteht man die Umsetzung der Spezifikation der Softwarekomponenten und des IT-Konzeptes in Software.

In der Softwareentwicklung wird heutzutage im Rahmen der objektorientierten Programmierung komponentenorientiert programmiert. Bekanntes Beispiel ist CORBA. Eine Erweiterung von CORBA ist CCM (CORBA Component Model). CORBA und CCM repräsentieren keine Produkte, sondern stellen Spezifikationen dar.

Man kann die verschiedenen Architekturen unterscheiden in
  • Monolithische IT-Systeme
  • Client-Server-Architekturen
  • Verteilte Systeme
  • Serviceorientierte Architekturen (SOA)
  • Web-Architekturen
Monolithische IT-Systeme sind nicht untergliedert in Teilsysteme/Komponenten. Altsysteme basieren meist auf der monolithischen Systemarchitektur.
Client-Server-Architekturen bestehen aus mindestens 2 Subsystemen, wobei ein System verschiedene Dienste (Server) anbietet und ein anderes Subsystem die Dienste nachfragt (Client). Die Kommunikation erfolgt nachrichtenorientiert und wird über Dienste geregelt.
Verteilte Systeme sind Teilsysteme, die miteinander gekoppelt sind. Bekannte Vertreter sind Middleware-Systeme. Auch unterscheidet man in Thin-Clients und Fat-Clients. Bei Fat-Clients ist die Rechenkapazität weitgehend auf den Client ausgelagert, im Gegensatz zu den Thin-Clients. Bei verteilten Systemen ist die 3-stufige Client-Server-Architektur (three tier architecture) weit verbreitet. Sie besteht aus einer Präsentations-, einer Logik- und einer Datenhaltungsschicht. Bekanntes Beispiel ist Citrix.
Serviceorientierte Architekturen (SOA) zielen auf eine Minimierung direkter und fester Abhängigkeitsbeziehungen zwischen den Elementen eines verteilten Softwaresystems. Im SOA-Dreiecksmodell wird die Beziehungsstruktur zwischen Dienstnutzer, Dienstanbieter und Dienstverzeichnis dargestellt.
Zwischen Dienstnutzer und Dienstanbieter besteht keine feste Koppelungsbeziehung. Im Vergleich zur objektorientierten bzw. komponentenorientierten Systementwicklung implizieren SOA-Systeme eine Reihe von wichtigen Zusatzeigenschaften, wie beispielsweise:
  • Ausfallsicherheit
  • Technologie- und Plattformunabhängigkeit
  • Load Balancing
  • einfache Erweiterbarkeit
Zu den Nachteilen zählen:
  • hoher Bereitstellungsaufwand
  • Performanceeinschränkungen
  • Security-Flexibilisierungen
Web-Architekturen
Wenn Sie diese Sätze lesen, dann benutzen Sie wahrscheinlich ein System, das auf einer Web-Architektur basiert.
Das World Wide Web (WWW) wird meist verteilt realisiert. Zur Übertragung von Informationen wird meist das Protokoll HTTP, der Adressierungsstandard URL/URI und das Repräsentionsformat HTML oder XML verwendet. Für die Web-Seiten-basierte Präsentation wird meist durch serverseitig ausführbare Programmbausteine wie PHP, JSP, Active Server Pages oder .Net eingesetzt. Auf der Client-Seite kommt meist JavaScript zum Einsatz und meist auch jQuery als freie JavaScript-Bibliothek. Auf Basis einer asynchronen Kommunikation zwischen Client und Server wird AJAX (Asynchronous JavaScript and XML) eingesetzt. Für eine Koppelung von Anwendungssystemkomponenten gibt es
  • Web-Dienste im Sinne von WSDL und SOAP und
  • Web-Dienste gemäß REST-Architektur, wobei Dienste per URL/URI adressiert werden und die Kommunikation direkt auf der Grundlage von HTTP erfolgt.
Die jeweilige Softwarearchitektur spielt für den Test eine große Rolle. Die frühzeitige Einbeziehung des Testmanagers ist deshalb für den weiteren Prozess sehr wichtig.
U
Stufe Implementierung: Softwarearchitektuen und Programmierstile
© 2016 Holger Mayer Consulting HMC2