Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Turning spaghetti into lasagne
Applying the principles of application frameworks to
packaged applications



             ...
What I will be talking about today




        
                                     
Overview

       Frameworks – common understanding



       The problem space – organisational, package



       Our sol...
What is meant by “application framework”




Implement standard structure of an application using abstraction


Provide ad...
Application framework characteristics



 Modular                                      Reusable




                     I...
Framework pros & cons


Pros


                                          Improve

                   Leverage




Cons


 ...
Vendor application characteristics

   XML web page definitions

<?xml version=quot;1.0quot;?>
<PCF
  xmlns:xsi=quot;http:...
Vendor application characteristics

Rule engine with pre-defined rule sets




                                         8
Vendor application characteristics

Pre-defined events
- ClaimAdded
- ClaimChanged
- ClaimRemoved



User-defined events
-...
Vendor application characteristics

 XML persistence layer
<!-- Extension to claim table -->
 <extension
   entityName=quo...
Vendor application characteristics
               XML web page definitions
                <?xml version=quot;1.0quot;?>
 ...
Business structure – growth by merger




Companies




                    Vendor application has limited
               ...
Business structure – joint ventures




           Limited multi-company capability

                                     ...
Business structure - brands




     No concept of brand

                              14
Business structure – products, versions, systems


+ over 100 products

+ multiple versions per product

+ multiple legacy...
Implications of variability




Data model
                                                            UI



             ...
The result is code spaghetti

                   Code lacks modularity

                   Prolific dispatch code

       ...
Goals and principles


    Standardise business process
•
    Prefer OOB over customised
•
    Maintain upgrade path
•
   ...
Architectural model




                      19
Framework to support the model




                                 Initially focussing on UI
                            ...
Application framework – the use interface controller
           <<abstract>>                                   <<abstract>...
Application framework – UI example

         LossDetailsDV.Pr.pcf
         <TypeKeyInput
          editable=quot;Claim.isE...
Application framework – UI example
                    Add a UI controller variable to the page:
    Page            <vari...
Application framework – run time context

                                   Suncorp

                                    ...
Application framework – rules and rule sets
               <<abstract>>                                    <<abstract>>
  ...
The challenges of this type of approach
                      1. Politics and personality

                      2. Gettin...
Concluding remarks


             Business domain variability
             Unable to standardise
             Not supporte...
Credit where credit’s due

• The following people were instrumental in developing the architecture
  approach and framewor...
Pick me,
pick me
Upcoming SlideShare
Loading in …5
×

Turning spaghetti into lasagne : applying the principles of application frameworks to packaged applications

1,048 views

Published on

Presentation at the JAOO 2009 conference about the pros and cons of applying the principles and patterns of application frameworks to packaged applications using illustrations of the why, when and how from experiences implementing a java based enterprise claims package at Suncorp.

Published in: Technology, Education
  • Be the first to comment

