Software Architecture
Resource Sites

Bell Labs
STARS - Software Architecture Technology Guide
USC - Center for Software Engineering
Computer Science Laboratory at SRI
LASER - UMass Amherst
CS at Carnegie Mellon University
SEI at Carnegie Mellon University
Open Implementation at Xerox
Aspect-Oriented Programming at Xerox
Inter-Language Unification at Xerox
Systems Generator at UTexas
SERL at UColorado
Patterns at UIUC
Software Design Network
SA at Honeywell
SA at Teknowledge
SA at UC Irvine
SA at GaTech
SA at Oregon Graduate Institute
Rapide at Stanford
TAFIM at DISA
Reuse Contracts
ARchitecture and Composition Software
World-Wide Institute of Software Architects

World-Wide Institute of Software Architects

The Institute of Software Architects is a nonprofit membership organization with a mission to accelerate the establishment of the profession of software architecture and provide information and services to software architects and their clients.

SA at Bell Labs

This site contains Dewayne Perry's collection of SA material. It includes links to his papers, sites, projects, and individuals.

ARchitecture and Composition Software Department of Computer Science and Business Administration at the University of Karlskrona/Ronneby

The ARCS research group is formed by researchers from the University of Karlskrona/Ronneby and the University of Kalmar. Within ARCS we study the architecture of software systems and the composition of software components in such systems, primarily from the perspective of the object-oriented paradigm. This indicates that our approach to software architecture is influenced by our experiences in object-oriented frameworks and class libraries, design patterns and advanced object-oriented computation models.

The research perspective taken by the ARCS group is based on three observations:

Reuse Contracts

The reuse contract methodology is a novel methodology for managing reuse and evolution in software development. The methodology addresses the incremental/iterative development of reusable software components and models, and how to build highly customized applications based on these components and models. Much of the inspiration for developing reuse contracts has been drawn from the practical experience in developing object-oriented frameworks (see the Communications of the ACM paper October 1997). It is a practical method. It builds on existing object-oriented analysis and design methods (in casu UML). Yet, it distinguishes itself from all other methodologies by its formal foundation and support for evolution: Reused components and the way they are reused are formally described in a contract (hence the name). This forms the basis of tools for managing change and for checking the consistency between models and code. While being formal, the notation is simple enough for every day use (it can be explained in an hour).

Rapide at Stanford
The Rapide Language effort focuses on developing a new technology for building large-scale, distributed multi-language systems. This technology is based upon a new generation of computer languages, called Executable Architecture Definition Languages (EADLs), and an innovative toolset supporting the use of EADLs in evolutionary development and rigorous analysis of large-scale systems.

Rapide is designed to support component-based development of large, multi-language systems by utilizing architecture definitions as the development framework. Rapide adopts a new event-based execution model of distributed, time-sensitive systems -- the "timed poset model." Posets provide the most detailed formal basis to date for constructing early life cycle prototyping tools, and later life cycle tools for correctness and performance analysis of distributed time-sensitive systems.

Software Architecture Technology Guide
The purpose of this node is to provide DoD software developers with an overview of software architecture technology and to serve as a "virtual road map" to additional web resources for understanding and applying architectural techniques to domain-specific reuse. The reader is guided through software architecture concepts, representation methods, architecture-focused software efforts, recommended readings, and additional sources (including a more than adequate treatment of architecture description languages) for software architecture technology information.

This effort is sponsored by the Department of Defense OASD(C3I) Information Technology Directorate, and contracted through the Air Force Electronic Systems Center (ESC), as part of the Software Technology for Adaptable, Reliable Systems (STARS) program.

Center for Software Engineering

Dr. Barry Boehm founded the center at University of Southern California in 1993. The purpose is to provide an environment for research and teaching in the areas of large-scale software design and development processes, generic and domain specific software architectures, software engineering tools and environments, cooperative system design and the economics of software engineering.

Their work in software architecture focuses on:

  1. Representing software architectures
  2. Fitting software architectures into the software process
  3. Architecting for a product line or a specific domain
  4. Using infrastructure technologies (tool or set of tools to assist the architect in managing the multiple view of the architecture)
Software Architecture Projects at SRI

There are two major projects in the area of software architecture: one is focused the development of fundamental enabling technology and the other on applying it in the development of a useful architectural standard. Both projects are multiyear and involve collaboration with researchers at Stanford University. Those interested in formal methods should also consider SRI Cambridge Computer Science Research Centre .

