By Aleksey Stukalov How to Develop Highly Customizable Of-the-Shel Sotware
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 1/41
By AlekseyStukalov
How to Develop
Highly CustomizableOf-the-ShelSotware
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 2/41
Of-the-Shel vs Custom
SotwareOf-the-Shel
• Generic
• Customization is laborious or impossible
Custom
• 100% designed or the individual customer
• i!cult to productize or new customers
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 3/41
"deal #roduct
• "mplements $good or all - common businesseatures
•
Also implements $good onl& or me - distinctivebusiness eatures or individual client
• Customization does not impede regular core product
updates
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 4/41
'd(ust )odel
#roduct Customization
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 5/41
)odi& *usiness +ogic
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 6/41
'd(ust ,"
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 7/41
idel& ,sed .echni/ues
• 'll in One
• *ranching
• ntit&-'ttribute-alue
• #lugins
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 8/41
'll in One2 Concept
• 3eep single codebase
• mplo& 4eature toggling5
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 9/41
'll in One2 Customizabilit&
• atabase +a&er
• *usiness +ogic +a&er
• ,ser "nterace +a&er
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 10/41
'll in One2 "deal Scenario
• stablished6 mostl& static business area
• +imited customization re/uirements
• "nabilit& to deliver custom development does notimpact sales
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 11/41
'll in One2 hat i the
assumptions were wrong• Customer is unhapp& due to lac7 o desired eatures
O8
• Codebase turns into the unmanageable garbage can
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 12/41
*ranching2 Concept
• Create a new branch or the customer
• Customize whatever is needed in isolation
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 13/41
*ranching2 Customizabilit&
• atabase +a&er
• *usiness +ogic +a&er
• ,ser "nterace +a&er
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 14/41
*ranching2 "deal Scenario
• )aster branch is mature and does not re/uire rapiddeliver& o new eatures
• Onl& a ew customer branches re/uired
• Customer branches do not re/uire re/uents&nchronization with the core product branch
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 15/41
*ranching2 hat i the
assumptions were wrongConstant merging rom master to branches and viceversa2
• *ecomes e9tremel& time consuming
• +eads to unavoidable regression bugs
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 16/41
'2 Concept
• eliver $as is
• mplo& a mechanism to d&namicall& add custom
:elds to entities on-the-;&
• )i9 with other techni/ues to enable *usiness +ogiccustomization
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 17/41
'2 Customizabilit&
• atabase +a&er
• ,ser "nterace +a&er<
< ," can be customized to some e9tent and naturall&limited b& the pre-programmed displa& logic
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 18/41
'2 "deal Scenario
• =le9ibilit& o having additional inormative data isre/uired
•
'dditional data is not e9plicitl& used in the productbusiness logic
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 19/41
'2 +imitations
• Cannot be applied or *usiness +ogic customization
• )a& add complications to data utilization and
increases the database load
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 20/41
#lugins2 Concept
• e:ne 4#oints o Customization5 >a7a 9tensionpoints?
•
evelop unctional logic in separate >isolated?arteacts >plugins or scripts?
• &namicall& e9ecute attached plugins in the pre-
de:ned Customization #oints
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 21/41
#lugins2 Customizabilit&
• atabase +a&er
• *usiness +ogic +a&er
• ,ser "nterace +a&er
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 22/41
#lugins2 "deal Scenario
• #oints o Customization are eas& to predict
• ,ser "nterace modi:cations are /uite trivial
• *usiness +ogic modi:cations to be added onl& in#oints o Customization6 not in between
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 23/41
#lugins2 +imitations
• 'n& la&er can be customized to some e9tent6 which isnaturall& limited b& 4#oints o Customization5
• 'rchitecture becomes more complicated
• 4@ust in case5 scattering o 4Customization #oints5leads to poor code readabilit& and hard debug
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 24/41
"deal =ramewor7
8e/uirements• Customization rom )odel to ,"
• Clear separation between underl&ing #roduct and On- .op Customizations
• #ossibilit& o tight interlacement o Customization and#roduct unctionalit&
•
ntire product to be opened or customization
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 25/41
C,*' 9tensions
• "mplemented in the C,*' platorm A a high levelramewor7 or enterprise sotware development
• *ased on the Open "nheritance pattern
Mai !ri"iples
• "nherit all the eatures o an underl&ing product6 usingit as a librar&
• Contain onl& distinctive eatures6 without cop&inguntouched product unctionalit&
• Support hierarchical customization model
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 26/41
)odel Customization2
Challenge• #roduct implements User entit&
• Customer re/uires address and department :elds tobe added
• Department is re/uired to be a separate entit&6 lin7edto a User
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 27/41
)odel Customization2
"mplementation
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 28/41
)odel Customization2
B9tends• *ase entit& use should be substituted globall& acrossthe product2
– Constructors
– @#+ /ueries
– )odel traversal
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 29/41
)odel Customization2
Dow it wor7s• Ob(ect =actor& alwa&s returns the deepest child using
metadata model
• 'll @#+ /ueries are parsed6 anal&zed and modi:edaccording to the metadata model
• )odel traversal substitution is reached b& orm.xml generation6 where target-entity attribute reers to thedeepest child
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 30/41
#roduct C,*' e9tension
," Customization2 Dow it
wor7s
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 31/41
," Customization2 #roduct
Screen
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 32/41
," Customization2 9tension
Screen
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 33/41
Spring ramewor7 does it Ano need to reinvent whatalread& e9istsE
• eclare a @Component
• Override in thee9tension
• 8e-register the new
class in the e9tension
• .he newimplementation will beused across the whole
product
*usiness +ogic
Customization
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 34/41
,pdating the ,nderl&ing
#roduct ersion• Speci& the new version o the underl&ing product in
e9tension
• )eet product '#" changes in the overlapped parts
• 8ebuild the product with the e9tension
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 35/41
Dierarchical Customization
)odel
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 36/41
Summar&
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 37/41
*ased on mainstreamtechnologies
"mplements2
• C,*' 9tensions• Scripting• ntit&-'ttribute-alue
C,*' #latorm
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 38/41
Our 9perience2 .hesis
nterprise Content )anagement s&stem
• Over F00 implementations
•
F custom solutions based on the product
eliver& o F pro(ects to huge customers would not bepossible without deep s&stem customization
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 39/41
Our 9perience2
Sherloc7 .a9i SolutionComplete .a9i )anagement Solution
• 1F implementations
• H custom solutions based the product
• F ongoing customizations
#roduct is constantl& being updated or all customers
bringing new product eaturesI
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 40/41
Dands-on +abs
.r& C,*' e9tensions at our Dands-on +abs6 with thehelp o our C,*' e9perts6 &ou will develop a ull&-unctioned business application in (ust a couple o hours
hen2 ednesda& FJth October F01Khere2 Dilton-=ranciscan 8oom '
+ab 12 10200 am - 1F200 pm+ab F2 1F2L0 pm - F2L0 pm
+ab L2 L200 pm - K200 pm
8/17/2019 CON10253_Stukalov-20151024-3-CUBA_J1-final.pptx
http://slidepdf.com/reader/full/con10253stukalov-20151024-3-cubaj1-finalpptx 41/41
By AlekseyStukalov
#hak you$