Software Architecture

Successful design of complex software systems requires the ability to describe, create, and evaluate systems at an architectural level of abstraction. Software architecture allows designers to reason about quality attributes and their tradeoffs, to navigate the design space, and develop correct designs. The ABLE group has conducted research in software architecture languages and analysis since the mid 1990s. This research comprises foundational work on software architecture languages, tools, and analyses to support architectural design, and the use of architecture in modern and and upcoming systems. Projects related to fundamental software architecture research cover the following topics:
  • Architecture Description: Creating languages, tools, and analysis for software architecture design.
  • End-user Architecture: Using architectural concepts and tools to help end-users develop compositions of components.
  • Architecture Evolution: Developing tools and techniques to assist architects in planning architecture evolution, approaches that take advantage of common evolution patterns to help architects reason about architecture evolution.

Architeture Description

Project Description

Acme is a simple, generic software architecture description language (ADL) that can be used as a common interchange format for architecture design tools and/or as a foundation for developing new architectural design and analysis tools. The Acme language and toolkit provide three fundamental capabilities:
  • Architecture Description. Acme provides a straightforward set of language constructs for describing architectural structure, architectural types and styles, and annotated properties of the architectural elements.
  • Extensible foundation for new architecture design and analysis tools. Many, if not most, architectural design and analysis tools require a representation for describing, storing, and manipulating architectural designs. Acme can reduce the cost and difficulty of building architectural tools by providing a language and toolkit to use as a tool-building foundation. Acme provides a solid, extensible foundation and infrastructure that allows tool builders to avoid needlessly rebuilding standard tooling infrastructure. Further, Acme's origin as a generic interchange language allows tools developed using Acme as their native architectural representation to be compatible with a broad variety of existing architecture description languages and toolsets with little or no additional developer effort.
  • Architectural interchange. By providing a generic interchange format for architectural designs, Acme allows architectural tool developers to integrate their tools with other complementary tools. Likewise, architects using Acme-compliant tools have a broad array of analysis and design tools available at their disposal than architects locked into a single ADL.

Project Home Page:Acme is available for researchers and developers at


Our Position:Architectural style can be used to provide effective tailoring of architectural tools for domain-specific notations and analyses.

Sample Research Questions

  • How can styles be mixed to provide tailored support for specific domains and multiple analyses?
  • How can one be assured that combining styles will enable valid architectural instantiations?
  • How can tools be developed that provide effective, scalable, and extensible architectural design environments, that seamlessly fit into a company's software development lifecycle?
  • How can architectural analysis inform designers about privacy- and security related design concerns?
  • How can architectural notations be used to specify and analyze dynamic software architectures?
  • Waht is an effective taxonomy of architecture styles to support reuse and refinement?
  • How can we formalize architectural behavior to enable deeper semantic analysis of architecture designs?


David Garlan, Bradley Schmerl

Landmark Papers

Related Papers

End-User Architecture

Project Description

Within an increasing number of domains an important emerging need is the ability for technically naïve users to compose computational elements into novel configurations. Examples include astronomers who create new analysis pipelines to process telescopic data, intelligence analysts who must process diverse sources of unstructured text to discover socio-technical trends, and medical researchers who have to process brain image data in new ways to understand disease pathways. Creating such compositions today typically requires low-level technical expertise,limiting their use. End-user Architecture exploits the similartiy between such compositional activities and those of software architects to help with end-user composition, analysis, and reasoning.


Our Position: We can draw on the rich heritage of software architecture languages, methods, and tools to support end users in composing rich domain-specific computational systems.

Sample questions:

  • Can we use architectural styles to capture domain-specific computations?
  • How can we leverage architectural support to generate end-user composition tools that are robust, correct, and capture domain concepts?
  • What features of high-quality end-user composition environments can be provided in a generic, reusable way for different domains?


David Garlan, Bradley Schmerl, Vishal Dwivedi