Laboratory for Advanced Software Engineering Research

The research being done is LASER falls into the following categories: process, object management, analysis of software systems, and software architecture. This works fits under the interoperability problem. They are looking at stratgies and architectures that would allow tools developed in different languages to operate on shared data on by passing control among themselves.

Computer Science at Carnegie Mellon University

Carnegie Mellon University's ABLE project is concerned with exploring the formal basis for Software Architecture, developing the concept of Architectural Style, and building tools that practicing software architects might find useful. Our tool development effort has focused on the Aesop system, a toolkit for rapidly producing software architecture design and analysis environments that are customized to support specific architectural styles. The formal work revolves around the Wright language.

The composable systems group focuses on three research areas: software architecture, formal methods, and tractable software analysis. We develop new models, theories, methods, languages, and tools for classifying, specifying, analyzing, and designing software systems beyond the component level. This support could lead to substantial reduction in maintenance costs, improvement in software resuse, and increase in quality of software.

For design practice to make the transition from innovative to routine, design knowledge must be captured, organized, and disseminated. Handbooks are a popular means of doing this. One example, Perry's Chemical Engineers' Handbook, is a tome several inches thick, filled with tables, diagrams, and schematics that cover topics from the basics of the metric system to the intricate innards of heat pumps. In the bulk of the text, noted practioners give useful, specific advice about the standard solutions to common design tasks. The Vitruvius Project at CMU is taking steps toward the goal of establishing just such a codificaiton of practice.

Software Engineering Institute

The SEI is a federally funded research and development center operated since 1984 by Carnegie Mellon University. Through the sponsorship of the Defense Department's Advanced Research Projects Agency the objective is to provide leadership in software engineering and the transition of new technology into software engineering practice. There are a number of resources available at this site.

Aspect-Oriented Programming at Xerox

Because modules correspond so directly to blocks of executable code, and the different aspects of concern cross-cut the executable code, the modules themselves end up being a tangled mess of aspects. We believe this TANGLING-OF-ASPECTS phenomenon is at the heart of much of the complexity in existing software systems. Further, we believe that adjusting the scale of modules (or the level of programming languages) won't help without addressing this root cause of the tangling. Instead what is needed is to be able to work with abstractions that correspond more directly to aspects of concern than to blocks of executable code.

We are working on a new programming paradigm, Aspect-Oriented Programming (AOP), that does just this. AOP works by allowing programmers to first express each of a system's aspects of concern in a separate and natural form, and then automatically combine those separate descriptions into a final executable form using a tool called an Aspect Weaver.

Inter-Language Unification at Xerox

The Inter-Language Unification system (ILU) is a multi-language object interface system. The object interfaces provided by ILU hide implementation distinctions between different languages, between different address spaces, and between operating system types. ILU can be used to build multi-lingual object-oriented libraries ("class libraries") with well-specified language-independent interfaces. It can also be used to implement distributed systems. It can also be used to define and document interfaces between the modules of non-distributed programs. ILU interfaces can be specified in either the OMG's CORBA Interface Definition Language (OMG IDL), or ILU's Interface Specification Language (ISL).

ILU 2.0 supports the programming languages C++, ANSI C, and Python, and will support Java, and Common Lisp. The 1.8 release also contains support for Modula-3, and contributed support for Modula-3 in ILU 2.0 is available. ILU has been installed on most flavors of UNIX (SunOS, Solaris, HP-UX, AIX, OSF, IRIX, FreeBSD, Linux, LynxOS, SCO Unix, etc.) and MS-Windows (3.1, 95, NT). It supports both threaded (POSIX, Solaris, NT, Franz ACL, PPCR, Modula-3) and event-loop (Xt, Tk, XView) operation. One of the implementation goals is to maximize compatibility with existing open standards. As a result, ILU provides support for use of the OMG CORBA IDL interface description language, and can be thought of as a CORBA ORB system (though with omissions from and extensions to the CORBA spec). ILU also includes a self-contained implementation of ONC RPC, and it is possible to describe and use existing RPC services as ILU objects. ILU also includes a self-contained implementation of the World Wide Web's Hypertext Transfer Protocol (HTTP), and can thus be used to implement object-oriented web browsers and servers. ILU is available free from 'ftp://ftp.parc.xerox.com/pub/ilu/ilu.html'.

Xerox Open Implementation

Open implementation is a new design principle under consideration by a number of researchers and practitioners. Workers at Xerox Parc are at the forefront of exploring this design notion and the implication on a system's architecture.

Simply put, the focus of work on open implementation (OI) is to develop techniques whereby a module can be more reusable and tailorable by exposing certain crucial aspects of its implementation (as well as its normal interface) to clients. This can allow the clients to adjust the module to better suit their needs. Recent work in open implementation has produced an initial OI analysis and design methodology that helps designers work out what aspects of its implementation a module should expose and how.

Software Systems Generator Research Group

Software system generators are tools for assembling complex software from interchangeable, reusable components. We have developed GenVoca, a domain-independent model of software construction that defines systems as algebraic equations, where terms are components. GenVoca has been successfully applied to many domains including database management systems, avionics, and data structures. Our results have demonstrated GenVoca generators can substantially improve productivity and application run-time performance.

Software Engineering Research Laboratory

The Software Engineering Research Laboratory (SERL) is part of the Computer Science Department at the University of Colorado. The focus of our research is in global software engineering, and consequently in each of our research topics our work focuses on the wide-area software development and deployment context.

Patterns Home Page

This site organizes material from a variety of sites regarding patterns and pattern languages (PS) (see also an introduction to design patterns). Patterns can be considered a micro-architectural view of a system. Most work in patterns is from a component or design reuse perspective. More on patterns can be found at the Portland Pattern Repository.

Software Design Network

The primary mission of the SDN is to promote and disseminate information concerning research in software architectures. The SDN is a worldwide, virtual enterprise of faculty and students that are interested in research in software architectures. The SDN project is partially funded by the NASA IVandV Facility in Fairmont, West Virginia. It started as a virtual enterprise between several departments and research centers at WVU in 1994 in conjunction with the NASA Earth Observing System (EOS) Project and National Library of Medicine.

DSSA at Honeywell

Engineers often draw annotated diagrams of components and the relationships between them to describe the high-level design or architecture of a system. We seek to make this intuitive notion of an architecture more rigorous by defining precise meanings and notations for such specifications. This means using machine-processable languages to capture architecture specifications; tools to analyze architectures and estimate system properties; and tools to automate the production and testing of software from an architecture specification. We have applied these principles to develop architecture specification languages for real-time systems, with special attention paid to those that include guidance, navigation and control functions; and to specify example architectures that can be easily adapted to meet the requirements of families of related products.

Teknowledge's DSSA & ProtoTech Projects

Teknowledge's Domain-Specific Software Architectures (DSSA) Project home page. This also provides information about our ProtoTech (Prototyping Technologies) project. Both projects are funded by ARPA/SISTO -- DSSA through ARDEC (Army) and ProtoTech through ONR (Navy).

Software Architecture Research at U. C. Irvine

Software Architecture research is directed at reducing the cost of application development by focusing attention on high level design issues and increasing reuse.

The C2 Style
A component- and message-based architectural style for component reuse and flexible system composition.
Dynamic Architecture
Techniques and tools for modifying software architectures during execution.
The Argo Design Environment
A graphical design environment for constructing, analyzing, and generating C2 architectures.
Georgia Tech Software Architecture Reading Group

GT-SARG is a reading group set up in the College of Computing for people interested in discussing issues related to software architecture. GT-SARG began as weekly meetings in the Winter Quarter of 1995 and will continue as long as interest remains.

The reading group is organized by Gregory Abowd, a faculty member in the College of Computing whose research interests cover models and evaluation of software architectures.

Software Design for Reliability and Reuse at Oregon Graduate Institute

The goal of the SDRR project was to create a technology for generation of software components. Phase I of the Blackberry project was successfully completed on January 31, 1995. The created technology was tested and compared to a state-of-the-art template-based software technology. SDRR technology demonstrated 3 times increase in programmers' productivity. There's more to SDRR than just productivity.

Technical Architecture Framework for Information Management

The TAFIM is intended to guide the development of architectures that satisfy requirements across missions, functional areas, and functional activities. The TAFIM is mandatory for use in DOD. The specific technical architectures for missions and functions will be developed using standard architecture guidance and development methodologies provided by the TAFIM.