When database schemas require change, it is typical to predict the effects of the change, first to gauge
if the change is worth the expense, and second, to determine what must be reconciled once the change
has taken place. Current techniques to predict the effects of schema changes upon applications that use
the database can be expensive and error-prone, making the change process expensive and difficult. Our
thesis is that an automated approach for predicting these effects, known as an impact analysis, can create
a more informed schema change process, allowing stakeholders to obtain beneficial information, at lower
costs than currently used industrial practice. This is an interesting research problem because modern
data-access practices make it difficult to create an automated analysis that can identify the dependencies
between applications and the database schema. In this dissertation we describe a novel analysis that
overcomes these difficulties.
We present a novel analysis for extracting potential database queries from a program, called query
analysis. This query analysis builds upon related work, satisfying the additional requirements that we
identify for impact analysis.
The impacts of a schema change can be predicted by analysing the results of query analysis, using
a process we call impact calculation. We describe impact calculation in detail, and show how it can be
practically and efficiently implemented.
Due to the level of accuracy required by our query analysis, the analysis can become expensive,
so we describe existing and novel approaches for maintaining an efficient and computational tractable
analysis.
We describe a practical and efficient prototype implementation of our schema change impact analysis,
called SUITE. We describe how SUITE was used to evaluate our thesis, using a historical case
study of a large commercial software project. The results of this case study show that our impact analysis
is feasible for large commercial software applications, and likely to be useful in real-world software
development