SlideShare a Scribd company logo
Building industry solutions


   Tickling the shoulders of giants

   An internal client for financial services
   based on Eclipse RCP


   04.11.2011
 Holger Grosse-Plankermann
 h.grosse-plankermann@iks-gmbh.com
About me
Holger Grosse-Plankermann
Developer @ iks since 2006
Has been implementing
 Eclipse RCP applications
 for 4 years
Has published articles about
 Eclipse RCP
Likes loud guitar tunes and kitchen tools
@holgergp
Challenge Areas
Eclipse RCP Component                   Challenge Degree

Eclipse Runtime

SWT

JFace

Workbench

Other prerequisites for the Workbench

Test/Build
Roadmap

Project

Challenges

Review
Project
Form-based Business
  application
5.000.000 data records
5 Java Developers
  starting with basic
  RCP knowledge
Project has been going
  for 2 1/2 years
Complex problem domain
 ~ 400 CRs
The RCP Client
Eclipse RCP 3.5
Menu View
 List applications
Editor Area
 Editors similar
Search View
Parameters
~ 80 screens
  ~ equally complex
~ 30 UI Elements per
  screen
~ 20 UI Behaviour Rules
  per Screen
~ 40 Validation Rules per screen
~ 150 different Validation Rule Types
Classic context
Our context
Core Challenges
Structuring code of complex screens

Concise definition of numerous UI rules

Considering specifics of distributed Validation

Quality assurance in a complex project
Core Challenges
Structuring code of complex screens

Concise Definition of numerous UI rules

Consider specifics of distributed Validation

Quality assurance in a complex project
1. UI Code Structure
How to structure the user Interface code
Standard approach:




                                              ?
                                Define Look




                                Define Behaviour
1. UI Code Structure
Separation of concerns: MVP Pattern
1. UI Code Structure
Split up EditorPart
1. UI Code Structure
Which part should extend from the
 framework :
1. UI Code Structure
Straightforward approach: View extends
  from the framework.
Delegate logic to presenter
Easy to implement/refactor
Keeps integration with WindowBuilder




However, too much delegation needed,
  complex indirection followed.
1. UI Code Structure
Presenter extends from the framework.
=> framework supplies lifecycle hooks.
View is a standalone component.
Presenter simply delegates to the
  createForm method of the view
Workarounds needed to feed view to
 Window Builder


Special case: Dialogues
Core Challenges
Structuring code of complex screens

Concise Definition of numerous UI rules

Consider specifics of distributed Validation

Quality assurance in a complex project
2. UI Rules and JFace Databinding
Behaviour Rules:
Behaviour that is triggered when a user keys
 in a specific value.




Mostly specific to only one Use Case
Commands/Actions too cumbersome in that
 context
2. UI Rules and JFace Databinding
JFace Databinding for UI State definition
  Model „single source of truth“
Concise and central definition of bindings
public void initDataBindings() {
     binder.bindBeanToText("model.name", view.getTxtName());
 }

UI Behaviour Rules should be defined
  similarly!
  No out-of-the-box solution available!
2. UI Rules and JFace Databinding
We implemented a BindableAction
2. UI Rules and JFace Databinding
Complete UI state/behaviour definition in one
 place in a „declarative“ and clean way
public void initDataBindings() {
    binder = new BindingUtil(new DataBindingContext(), this);

    binder.bindBeanToText("presenter.gp.name1", view.getTxtName1());
    binder.bindBeanToCombo("presenter.gp.anredeFachId", view.getCvAnrede());
    binder.bindAction(„presenter.gp.lieferantenstatusAktiv", new BindableAction() {
      public void run() {
        clearTable();
      }
    );
}

Generation based on model easily possible
Core Challenges
Structuring code of complex screens

Concise Definition of numerous UI rules

Consider specifics of distributed Validation

Quality assurance in a complex project
3. Validation




                       Client            Backend
Time of validation     On Input          On Save
Amount of validation   Specific input step Complete Model
Focus of validation    Speed             Complete Validation
3. Validation




Complex and deep Validation Rules
3. Validation
Validation Rules should be reused on client
  and backend side.
  Large intersection between rule types
Validation Rules too complex for JFace
  Validation alone
  e.g. Validations across domain model


=> Tie Validation Rules to the model.
3. Validation
Using custom Validator
3. Validation
Validations attached to the model via annotations
public interface IPerson {
    @ValidationRules( {
     @ValidationRule(classOfRule = NameRule.class,
       errorCode = "name.invalid", affectedAttributes = "name")
    })
    void setName(String name);
}

