| This dissertation thesis explores issues related to the following three aspects of software technology: system complexity and software architectures as tools to alleviate complexity; domain architectures as frameworks for construction of large scale, flexible, enterprise-wide software systems; and architectural models and representation techniques as a basis for "good" design.;The thesis presents an architectural taxonomy to help categorize and better understand architectural efforts. It provides a detailed characterization of domain architectures, including the aspects of their engineering and scope of application. To support the definition and use of domain architectures we have developed a method for domain architecture engineering and representation: GARM-ASPECT. GARM, the Generic Architecture Reference Model underlying the method, is a system of modeling abstractions, relations and recommendations for building representations of software architectures. ASPECT is an Architecture Specification Technique based on GARM. It provides a normalized vocabulary for representing the skeleton of an architecture---the structural view---and establishes a framework for capturing architectural constraints. It supports extensions of the structural specifications with auxiliary information, such as behavior and quality specifications, information models, and design rationale. Thus, ASPECT provides facilities for establishing relationships among different representations and gluing them together in an overall architectural description. This design allows flexibility and easy adaptation of the methodology to different domains and families of systems. The practical applicability of GARM-ASPECT method has been demonstrated in an industrial environment through a case study and the development of an ASPECT editor.;The approach to architecture engineering and representation, presented in this dissertation, is pragmatic and oriented towards software practitioners. GARM-ASPECT, as well as the taxonomy of architectures, are of use to architects, system planners and system engineers. Beyond these, the thesis also creates a more solid basis for exploring the soundness of architectural abstractions, the practical value of representation approaches, and the changes required to the development process in order to achieve the benefits from an architecture-driven software technology. |