I develop practical solutions to help software architects and software engineers maintain intellectual control over the runtime architecture of their systems. To accomplish that, I use techniques in software architectures, type systems and program analysis techniques.

My research so far has included: generating code from an architectural model, synchronizing between conceptual and implementation-level architectures, evaluating languages and annotations to specify architectural intent directly in code, designing static analyses for the architectural extraction of a built runtime architecture from object-oriented implementations, checking conformance of an extracted built architecture to a desired target architecture, reasoning about quality attributes at the architectural level (particularly, security), and providing developers with useful diagrams of the runtime structure for code modification tasks.

The following research threads are listed from most to least recent. Also please refer to  my publications and my software page.

Interactive Refinement of Hierarchical Object Graphs
(with Ebrahim Khalaj)

Synopsis

Publications

Web-Based Interface for Code Exploration and Security Analysis
(with Radu Vanciu, Ahmad Moghimi)

Synopsis

Publications

Impact Analysis
(with Yibin Wang, Ebrahim Khalaj)

Synopsis

Publications

Developer Tools for Code Exploration and Program Comprehension
(with
Andrew Giang)

Synopsis

Publications

Measuring Properties of Human-Guided Heap Abstractions
(with
Sumukhi Chandrashekar, Radu Vanciu, and Andrew Giang)

Synopsis

Publications

Comparative Evaluation of Approaches that Find Security Vulnerabilities
(with
Ebrahim Khalaj, Radu Vanciu)

Synopsis

Publications

Scoria: Approach to Support Architectural Risk Analysis and Find Architectural Flaws
(with
Radu Vanciu)

Synopsis

Publications

Empirical Evaluation of Object Graphs with Ownership Domains
(with
Radu Vanciu)

Percentage of shared, lent, unique, public domain, and other annotations.


Number of objects at each level of the OOG, after abstraction by types.

Synopsis

Publications

Usefulness of Ownership Object Graphs (OOGs) for Code Modification Tasks
(with Nariman Ammar)

Synopsis

Average time spent in the three tasks.
Average code explored in the three tasks.

Publications

Extracting Dataflow Communication from Object-Oriented Code
(with Radu Vanciu)

Synopsis

Publications

Interactive Refinement of Hierarchical Object Graphs

Synopsis

Publications

SECORIA: analyzing security architectures

Synopsis

Publications

Static Conformance Checking of Runtime Architectural Structure

Synopsis

 

* Scholia stands for static conformance checking of object-based structural views of architecture. According to Wikipedia, scholia are annotations that are inserted on the margin of an ancient manuscript. The metaphor is that this research is about supporting existing legacy, i.e., ancient, object-oriented systems, and that the approach uses annotations that other development tools can ignore.

Publications

Static Extraction of Sound Hierarchical Object Graphs

Global flat object graph for Aphyds
(an 8,000-line Java system) extracted statically using Womble (by Jackson and Waingold, IEEE TSE, 2001).

Global hierarchical object graph for the same Aphyds system extracted statically using our approach. Box nesting indicates containment.

Synopsis

Publications

Reasoning about Quality Attributes at the Architectural-Level

Synopsis

Publications

Empirical Evaluation of Ownership Types on Existing Object-Oriented Code

"Papers have been written enough, let us see systems!"
-- Reinhard Wilhelm

Synopsis

Publications

Empirical Evaluation of Language-Based Solution for Specifying Architecture in Code and Enforcing Communication Integrity

Synopsis

Publications

Structural Comparison of Hierarchical Architectural Views

"Never go to sea with two chronometers; take one or three"
-- Proverb

Synopsis

Publications

Ensuring Conformance by Code Generation: Language-Based Solutions

Synopsis

Publications

Ensuring Conformance by Code Generation: Library-Based Solutions

Synopsis

Publications