Wednesday, February 21, 2007

What Is Software Architecture?

In this blog I write posts and more posts about SOA, ESBs, RIA... ...all these subjects and terms are related to Software Architecture. But, what is software architecture? Besides definition that you can find at Wikipedia, there is an excellent source of many definitions at SEI.CMU website. SEI is the Software Engineering Institute at Carnegie Mellon University.

Below some examples:
  • First, architecture defines elements. The architecture embodies information about how the elements relate to each other. This means that architecture specifically omits certain information about elements that does not pertain to their interaction. Thus, an architecture is foremost an abstraction of a system that suppresses details of elements that do not affect how they use, are used by, relate to, or interact with other elements. In nearly all modern systems, elements interact with each other by means of interfaces that partition details about an element into public and private parts. Architecture is concerned with the public side of this division; private details of elements—details having to do solely with internal implementation—are not architectural
  • Architecture is defined by the recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution (note from Davi: this is my best definition ever)
  • A software system architecture comprises
    - A collection of software and system components, connections, and constraints.
    - A collection of system stakeholders' need statements.
    - A rationale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system stakeholders' need statements.
  • [Crispen 94]: An Architecture, as we intend to use the term, consists of (a) a partitioning strategy and (b) a coordination strategy. The partitioning strategy leads to dividing the entire system in discrete, non-overlapping parts or components. The coordination strategy leads to explicitly defined interfaces between those parts.

No comments: