By Aleksey Stukalov How to Develop Highly Customizable Off-the-Shelf Software.

Slides:



Advertisements
Similar presentations
Spring, Hibernate and Web Services 13 th September 2014.
Advertisements

Roadmap to Continuous Integration Testing and Benefits Gowri Selka, Walgreens Natalie Koltun, Walgreens May 20th, 2014 ©2013 Walgreen Co. All rights reserved.
Microsoft Patterns and Practices SharePoint Guidance Robert L. Bogue MS MVP, MCSE, MCSA: Security
Visual Studio Team System (VSTS). Richard Hundhausen Author of software development books Microsoft Regional Director Microsoft MVP (VSTS) MCT, MCSD,
MIT iCampus iLabs Software Architecture Workshop June , 2006.
Confidential - Property of infiNET Solutions. Architecting and Designing Scalable, Multitier Systems in J2EE infiNET Solutions David R. King – Chief Technology.
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
Who am I? ● Catalin Comanici ● QA for 10 years, doing test automation for about 6 years ● fun guy and rock star wannabe.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Dependency Injection and Model-View-Controller. Overview Inversion of Control Model-View-Controller.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Joel Bapaga on Web Design Strategies Technologies Commercial Value.
Design Patterns.
5/5/2005Toni Räikkönen Internet based data collection from enterprises using XML questionnaires and XCola engine CoRD Meeting May 11th 2005.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
CHAPTER TEN AUTHORING.
Symfony web development framework is used to develop rapid, complex and large scale web applications faster and in an effective way.
Hyper/J and Concern Manipulation Environment. The need for AOSD tools and development environment AOSD requires a variety of tools Life cycle – support.
XML Registries Source: Java TM API for XML Registries Specification.
Chapter 14 Part II: Architectural Adaptation BY: AARON MCKAY.
Middleware for FIs Apeego House 4B, Tardeo Rd. Mumbai Tel: Fax:
Chapter 18 Object Database Management Systems. McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved. Outline Motivation for object.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Distributed Information Systems. Motivation ● To understand the problems that Web services try to solve it is helpful to understand how distributed information.
SiD Workshop October 2013, SLACDmitry Onoprienko SiD Workshop SLAC, October 2013 Dmitry Onoprienko SLAC, SCA FreeHEP based software status: Jas 3, WIRED,
Design Patterns -- Omkar. Introduction  When do we use design patterns  Uses of design patterns  Classification of design patterns  Creational design.
Final Review. From ArrayLists to Arrays The ArrayList : used to organize a list of objects –It is a class in the Java API –the ArrayList class uses an.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
MVC WITH CODEIGNITER Presented By Bhanu Priya.
WHAT IS PHP FRAMEWORK? Set of Classes and Functions(Methods) Design for the development of web applications Provide basic structure Rapid application development(RAD)
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
Service-Oriented Architectures Peter Varhol Product Manager, Compuware Columnist, Java Pro June 7, 2004.
Enterprise Library 3.0 Memi Lavi Solution Architect Microsoft Consulting Services Guy Burstein Senior Consultant Advantech – Microsoft Division.
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
Introduction The concept of a web framework originates from the basic idea that every web application obtains its foundations from a similar set of guidelines.
Computer System Structures
The Holmes Platform and Applications
Design Patterns Source: “Design Patterns”, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides And Created.
ORACLE ADF ONLINE TRAINING COURSE
Netscape Application Server
PLM, Document and Workflow Management
Overview of MDM Site Hub
Best Practices and Architecture
Software Design and Architecture
Satisfying Open/Closed Principle
Processes The most important processes used in Web-based systems and their internal organization.
Magento Technical Guidelines Eugene Shakhsuvarov, Software Magento
An Introduction to Software Factories
Chapter 25: Architecture and Product Lines
Intent (Thanks to Jim Fawcett for the slides)
iVend Retail Extensibility
Design and Maintenance of Web Applications in J2EE
Lecture 1: Multi-tier Architecture Overview
Chapter 20 Object-Oriented Analysis and Design
Genome Workbench Chuong Huynh NIH/NLM/NCBI New Delhi, India
Top Reasons to Choose Android Today. Over the years the Android OS has progressed largely by acquiring major percent of global market share. A number.
Top Reasons to Choose Android Today. Over the years the Android OS has progressed largely by acquiring major percent of global market share. A number.
Software Design Lecture : 15.
Software Design Lecture : 14.
Developing and testing enterprise Java applications
Chapter 8, Design Patterns Introduction
Drupal 8: Twig and Component Libraries
Extending Classes Through Inheritance
Mark Quirk Head of Technology Developer & Platform Group
Plug-In Architecture Pattern
SDMX IT Tools SDMX Registry
Presentation transcript:

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

Off-the-Shelf vs Custom Software Off-the-Shelf G eneric 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 ProductCustomization

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 qu i te 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 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

ProductCUBA 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 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 28 th 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!