The question that has guided our work during the life of the project is how to increase the productivity of software development groups, while maintaining high standards of quality. In view of this problem, we have explored three distinct lines of research: (1) software development processes; (2) model-driven software development; and (3) software product lines.
The basic assumption in the first of these lines is that if development groups are able to construct a high quality process, then their products are more likely to be of high quality, and the group's productivity will increase.
In time, the software community realized that while disciplined processes are of fundamental importance, they impose a speed limit on the development process. This fact motivated me to look for other approaches to software production, and that is why we became involved in the aforementioned line 2: model-driven software development. The idea is to increase productivity by increasing the level of abstraction of the way in which solutions are expressed. In particular, we no longer focus on programming languages but on modeling languages instead. This greater degree of abstraction allows code to be automatically generated from the models. Additionally, this approach seeks to separate the abstract solution from the solution implemented on a particular technological platform, thus tackling the problem of the product becoming obsolete due to changes in technology.
Lastly, the field of software product lines aims to maximize software component reuse by profiting from the similarity of products in a particular domain. My work integrates all three topics on restricted domains to automate the production of code, helping development teams increase their productivity by over an order of magnitude.
Figure 1. Qualdev research lines