SlideShare a Scribd company logo
By Aleksey Stukalov
How to Develop Highly
Customizable Off-the-Shelf
Software
Off-the-Shelf vs Custom Software
Off-the-Shelf
• Generic
• Customization is laborious or impossible
Custom
• 100% designed for the individual customer
• Difficult to productize for new customers
Ideal Product
• Implements “good for all” - common business features
• Also implements “good only for me” - distinctive business features
for individual client
• Customization does not impede regular core product updates
Adjust Model
Product Customization
Modify Business Logic
Adjust UI
Widely Used Techniques
• All in One
• Branching
• Entity-Attribute-Value
• Plugins
All in One: Concept
• Keep single codebase
• Employ ‘feature toggling’
All in One: Customizability
• Database Layer
• Business Logic Layer
• User Interface Layer
All in One: Ideal Scenario
• Established, mostly static business area
• Limited customization requirements
• Inability to deliver custom development does not impact sales
All in One: What if the assumptions
were wrong
• Customer is unhappy due to lack of desired features
OR
• Codebase turns into the unmanageable garbage can
Branching: Concept
• Create a new branch for the customer
• Customize whatever is needed in isolation
Branching: Customizability
• Database Layer
• Business Logic Layer
• User Interface Layer
Branching: Ideal Scenario
• Master branch is mature and does not require rapid delivery of
new features
• Only a few customer branches required
• Customer branches do not require frequent synchronization with
the core product branch
Branching: What if the
assumptions were wrong
Constant merging from master to branches and vice versa:
• Becomes extremely time consuming
• Leads to unavoidable regression bugs
EAV: Concept
• Deliver “as is”
• Employ a mechanism to dynamically add custom fields to entities
on-the-fly
• Mix with other techniques to enable Business Logic customization
EAV: Customizability
• Database Layer
• User Interface Layer*
* UI can be customized to some extent and naturally limited by the
pre-programmed display logic
EAV: Ideal Scenario
• Flexibility of having additional informative data is required
• Additional data is not explicitly used in the product business logic
EAV: Limitations
• Cannot be applied for Business Logic customization
• May add complications to data utilization and increases the
database load
Plugins: Concept
• Define ‘Points of Customization’ (aka Extension points)
• Develop functional logic in separate (isolated) artefacts (plugins or
scripts)
• Dynamically execute attached plugins in the pre-defined
Customization Points
Plugins: Customizability
• Database Layer
• Business Logic Layer
• User Interface Layer
Plugins: Ideal Scenario
• Points of Customization are easy to predict
• User Interface modifications are quite trivial
• Business Logic modifications to be added only in Points of
Customization, not in between
Plugins: Limitations
• Any layer can be customized to some extent, which is naturally
limited by ‘Points of Customization’
• Architecture becomes more complicated
• ‘Just in case’ scattering of ‘Customization Points’ leads to poor code
readability and hard debug
Ideal Framework Requirements
• Customization from Model to UI
• Clear separation between underlying Product and On-Top
Customizations
• Possibility of tight interlacement of Customization and Product
functionality
• Entire product to be opened for customization
CUBA Extensions
• Implemented in the CUBA platform – a high level framework for
enterprise software development
• Based on the Open Inheritance pattern
Main Principles
• Inherit all the features of an underlying product, using it as a library
• Contain only distinctive features, without copying untouched
product functionality
• Support hierarchical customization model
Model Customization: Challenge
• Product implements User entity
• Customer requires address and department fields to be added
• Department is required to be a separate entity, linked to a User
Model Customization:
Implementation
Model Customization: @Extends
• Base entity use should be substituted globally across the product:
– Constructors
– JPQL queries
– Model traversal
Model Customization:
How it works
• Object Factory always returns the deepest child using metadata
model
• All JPQL queries are parsed, analyzed and modified according to
the metadata model
• Model traversal substitution is reached by orm.xml generation,
where target-entity attribute refers to the deepest child
Product CUBA extension
UI Customization: How it works
UI Customization: Product Screen
UI Customization: Extension Screen
Spring framework does it – no
need to reinvent what already
exists!
• Declare a @Component
• Override in the extension
• Re-register the new class in
the extension
• The new implementation will
be used across the whole
product
Business Logic Customization
Updating the Underlying
Product Version
• Specify the new version of the underlying product in extension
• Meet product API changes in the overlapped parts
• Rebuild the product with the extension
Hierarchical Customization Model
Summary
Based on mainstream technologies
Implements:
• CUBA Extensions
• Scripting
• Entity-Attribute-Value
CUBA Platform
Our Experience: Thesis
Enterprise Content Management system
• Over 200 implementations
• 26 custom solutions based on the product
Delivery of 26 projects to huge customers would not be possible
without deep system customization
Our Experience:
Sherlock Taxi Solution
Complete Taxi Management Solution
• 12 implementations
• 7 custom solutions based the product
• 2 ongoing customizations
Product is constantly being updated for all customers bringing new
product features.
Hands-on Labs
Try CUBA extensions at our Hands-on Labs, with the help of our CUBA
experts, you will develop a fully-functioned business application in
just a couple of hours
When: Wednesday 28th October 2015
Where: Hilton-Franciscan Room A
Lab 1: 10:00 am - 12:00 pm
Lab 2: 12:30 pm - 2:30 pm
Lab 3: 3:00 pm - 5:00 pm
By Aleksey Stukalov
Thank you!

