Abstract
This paper discusses the need for and the use of a software architecture as an important means in the development of complex systems. We start out with a brief analysis of the term "complex" with regard to computerized systems. On this basis, we introduce software architectures as a means to cope with the software design aspect of system complexity. We then identify the architectural concepts that are necessary to capture a comprehensive, high level system design and discuss their characterizing properties. Finally, we propose a "construction-oriented" technique for architecture specification which is based on a generic set of architectural elements and is supported by a tool, d-ASPECT (domain Architecture Specification Tool), currently under development at NJIT.