Architecture Improvement Brainstorm

Architectural discussion with Mifos and ThoughtWorks folks on April 27th, 2010.


  • 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



  • do whatever gives us the largest ROI
  • align goals with customer commitments

Prioritized Goals

  1. frequent releases
  2. easy to develop/maintain
  3. feature-driven releases