Using Types to Enforce Architectural Design
|Author:||Jonathan Aldrich University of Washington|
|Date:||February 20, 2003|
The architectural design of a software system can support analysis of high-level properties, and provide benefits for many software evolution tasks. However, existing tools decouple the architecture of a program from its implementation, allowing inconsistencies to accumulate as the system evolves. Because of the potential for inconsistency, engineers evolving a program cannot trust the architecture to accurately describe the properties or structure of the implementation.
This talk presents a new approach: integrating architectural descriptions into an implementation language, and using a type system to ensure that the architecture is consistent with the code. The approach is embodied in the ArchJava language, which extends Java with features that declare the software architecture and data sharing within a system. ArchJava's type system enforces architectural conformance, the property that implementation components communicate only in the ways specified by the architecture. ArchJava is flexible enough to describe architectures that may change at run time, and it supports many of the same coding styles and idioms that programmers use in Java. Several case studies applying ArchJava to existing programs provide preliminary evidence that ArchJava is practical and can aid software evolution tasks.
Jonathan is a prospective Ph.D. candidate from the Computer Science Department of the University of Washington (June 2003). He received his M.S. from the University of Washington, and his B.S. in Engineering and Applied Science (Computer Science) from California Institute of Technology. His research interests include programming languages, software engineering, compilers, and parallel and distributed systems. For more information, visit his home page at: http://www.cs.washington.edu/homes/jonal/