Further steps:
JSR-303 (Beans-Validation)
Core Challenges
Structuring code of complex screens

Concise Definition of numerous UI rules

Consider specifics of distributed Validation

Quality assurance in a complex project
4. Headless Build and Test
The complexity of our project required proper
  quality assurance measures


Executing SWTBot Test
  and exporting from
  workbench grew too tedious
4. Headless Build and Test
Headless build and tests to the rescue!

PDEBuild completed
 quite quick
 Days/Weeks
Headless SWTBot
 more complicated
 ~ 4 months
 JUnit3/4 related issues
4. Headless Build and Test
UI Tests tend to be long running
  Setup UI/Product
  Wait for UI components to show
  Complete run (~ 400 tests) takes 30 – 45 mins
UI Tests sometimes behave irregularly
  Occasional false negatives
  UI Timing differs between machines
  Focus related problems
4. Headless Build and Test
Split test suites
             Continuous   Regular        Nightly
Duration     ~ 5 mins     ~ 30 mins      ~ 45 mins
# Tests      ~ 50         ~ 300          ~ 400



Speed up Build Machines
           Continuous with SSD Continuous w/o SSD
Duration   ~ 5 mins               ~ 9 mins
4. Headless Build and Test
No satisfying solution for irregular behaviour!
UI timing issues require extra care
  bot.sleep(2000) mostly helps 

Further steps:
Minimize UI related Tests
Apply Controller/Presenter Tests
 => Eclipse Riena
Core Challenges
Structuring code of complex screens

Concise Definition of numerous UI rules

Consider specifics of distributed Validation

Quality assurance in a complex project
Safe on the shoulders of giants?

                 Expectations Experiences
Learning
Out-of-the-box
Requirements
Eclipse RCP +
Customizing
www.iks-gmbh.com
Image Sources
Roadmap:       http://www.flickr.com/photos/scoobay/3788514070/

Mixing desk:   http://www.flickr.com/photos/go_freyer/4486482108/

Check:         http://commons.wikimedia.org/wiki/File:Green_check.svg

X-Mark:        http://commons.wikimedia.org/wiki/File:X_mark.svg

Feather:       http://www.flickr.com/photos/n0rthw1nd/4418311590/

Plain face:    http://commons.wikimedia.org/wiki/File:Face-plain.svg

Sad face:      http://commons.wikimedia.org/wiki/File:Face-sad.svg

Happy face:    http://commons.wikimedia.org/wiki/File:Face-smile.svg

Light Bulb and Warning Icons via Creative Commons Attribution 3.0 Unported by

               http://shlyapnikova.deviantart.com

More Related Content

DOCX
Automation Testing Syllabus - Checklist
Sunil Kumar Gunasekaran
 
PDF
Introduction to Continuous Integration
Hùng Nguyễn Huy
 
PPTX
Testing the User Interface - Coded UI Tests with Visual Studio 2010
Eric D. Boyd
 
PDF
Laws of test automation framework
vodqancr
 
PPTX
Mvvw patterns
eleksdev
 
DOC
RajeswaraRao_Resume_3years
Rajeswara K
 
DOC
Kasi Resume
kasi reddy
 
PDF
BDD and Test Automation in Evalutionary Product Suite
Lasantha Ranaweera
 
Automation Testing Syllabus - Checklist
Sunil Kumar Gunasekaran
 
Introduction to Continuous Integration
Hùng Nguyễn Huy
 
Testing the User Interface - Coded UI Tests with Visual Studio 2010
Eric D. Boyd
 
Laws of test automation framework
vodqancr
 
Mvvw patterns
eleksdev
 
RajeswaraRao_Resume_3years
Rajeswara K
 
Kasi Resume
kasi reddy
 
BDD and Test Automation in Evalutionary Product Suite
Lasantha Ranaweera
 

What's hot (19)

PDF
Win at life with unit testing
markstory
 
PDF
Writing Testable Code
jameshalsall
 
PPTX
Selenium + Specflow
cromwellryan
 
PPTX
Continuous integration with Jenkins
Mohammad Hossein Rimaz
 
PPTX
#1 unit testing
eleksdev
 
PPTX
Building an Automation Framework
SmartBear
 
PPTX
Overview of Visual Studio Team System 2010
joycsc
 
