@techreport{TR-IC-08-04, number = {IC-08-04}, author = {Leonel Aguilar Gayard and Cec{\'{\i}}lia Mary Fischer Rubira and Paulo Astério de Castro Guerra}, title = {{COSMOS*: a COmponent System MOdel for Software Architectures}}, month = {February}, year = {2008}, institution = {Institute of Computing, University of Campinas}, note = {In English, 58 pages. \par\selectlanguage{english}\textbf{Abstract} Software architecture and component-based development are complementary approaches to the development of intensive software systems. Software architecture describes a system in terms of its logical architectural components, while component-based development focuses on the reuse of existing software components for building new software systems. However, software components are usually developed in programming languages that do not include component and software architecture abstractions, such as interfaces, architectural components and architectural connectors. \par So there is a gap between the conception of an abstract software architecture and its concrete implementation in a programming language. The COSMOS* model uses programming language features and well-known design patterns to represent software architectures explicitly in the program code. The COSMOS* model defines the specification and implementation of COSMOS* components, COSMOS* connectors, COSMOS* architectural configurations, and COSMOS* composite components. Case studies applying the COSMOS* model are discussed using the Java programming language. } }