Turning spaghetti into lasagne : applying the principles of application frameworks to packaged applications

  1. 1. Turning spaghetti into lasagne Applying the principles of application frameworks to packaged applications James Couzens Solution Architect, Suncorp JAOO Conference, 2009
  2. 2. What I will be talking about today  
  3. 3. Overview Frameworks – common understanding The problem space – organisational, package Our solution – architecture and framework Challenges – what to watch out for Conclusions – why consider it
  4. 4. What is meant by “application framework” Implement standard structure of an application using abstraction Provide adaptations for specific functionality at defined places 4
  5. 5. Application framework characteristics Modular Reusable Inversion of control Extensible White box vs. Black box 5
  6. 6. Framework pros & cons Pros Improve Leverage Cons Rely on Learning Efficiency 6
  7. 7. Vendor application characteristics XML web page definitions <?xml version=quot;1.0quot;?> <PCF xmlns:xsi=quot;http://www.w3.org/2001/ XMLSchema-instancequot; xsi:noNamespaceSchemaLocation= quot;../../../schema/pcf.xsdquot;> <DetailViewPanel id=quot;LossDetailsDVquot; mode=quot;Prquot;> ... ... <PanelRef def=quot;ClaimSummaryMattersLV(Claim.Matters, Claim)quot; visible=quot;perm.Matter.view(Claim) and perm.System.viewmattersquot;> <TitleBar title=quot;displaykey.Web.ClaimSummary.MattersLV.Titlequot;/> <Toolbar/> </PanelRef> 7
  8. 8. Vendor application characteristics Rule engine with pre-defined rule sets 8
  9. 9. Vendor application characteristics Pre-defined events - ClaimAdded - ClaimChanged - ClaimRemoved User-defined events - Add events (add, change, remove) to user defined entities 9
  10. 10. Vendor application characteristics XML persistence layer <!-- Extension to claim table --> <extension entityName=quot;Claimquot;> <column desc=quot;True anyone living in the propertyquot; name=quot;SC_PermanentOccupancyquot; nullok=quot;truequot; type=quot;bitquot;/> <column desc=quot;number of days Property Vacantquot; name=quot;SC_DaysPropertyVacantquot; nullok=quot;truequot; type=quot;integerquot;/> <column desc=quot;number of damaged unitsquot; + inbound web services name=quot;SC_NoDamagedUnitsquot; + integration plug-ins nullok=quot;truequot; + OO configuration language type=quot;integerquot;/> ... ... 10
  11. 11. Vendor application characteristics XML web page definitions <?xml version=quot;1.0quot;?> <PCF xmlns:xsi=quot;http://www.w3.org/2001/XMLSchema-instancequot; xsi:noNamespaceSchemaLocation=quot;../../../schema/pcf.xsdquot;> <DetailViewPanel id=quot;LossDetailsDVquot; mode=quot;Prquot;> With all this why do I still Rule engine with run into pre-defined rule problems sets Pre-defined and user-defined events - ClaimAdded - ClaimChanged - ClaimRemoved XML persistence layer + inbound web services + integration plug-ins <extension entityName=quot;Userquot;> <column + OO configuration language name=quot;OffsetStatsUpdateTimequot; type=quot;datetimequot;/> <column name=quot;NewlyAssignedActivitiesquot; type=quot;integerquot;/> <column 11
  12. 12. Business structure – growth by merger Companies Vendor application has limited multi-company capability 12
  13. 13. Business structure – joint ventures Limited multi-company capability 13
  14. 14. Business structure - brands No concept of brand 14
  15. 15. Business structure – products, versions, systems + over 100 products + multiple versions per product + multiple legacy systems … and so on 15
  16. 16. Implications of variability Data model UI Rules: if (brand==quot;ampquot; or brand==quot;gioquot; or brand==quot;suncorpquot;) { ... } else if (this.isRACQIBrand()) { ... } return false } 16
  17. 17. The result is code spaghetti Code lacks modularity Prolific dispatch code Inconsistent logging, error handling Problems with merging Oh no! What are we going to do? 17
  18. 18. Goals and principles Standardise business process • Prefer OOB over customised • Maintain upgrade path • Ease of maintenance • Minimise duplication • Maximise reuse • Entity awareness • ……… • 18
  19. 19. Architectural model 19
  20. 20. Framework to support the model Initially focussing on UI variations and rules 20
  21. 21. Application framework – the use interface controller <<abstract>> <<abstract>> UIController UIInput * +createUIObject() +visible() +applyRule() +editable() +validation() + ... Subclass this level if no claim context <<abstract>> <<abstract>> PageController FieldInput UIControllerClaim UIInputClaim +initUIInputs() PageController FieldInput * Subclass this level if have claim context 21
  22. 22. Application framework – UI example LossDetailsDV.Pr.pcf <TypeKeyInput editable=quot;Claim.isEditable_IDRStatus()quot; ... /> CORE_ClaimUIExt.gs function isEditable_IDRStatus():boolean { ... if (brand==“brand1quot;) { do something for this brand } else if (brand==“brand2” { do something for brand2 } else if (brand==“brand3quot; ) { do something for brand3 } else return a default value } 22
  23. 23. Application framework – UI example Add a UI controller variable to the page: Page <variable name = “UI” initialValue= configuration 1 shared.base.UIController.createUIObject(“PCFName”)> file (PCF) 2 4 Controller creates UI input classes for that page: 3 Input classes implement context specific logic , i.e. function isEditable ():boolean { return something for context } <Input id=”IDRStatus”... Editable=UI.applyRule(“IDRStatus”). isEditable> 23
  24. 24. Application framework – run time context Suncorp Motor user locale PageCtlr PageCtlr Product Motor PageCtlr Shared Base claim PageCtlr 24
  25. 25. Application framework – rules and rule sets <<abstract>> <<abstract>> RuleSet Rule * +execute() +name +condition() +action() All rules run in the context of a claim so no need for claim level abstract class ConcreteRuleSet ConcreteRule * Triggered by the same events as OOB rules. Key Points: • OOB hierarchy traversed until framework rule set found. • Framework instantiates rule set based on claim context • Rule set uses context to find correct rules • Rules will fall back to a default rule if none in specific context • 25
  26. 26. The challenges of this type of approach 1. Politics and personality 2. Getting vendor buy-in James’ top ten list of 3. Ensuring the right underlying skills challenges 4. Making sure training is sufficient when 5. Framework champions implementing a framework 6. Framework ownership on top of a 7. Building a framework Agile packaged 8. Assessing impact on upgrades application 9. Understanding the vendor’s framework 10. Understanding the business variability 26
  27. 27. Concluding remarks Business domain variability Unable to standardise Not supported well by application Moves away from vendor product May require up-skilling 27
  28. 28. Credit where credit’s due • The following people were instrumental in developing the architecture approach and frameworks described in this presentation and pushing for its adoption • Paul Donohue • Paul Reedman • Steven Shaw • Reese Williams
  29. 29. Pick me, pick me

×