Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Here's a brief overview of our current system architecture:

  • Mifos Application
    • Presentation layer: Freemarker, Spring MVC; in transition from JSP and Apache Struts
    • Business Logic: Spring Framework and custom Java code
    • Data access layer: Hibernate Object Relational Mapper
  • Web server: Apache Tomcat
  • Database layer: MySQL
  • Modularity (responsibility of a module, inter-module communication) (under discussion)

  • Architectural choices - why were these tools chosen?
    • Application
      • Spring Framework - provides a good framework for modular applications, allowing decomposition and separate testing. Good tools for web application UI patterns (Spring MVC), web app security (Spring Security), and good interoperation with Hibernate (Spring Transactions).
      • Freemarker: Good Spring MVC interoperation, enforces presentation and business logic separation, good templating and page composition, very good error messages for debugging (compared to Velocity), and easy to program web pages with it.
      • Hibernate: Selected by the original writers of Mifos, we wanted to maintain code compatibility. Good interoperation with Spring Framework.
      • Tomcat: highly reliable and scalable web application container. Good Spring Framework compatibility.
      • MySQL: Selected by the original writers of Mifos. Works well with Hibernate.
    • Build system architectural choices
      • Maven - standardized build system with many plugin modules, less code to write compared with a custom build system like ant. Standard dependency checking and artifact (jar and war) management.
      • Junit - selected by the original writers of Mifos for automated tests
      • TestNG - flexible framework for integration and acceptance testing. Allows for running suites of tests with different set up and tear down.
      • Selenium - good modeling of user behavior for acceptance testing. Slow but accurate.
  • No labels