More Related Content

What's hot

Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webparts
Prabhu Nehru
 
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOpsECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
European Collaboration Summit
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
Sencha
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
WSPDC & FEDSPUG
 
API SDK Development – Lessons Learned
API SDK Development – Lessons LearnedAPI SDK Development – Lessons Learned
API SDK Development – Lessons Learned
Pronovix
 
PaulCarroll_Resume_2016-09
PaulCarroll_Resume_2016-09PaulCarroll_Resume_2016-09
PaulCarroll_Resume_2016-09
PAUL CARROLL
 
EVOLVE'16 | Enhance | Anil Kalbag & Anshul Chhabra | Comparative Architecture...
EVOLVE'16 | Enhance | Anil Kalbag & Anshul Chhabra | Comparative Architecture...EVOLVE'16 | Enhance | Anil Kalbag & Anshul Chhabra | Comparative Architecture...
EVOLVE'16 | Enhance | Anil Kalbag & Anshul Chhabra | Comparative Architecture...
Evolve The Adobe Digital Marketing Community
 
JavaCro'15 - Adobe Experience Manager and Apache Sling - Samir Čauš
JavaCro'15 - Adobe Experience Manager and Apache Sling - Samir ČaušJavaCro'15 - Adobe Experience Manager and Apache Sling - Samir Čauš
JavaCro'15 - Adobe Experience Manager and Apache Sling - Samir Čauš
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
European Collaboration Summit
 
IVY: an overview
IVY: an overviewIVY: an overview
IVY: an overview
RobertoMontes31
 
Bring Order to the Chaos: Take the MVC Plunge
Bring Order to the Chaos: Take the MVC PlungeBring Order to the Chaos: Take the MVC Plunge
Bring Order to the Chaos: Take the MVC Plunge
ColdFusionConference
 
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHEREECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
European Collaboration Summit
 
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladoresQue hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Rodolfo Finochietti
 
SPSCasablanca - SPFx Deployment
SPSCasablanca - SPFx DeploymentSPSCasablanca - SPFx Deployment
SPSCasablanca - SPFx Deployment
Yannick Borghmans
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component Resuse
Justin Edelson
 
O365Con18 - Yo I want to extend - Stefan Bauer
O365Con18 - Yo I want to extend - Stefan BauerO365Con18 - Yo I want to extend - Stefan Bauer
O365Con18 - Yo I want to extend - Stefan Bauer
NCCOMMS
 
Azure Automation, PnP Provisioning and PnP PowerShell
Azure Automation, PnP Provisioning and PnP PowerShellAzure Automation, PnP Provisioning and PnP PowerShell
Azure Automation, PnP Provisioning and PnP PowerShell
Markus Moeller
 
Lessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation systemLessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation system
Pronovix
 
Scale net apps in aws
Scale net apps in awsScale net apps in aws
Scale net apps in aws
Codecamp Romania
 
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom SmalltalkAppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
ESUG
 

