An award-winning Web site linking South Australians affected by a disaster to those offering to help showcases a number of best practices for improving developer productivity and achieving uniform agreement on standards, according to one of its developers.
The Volunteer Emergency Recovery and Information System (VERIS) developed by the Office for Volunteers on behalf of the State Recovery Committee, "marries up" volunteers with tasks following a major disaster. The system, only activated and promoted in the event of a disaster, allows for online registration and allocation of the many spontaneous volunteers who generously lend a hand to help the community in post-disaster recovery operations following the event of a declared state emergency.
We followed an engineering approach using a template code generation system to read the database schema and produce a heap of standard code
The Web site provides information about the rights and responsibilities of volunteers and a registration service for people who need help and those who can help.
Online information strategist for SA's Department for Families and Communities Aaron Osterby says practices adopted during the Web site's development demonstrate how governments can improve developer productivity and achieve uniform agreement to a standard of quality and architecture by making compliance with the standards easier than divergence. He says the system also demonstrates the advantages of adopting both a shared source application framework and an engineering approach to software development.
One of those best practices for improving developer productivity involves template code generation.
As part of the business case another group developed a prototype of VERIS using ASP and VBScript, focused on the user interface of the application, as prototypes are meant to. To put it into production the team needed to get it into the department's DotNetNuke Web application framework, ensure robust security, and improve on its performance characteristics.
"We decided to keep the database structure and aspects of the look of the UI components, but add in stored procedures, create data access and business logic layers and rework technically the means of presenting the UI to fit with our standard Web environment and to include input field validation and things like that," Osterby says.
"To do that, we followed an engineering approach using a template code generation system to read the database schema and produce a heap of standard code. This works well for the creation of stored procedures in the database, a data access layer that protects the application from changes to the database and the main components of the business logic layer. After all this code was generated, there was relatively small scope of activity for the developer to get the system into production. We had a six-week turnaround from the prototype being delivered to a release candidate ready for UAT."
The templates are run using the CodeSmith template engine. It lets the team customize templates and create them from scratch, in order to tailor code to exact requirements. This provides the economic advantage of economy of scope (as opposed to economy of scale). "We are able to more quickly turn around a solution where the scope doesn't change and also better able to accommodate changes to the scope of a project in midstream, because what code we generate, we can also regenerate after changes to the database," he says.
The approach also enhances overall maintainability of systems developed this way, since they are all very similar. A developer who has worked in one system developed this way can easily understand another application built the same way.
Meanwhile Osterby says a shared source portal application (DotNetNuke), available under a FreeBSD-style licence, allows the team to use pre-built DotNetNuke components for basic user registration, password recovery, attack pattern countermeasures and so forth to boost productivity and achieve uniform quality.
Join the CIO Australia group on LinkedIn. The group is open to CIOs, IT Directors, COOs, CTOs and senior IT managers.