eFinanceFactory Andriy Kurhanevych, development group manager
Refactoring project Old implementation No scalabelity Poor extensibility, changeability and reuseablity Antipatterns almost not at all OO no interfaces no basic pattern responsibilities in the classes are difficult to determine code duplication... Customer needed Scalability Better extensibility, changeability, reuseability High decoupling between business logic and user interface
Project goals
Project profile and phases Size> 5 PY Length54 weeks BeginDecember 2001 EndJanuary 2003
Distributed development
Phase development process (based on DCB standards and IEEE templates)
Web-based development Tasks and defects management Web Tool (Keystone) Tracking tasks and problems Priorities management Automated notification Documents and sources Web repository (IIS FrontPage extension) Versions management Checkin/checkout per Internet
Development platform Technologies: J2EE: JDK1.2.2,, EJB 1.1, JSP 1.1 Web technologies: Java Script, XML, XSLT Application and Web servers: IBM WebSphere Advanced Server (target) Jboss 2.4.3, Tomcat (for quick development only) Database: Oracle 8.2 Tools: MS Project 2000 MS Visual Studio 6.0 IIS FrontPage extension Rational Rose 2000 Rational Robot J 2000 Keystone Jakarta Ant 1.4
Example of iteration plan Task names contain numbers of the corresponding tasks in the Keystone
Example of Use Case Diagram Calculation functionality common for all calculation types (determined by customer type and product class) Set of input/output parameters and calculation logic depend on the calculation type
Example of Use Cases analysis Calculation types hierarchy and common parts
Example of input page
Example of output page
J2EE platform architecture Internet explorer WebSphere cluster Oracle
Middle tier architecture
Example of EJB patterns use
Example of GoF design patterns use
Example of Sequence Diagram
Automated unit testing Testing class for each business case and each significant parameter set Near 100 testing classes in the project Automatic script running all test cases and informing on errors Daily cross-testing between developers teams
Testing automation with Rational Robot J Automated black-box testing of user interface Separate tests of all business cases and all parameter sets Automatic script running all tests nightly
Quality assurance Tasks and defects management system (Keystone) Tracking tasks and defects Priorities management Version management system (sources web repository) Analysis and design UML model Many EJB and GoF design patterns Code review and refactoring Automated testing Automated unit testing (JUnit) Automated testing of user interface (Rational Robot J)