replace a bank wide core application

16
© Zühlke 2012 Nikolaos Kaintantzis Lessons learned Replace a bank-wide core application 16. Oktober 2012 Folie 1 Nikolaos Kaintantzis [email protected] Twitter: @xnka

Upload: nikolaos-kaintantzis

Post on 24-Jun-2015

725 views

Category:

Documents


3 download

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.

TRANSCRIPT

Page 1: Replace a bank wide core application

© Zühlke 2012

Nikolaos Kaintantzis

Lessons learned

Replace a bank-wide core application

16. Oktober 2012Folie 1

Nikolaos [email protected]

Twitter: @xnka

Page 2: Replace a bank wide core application

© 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

Page 3: Replace a bank wide core application

© 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

Page 4: Replace a bank wide core application

© 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

Page 5: Replace a bank wide core application

© 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

Page 6: Replace a bank wide core application

© 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

Page 7: Replace a bank wide core application

© 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

Page 8: Replace a bank wide core application

© 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

Page 9: Replace a bank wide core application

© 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

Page 10: Replace a bank wide core application

© 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

Page 11: Replace a bank wide core application

© 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

Page 12: Replace a bank wide core application

© 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

Page 13: Replace a bank wide core application

© 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

Page 14: Replace a bank wide core application

© 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

Page 15: Replace a bank wide core application

© 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

Page 16: Replace a bank wide core application

© 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