PPTX
Software testing
K Lingaraju
 
PDF
Current Testing Challenges Ireland
David O'Dowd
 
PPTX
Dependency Inversion Principle
Marco Mangia Musardo
 
PPT
SW Testing Fundamentals
Ismail aboulezz
 
PDF
Behavior Driven Development with SpecFlow
Rachid Kherrazi
 
PPTX
Coding Naked
Caleb Jenkins
 
PPTX
Dependency Inversion Principle
Shahriar Hyder
 
PPTX
Functional Testing in Java
秉文 蔡
 
PPTX
Test Tooling in Visual Studio 2012 an overview
Clemens Reijnen
 
PDF
Android Test Driven Development & Android Unit Testing
mahmoud ramadan
 
PPT
Centralized test automation framework implementation
Bharathi Krishnamurthi
 
PPTX
TDD in functional testing with WebDriver
Mikalai Alimenkou
 
Win at life with unit testing
markstory
 
Writing Testable Code
jameshalsall
 
Selenium + Specflow
cromwellryan
 
Continuous integration with Jenkins
Mohammad Hossein Rimaz
 
#1 unit testing
eleksdev
 
Building an Automation Framework
SmartBear
 
Overview of Visual Studio Team System 2010
joycsc
 
Software testing
K Lingaraju
 
Current Testing Challenges Ireland
David O'Dowd
 
Dependency Inversion Principle
Marco Mangia Musardo
 
SW Testing Fundamentals
Ismail aboulezz
 
Behavior Driven Development with SpecFlow
Rachid Kherrazi
 
Coding Naked
Caleb Jenkins
 
Dependency Inversion Principle
Shahriar Hyder
 
Functional Testing in Java
秉文 蔡
 
Test Tooling in Visual Studio 2012 an overview
Clemens Reijnen
 
Android Test Driven Development & Android Unit Testing
mahmoud ramadan
 
Centralized test automation framework implementation
Bharathi Krishnamurthi
 
TDD in functional testing with WebDriver
Mikalai Alimenkou
 
Ad

Viewers also liked (7)

PPTX
Honey Pie Enterprises, Llc
ringwac
 
PPT
Dhl Express - Berenburg in China
DHLExpressMarCom
 
PPTX
P camp sv_intro_2015_final
Tom Gilheany, MBA, CISSP
 
PDF
Мария Верномудрова - DHL
World Brand Academy
 
PPT
Gastric & Duodenal Release of Cholecystokinin
Dr. Janet Guss Darwich
 
Honey Pie Enterprises, Llc
ringwac
 
Dhl Express - Berenburg in China
DHLExpressMarCom
 
P camp sv_intro_2015_final
Tom Gilheany, MBA, CISSP
 
Мария Верномудрова - DHL
World Brand Academy
 
Gastric & Duodenal Release of Cholecystokinin
Dr. Janet Guss Darwich
 
Ad

Similar to iks auf der ElipseCon 2011: Tickling the shoulders of giants (20)

PDF
Travelling light for the long haul
Ian Robinson
 
PDF
Travelling Light for the Long Haul - Ian Robinson
mfrancis
 
PDF
Javascript-heavy Salesforce Applications
Salesforce Developers
 
PPT
Behavior Driven Development by Example
Nalin Goonawardana
 
PPT
Spring - a framework written by developers
MarcioSoaresPereira1
 
PDF
Selenium training-course-content-syllabus-credo systemz
Training Institute
 
PDF
Ionic framework one day training
Troy Miles
 
PDF
Spring Framework
NexThoughts Technologies
 
PPSX
Practical alm testing
Igor Moochnick
 
PPTX
Behaviour Driven Development V 0.1
willmation
 
PPTX
OMG CORBA Component Model tutorial
Johnny Willemsen
 
PDF
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Enea Gabriel
 
PDF
JavaCro'15 - Web UI best practice integration with Java EE 7 - Peter Lehto
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PPTX
Whats New In 2010 (Msdn & Visual Studio)
Steve Lange
 
PPT
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan
 
DOC
Chinnasamy Manickam
Chinnasamy Manickam
 
PPTX
JSS build and deployment
David Szöke
 
PDF
Building scalable applications with angular js
Andrew Alpert
 
DOC
PratheshBV_Resume
pradeesh bv
 
PPT
It Launch Plan
tcaesar
 
Travelling light for the long haul
Ian Robinson
 
Travelling Light for the Long Haul - Ian Robinson
mfrancis
 
