Current Research in Mining Software Area is interesting. Here are some of my thoughts after some research in this area.
Open-source projects, especially those popular frameworks, provide a new approach to speed up software development, and support code reuse by design patterns. Nowadays, a lot of frameworks exist for various kinds of purposes. Those frameworks, while flexible, are difficult to learn and use. To make the best use of the framework, developers not only have to understand how framework works, but also have to remember a lot of classes and methods to use.
To facilitate the development process, numerous research have been conducted, such as recommendation system, automatic API documentation, program visualization, etc. Those aim to improve the tool or documentations.
The information that can be used for such kind of research include:
1. High-level description of the architecture (e.g. design patterns and class diagram)
2. Code snippets (How client code is using a framework)
3. Directives stating how to use framework classes or methods (documentation)
Related research in this area also include design pattern recovery, mining meta-patterns which abstract design patterns, fetching micro-patterns, etc.
1. How to find the framework I need.
2. How to reduce the learning curves of frameworks.
3. How to help the programming process by recommending related code snippet.
At the same time, to understand the exist client project (which use frameworks or not), is also not a easy job, since large application projects are hard to understand the whole process.
<pre><code> String foo = "bar"; </code></pre>