Augmenting static program analysis and design verification with pattern recognition - Sun, Ding (2014)
Static analysis examines program code to reason over all possible behaviours that might arise at run time. Such reasoning with full soundness and precision is in general not possible, as there may be arbitrarily many different user inputs or states. To enable the reasoning, static analysis usually uses an abstraction model to abstract away some information to examine program code. Static program analysis plays a very important role in software testing, software verification, program slicing, error detection, and code performance optimization. However, the use of it in these areas still faces many problems due to the difficulty in finding a suitable abstraction model to base on. Design patterns have been used to improve the reuse in software development. Some design patterns have also been used in the verification of design in general. However, there are no specific patterns proposed for the verification of designs of database applications that constitute a large proportion of software systems. The aim of this thesis is to address the above-mentioned problems. Based on abstraction models established through empirical studies, this thesis proposes the four approaches augmented with pattern recognition to improve the state-of-the-art regarding accuracy and efficiency.