Javascript-heavy Salesforce Applications
Salesforce Developers
 
Behavior Driven Development by Example
Nalin Goonawardana
 
Spring - a framework written by developers
MarcioSoaresPereira1
 
Selenium training-course-content-syllabus-credo systemz
Training Institute
 
Ionic framework one day training
Troy Miles
 
Spring Framework
NexThoughts Technologies
 
Practical alm testing
Igor Moochnick
 
Behaviour Driven Development V 0.1
willmation
 
OMG CORBA Component Model tutorial
Johnny Willemsen
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Enea Gabriel
 
JavaCro'15 - Web UI best practice integration with Java EE 7 - Peter Lehto
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Whats New In 2010 (Msdn & Visual Studio)
Steve Lange
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan
 
Chinnasamy Manickam
Chinnasamy Manickam
 
JSS build and deployment
David Szöke
 
Building scalable applications with angular js
Andrew Alpert
 
PratheshBV_Resume
pradeesh bv
 
It Launch Plan
tcaesar
 

More from IKS Gesellschaft für Informations- und Kommunikationssysteme mbH (20)

PDF
Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Thementag 2022 04 ML auf die Schiene gebracht.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Big Data und Machine Learning - Wer braucht das schon!?
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Big Data und Machine Learning - Wer braucht das schon!?
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
PDF
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Thementag 2022 04 ML auf die Schiene gebracht.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Big Data und Machine Learning - Wer braucht das schon!?
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Big Data und Machine Learning - Wer braucht das schon!?
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 

Recently uploaded (20)

PDF
Beyond Automation: The Role of IoT Sensor Integration in Next-Gen Industries
Rejig Digital
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Software Development Methodologies in 2025
KodekX
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PPT
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
Beyond Automation: The Role of IoT Sensor Integration in Next-Gen Industries
Rejig Digital
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Software Development Methodologies in 2025
KodekX
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Coupa-Kickoff-Meeting-Template presentai
annapureddyn
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Doc9.....................................
SofiaCollazos
 
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 

