Architecture Based Development with DYNACOMM: Incorporating Dynamic Reconfiguration and Hierarchical Design into CommUnity
Architecture Description Languages (ADLs) were developed to support the abstract level of software structuring that is the subject matter of software architecture. Community is an ADL built on co-ordination principles and a categorical framework to support the composition of specifications of components to form the system's specification. However, an important shortcoming of Community is the lack of integrated support for specifying the system's architectural changes in both the set of components and the connections between them. This paper presents DynaComm, an extension of Community to support hierarchical design and dynamic reconfiguration of component based systems. The architectural design principles supported by the DynaComm language are illustrated through the design of a fault-tolerant, dynamic client-server system. A state anchored semantics of DynaComm is given by reducing a DynaComm design to a Community design, i.e., a configuration of components, cables and superposition morphisms, and then taking the colimit of the Community diagram. The careful use of extension, refinement and superposition morphisms guarantees that this is always possible.