The Architect In Me

Monday, August 28, 2006

Intro to Architecture...

Summary of Readings
An Introduction to Software Architecture, by David Garlan and Mary Shaw
This is a very interesting and detailed paper that discusses the importance of software architecture and also provides details of various approaches to developing a software architecture.

I particularly enjoyed the practical illustrations through the use of case studies. I had actually read about the Parnas problem in one of my earlier classes with Prof. Johnson--I want to believe it was Software Engineering II--so I could particularly relate to the approaches discussed. Overall the case studies were a good illustration of how different architectural styles address different design problems, and how a set of architectural styles can be combined as a solution to developing a framework.

As old as this paper may be, it still covers the very foundation of architectures that we use today, and the definitions remain the same in terms of elements and their connectors.

Published Software Architecture Definitions, by Carnegie Mellon Software Engineering Institute

This reading tries to separate the the definitions of Software Architecture into three main categories...
(1) Modern definitions
(2) Classic definitions
(3) Bibliographic definitions

It notes that modern definitions emphasize four main attributes of software architecture and and its attributes. They are as follows:

  • Software architecture is an abstraction that emphasizes the external properties of a system and suppresses the internal details of the implementation.
  • A well architected system contains more than one structure, and is often structured in a way that makes it divisible amongs implementation teams.
  • Every system has some kind of architecture. The architecture might not be obvious or even comprehenisible, but it still exists--which emphasizes the need for proper architectural documentation and revision.

Further reading through the classic and bibiographic sections, reveals that there is great consistency in the definitions over the years. The 3 keys that are consistent in all definitions, however, are the elements of the system, the interfaces they provide to the outside world, and the connectors between the multiple interfaces of the elements.

It is evident from these readings that it is essential, in becoming a good architect, to familiarize myself with various architectural styles, if not for any reason, to be able to discuss and understand existing architectures. But even more so, to be able to combine these existing styles into new structures and frameworks that can be utilized in solving software problems.