Software development has never been a precise science, hence the large number of projects that either fail to deliver or overrun on cost and timescales.
In most SOA development projects, business analysts’ typically write requirements using basic desktop productivity tools. Architects and developers then try to deliver on those requirements, but often find that what they create is not what the business expected. The process requires several iterations back and forth between the business and IT to finally deliver what was expected, wasting valuable time and resources.
A typical software development lifecycle involves multiple phases, including the gathering of business requirements, the creation of an architectural model, the design of services, and the actual writing of code. Each phase depends on the accuracy of the others. When one phase is out of alignment with the ultimate goal, the other phases are pulled out of alignment as well, resulting is a system that does not meet the original business requirements.
That’s why we are announcing a new JBoss Community project called Savara that is aimed at solving this problem by building upon the SOA Process Governance work that is going on within the JBoss Community.
The Savara project aims to apply engineering rigor to the software development process in an effort to improve productivity and quality, while reducing the cost and time to build systems.
At it’s core, the Savara project will employ a concept called “Testable Architecture.” This involves providing the business analyst with modeling tools that can be used to define business requirements. Then, at each phase of the software development lifecycle, the artifacts created in that phase can be tested to make sure they conform with artifacts created in other phases, and ultimately with the original business requirements.
For example, architectural models can be verified against business requirements, paving the way for the creation of service designs. Once created, those service designs can, in turn, be verified against the architectural models, paving the way for code to be written. That code can then be verified against the services designs. Verification at each phase of the software development lifecycle ultimately yields deployed systems that are guaranteed to meet the original business requirements.