Von nativen Clients bis hin zu HTML5/JavaScript. Votrag im Rahmen der Vorlesung IKS-Architekturen bei Prof. Hasenkamp an der Philipps-Universität Marburg
Sponsor und Arbeitgeber 1980 gegründet mehr als 4000 Kollegen 9 Branchen 540 Mio € Umsatz 2012 23 Länder in 13 Städten in Deutschland präsent msg systems ag
im Konzern Projektmanager für die Durchführung Softwareentwickler für Individualsoftware (.NET und Java) IT Consultants für Beratung Fachspezialisten für Konzepte insges. 50 Mitarbeiter an 4 Standorten Geschäftsbereich Travel und Logistik
ich bin Alexander Schwartz Principal IT Consultant im GB Travel und Logistics BWL Studium Marburg und Canterbury 11 Jahre Java 7 Jahre PL/SQL 7 Jahre Absatzfinanzierung 3,5 Jahre Direktbank 1 Frau 2 Kinder 311 gefundene Geocaches
der Client-Techologie: • Gibt Informationen wieder (z.B. auf einem Bildschirm) • Stellt Eingabemöglichkeiten bereit • Gibt Rückmeldung zur Validierung und Verarbeitung • Greift auf Backend-Services für Fachlogik zu • Erlaubt Zugriff auf zentral gespeicherte Informationen Im Fokus für heute: • Desktop • Mobile (Telefon/Tablet) Heute nicht betrachtet: • Sprachdialogsysteme • Eingebettete Systeme • Kommandozeilen-Interfaces Einführung Die Client-Technologie ist die Schnittstelle zum Nutzer.
verschiedene Betriebssysteme (OS) • verschiedene Bildschirmgrößen • verschiedene Eingabemöglichkeiten (Maus, Tastatur, Finger) • verschiedene Extras (GPS, Drucker, Scanner, Kamera, …) Einführung Endgeräte haben unterschiedliche Eigenschaften Internet Corporate Network Cloud
Systematische Analyse der Aspekte • Unterstützt durch einen etablierten Standard: ISO 25 0xx quality model • Benutzerzentriert: “quality in use” Modell* • Produktzentriert: “product quality” Modell* Einführung Bewertung verschiedener Client-Technologien * Alle Referenzen zum Standard in sind hier und im weiteren Verlauf – wie der Standard selbst – in englischer Sprache
functional completeness … covers all the specified tasks and user objectives … • user interface aesthetics … pleasing and satisfying interaction … • time behaviour … response and processing times … • learnability … user … learning to use the product … Native Anwendungen Native Anwendungen können alle Funktionen nutzen, die das darunterliegende Betriebssystem anbietet.
• Microsoft Windows: .NET mit Windows Presentation Foundation (WPF) * • Apple Mac OS X: Objective C mit Cocoa Mobile • Apple iOS: Objective C mit Cocoa Touch • Google Android: Java mit Android SDK * * Auch C/C++ stehen zur Verfügung, um native Anwendungen (oder Teile davon) zu entwickeln. Native Anwendungen Haupt-Plattformen für native Anwendungen
Native Anwendungen für die Windows-Plattform • Code wird auf der Common Language Runtime (CLR) ausgeführt • Teil von .NET 3.0 (verfügbar seit 2006) • Letzte Version 4.5.1 (2013) • Alle nativen Funktionen von Windows stehen den Entwicklern zur Verfügung • “Click once” Installation / automatisches Update • Windows Store als Teil von Windows 8 • Plugin Framework (MEF) seit 3.5 für Erweiterung durch Module zur Laufzeit • Entwicklung muss auf einem (aktuellen) Windows-Rechner erfolgen Native Anwendungen Microsoft Windows / Desktop: .NET mit Windows Presentation Foundation (WPF)
Erstes Release 2001 • Neustes Release 10.9 (2013) • Alle nativen Funktionen des Mac OS X stehen den Entwicklern zur Verfügung • App-Store für Anwendungen, inklusive automatische Aktualisierung • Entwicklung muss auf einem (aktuellen) Mac OS X erfolgen Native Anwendungen Apple Mac OS X / Desktop: Objective C mit Cocoa
Erstes Release 2007 • Neustes Release 7 (2013) • Alle nativen Funktionen des Apple iOS stehen den Entwicklern zur Verfügung • App-Store für Anwendungen, inklusive automatische Aktualisierung • Entwicklung muss auf einem (aktuellen) Mac OS X erfolgen Native Anwendungen Apple iOS / Mobile: Objective C mit Cocoa touch
Erstes Release Release 2008 • Neustes Release 4.4 (2013) • Alle nativen Funktionen des Google Android stehen den Entwicklern zur Verfügung • App-Store für Anwendungen, inklusive automatische Aktualisierung • Entwicklung kann erfolgen auf Linux, Mac OS und Windows mit Android SDK basierend auf Eclipse IDE (Preview: IntelliJ IDE) Native Anwendungen Google Android / Mobile: Java w/ Android SDK The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License.
Installation benötigt ggf. lokale Administratorenrechte • Installation müssen vom IT Betrieb verwaltet werden • Aktualisierungen müssen bereitgestellt und ausgerollt werden • Keine Portabilität auf ein anderes Betriebssystem • Technologie auf dem Client stimmt ggf. nicht mit der Technologie im Backend überein (.NET / Objective C / Java) Native Anwendungen Nachteile von nativen Anwendungen
portability … can be transferred from one hardware, software … to another • reusability … asset can be used in more than one system … • maintainability … effectiveness and efficiency … system can be modified … • Bibliotheken können auf verschiedenen Betriebssystemen verwendet werden • Verschiedene Plattformen können aus einem Release bedient werden Desktop: • Java / Eclipse RCP Mobile: • Phonegap / Apache Cordova Portable Anwendungen Portable Anwendungen laufen auf mehr als einem Betriebssystem
Plugin-Architektur basierend auf OSGi für Erweiterungen zur Laufzeit • Automatische Aktualisierung • Wiederverwendung von Java-Know-How, wenn dies bereits auf der Server-Seite eingesetzt wird • Unterstützte Plattformen: Windows, Mac OS X, Linux • Unterscheidet sich in Aussehen und Bedienbarkeit von nativen Anwendungen • Zugriff auf einzelne native Elemente ist möglich • Interaktion mit nativen Anwendungen ist möglich, z. B. OLE (Object Linking and Embedding) unter Windows Portable Anwendungen Desktop: Java / Eclipse RCP
Nutzt HTML, CSS und JavaScript, um eine Anwendung zu erstellen (mit jQuery mobile oder Dodo Mobile) • Anwendung wird in eine native Hülle eingepackt • Zugriff auf native Funktionen über eine JavaScript Abstraktionsschicht • Ein Build Service in der Cloud baut Versionen für verschiedene Zielplattformen, zusätzliche Hardware wird nicht benötigt • Zugriff auf 7 mobile Plattformen, inkl. Android, iOS, Windows Phone • Aussehen und Bedienbarkeit sind (etwas) anders als bei nativen Anwendungen (Anpassungen via CSS sind möglich) • Zugriff auf die Hauptfunktionen der Endgeräte • Langsamer als eine native Anwendung Portable Anwendungen Mobile: Phone Gap / Apache Cordova
installability … effectiveness and efficiency [to be] installed/uninstalled … • replaceability … new version … different product … • operability … easy to operate and control … • maintainability … effectiveness and efficiency … system can be modified … Thin Clients Nutzung eines Browsers mit serverseitiger Logik
Clients Nutzung eines Browsers mit serverseitiger Logik Darstellung Präsentations- logik Fachlogik Datenschicht Client Server Native Anwendung Client HTML basierend Server
Minimaler Einsatz von JavaScript • Nutzt etablierte Browser-Standards • Stellt Abstraktionen für HTTP und HTML bereit • Kein Zugriff auf betriebssystemspezifische Funktionen • Jede Aktion des Nutzers wird vom Server verarbeitet Thin Clients Serverseitige Frameworks für HTML Java .NET MVC Spring Web MVC ASP.NET MVC Komponenten Java Server Faces (JSF) ASP.NET
Starker Einsatz von JavaScript (oder Browser Plugin) • Mächtige Abstraktionsschichten über HTTP und HTML (GWT kompiliert Java zu JavaScript) • Einige Aktionen des Nutzers benötigen eine Rückmeldung vom Server Thin Clients Rich Internet Applications (RIA) Client Technologie AJAX Komponenten RichFaces, IceFaces, PrimeFaces Komponenten Google Web Toolkit (GWT) Browser Plugins Adobe Flash Microsoft Silverlight
Clients Nutzung eines Browsers mit serverseitiger Logik Darstellung Präsentations- logik Fachlogik Datenschicht Client Server Native Anwendung Client HTML basierend Server Client Rich Internet Application Server
Reduziertes Nutzererlebnis durch geringere Interaktivität der genutzten Technologie • Auf dem Server gespeicherter Zustand benötigt Resourcen pro zusätzlichem Nutzer, der mit dem System arbeitet • Der Zustand auf dem Server muss zwischen den verschiedenen Knoten abgeglichen werden • Skalierbarkeit wird mit wachsender Nutzerzahl schwierig • Aspekt “functional completeness” kann schwer erreicht werden, wenn mehrere Abstraktionsstufen existieren • Browser Plugins müssen separat installiert (und aktualisiert) werden • Browser Plugins sind bekannt für Sicherheitsprobleme Thin Clients Nachteile der vorgestellten Thin Client Technologien
Vorteile einer Browser-Technologie plus: • capacity … maximum limits of a product … • resource utilization … resource used to meet requirements … • functional completeness … covers all the specified tasks and user objective … … wenn REST-basierte, zustandslose Backend-Services genutzt werden. Thin Clients HTML5 + JavaScript als Client-Technologie
Clients Nutzung eines Browsers mit serverseitiger Logik Darstellung Präsentations- logik Fachlogik Datenschicht Client Server Native Anwendung Client HTML basierend Server Client Rich Internet Application Server HTML5 JavaScript Client Server
maturity … applied to reliability, but also other quality characteristics … • maintainability … corrections, improvements, adoption of the software to changes in the environment … • adaptability ... can be adapted for different or evolving hardware, software … • Neue Frameworks und Versionen erscheinen monatlich • Wenige erlangen Bedeutung und werden Quasi-Standards ihrer Zeit und im Unternehmensumfeld eingesetzt • Einige Technologien verschwinden, wenn Hersteller- oder Community-Unterstützung ausbleiben Evolution von Client Technologien Evolution von Client Technologien
Java basiertes Web MVC Framework • Früher sehr stark verbreitet • Erstes Release: 2000 • Letztes Release: 2008 • Offizielle Community-Aussage: “end of life” • Es gibt weiterhin Unternehmensanwendungen basierend auf Struts 1.x • Ein Migrationspfad zu 2.0 existiert – aber 2.0 ist inkompatibel Evolution von Client Technologien Tote Technology: Struts 1.x
Java Server Faces (JSF) ist Teil des offenen Java Enterprise Edition (JEE) Standards • Erstes Release JSF 1.0: 2004 • Neustes Release JSF 2.2: 2013 • Alte Versionen laufen auch auf neuen Applikationsservern • Refactoring ist empfehlenswert, um neue Funktionen nutzen zu können • Migrationen sind notwendig, wenn Bibliotheken von Drittanbietern verwendet wurden, deren Funktionen später in den Standard aufgenommen werden Evolution von Client Technologien Evolution eines Standards: Java Enterprise Edition / Java Server Faces
HTML: Früher gab es Standards des W3C in verschiedenen Versionen … jetzt ein “living standard” (http://html5.org/) • JavaScript: Standardisiert als ISO/IEC 16262 … aber nicht alle APIs sind Teil des Standards Nach mehr als 10 Jahren sind wir nun in der Lage, modulare und interaktive Anwendungen zu bauen Ist es nun eine „reife Technologie“? Evolution von Client Technologien Ungesteuerte (?) Evolution: HTML und JavaScript
interoperability … can exchange information and use the information … • compatibility … can exchange information … sharing the same … environment … • functional completeness … covers all specified tasks and user objectives … Interoperabilität von Client Technologien Interoperabilität von Clients
Android Intents: Publish/Subscribe Mechanismus, um Daten und Events zu versenden und zu empfangen • Windows OLE: spezifische Interaktion zwischen einzelnen Anwendungen Contracts (seit Windows 8): Publish/Subscribe Mechanismus, um Daten und Events zu versenden und empfangen • HTML / HTML5 Links: Weiterleitung zu einer anderen Awendung, ggf. mit Datenübergabe JavaScript/DOM Mash-Up: Integration in die eigene Anwendung zur Laufzeit • Eclipse RCP / .NET WPF Plugins können zur Laufzeit dazuinstalliert werden Interoperabilität von Client Technologien Interoperability nach Betriebssystem and Client Technologie
functional correctness … correct results with the needed degree of precision … • usability … achieve specified goals … • maintainability … system can be modified by the intended maintainers … • testability … test criteria can be established for the system … … tests can be performed for [the] criteria … Testen in Abhängigkeit zur Client Technologie Testen in Abhängigkeit zur Client Technology
Continuous Integration Build • Unit Testing • Automatische Provisionierung • Smoke Tests • Integrationstests • Graphical User Interface (GUI) Tests • Lasttests • Continuous Integration ist für alle vorgestellten Technologien verfügbar • Automatische Provisionierung ist eine Herausforderung • GUI Tests sind schwierig und empfindlich Testen in Abhängigkeit zur Client Technologie Elemente automatischen Testens
/ WPF • Ein Betriebssystem (wenige unterschiedliche Versionen) • Kann mit wenigen virtuellen Maschinen (VMs) bereitgestellt werden Eclipse RCP • Mehrere Betriebssystems (wenige unterschiedliche Versionen) • Kann mit einigen wenigen VMs bereitgestellt werden Web Client / HTML5 • Viele Betriebssysteme, viele Browser und Browser-Versionen • Kann mit vielen VMs bereitgestellt werden Android • Viele Endgeräte, viele Auflösungen, viele Versionen • Kann virtualisiert werden für Standard-Android, aber nicht für modifizierte Android-Versionen der verschiedenen Hersteller iOS • Wenige Endgeräte, wenige Auflösungen, wenige Versionen • Schwierig zu virtualisieren Testen in Abhängigkeit zur Client Technologie Schwierigkeit des GUI Testens Schwierigkeit Cloud- basierte Services können helfen
Anforderungen prüfen • Lebensdauer der Anwendung abschätzen • Ggf. getrennte Schätzung der Lebensdauer von Client und Server • Evaluierung in Anlehnung an einen Kriterienkatalog ähnlich ISO 250xx • Prüfen, welche Kriterien für den Kunden in seiner Situation wichtig sind • Mit Menschen reden, die die Technologie schon verwendet haben • Einen Prototypen bauen • Test-Automatisierung am Prototyp ausprobieren • Aufschreiben, warum man sich für eine bestimmte Technologie entschieden hat * • (Vielleicht) schon darauf vorbereiten, die Client-Technologie später austauschen zu können * vgl. [arc42], Kapitel 9 Auswahl einer Client-Technologie Auswahl einer Client-Technologie
[ISO 25010] ISO/IEC 25010:2011, Systems and software engineering — Systems and software Product Quality Requirements and Evaluation (SQuaRE) — System and software quality models [Quamoco] Quamoco, Software-Qualitätsstandard für Deutschland http://www.quamoco.de/webmodel/ (frei zugängliche Details zum Product Quality Model gem. ISO 25010) [arc42] Vorlage, um IT-Systemarchitekturen zu dokumentieren http://www.arc42.org