Research highlights

Architectural pattern
I have designed and developed a novel environment for software architecture recovery based on approximate graph pattern matching. The proposed environment provides a user-assisted technique for recovering and evaluating the architecture of a software system in the form of cohesive modules (or subsystems) that comply with a user-defined module-interconnection pattern. The sizes and types of the modules/subsystems and their interactions, as a high-level hypothesis, are defined by the user through a language that I have developed and is called Architecture Query Language (AQL).
The matching process then searches through the software system (again represented as a graph of system entities and relationships) to identify a sub-optimal match between the module-interconnection pattern in the AQL query and the graph of the system.
The approach is based on techniques from the areas of data mining, graph pattern matching, clustering, and architecture description languages.
Architectural clusters
In an attempt to extend the proposed architecture recovery environment mentioned above, the following techniques have been added to the environment: i) an incremental optimization clustering technique that provides a relaxed version of the proposed pattern-matching approach, where there are no constraints on the interaction among the recovered components; and
ii) a partitioning clustering technique that starts from an initial partition of singleton clusters and rest-of-system, and performs file relocation between the clusters (subsystems), where the average closeness of a file to the original cluster and to the other clusters is the criteria for file relocation, until the clusters are stable.
Architectural views
For almost one year I worked on different aspects of architectural views of the software systems. In this research I focused on a group of views, originally proposed by Zachman, and I proposed a new organization scheme. In this research the set of views by Zachman was augmented to cover a broader set of software systems by incorporating the process view for different stakeholders' perspectives. The augmented set of views were then applied on the design of a middle-size event-based system that I implemented using the Statemate CASE tool to control the different concurrent stations of a typical restaurant system.
Architectural evaluation
For almost one year I also involved in the area of architectural evaluation of software systems. I studied an architectural evaluation technique, namely SAAM, which is based on task-scenarios, and applied it on a number of systems in the domain of hardware/software co-design.
I contributed in this area by proposing a view-based architectural evaluation technique to evaluate the recovered design of a software system based on three views ``control passing view'', ``data exchange view'', and ``data sharing view''.
Also, I proposed an architectural evaluation metric to assess the modularity quality of a system and its recovered architecture.
Back to Home Page