Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Manage Client Specific Configuration

For a product that is used by multiple clients where different clients ask for different customizations both user interface wise and functionality wise, how to accommodate those changes without getting the code cluttered with client specific code?

Are there any frameworks(for any programming language) that help with this?

To add more detail the UI is web based and written using JSP.

like image 281
Can't Tell Avatar asked Feb 21 '23 21:02

Can't Tell


2 Answers

This is one of the most difficult business requirement to manage different versions of same app, so do not expect open frameworks for that case, however each company involved develops its own system for sth like that.

As for business logic modifications, you would benefit for strong interfacing and IoC (such as Spring). You would override the services for your specific case and change the required methods, then inject into IoC the modified version of the service.

As for UI, it's more difficult because you've chosen JSP, which has little flexibility. When you'd be programming in Swing or GWT, than you could do UI modification same way - override needed UI classes, change them, inject modified versions. With JSP - propably there will be lot of modifications to .jsp files in your customized version.

Now the change modification/bug fixing - there is fully usage of version controll system. Of course, your customer-specific versions are branches, while main, standard version is trunk. Bug fixes are made to trunk, then merged to customer-specific branches. With interfacing/overriding implementations most of the merges would be the easy way, however, with JSP, I would expect conflicts to be often...

Generally, code changes merge easier than anything XML-based.

like image 86
FolksLord Avatar answered Mar 04 '23 13:03

FolksLord


How about simple OOP? Set up a realistic interface/base class and depending on some sort of configuration, instantiate either child class A or B, depending on the client. It's hard to provide more detail for a language-agnostic question like this, but I think it's very realistic.

like image 26
Jonathon Reinhart Avatar answered Mar 04 '23 13:03

Jonathon Reinhart