Archive for the 'Course Work' Category

MMath Thesis: Feature Model Mining

Abstract

Software systems have grown larger and more complex in recent years. Generative software development strives to automate software development from a systems family by generating implementations using domain-specific languages. In current practice, specifying domain-specific languages is a manual task requiring expert analysis of multiple information sources. Furthermore, the concepts and relations represented in a language are grown through its usage. Keeping the language consistent with its usage is a time-consuming process requiring manual comparison between the language instances and its language specification. Feature model mining addresses these issues by synthesizing a representative model bottom-up from a sample set of instances called configurations.

This thesis presents a mining algorithm that reverse-engineers a probabilistic feature model from a set of individual configurations. A configuration consists of a list of features that are defined as system properties that a stakeholder is interested in. Probabilistic expressions are retrieved from the sample configurations through the use of conjunctive and disjunctive association rule mining. These expressions are used to construct a probabilistic feature model.

Continue reading ‘MMath Thesis: Feature Model Mining’

Toronto Traffic Cameras using Google Maps

I was looking for traffic conditions prior to my drive to Toronto and found that the Ministry of Transportation uses Google Maps to display the location and images from the highway traffic cameras around Toronto. Very neat!

CodeLink: A Semantic Wiki for Code Documentation

Documentation maintainence is a difficult and costly process. Existing forms of software documentation exist independent from the code it describes. As a result, problems arise when source code evolves since there is no traceability between the documentation and code domains.

CodeLink, a semantic wiki designed for code documentation attempts to address this problem. CodeLink provides a platform for establishing traceability links between developer documentation and code concepts. Traceability links between documentation and code can be explicitly created by the user through annotations, or inferred through the use of natural language analysis. CodeLink employs an ontology as its knowledge model and a semantic wiki as its user interface. Annotations on traceability relations in the ontology serve to connect natural language phrases with formal ontology concepts. In this paper, the motivation, design and implementation of CodeLink are described. Particular focus is placed on the natural language processing (NLP) component of CodeLink. The process in which the NLP component infers traceability links from the natural language text in the semantic wiki is described in depth. Several methods of querying and retrieving information from the knowledge model are discussed, followed by a summary of related and future work.

Download [Download not found], course project for CS886: Natural Language Computing.

Retrieving Sequence Diagrams from Aspect-Oriented Systems

Aspect-oriented programming is built on the concept of separating concerns. While separation of concerns reduces textual scattering and tangling by encapsulating concerns within a localised module, the behaviour of an aspect-oriented program becomes scattered. Capturing the sequential behaviour of an aspect-oriented program is essential for the validation of the program’s run-time semantics.

SequenceRetriever, a tool for retrieving UML sequence diagrams during the execution of a program is presented. The SequenceRetriever tool is built on top of an extensible framework which facilitates the development of additional trace components and diagram types. An AspectJ trace component and an Eclipse TPTP trace component is implemented. Using the two trace components, sequence diagrams of several programs is presented. A comparison between the AspectJ and TPTP sequence diagrams reveal the ajc weaver implementation of several aspect-oriented constructs.

Download [Download not found], course project for CS842: Aspect-Oriented Programming.