What's hot (20)

Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webparts
 
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOpsECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
 
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
FEDSPUG April 2014: Visual Studio 2013 for Application Lifecycle Management &...
 
API SDK Development – Lessons Learned
API SDK Development – Lessons LearnedAPI SDK Development – Lessons Learned
API SDK Development – Lessons Learned
 
PaulCarroll_Resume_2016-09
PaulCarroll_Resume_2016-09PaulCarroll_Resume_2016-09
PaulCarroll_Resume_2016-09
 
EVOLVE'16 | Enhance | Anil Kalbag & Anshul Chhabra | Comparative Architecture...
EVOLVE'16 | Enhance | Anil Kalbag & Anshul Chhabra | Comparative Architecture...EVOLVE'16 | Enhance | Anil Kalbag & Anshul Chhabra | Comparative Architecture...
EVOLVE'16 | Enhance | Anil Kalbag & Anshul Chhabra | Comparative Architecture...
 
JavaCro'15 - Adobe Experience Manager and Apache Sling - Samir Čauš
JavaCro'15 - Adobe Experience Manager and Apache Sling - Samir ČaušJavaCro'15 - Adobe Experience Manager and Apache Sling - Samir Čauš
JavaCro'15 - Adobe Experience Manager and Apache Sling - Samir Čauš
 
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
 
IVY: an overview
IVY: an overviewIVY: an overview
IVY: an overview
 
Bring Order to the Chaos: Take the MVC Plunge
Bring Order to the Chaos: Take the MVC PlungeBring Order to the Chaos: Take the MVC Plunge
Bring Order to the Chaos: Take the MVC Plunge
 
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHEREECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
ECS19 - Daniel Neumann - AZURE FUNCTIONS 2.0 - RUNNING SERVERLESS EVERYWHERE
 
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladoresQue hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
Que hay de nuevo en 2013 en la plataforma Microsoft para desarrolladores
 
SPSCasablanca - SPFx Deployment
SPSCasablanca - SPFx DeploymentSPSCasablanca - SPFx Deployment
SPSCasablanca - SPFx Deployment
 
Thoughts on Component Resuse
Thoughts on Component ResuseThoughts on Component Resuse
Thoughts on Component Resuse
 
O365Con18 - Yo I want to extend - Stefan Bauer
O365Con18 - Yo I want to extend - Stefan BauerO365Con18 - Yo I want to extend - Stefan Bauer
O365Con18 - Yo I want to extend - Stefan Bauer
 
Azure Automation, PnP Provisioning and PnP PowerShell
Azure Automation, PnP Provisioning and PnP PowerShellAzure Automation, PnP Provisioning and PnP PowerShell
Azure Automation, PnP Provisioning and PnP PowerShell
 
Lessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation systemLessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation system
 
Scale net apps in aws
Scale net apps in awsScale net apps in aws
Scale net apps in aws
 
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom SmalltalkAppeX and JavaScript Support Enhancements in Cincom Smalltalk
AppeX and JavaScript Support Enhancements in Cincom Smalltalk
 

Viewers also liked

JFokus 2011 - Google Cloud for Java Developers: Platform and Monetization
JFokus 2011 - Google Cloud for Java Developers: Platform and MonetizationJFokus 2011 - Google Cloud for Java Developers: Platform and Monetization
JFokus 2011 - Google Cloud for Java Developers: Platform and Monetization
Patrick Chanezon
 
San antonio desde humahuaca
San antonio desde humahuacaSan antonio desde humahuaca
San antonio desde humahuaca
Misioneras Claretianas
 
Terris Slides
Terris SlidesTerris Slides
Terris Slides
Terri Sallee
 
[Harvard CS264] 09 - Machine Learning on Big Data: Lessons Learned from Googl...
[Harvard CS264] 09 - Machine Learning on Big Data: Lessons Learned from Googl...[Harvard CS264] 09 - Machine Learning on Big Data: Lessons Learned from Googl...
[Harvard CS264] 09 - Machine Learning on Big Data: Lessons Learned from Googl...
npinto
 
