Strategies for architecture evolution
We would like to follow an incremental re-architecture approach to realize envisaged architecture. (Here is a diagram quickly sketched that shows one idea of how work might move forward with horizontal and vertical slicing proceeding together towards the final result in step 7).
Question however is how do we do that? How do we align technical engineering bit with business demands and priorities?
There are several approaches for re-engineering
- Horizontal slicing - where the system is broken in layers, and a layer is targeted for complete clean up (really?), before picking up another.
- Vertical slicing - where a functional flow is targeted for cleanup towards envisaged way. Everything in this flow is cleaned up - top to bottom. (again really?)
The attached presentation tries to depict pros and cons and advocates vertical approach, and welcomes debate amongst technologists and business owners of how best to achieve migration of mifos, so that:
- such that mifos delivers continuous value to business while re-engineering is taking place.
- such that its easier and faster for developers to respond to mifos customers (the end users who actually use mifos)
- such that no engineering effort is ever wasted, and makes subsequent effort cheaper.
It is expected (but not closed) that vertical slicing would probably deliver the most value. However, incremental improvement is always expected for every bit of work that we do, irrespective of horizontal or vertical slicing.
It is expected that starting 2nd week of May, 2010 - mifos core team and TW team would try to do a spike that would
- Establish a pattern that would achieve a functional flow (in areas of Fee definition, creation etc) in the idealistic way
- mifos-tw bangalore team would do a spike with spring, wiring up on refactor-ed fee classes.
- Core team (Adam M?) would do the presentation layer on top in collaboration with TW.
End of the exercise, a sets of guidelines (for development, estimation, techniques, ways of prioritization, rules-of-thumb) will be published for community acceptance and debate. And these would form basis of
- what we migrate
- when we migrate
- how we migrate
Note: this is not a tech-only activity. Every action must lead towards achieving something for business. This exercise would be futile without the participation of business.