iks auf der ElipseCon 2011: Tickling the shoulders of giants

  • 1. Building industry solutions Tickling the shoulders of giants An internal client for financial services based on Eclipse RCP 04.11.2011 Holger Grosse-Plankermann [email protected]
  • 2. About me Holger Grosse-Plankermann Developer @ iks since 2006 Has been implementing Eclipse RCP applications for 4 years Has published articles about Eclipse RCP Likes loud guitar tunes and kitchen tools @holgergp
  • 3. Challenge Areas Eclipse RCP Component Challenge Degree Eclipse Runtime SWT JFace Workbench Other prerequisites for the Workbench Test/Build
  • 5. Project Form-based Business application 5.000.000 data records 5 Java Developers starting with basic RCP knowledge Project has been going for 2 1/2 years Complex problem domain ~ 400 CRs
  • 6. The RCP Client Eclipse RCP 3.5 Menu View List applications Editor Area Editors similar Search View
  • 7. Parameters ~ 80 screens ~ equally complex ~ 30 UI Elements per screen ~ 20 UI Behaviour Rules per Screen ~ 40 Validation Rules per screen ~ 150 different Validation Rule Types
  • 10. Core Challenges Structuring code of complex screens Concise definition of numerous UI rules Considering specifics of distributed Validation Quality assurance in a complex project
  • 11. Core Challenges Structuring code of complex screens Concise Definition of numerous UI rules Consider specifics of distributed Validation Quality assurance in a complex project
  • 12. 1. UI Code Structure How to structure the user Interface code Standard approach: ? Define Look Define Behaviour
  • 13. 1. UI Code Structure Separation of concerns: MVP Pattern
  • 14. 1. UI Code Structure Split up EditorPart
  • 15. 1. UI Code Structure Which part should extend from the framework :
  • 16. 1. UI Code Structure Straightforward approach: View extends from the framework. Delegate logic to presenter Easy to implement/refactor Keeps integration with WindowBuilder However, too much delegation needed, complex indirection followed.
  • 17. 1. UI Code Structure Presenter extends from the framework. => framework supplies lifecycle hooks. View is a standalone component. Presenter simply delegates to the createForm method of the view Workarounds needed to feed view to Window Builder Special case: Dialogues
  • 18. Core Challenges Structuring code of complex screens Concise Definition of numerous UI rules Consider specifics of distributed Validation Quality assurance in a complex project
  • 19. 2. UI Rules and JFace Databinding Behaviour Rules: Behaviour that is triggered when a user keys in a specific value. Mostly specific to only one Use Case Commands/Actions too cumbersome in that context
  • 20. 2. UI Rules and JFace Databinding JFace Databinding for UI State definition Model „single source of truth“ Concise and central definition of bindings public void initDataBindings() { binder.bindBeanToText("model.name", view.getTxtName()); } UI Behaviour Rules should be defined similarly! No out-of-the-box solution available!
  • 21. 2. UI Rules and JFace Databinding We implemented a BindableAction
  • 22. 2. UI Rules and JFace Databinding Complete UI state/behaviour definition in one place in a „declarative“ and clean way public void initDataBindings() { binder = new BindingUtil(new DataBindingContext(), this); binder.bindBeanToText("presenter.gp.name1", view.getTxtName1()); binder.bindBeanToCombo("presenter.gp.anredeFachId", view.getCvAnrede()); binder.bindAction(„presenter.gp.lieferantenstatusAktiv", new BindableAction() { public void run() { clearTable(); } ); } Generation based on model easily possible
  • 23. Core Challenges Structuring code of complex screens Concise Definition of numerous UI rules Consider specifics of distributed Validation Quality assurance in a complex project
  • 24. 3. Validation Client Backend Time of validation On Input On Save Amount of validation Specific input step Complete Model Focus of validation Speed Complete Validation
  • 25. 3. Validation Complex and deep Validation Rules
  • 26. 3. Validation Validation Rules should be reused on client and backend side. Large intersection between rule types Validation Rules too complex for JFace Validation alone e.g. Validations across domain model => Tie Validation Rules to the model.
  • 28. 3. Validation Validations attached to the model via annotations public interface IPerson { @ValidationRules( { @ValidationRule(classOfRule = NameRule.class, errorCode = "name.invalid", affectedAttributes = "name") }) void setName(String name); } Further steps: JSR-303 (Beans-Validation)
  • 29. Core Challenges Structuring code of complex screens Concise Definition of numerous UI rules Consider specifics of distributed Validation Quality assurance in a complex project
  • 30. 4. Headless Build and Test The complexity of our project required proper quality assurance measures Executing SWTBot Test and exporting from workbench grew too tedious
  • 31. 4. Headless Build and Test Headless build and tests to the rescue! PDEBuild completed quite quick Days/Weeks Headless SWTBot more complicated ~ 4 months JUnit3/4 related issues
  • 32. 4. Headless Build and Test UI Tests tend to be long running Setup UI/Product Wait for UI components to show Complete run (~ 400 tests) takes 30 – 45 mins UI Tests sometimes behave irregularly Occasional false negatives UI Timing differs between machines Focus related problems
  • 33. 4. Headless Build and Test Split test suites Continuous Regular Nightly Duration ~ 5 mins ~ 30 mins ~ 45 mins # Tests ~ 50 ~ 300 ~ 400 Speed up Build Machines Continuous with SSD Continuous w/o SSD Duration ~ 5 mins ~ 9 mins
  • 34. 4. Headless Build and Test No satisfying solution for irregular behaviour! UI timing issues require extra care bot.sleep(2000) mostly helps  Further steps: Minimize UI related Tests Apply Controller/Presenter Tests => Eclipse Riena
  • 35. Core Challenges Structuring code of complex screens Concise Definition of numerous UI rules Consider specifics of distributed Validation Quality assurance in a complex project
  • 36. Safe on the shoulders of giants? Expectations Experiences Learning Out-of-the-box Requirements Eclipse RCP + Customizing
  • 38. Image Sources Roadmap: http://www.flickr.com/photos/scoobay/3788514070/ Mixing desk: http://www.flickr.com/photos/go_freyer/4486482108/ Check: http://commons.wikimedia.org/wiki/File:Green_check.svg X-Mark: http://commons.wikimedia.org/wiki/File:X_mark.svg Feather: http://www.flickr.com/photos/n0rthw1nd/4418311590/ Plain face: http://commons.wikimedia.org/wiki/File:Face-plain.svg Sad face: http://commons.wikimedia.org/wiki/File:Face-sad.svg Happy face: http://commons.wikimedia.org/wiki/File:Face-smile.svg Light Bulb and Warning Icons via Creative Commons Attribution 3.0 Unported by http://shlyapnikova.deviantart.com