Letter by Nikhil gupta
Letter by Nikhil guptaLetter by Nikhil gupta
Letter by Nikhil gupta
Nikhil Gupta
 
D&B Business Verification API Code Sample in C#
D&B Business Verification API Code Sample in C#D&B Business Verification API Code Sample in C#
D&B Business Verification API Code Sample in C#
Lynn Langit
 
Bleeding Edge Databases
Bleeding Edge DatabasesBleeding Edge Databases
Bleeding Edge Databases
Lynn Langit
 
MLconf NYC Chang Wang
MLconf NYC Chang Wang MLconf NYC Chang Wang
MLconf NYC Chang Wang
MLconf
 
Database Choices
Database ChoicesDatabase Choices
Database Choices
Lynn Langit
 
Azure Big Data Story
Azure Big Data StoryAzure Big Data Story
Azure Big Data Story
Lynn Langit
 
JOOD_PR ACTIVITES 2015 - 16
JOOD_PR ACTIVITES 2015 - 16JOOD_PR ACTIVITES 2015 - 16
JOOD_PR ACTIVITES 2015 - 16
sunil mehra
 
Ali Akbar CV
Ali Akbar CVAli Akbar CV
Ali Akbar CV
ali akbar
 
Using Premium Data - for Business Analysts
Using Premium Data - for Business AnalystsUsing Premium Data - for Business Analysts
Using Premium Data - for Business Analysts
Lynn Langit
 
Learning GitHub Part 3
Learning GitHub Part 3Learning GitHub Part 3
Learning GitHub Part 3
Lynn Langit
 
AWS for the Data Professional
AWS for the Data ProfessionalAWS for the Data Professional
AWS for the Data Professional
Lynn Langit
 
Making ‘Big Data’ Your Ally – Using data analytics to improve compliance, due...
Making ‘Big Data’ Your Ally – Using data analytics to improve compliance, due...Making ‘Big Data’ Your Ally – Using data analytics to improve compliance, due...
Making ‘Big Data’ Your Ally – Using data analytics to improve compliance, due...
emermell
 
Deliver Best-in-Class HPC Cloud Solutions Without Losing Your Mind
Deliver Best-in-Class HPC Cloud Solutions Without Losing Your MindDeliver Best-in-Class HPC Cloud Solutions Without Losing Your Mind
Deliver Best-in-Class HPC Cloud Solutions Without Losing Your Mind
Avere Systems
 
Unified access with Aruba Mobility Access Switches – Live Demo
Unified access with Aruba Mobility Access Switches – Live DemoUnified access with Aruba Mobility Access Switches – Live Demo
Unified access with Aruba Mobility Access Switches – Live Demo
Aruba, a Hewlett Packard Enterprise company
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
Chris Schalk
 

Viewers also liked (20)

JFokus 2011 - Google Cloud for Java Developers: Platform and Monetization
JFokus 2011 - Google Cloud for Java Developers: Platform and MonetizationJFokus 2011 - Google Cloud for Java Developers: Platform and Monetization
JFokus 2011 - Google Cloud for Java Developers: Platform and Monetization
 
Obs proyecto-ley-ref-lofl
Obs proyecto-ley-ref-loflObs proyecto-ley-ref-lofl
Obs proyecto-ley-ref-lofl
 
San antonio desde humahuaca
San antonio desde humahuacaSan antonio desde humahuaca
San antonio desde humahuaca
 
Terris Slides
Terris SlidesTerris Slides
Terris Slides
 
[Harvard CS264] 09 - Machine Learning on Big Data: Lessons Learned from Googl...
[Harvard CS264] 09 - Machine Learning on Big Data: Lessons Learned from Googl...[Harvard CS264] 09 - Machine Learning on Big Data: Lessons Learned from Googl...
[Harvard CS264] 09 - Machine Learning on Big Data: Lessons Learned from Googl...
 
Letter by Nikhil gupta
Letter by Nikhil guptaLetter by Nikhil gupta
Letter by Nikhil gupta
 
D&B Business Verification API Code Sample in C#
D&B Business Verification API Code Sample in C#D&B Business Verification API Code Sample in C#
D&B Business Verification API Code Sample in C#
 
