Irish Government (DSFA)
In 2004, BearingPoint and the Naked Objects Group Ltd. won the bid for phase 2 of the Irish Government's Department of Social & Family Affairs (DSFA) to develop a system to administer the Contributory and Retirement Pensions for Ireland's senior citizens. Part of the terms of the contract was that the system be built using Domain Driven principles using Naked Objects (NO) as the enabling platform.
The NO Group Ltd. subcontracted Haywood Associates to bring in expertise both of the Naked Objects platform itself and also in using TogetherJ .
Throughout 2004 to date development progressed from initial exploration into implementation, with the Pension system live in May 2006. Initial exploration was performed using the combination of Naked Objects and TogetherJ to enable very rapid prototyping of domain driven designs. The latter implementation phase formalized the process of test driven development along with continuous integration and incremental delivery.
Sine May 2006 there has been a succession of other releases, including Bereavement Grant, Debt Management, Free Travel, Early Child Supplement (ECS) and Child Benefit. As an example of the agility of the approach, the completely new ECS benefit was announced by the government minister in the Irish budget statement of Dec 2005, with the new scheme released just 9 months later, in Sep 2006.
Building an Architecture
Haywood Associates was originally brought in help to develop the common domain object model, but was retained by BearingPoint to continue developing the architecture, application and development techniques to bring the applications to release. Among the other contributions have been:
- using TogetherJ to automatically generate design and specification documentation
- using the SpringFramework to allow various application services and repositories to be injected into domain objects
- using XML snapshots of domain objects to create PDF communications using Stylevision
- designing a first-cut of the persistence object store, based on ideas within Hibernate
- developing tools to automatically generate mappings from the domain object model to the object store
- eliminating substantial memory leaks prior to May 2006 go-live using profiling techniques
- implementing a bespoke publish/subscribe bus for object-to-object subscriptions
- setting up a library of XML schemas representing events on the pub/sub bus, compliant with the Irish Government's own Reach architecture for publish/subscribe
- defining the relationship between NOA and SOA
- using and customising MapForce to generate DB-XML and flatfile-XML mappings for publishers and subscribers to the pub/sub bus
- installing a wiki to aid communication flow across the development team
- facilitating retrospectives in order to improve development practices within the BearingPoint team
If you have time, you might want to consider how many of these contributions involve the don't repeat yourself (DRY) principle...