People/Web Search Calendar Emergency Info A-Z Index UVA Email University of Virginia

Computer Science Colloquia

Friday, February 25, 2011
Daniel Williams

Host: John Knight; Jack Davidson; Mary Lou Soffa; David Evans; Erik Altman; Bill Scherer

Olsson 226D, 01:30:00

Persistent Storage for Program Metadata

Modern software development environments are becoming increasingly complex and difficult to manage. Typical environments 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 a 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 the toolchain 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 very high-level programming environments offer robust built-in run-time systems to assist the programmer with features such as security models and run-time introspection. For programs created in language without such features, Software Dynamic Translation (SDT) systems have been introduced to allow these features to be applied to arbitrary programs. However, because these tools operate at runtime, lengthy analysis phases can negatively effect performance. This work shows Metaman in action to improve SDT systems in the areas of performance, security, and program understanding without needed to do costly analysis at runtime. These improvements show the benefits of ubiquitous availability of metadata for SDT system as well as other tools in the software development toolchain.