Architecture Improvement Brainstorm

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

  1. frequent releases

  2. easy to develop/maintain

  3. feature-driven releases