What is Software Architecure
This article explains software architecture by analysing real architecture diagrams. The diagrams are from a google images search.
Google is a good place to start exploring a subject. So I did a search on the topic Software Architecture . Because I didn't want to read to much definitions I switched to the image search. You can see the result of the search in figure 1 .
Please do the search yourself and browse trough several pages. You will see lots of diagrams showing boxes and lines. So a software architect is somebody who draws boxes and lines. Looks like Visio or PowerPoint are the tools for a software architect.
The boxes and the lines are symbols for the building blocks in software architecture. A system can be divided into several subsystems that are represented by boxes.
There are many names for subsystems. Depending on the fad of the day it is important for an architect to use the proper name to distinguish his system from prior technologies.
|Component||Component models e.g. EJB|
|Class, package||Object orientation|
|Service||Service oriented architecture|
Two boxes can communicate with each other if they are connected by a line. A double sided arrow is not directed and the communication can be therefore initiated from both ends. If it is not a simple line but an arrow the communication can only be initiated in one direction towards the arrowhead. An arrow also documents a dependency the component from ...
There are also different names for the lines:
|Connector, Adaptor||EAI, Middleware|
The lines are missing in some diagrams as shown in figure 4 . Components in those diagrams can communicate with neighboring components or with the next component further down.
Layers of Abstractions
There are more architectural elements than boxes and lines. In figure 5 the diagram is structured into three layers by dotted lines. Each layer is an abstraction of functionality. The layer on the bottom offers data management functionality to the services layer. And the services layer offers functionality to several clients on the Internet. Each layer is build onto the functionality of the next layer down the stack.
Infrastructure Components and Services
Figure 6 displays a multi-tier architecture like the ones we have already seen. But to the left and to the right we have vertically aligned boxes that extend over all layers. These vertical boxes are represent cross cutting concerns like infrastructure services that can be used in every component of the system.
In figure 9 you can see an onion diagram. It is an other variation of a multi layered architecture. The layers are placed like onion rings around a core. The core is really tiny compared to the outer rings. This diagram is used if the core or kernel of a system is much smaller than the layers on top of it.
Standards for Architecture Diagrams
There are a lot of initiatives that have standardized a language for the description of software architecture. The table below lists some architecture description languages.
|ACME||Carnegie Mellon University|
|AADL||Society of Automotive Engineers|
|Darwin||Imperial College London|
A lot of architecture diagrams are drawn in free style. But you can also use an UML package diagrams to describe an architecture visually as shown in figure 11.
Software architecture diagrams are showing boxes and lines. And they have architectural elements like abstraction layers in common. But there is no unified notation for architectural diagrams. You can find diagrams in all styles from a hand written sketch to a glossy diagram for a marketing brochure.