SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Writing Testable Code
Writing Testable CodeWriting Testable Code
Writing Testable Code
jameshalsall
 
Current Testing Challenges Ireland
Current Testing Challenges IrelandCurrent Testing Challenges Ireland
Current Testing Challenges Ireland
David O'Dowd
 

Was ist angesagt? (19)

Win at life with unit testing
Win at life with unit testingWin at life with unit testing
Win at life with unit testing
 
Writing Testable Code
Writing Testable CodeWriting Testable Code
Writing Testable Code
 
Selenium + Specflow
Selenium + SpecflowSelenium + Specflow
Selenium + Specflow
 
Continuous integration with Jenkins
Continuous integration with JenkinsContinuous integration with Jenkins
Continuous integration with Jenkins
 
#1 unit testing
#1 unit testing#1 unit testing
#1 unit testing
 
Building an Automation Framework
Building an Automation FrameworkBuilding an Automation Framework
Building an Automation Framework
 
Overview of Visual Studio Team System 2010
Overview of Visual Studio Team System 2010Overview of Visual Studio Team System 2010
Overview of Visual Studio Team System 2010
 
Software testing
Software testingSoftware testing
Software testing
 
Current Testing Challenges Ireland
Current Testing Challenges IrelandCurrent Testing Challenges Ireland
Current Testing Challenges Ireland
 
Dependency Inversion Principle
Dependency Inversion PrincipleDependency Inversion Principle
Dependency Inversion Principle
 
SW Testing Fundamentals
SW Testing FundamentalsSW Testing Fundamentals
SW Testing Fundamentals
 
Behavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlowBehavior Driven Development with SpecFlow
Behavior Driven Development with SpecFlow
 
Coding Naked
Coding NakedCoding Naked
Coding Naked
 
Dependency Inversion Principle
Dependency Inversion PrincipleDependency Inversion Principle
Dependency Inversion Principle
 
Functional Testing in Java
Functional Testing in JavaFunctional Testing in Java
Functional Testing in Java
 
Test Tooling in Visual Studio 2012 an overview
Test Tooling in Visual Studio 2012 an overviewTest Tooling in Visual Studio 2012 an overview
Test Tooling in Visual Studio 2012 an overview
 
Android Test Driven Development & Android Unit Testing
Android Test Driven Development & Android Unit TestingAndroid Test Driven Development & Android Unit Testing
Android Test Driven Development & Android Unit Testing
 
Centralized test automation framework implementation
Centralized test automation framework implementationCentralized test automation framework implementation
Centralized test automation framework implementation
 
TDD in functional testing with WebDriver
TDD in functional testing with WebDriverTDD in functional testing with WebDriver
TDD in functional testing with WebDriver
 

Andere mochten auch

Honey Pie Enterprises, Llc
Honey Pie Enterprises, LlcHoney Pie Enterprises, Llc
Honey Pie Enterprises, Llc
ringwac
 

Andere mochten auch (7)

Guss
GussGuss
Guss
 
Honey Pie Enterprises, Llc
Honey Pie Enterprises, LlcHoney Pie Enterprises, Llc
Honey Pie Enterprises, Llc
 
Dhl Express - Berenburg in China
Dhl Express - Berenburg in ChinaDhl Express - Berenburg in China
Dhl Express - Berenburg in China
 
Mobile Applikationen: DHL Freight
Mobile Applikationen: DHL FreightMobile Applikationen: DHL Freight
Mobile Applikationen: DHL Freight
 
P camp sv_intro_2015_final
P camp sv_intro_2015_finalP camp sv_intro_2015_final
P camp sv_intro_2015_final
 
Мария Верномудрова - DHL
Мария Верномудрова - DHLМария Верномудрова - DHL
Мария Верномудрова - DHL
 
Gastric & Duodenal Release of Cholecystokinin
Gastric & Duodenal Release of CholecystokininGastric & Duodenal Release of Cholecystokinin
Gastric & Duodenal Release of Cholecystokinin
 

Ähnlich wie iks auf der ElipseCon 2011: Tickling the shoulders of giants

Travelling Light for the Long Haul - Ian Robinson
Travelling Light for the Long Haul -  Ian RobinsonTravelling Light for the Long Haul -  Ian Robinson
Travelling Light for the Long Haul - Ian Robinson
mfrancis
 
Travelling light for the long haul
Travelling light for the long haulTravelling light for the long haul
Travelling light for the long haul
Ian Robinson
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan
 
PratheshBV_Resume
PratheshBV_ResumePratheshBV_Resume
PratheshBV_Resume
pradeesh bv
 
It Launch Plan
It Launch PlanIt Launch Plan
It Launch Plan
tcaesar
 

Ähnlich wie iks auf der ElipseCon 2011: Tickling the shoulders of giants (20)

Travelling Light for the Long Haul - Ian Robinson
Travelling Light for the Long Haul -  Ian RobinsonTravelling Light for the Long Haul -  Ian Robinson
Travelling Light for the Long Haul - Ian Robinson
 
Travelling light for the long haul
Travelling light for the long haulTravelling light for the long haul
Travelling light for the long haul
 
Javascript-heavy Salesforce Applications
Javascript-heavy Salesforce ApplicationsJavascript-heavy Salesforce Applications
Javascript-heavy Salesforce Applications
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
Selenium training-course-content-syllabus-credo systemz
Selenium training-course-content-syllabus-credo systemzSelenium training-course-content-syllabus-credo systemz
Selenium training-course-content-syllabus-credo systemz
 
Ionic framework one day training
Ionic framework one day trainingIonic framework one day training
Ionic framework one day training
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Practical alm testing
Practical alm   testingPractical alm   testing
Practical alm testing
 
Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1
 
OMG CORBA Component Model tutorial
OMG CORBA Component Model tutorialOMG CORBA Component Model tutorial
OMG CORBA Component Model tutorial
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
JavaCro'15 - Web UI best practice integration with Java EE 7 - Peter Lehto
JavaCro'15 - Web UI best practice integration with Java EE 7 - Peter LehtoJavaCro'15 - Web UI best practice integration with Java EE 7 - Peter Lehto
JavaCro'15 - Web UI best practice integration with Java EE 7 - Peter Lehto
 
Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
 
Chinnasamy Manickam
Chinnasamy ManickamChinnasamy Manickam
Chinnasamy Manickam
 
JSS build and deployment
JSS build and deploymentJSS build and deployment
JSS build and deployment
 
Building scalable applications with angular js
Building scalable applications with angular jsBuilding scalable applications with angular js
Building scalable applications with angular js
 
PratheshBV_Resume
PratheshBV_ResumePratheshBV_Resume
PratheshBV_Resume
 
It Launch Plan
It Launch PlanIt Launch Plan
It Launch Plan
 
Selenium training12 1
Selenium training12 1Selenium training12 1
Selenium training12 1
 

Mehr von IKS Gesellschaft für Informations- und Kommunikationssysteme mbH

Mehr von IKS Gesellschaft für Informations- und Kommunikationssysteme mbH (20)

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

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

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 h.grosse-plankermann@iks-gmbh.com
  • 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