Microsoft Research is working on a technology that will enable software developers and system integrators (SIs) to develop and modify enterprise business applications at a higher abstraction level than basic coding, according to a researcher at Microsoft Research India.
Adding new features or modifying functionality in a business application often requires the SI to modify the code of the software, head of the software engineering group set up to undertake the project, Sriram Rajamani, said. The job of the SI is made all the more difficult because many of the design objectives and architectural decisions that went into the application are often inadequately documented, Rajamani added.
Software design and architectural decisions are "institutional memories" that are no longer represented as part of a program, and are often lost when, for example, staff move to other jobs, Rajamani said. As a result, evolving code is painful today because changes are not being made at the right level of abstraction, he added.
Currently, most coding work for business applications is done at a level close to the platform on which the application is implemented, such as the Microsoft Windows platform, requiring developers to express functions at a fairly detailed level, according to managing director of Microsoft Research India, Padmanabhan Anandan.
"Our goal is to move up the process entirely to a level of abstraction where the programmers will express what they need to do at a level closer to the application domain, and there will be tools that will enable them to then translate it downwards to the level of verification and testing," he said. "Ultimately we think that if all goes well, there should be a dramatic increase in the productivity and maintainability of the software."
By defining the system at a higher level of abstraction and generating code from it, modifications to the business requirement of the application can then be done at the higher level without directly having to modify the code, Rajamani said. Another aim of the research is to create tools that provide visibility into the system and the way it is functioning at various levels of abstraction.
The tools would also ensure greater discipline and better processes for documenting the various design rules and thought processes involved in the development of an application, Rajamani added.
Just as high-level languages such as C reduced the requirement for programming at the assembly language level, the technology being developed by Microsoft Research India will reduce the amount of time spent by software developers and SIs on programming at the level of languages such as C, Rajamani said.
Microsoft Research India is working on this project, called internally the Rigorous Software Engineering project, with Indian software development outsourcers and systems integrators, as well as Indian educational institutions. They will help fine tune the requirements of the technology and test prototypes. The first prototypes are likely to be built around Microsoft's platforms, Rajamani added.
He declined to comment on when the technology might find its way into products, noting that it is still being researched.
Microsoft Research India was set up in January by Microsoft to research a number of areas, including computing technologies for emerging markets. The lab is among five research labs that Microsoft runs worldwide.
Research in software engineering is already being done at labs in other locations, including Redmond, according to Anandan. However, since the Rigorous Software Engineering project is focused on improving developer productivity, Microsoft decided to do it in India because the country is a global software development hub with a large pool of developers, he said.