| In order to establish itself as a branch of engineering, a profession must understand its accumulated knowledge. In addition, software engineering as a branch of engineering must take several basic steps in order to become an established profession, highlighting understanding of the nature of its knowledge.
Software engineering experts always have used proven ideas. Concretely, in the object-oriented (OO) design knowledge field, the practical experience of it has been crucial to software engineers, and it is in the last years when these ideas, materialized in items such as patterns or refactorings have reached their biggest popularity and diffusion. And in this regard, the software engineering community has advanced greatly and we currently have numerous and defined chunks of knowledge, including standards, methodologies, methods, metrics, techniques, languages, patterns, knowledge related to processes, concepts, and so forth. Although these different areas of knowledge relate to the construction of an OO system, there is a lot of work still to be done in order to systematize and offer this knowledge to designers in such a way that it can be easily used in practical cases.
A software architecture is a description of the subsystems and components of a software system and relationships between then.1 Usually, the software architecture is subdivided into macro and micro architecture. Whereas macro architecture describes the metamodel of design, this that provides the highlevel organization, the micro architecture describes details of a design at a lower level. |