Since 2005, the Ministry of Defence, the Brazilian Navy, the Planning Ministry, and the Database Laboratory of the Federal University of Rio de Janeiro have joined forces to use a new development approach to improve a set of management practices applied to software projects. After shifting from traditional development paradigms to Model Driven Development – MDA, we have obtained important results regarding productivity and project cost.
To illustrate, by using MDA tools , we have cut our development time by approximately 20%. Basically, we have gained more efficiency in our development process without inflicting on requirement quality. After these three years, we have seen that the adoption of new technologies, when carefully applied, might prove very useful as the results came up satisfactorily. Along this period, after delivering many software systems, we decided to standardize the way in which domain modelling was done.
We felt that by doing it we could use these standardized models to develop new software projects, not from scratch but, starting a few steps ahead. Given the foregoing, it is necessary to explain the problematic scenario we were facing with in public organization projects. Essentially, it was common practice in public organizations to develop similar software more than once, and wasting taxpayer’s money, when a simple generalization of concepts and a cooperative policy could speed up development by using previously conceived domain analysis.
To solve it we began by stating three topics that needed to be immediately addressed: 1. How to standardize domain and services analysis in order to allow different organizations to use the same concepts? 2. How to implement a distributed environment in which different organizations could share their domain analysis? 3. How to automate the development process by using MDA and SOA theories? The following sections try to answer each question by detailing what we have done to create the development environment.
However, the overall picture can be perceived as: 1. By creating a generic Service-Oriented Access Bus it becomes easy to integrate different business services. 2. By using Web Services technology it is possible to create a cooperative environment in which different organizations can share architectural standards and conceptual models. 3. By automating code generation different organizations can produce the same software product using the same set of models.