Architecture Improvement Brainstorm
Architectural discussion with Mifos and ThoughtWorks folks on April 27th, 2010.
Brainstorm
- reduce build time
- focus on speeding up integration tests
- aim for 90% unit tests, 9% integration tests, 1% acceptance/functional tests
- remove unnecessary tests
- build pipelining
- transaction support
- use Spring-managed transactions
- remove commits and explicit session control
- remove StaticHibernateUtil
- use AOP in application context configuration for transaction management instead of annotations
- i18n and L10n
- remove all L10n code from domain
- use out-of-the-box i18n mechanism
- separate presentation from domain
- service identification
- convention of patterns for services
- calling convention(s)
- when/how DTOs are constructed and used
- migrate from Struts to SpringMVC
- new frontend: Grails?
- modularization along functional lines (also see EvolvingTheMifosCodeBase)
- 24x7 availability
- reduce exclusivity of batch jobs and OLTP activities
- move to Spring security
- surveys/PPI as a separate module
- customizable/business-driven workflow
Goals
Vision
- do whatever gives us the largest ROI
- align goals with customer commitments
Prioritized Goals
- frequent releases
- easy to develop/maintain
- feature-driven releases