[an error occurred while processing this directive]

Skip to Content

Computer Science Colloquia

May 15, 2012
Daniel Williams
Advisor: Jack Davidson
Attending Faculty: John Knight, Chair; Mary Lou Soffa, David Evans, Erik Altman, and Bill Scherer

1:00 PM, Rice Hall, Rm. 242

Ph.D. Dissertation Presentation
Persistent Storage for Program Metadata


Building a modern software system has increasingly become a complex and difficult to manage task. Typical software development systems involve dozens of tools to assist the programmer in building secure and robust programs. Many of these tools perform detailed analysis, collecting large amounts of program metadata to better understand the program and improve it. Unfortunately this metadata is often discarded immediately after the tool is finished running. By saving, organizing and making such metadata available across the software development toolchain, software developers can build new tools and improve existing tools with ease. To achieve this goal, this work presents Metaman, a system for metadata storage and retrieval. Metaman allows any tool in thetoolchain to submit and query metadata about the program, avoiding duplication of analysis and saving data that was previously discarded.

An important class of tools with specific metadata needs is the set of run-time tools. Many high-level programing environments offer robust built-in run-time systems to assist the programmer with features such as security models and run-time introspection. For applications created using languages without such features, Software Dynamic Translation (SDT) systems have been introduced to allow these features to be applied to arbitrary programs. However, because these SDT-based tools operate at runtime, lengthy analysis phases can negatively affect application performance. To validate the value and utility of maintaining program metadata across the software development toolchain, the research demonstrates how ubiquitous program metadata can be used to provide the ability for SDT systems to improve the performance, security, and program understanding without the need to do costly analysis at runtime. These improvements show the benefits of ubiquitous availability of metadata for SDT systems as well as other tools in the development toolchain.