Software systems increasingly depend on external libraries which represent the most common reuse form and the reuse benefits depend greatly on the ability of client application developers to easily and correctly use the APIs. Developers need to reuse functionality provided by these libraries through their Application Programming Interfaces (APIs) hence, they have to cope with complexity of existing APIs. APIs are not always self-explanatory, we need API documentation to specify the way in which client programs can interact with the library independently of implementation details. However, APIs documentations are very detailed, with verbose text and software developers might spend considerable time and effort to retrieve the needed information when it exists. Our goal is to combine artificial intelligence and program analysis techniques to provide software developers with needed information on API usage patterns and Constraints, to easily and correctly use the APIs.
- Software Quality and Maintenance
- API Usability
- Mining Software Repositories
- Search-based Software Engineering