Upload
nikolaos-kaintantzis
View
725
Download
3
Tags:
Embed Size (px)
DESCRIPTION
Starting in 2008 we created a repository / data warehouse storing statistical data and meta data. An Eclipse RCP client is being used to provide an interface for expert users such as data administrators and programmers to manage and explore data, meta data and structure definitions, authorizations, and to develop and run scripts based on a Groovy DSL to automate processes. After a successful roll-out in 2010, we are working on the 3rd release. Creating and maintaining this application taught us many lessons we want to share. You will see the benefits of and the challenges in using Eclipse RCP when building a big and important application.
Citation preview
© Zühlke 2012
Nikolaos Kaintantzis
Lessons learned
Replace a bank-wide core application
16. Oktober 2012Folie 1
Nikolaos [email protected]
Twitter: @xnka
© Zühlke 2012
Das Altsystem
• Data Warehouse mit wichtigen Kennzahlen
• Jeder Mitarbeiter nutzt das System
• Schnittstellen zu internen und kommerziellen Produkten (z.B. Matlab und Excel)
• Eigene Skriptsprache und Compiler
Technologien:
• PL1-Kern
• Visual Basic Oberfläche
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 2
© Zühlke 2012
• Viele Stakeholder mit unterschiedlichen Wünschen
•Metadaten-Modellierung und Retrieval sind Systembestandteil
• Kern für weitere interne Produkte
• Neue Skriptingsprache, basierend auf Groovy
Technologien:
• JEE-Server
• Eclipse RCP Client
• Groovy
Das neue System
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 3
© Zühlke 2012
Jan. 2008 Start
Dez. 2010 Kernfunktionalität vorhanden
Okt. 2011 Parallelbetrieb
Altsystem readonly
Das Projekt
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis
Eclipse 3.3.1
Eclipse 3.5.1
Eclipse 3.6.1
Eclipse Versionen:Jun. 2007: 3.3Jun. 2008: 3.4 Jun. 2009: 3.5Jun. 2010: 3.6Jun. 2011: 3.7Jun. 2012: 4.2 (& 3.8)
16. Oktober 2012 Folie 4
© Zühlke 2012
•Wunsch nach Plattform– Aufgeräumte Oberfläche
– Vorhandene Funktionalität nutzen
• Schlechte Kundenerfahrung mit WPF
• Andere Java-Alternativen schienen nicht zukunftssicher
•Web-Lösungen befriedigen Interaktionsbedürfnisse nicht
• Eclipse bei einigen Benutzern (Strukturverantwortliche) bereits anderweitig im Einsatz
Warum Eclipse RCP? (Argumentation Stand 2008)
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 5
© Zühlke 2012
Nach 6 Wochen Client-Entwicklung:
Gründe:
• Fensteranordnung
• Baumdarstellung
• Erste XML-& UI-Editoren waren schnell da
Erste Eindrücke vom Fach resp. Produkt-Owner
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis
Sind ja schon fast fertig!Müssen fast nichts
mehr tun!
16. Oktober 2012 Folie 6
© Zühlke 2012
Wieviele Plugins brauchen wir?
Beim Projektstart werden Plugins falsch geschnitten
Ansatz: Benutzersicht einnehmen
• Was soll zur Laufzeit austauschbar sein? � in der Regel: nichts– 3 Plugins (Libs, App, Hilfe) – 1 Feature (mit Produkt)– 1 Fragment (Test)
Ansatz: Wiederverwendung
• Welche Funktionalitäten werden durch andere Applikationen wiederverwendet?� eigene Plugins und Fragmente hierfür
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 7
© Zühlke 2012
Eclipse RCP und Usability
Hauptproblem (abhängig von der Benutzergruppen):
Flexibilität vs. Benutzerführung
• Umpositionierung von Editoren und Views kann nicht von jedem Benutzer rückgängig gemacht werden
• Zu viele Operationen ersichtlich / möglich
• Perspektiven sind technisch motiviert und werden nicht verstanden � Perspektiven müssen von der Arbeit der Benutzer getrieben sein� Mehr Redundanz zwischen den Perspektiven
• Wie soll ein Arbeitsfluss abgebildet werden?
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 8
© Zühlke 2012
Die Limits
Grundproblem: Eclipse war gedacht für Entwicklungsumgebung
Folgerung: schwach in allem anderem
• Tabellen (Excel-like)
• Loading-Knoten in Bäume (weil Datenbeschaffung lange dauert)
• Farbe in Bäumen (v.a. am Anfang)
• Formulare (v.a. am Anfang)
• (cooles Aussehen)
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 9
© Zühlke 2012
Kritikpunkte
• APIs organisch gewachsen– Redundanzen
– Inkonsistenzen
• Codequalität und Javadoc in einigen Bereichen wünschenswert
• Nicht immer werden Interfaces benutzt
• Sich ändernde UIs sind aufwändiger zu implementieren als in Swing
• Welche Style-Bits machen Sinn für diese und jene Komponente?
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 10
© Zühlke 2012
Headless-Build mit Maven (vor Maven 3 und Tycho)
• Viel Zeit in eigene Maven-Plugins investiert
• Umgestellt auf Gradle
UI-Testing (Ist nicht nur ein Eclipse RCP-Thema)
• Extrem aufwendig / zu wenig Ressourcen
• Zu häufig fehlgeschlagene Tests ohne richtigen Fehler– Timing Probleme (Lösung: besseres Tool)
– Ab und zu unvorhergesehene aufpoppende Jobs-Monitor-Dialoge
Albträume
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 11
© Zühlke 2012
Die DSL
• Fast alle UI-Operationen sind auch über Scripting zugänglich
• Interne DSL auf Basis von Groovy
• Zuerst: Facade mit Methoden und Wrapper über Typen und Operationen
• Heute: Objektorientierte Bibliothek und DLS-Tricks
Groovy-Plugin verbessert sich immer mehr (dank Teilnahme an Foren)
• Probleme z.B. bei Code Completion (u.a. Performance)
• Java-Doc-Fehler bei überladen Methoden
Groovy-Plugin ist Hauptgrund dafür, die Eclipse RCP-Version zu aktualisieren
Groovy Integration
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 12
© Zühlke 2012
Welche Eclipse-Version?
Im Moment 3.6.1 (Version von Herbst 2010)
Abhängigkeit von Libraries
• Neuestes Groovy-Plugin unterstützt offiziell 3.7 und 4.2
• Nebula-Grids (Tabellen) sind für Version 3.6, 3.7 und 3.8
Eclipse Juno bevorzugt 4.2 vor 3.8 – unserer Meinung nach ein Jahr zu früh
• Viele UI-Bibliotheken sind für 4.x nicht verfügbar
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 13
© Zühlke 2012
Hilfe ist eigenes Plug-In
Tool: Docbook (XML)
Mit XSLT wird die Eclipse-Hilfe generiert
Code-Snippets sind ausführbar
Einstieg über
• Hilfe-Menü
• Links im Javadoc der Scripting-Sprache
Hilfesystem und Dokumentation
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 14
© Zühlke 2012
1. Plattform nimmt dem Entwickler viel ab� erste schnelle Erfolge verblüffen das Fach
2. 3.x ist eine stabile und etablierte Plattform für Rich Clients
3. Tabellen (etwa so wie Excel) sind teuer� Framework-Evaluation notwendig
4. Literatur und Foren sind technisch und nicht business- oder benutzergetrieben� ein Entwickler/Architekt sollte häufig Benutzersicht einnehmen
5. Aktives Mitmachen in Foren sehr empfehlenswert
6. Maven nur ab Version 3 (mit Tycho) und nur dann, wenn man entsprechend den Vorschlägen von Maven arbeitet, sonst Gradle
Fazit
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 15
© Zühlke 2012
Fragen?
Lessons learned by replace a bank-wide core application with an Eclipse RCP Client and a JEE backend | Nikolaos Kaintantzis 16. Oktober 2012 Folie 16