Software architecture occurs, whether you plan it or not, whether you agree or not. This fact was the major reason I decided to share my understandings from the software architecture, and try to use a directed effort in the design of our system, hoping to improve the quality and the understanding of our limitations. Most of the information is form the book “Software Architecture in Practice” from Addison Wesley.
Rick Kazman writes in the book that quality attributes guide us in the design process because the same functional requirements can be fulfilled by different architectures, but different architectures provide different quality attributes. A good example is processing data in a batch process or a pipe process. The first one provide better throughput, but is more difficult to change. The second had lower throughput but is more flexible.
Using an iterative process, taking quality attributes in consideration, there is a decomposition stage, according to the main architectural pattern. The decomposition takes into account some of the functional requirements but in not too detailed. The reason for limiting the details is the iterative process, meaning that each step reduces the generality and provides enough details for the next iteration.
In addition to the functional requirements, some architectural tactics should be taken. What are those tactics? Those are the fundamental design decisions that help us achieve the required quality attributes.
I still have to organize the presentation, so I’m a bit stuck here. I will continue this week and see how the information can be explained
If you read this far, you should follow me on twitter here.