Master of Science, The Ohio State University, 2012, Computer Science and Engineering
Formal specifications are widely recognized as beneficial, and in some niches, formal methods have been gaining ground. Unfortunately, many legacy systems have no formal specification -- this is the ``legacy code problem''. Many such systems could benefit from additional specifications -- such specifications can serve as useful documentation, acting as educational tools for new users and aides to maintaining system integrity as the system is modified over its lifecycle. Even though training for and acceptance of formal methods is increasing, the sheer amount of unspecified legacy code is daunting. Clearly any assistance, automated or semi-automated, would be of considerable value.
Along a different route, automated testing and related techniques such as test-driven development are now recognized as a good practice in industry, and many systems have robust test suites for exercising a majority of their code base. Dynamic analysis systems such as Daikon and DIDUCE can take advantage of such test suites to infer specifications for systems under analysis, but they show sensitivity to the values of test inputs, possibly inferring incorrect invariants based on those values.
One possible mitigation approach is to allow hand-written specifications, thereby overriding incorrect or extraneous inference, but the above systems do not support such a technique. The work reported in this thesis is based on the idea that, by starting with a body of pre-specified core methods (rather than relying on statistical confidence metrics as with systems such as Daikon), an automated system may be able to arrive at better specifications. How can we build upon such a foundation?
Interestingly, similar questions have been raised in type research. Rubydust approaches the issue of inferring static types for the dynamically typed Ruby language. Utilizing observations recorded during test runs, it employs a constraint-based dynamic analysis approach that builds upon given specifications of core R (open full item for complete abstract)
Committee: Neelam Soundarajan PhD (Advisor); Bruce Weide PhD (Committee Member)
Subjects: Computer Science