An Object-Oriented Semantic Model for .NET
Degree GrantorUniversity of Canterbury
Software engineering is a complex activity requiring software engineers to understand an intricate structure of components, with many different inter-relationships. In object-oriented software, these components include classes, interfaces, fields, methods and other entities. Relationships include inheritance, implementation, containment, invocation and many more. Static analysis of source code can be used by tools to convey this information to software developers, to increase their understanding of the software they are designing. In this research we present the design of a semantic model that exposes the semantic structure (particularly components and their relationships) of software that is written in a language that compiles to the .NET Common Language Runtime (CLR). The Microsoft .NET Framework is a significant change in programming technology because it allows source code written in different languages to interoperate within the same execution environment (the CLR). By modelling the intermediate language that .NET languages compile to, our model is independent of any specific programming language. We have designed and implemented a semantic model that explicitly exposes the semantic concepts in the CLR and also show its usefulness by presenting an application that would not be possible without the model: calculating the CodeRank metric.