ACM Transactions on Software Engineering and Methodology · 2007 · 98 citations · 24 references
ComputingComputer ScienceAlgorithmsDatabasesProgramming LanguagesApplication Programming InterfacesDatabase ManagementQuery ProcessingStructured Query LanguageType CheckingType SystemsDynamic Type CheckingQuery ExecutionSoundnessSoundness ProofsStatic Type CheckingTestingType Soundness
Many data-intensive applications dynamically construct queries in response to client requests and execute them. Java servlets, for example, can create strings that represent SQL queries and then send the queries, using JDBC, to a database server for execution. The servlet programmer enjoys static checking via Java's strong type system. However, the Java type system does little to check for possible errors in the dynamically generated SQL query strings. Thus, a type error in a generated selection query (e.g., comparing a string attribute with an integer) can result in an SQL runtime exception. Currently, such defects must be rooted out through careful testing, or (worse) might be found by customers at runtime. In this article, we present a sound , static program analysis technique to verify that dynamically generated query strings do not contain type errors. We describe our analysis technique and provide soundness results for our static analysis algorithm. We also describe the details of a prototype tool based on the algorithm and present several illustrative defects found in senior software-engineering student-team projects, online tutorial examples, and a real-world purchase order system written by one of the authors.
24
Precise interprocedural dataflow analysis via graph reachability
Thomas Reps, Susan Horwitz, Mooly Sagiv · 1995 · 1.2K citations
Program Analysis and Specialization for the C Programming Language
Lars Ole Andersen, Peter Lee · 2005 · 920 citations
A unified approach to global program optimization
Gary A. Kildall · 1973 · 901 citations