Software Architecture and Design

More than a decade of software engineering research suggests that a promising approach to addressing the challenges of developing large-scale software systems is to employ the principles of software architecture. Software architecture presents a set of high-level design views of a system, enabling developers to abstract away the unnecessary details and focus on the system’s building blocks (components), interactions (connectors), their structure (configurations), and key properties. We hypothesize that an architectural focus could also remedy many of the difficulties posed by the emerging computing domains (e.g., autonomic, pervasive, SOA, embedded and mobile systems). The research at SDALab has developed techniques for designing, assessing, and implementing a software system's architecture at different stages of software engineering. 

Active Research Projects

GuideArch – Guiding Software Architectural Decisions under Uncertainty (ICSE 2013)

A system’s early architectural decisions impact its properties (e.g., scalability, dependability), as well as stakeholder concerns (e.g., cost, time to delivery). Choices made early on are both difficult and costly to change, and thus it is paramount that the engineer gets them “right”. This leads to a paradox, as in early design, the engineer is often forced to make these decisions under uncertainty, i.e., not knowing the precise impact of those decisions on the various concerns. How could the engineer make the “right” choices in such circumstances? This is precisely the question we are tackling in this work. GuideArch is a framework aimed at systematic exploration of the architectural solution space under uncertainty. It provides techniques founded on fuzzy mathematics that help the engineer with making informed decisions.

Co-change Dispersion Analysis Based on Architecture (MSR 2015)


Well-designed software architecture employs the principle of separation of concern by allocating different functionalities and responsibilities to different architectural modules comprising the system. Prior research has showed the negative impact of co-changes (i.e., multiple changed files committed to a repository at the same time) on the system’s quality attributes, measured in terms of bugs.  However, no prior research has investigated the impact of co-changes that are dispersed among the system’s architectural modules against co-changes that are localized within one module. This research entails an empirical investigation of the differences between the two types of co-changes. The results show that the dispersion of co-changes among the system’s architectural modules has a significant impact on the system’s quality. The findings are interesting, as they allow for the construction of better bug predictors from change history, as well as the construction of predictors for detecting the architectural bad smells.

DIF – Deployment Improvement Framework (IEEE TSE 2012)

For any large, distributed system, many deployment architectures (i.e., mappings of software components onto hardware hosts) are possible. Determining the most effective deployment architecture is a very challenging task. DIF is a framework for improving system’s deployment architecture based on the users’ (desired) degree of satisfaction with a system. Given an application scenario, the system architect instantiates (configures) the framework by defining the appropriate system parameters and the QoS of interest. The framework is then populated with the actual data from a distributed application and users’ preferences for the QoS dimensions of each application service. Afterwards, one of the algorithms supplied by the framework is used to find an improved deployment architecture. Finally, the solution is effected by (re)deploying the software system. 

Prior Research Projects

Prism-MW – Architectural Middleware for Embedded and Mobile Platforms  (IEEE TSE 2005)

Prism-MW is a middleware targeted at applications in highly distributed, resource constrained, heterogeneous, and mobile settings. The key properties of Prism-MW are its native and flexible support for architectural abstractions (including architectural styles), efficiency, scalability, and extensibility.

XTEAM – eXtensible Tool-chain for Evaluation of Architectural Models (FASE 2007)

The eXtensible Tool-chain for Evaluation of Architectural Models (XTEAM) implements a model-driven engineering (MDE) approach to software architecture that combines extensible modeling languages based on architectural constructs with a model interpreter framework that enables rapid implementation of customized dynamic analyses at the architectural level. XTEAM consists of a suite of architecture description language (ADL) extensions and model transformation engines targeted specifically for highly distributed, resource-constrained, and mobile computing environments. XTEAM model transformations generate system simulations that provide a dynamic, scenario- and risk-driven view of the executing system.