Darren C. Atkinson, “Assisting program analyses with library synopses,” in Proceedings of the 6th IASTED International Conference on Software Engineering and Applications, pp. 490–495, November 2002.
Understanding a program based on its source code is tedious and error-prone. Unfortunately, such a task is often necessary due to lack of adequate documentation. To assist software engineers in this task, automated analysis tools are often used. Such tools analyze the program source, computing information, and present that information to the tool user in a useful way. To compute correct information, the entire program may need to be analyzed; however, most programs written today use libraries extensively, for which source code may not be available. Therefore, tools must somehow model the libraries to summarize their effects. However, such models are hard to construct by hand and are often tool-specific, limiting reuse.
We present a general, automatable technique for generating models of libraries given their source. The resulting models are themselves pieces of source code called synopses. Synopses are more accurate than hand-generated models and are reusable across tools. Furthermore, the use of synopses can increase precision of subsequent analyses since they allow functions to be expanded inline, thereby gaining one level of precision with respect to calling context. Finally, synopses can be extended to entire software layers, improving the efficiency of analysis tools.[Full text in PDF]