Thursday, May 09, 2002
What is the essence of architecture? One of the best descriptions of software architecture is provided by Bredemeyer Consulting's Software Architecture Page. Despite the use of the dreaded word, architecting, the definitions provided capture the essence. My personal view is to consider architecture in its traditional form, which is the development of a high level design - the big picture. That is what those folks who design buildings for a living do. However, there are some marked differences between the original architects and software architects, which can be summarized in these three comparisons:
- Those who design buildings are have stringent education requirements and are licensed. There are legal definitions as to who can proclaim themself to be an architect. In software anyone can claim that he or she is an architect - and they frequently do just that. No credentials other than a proclamation and, perhaps, some references that will support the claim that they actually functioned as a software architect.
- Architects who design buildings are held to legal and engineering standards to which their designs must comply. Software architects can do pretty much anything they can get away with without legal or professional oversight.
- Building architects blend design with engineering constraints. They use both creativity and a good deal of science and math. Software architects may or may not employ either - and they are not compelled to do so in order to claim to be an architect.
Resources that I recommend include:
- Introduction to Software Architecture
- Software Architecture: A Roadmap
- Discipline of Software Architecture
- Architecture Blueprint: the 4+1 model
- Software Architecture: Foundation of a Software Component Marketplace
- Object-Oriented Software Architecture A Practitioner's Approach
- USC's Software Architecture Page
- UCI's Software Architecture Research Page (also see their ArchStudio 3 architecture development tool page).
- Software Architecture Resource Sites
- The Three "R's" of Mature System Development: Reuse, Reengineering, and Architecture
- A Two-phase Process for Software Architecture Improvement
- Don't Let Architecture Astronauts Scare You, an interesting and opinionated essay by Joel Spolsky
- Java resources related to architecture
- Redundant Arrays of Independent Components(RAIC)
- xADL 2.0 Architecture Description Language
- xArch XML Representation of Architecture
- A Formal Architecture-Based Approach to Software Integration Testing
Subscribe to Posts [Atom]