Bleeding Edge Databases
Bleeding Edge DatabasesBleeding Edge Databases
Bleeding Edge Databases
 
MLconf NYC Chang Wang
MLconf NYC Chang Wang MLconf NYC Chang Wang
MLconf NYC Chang Wang
 
Database Choices
Database ChoicesDatabase Choices
Database Choices
 
Azure Big Data Story
Azure Big Data StoryAzure Big Data Story
Azure Big Data Story
 
JOOD_PR ACTIVITES 2015 - 16
JOOD_PR ACTIVITES 2015 - 16JOOD_PR ACTIVITES 2015 - 16
JOOD_PR ACTIVITES 2015 - 16
 
Ali Akbar CV
Ali Akbar CVAli Akbar CV
Ali Akbar CV
 
Using Premium Data - for Business Analysts
Using Premium Data - for Business AnalystsUsing Premium Data - for Business Analysts
Using Premium Data - for Business Analysts
 
Learning GitHub Part 3
Learning GitHub Part 3Learning GitHub Part 3
Learning GitHub Part 3
 
AWS for the Data Professional
AWS for the Data ProfessionalAWS for the Data Professional
AWS for the Data Professional
 
Making ‘Big Data’ Your Ally – Using data analytics to improve compliance, due...
Making ‘Big Data’ Your Ally – Using data analytics to improve compliance, due...Making ‘Big Data’ Your Ally – Using data analytics to improve compliance, due...
Making ‘Big Data’ Your Ally – Using data analytics to improve compliance, due...
 
Deliver Best-in-Class HPC Cloud Solutions Without Losing Your Mind
Deliver Best-in-Class HPC Cloud Solutions Without Losing Your MindDeliver Best-in-Class HPC Cloud Solutions Without Losing Your Mind
Deliver Best-in-Class HPC Cloud Solutions Without Losing Your Mind
 
Unified access with Aruba Mobility Access Switches – Live Demo
Unified access with Aruba Mobility Access Switches – Live DemoUnified access with Aruba Mobility Access Switches – Live Demo
Unified access with Aruba Mobility Access Switches – Live Demo
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
 

Similar to How to Develop Highly Customizable Off-the-Shelf Software (Aleksey Stukalov)

SAP ByDesign Development
SAP ByDesign DevelopmentSAP ByDesign Development
SAP ByDesign Development
Malan Amarasinghe
 
New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic application
Taras Matyashovsky
 
Old Products, New Tricks: Embedding Operational Reports: Everything Product M...
Old Products, New Tricks: Embedding Operational Reports: Everything Product M...Old Products, New Tricks: Embedding Operational Reports: Everything Product M...
Old Products, New Tricks: Embedding Operational Reports: Everything Product M...
Hannah Flynn
 
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
Theo Jungeblut
 
Things-factory introduction
Things-factory introductionThings-factory introduction
Things-factory introduction
Hatio, Lab.
 
Becoming Software Oriented in a Solutions Centric Industry
Becoming Software Oriented in a Solutions Centric IndustryBecoming Software Oriented in a Solutions Centric Industry
Becoming Software Oriented in a Solutions Centric Industry
Flexera
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
Gert Drapers
 
Cincom Smalltalk News
Cincom Smalltalk NewsCincom Smalltalk News
Cincom Smalltalk News
ESUG
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
Peter Nazarov
 
Common Project Mistakes: Visualization, Alarms, and Security
Common Project Mistakes: Visualization, Alarms, and SecurityCommon Project Mistakes: Visualization, Alarms, and Security
Common Project Mistakes: Visualization, Alarms, and Security
Inductive Automation
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
Vadym Kazulkin
 
Cincom Smalltalk Roadmap 2010
Cincom Smalltalk Roadmap 2010Cincom Smalltalk Roadmap 2010
Cincom Smalltalk Roadmap 2010
ESUG
 
GCP Deployment- Vertex AI
GCP Deployment- Vertex AIGCP Deployment- Vertex AI
GCP Deployment- Vertex AI
Triloki Gupta
 
Patterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 appsPatterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 apps
Phil Leggetter
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
XPDays
 
Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012
Twice. Ontwikkelaars van IT professionals
 
Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012
Delta-N
 
Refactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test AutomationRefactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test Automation
Stephen Fuqua
 
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Vadym Kazulkin
 
Borland_intro_v5_csc.pptx
Borland_intro_v5_csc.pptxBorland_intro_v5_csc.pptx
Borland_intro_v5_csc.pptx
ssuser9e9be71
 

Similar to How to Develop Highly Customizable Off-the-Shelf Software (Aleksey Stukalov) (20)

SAP ByDesign Development
SAP ByDesign DevelopmentSAP ByDesign Development
SAP ByDesign Development
 
New life inside monolithic application
New life inside monolithic applicationNew life inside monolithic application
New life inside monolithic application
 
Old Products, New Tricks: Embedding Operational Reports: Everything Product M...
Old Products, New Tricks: Embedding Operational Reports: Everything Product M...Old Products, New Tricks: Embedding Operational Reports: Everything Product M...
Old Products, New Tricks: Embedding Operational Reports: Everything Product M...
 
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
Debugging,Troubleshooting & Monitoring Distributed Web & Cloud Applications a...
 
Things-factory introduction
Things-factory introductionThings-factory introduction
Things-factory introduction
 
Becoming Software Oriented in a Solutions Centric Industry
Becoming Software Oriented in a Solutions Centric IndustryBecoming Software Oriented in a Solutions Centric Industry
Becoming Software Oriented in a Solutions Centric Industry
 
The Rocky Cloud Road
The Rocky Cloud RoadThe Rocky Cloud Road
The Rocky Cloud Road
 
Cincom Smalltalk News
Cincom Smalltalk NewsCincom Smalltalk News
Cincom Smalltalk News
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
 
Common Project Mistakes: Visualization, Alarms, and Security
Common Project Mistakes: Visualization, Alarms, and SecurityCommon Project Mistakes: Visualization, Alarms, and Security
Common Project Mistakes: Visualization, Alarms, and Security
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
 
Cincom Smalltalk Roadmap 2010
Cincom Smalltalk Roadmap 2010Cincom Smalltalk Roadmap 2010
Cincom Smalltalk Roadmap 2010
 
GCP Deployment- Vertex AI
GCP Deployment- Vertex AIGCP Deployment- Vertex AI
GCP Deployment- Vertex AI
 
Patterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 appsPatterns and practices for building enterprise-scale HTML5 apps
Patterns and practices for building enterprise-scale HTML5 apps
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012
 
Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012Introductie Visual Studio ALM 2012
Introductie Visual Studio ALM 2012
 
Refactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test AutomationRefactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test Automation
 
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
 
Borland_intro_v5_csc.pptx
Borland_intro_v5_csc.pptxBorland_intro_v5_csc.pptx
Borland_intro_v5_csc.pptx
 

Recently uploaded

Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
ssuserad3af4
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
YousufSait3
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Envertis Software Solutions
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 

Recently uploaded (20)

Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
zOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL DifferenceszOS Mainframe JES2-JES3 JCL-JECL Differences
zOS Mainframe JES2-JES3 JCL-JECL Differences
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 

How to Develop Highly Customizable Off-the-Shelf Software (Aleksey Stukalov)

  • 1. By Aleksey Stukalov How to Develop Highly Customizable Off-the-Shelf Software
  • 2. Off-the-Shelf vs Custom Software Off-the-Shelf • Generic • Customization is laborious or impossible Custom • 100% designed for the individual customer • Difficult to productize for new customers
  • 3. Ideal Product • Implements “good for all” - common business features • Also implements “good only for me” - distinctive business features for individual client • Customization does not impede regular core product updates
  • 7. Widely Used Techniques • All in One • Branching • Entity-Attribute-Value • Plugins
  • 8. All in One: Concept • Keep single codebase • Employ ‘feature toggling’
  • 9. All in One: Customizability • Database Layer • Business Logic Layer • User Interface Layer
  • 10. All in One: Ideal Scenario • Established, mostly static business area • Limited customization requirements • Inability to deliver custom development does not impact sales
  • 11. All in One: What if the assumptions were wrong • Customer is unhappy due to lack of desired features OR • Codebase turns into the unmanageable garbage can
  • 12. Branching: Concept • Create a new branch for the customer • Customize whatever is needed in isolation
  • 13. Branching: Customizability • Database Layer • Business Logic Layer • User Interface Layer
  • 14. Branching: Ideal Scenario • Master branch is mature and does not require rapid delivery of new features • Only a few customer branches required • Customer branches do not require frequent synchronization with the core product branch
  • 15. Branching: What if the assumptions were wrong Constant merging from master to branches and vice versa: • Becomes extremely time consuming • Leads to unavoidable regression bugs
  • 16. EAV: Concept • Deliver “as is” • Employ a mechanism to dynamically add custom fields to entities on-the-fly • Mix with other techniques to enable Business Logic customization
  • 17. EAV: Customizability • Database Layer • User Interface Layer* * UI can be customized to some extent and naturally limited by the pre-programmed display logic
  • 18. EAV: Ideal Scenario • Flexibility of having additional informative data is required • Additional data is not explicitly used in the product business logic
  • 19. EAV: Limitations • Cannot be applied for Business Logic customization • May add complications to data utilization and increases the database load
  • 20. Plugins: Concept • Define ‘Points of Customization’ (aka Extension points) • Develop functional logic in separate (isolated) artefacts (plugins or scripts) • Dynamically execute attached plugins in the pre-defined Customization Points
  • 21. Plugins: Customizability • Database Layer • Business Logic Layer • User Interface Layer
  • 22. Plugins: Ideal Scenario • Points of Customization are easy to predict • User Interface modifications are quite trivial • Business Logic modifications to be added only in Points of Customization, not in between
  • 23. Plugins: Limitations • Any layer can be customized to some extent, which is naturally limited by ‘Points of Customization’ • Architecture becomes more complicated • ‘Just in case’ scattering of ‘Customization Points’ leads to poor code readability and hard debug
  • 24. Ideal Framework Requirements • Customization from Model to UI • Clear separation between underlying Product and On-Top Customizations • Possibility of tight interlacement of Customization and Product functionality • Entire product to be opened for customization
  • 25. CUBA Extensions • Implemented in the CUBA platform – a high level framework for enterprise software development • Based on the Open Inheritance pattern Main Principles • Inherit all the features of an underlying product, using it as a library • Contain only distinctive features, without copying untouched product functionality • Support hierarchical customization model
  • 26. Model Customization: Challenge • Product implements User entity • Customer requires address and department fields to be added • Department is required to be a separate entity, linked to a User
  • 28. Model Customization: @Extends • Base entity use should be substituted globally across the product: – Constructors – JPQL queries – Model traversal
  • 29. Model Customization: How it works • Object Factory always returns the deepest child using metadata model • All JPQL queries are parsed, analyzed and modified according to the metadata model • Model traversal substitution is reached by orm.xml generation, where target-entity attribute refers to the deepest child
  • 30. Product CUBA extension UI Customization: How it works
  • 33. Spring framework does it – no need to reinvent what already exists! • Declare a @Component • Override in the extension • Re-register the new class in the extension • The new implementation will be used across the whole product Business Logic Customization
  • 34. Updating the Underlying Product Version • Specify the new version of the underlying product in extension • Meet product API changes in the overlapped parts • Rebuild the product with the extension
  • 37. Based on mainstream technologies Implements: • CUBA Extensions • Scripting • Entity-Attribute-Value CUBA Platform
  • 38. Our Experience: Thesis Enterprise Content Management system • Over 200 implementations • 26 custom solutions based on the product Delivery of 26 projects to huge customers would not be possible without deep system customization
  • 39. Our Experience: Sherlock Taxi Solution Complete Taxi Management Solution • 12 implementations • 7 custom solutions based the product • 2 ongoing customizations Product is constantly being updated for all customers bringing new product features.
  • 40. Hands-on Labs Try CUBA extensions at our Hands-on Labs, with the help of our CUBA experts, you will develop a fully-functioned business application in just a couple of hours When: Wednesday 28th October 2015 Where: Hilton-Franciscan Room A Lab 1: 10:00 am - 12:00 pm Lab 2: 12:30 pm - 2:30 pm Lab 3: 3:00 pm - 5:00 pm