Software evolves toward complexity rather than simplicity. Understanding how to handle software complexity is of increasing importance as we move toward ultra-large scale systems. Yet the current state of software engineering is unprepared to tackle such complexities. The introduction of new tools as well as the improvement of existing ones, I believe, are means to help manage such complexities.
With that in mind, there are three main issues in software engineering that I am interested in researching: (1) the creation of tools that will facilitate the understanding of the workings of software, (2) the usage of such tools as means for educating, and (3) the quantitative evaluation of the efficacy of such tools and the software that they produce. Each topic is important and the combination of the three would foster a better understanding of the engineering of software.
I am interested in documenting the results of my research in the form of a pattern language. This pattern language would encapsulate the best practices in the creation, usage and evaluation of such tools. A pattern language works because it provides a common vocabulary and serves as an accessible reference.