Software Architecture: Laying the Foundations of Software Design

So I was left with the homework of reading chapter's 14 from Pete Goodlife's book "Code Craft" and I have many thoughts around my head with it...


There are many key concepts in this reading, the first of them is software architecture. Software architecture is the way we design software before it is even built. This way, we can know how all components of the software will interconnect with each other. It will also show us how code will be allocated within different nodes. Like an architect, a software architect has got to be experienced enough to know ahead what things might affect the product in the future.

Different points of view from the architect must fall into this basic four points of view:
1.- The conceptual view.- shows all the major parts of the software, and their connections.
2.- The implementation modules.- shows how parts of the software will be built.
3.- The process view.- to allow everyone to know the flow of information in software.
4.- The deployment view.- to allow everyone to know where are specific modules in different nodes.


It is also really important to understand that doing this at the very beginning of a project, will safe a lot of time and effort. Trying to make changes in a system that has been working in a wrong way for many many years can sometimes get to be an impossible tasks. That's exactly why there are still some big corporations or institutions that can't migrate their legacy systems to newer infrastructures, because software and modules and interconnections have grown and developed so much in the past years that there is simply a point of no return.

Which leads us to the last point of the lecture: when to use it? If architects from the project described earlier used the architectural design for what it was meant to be, maybe software migration to newer development platforms would be so much easier... The author from the book neatly describes the following use cases for  architectural design:

1.- To validate:  Ensure that everything is running as it is meant to be.

2.- To communicate: To make sure that everyone involved in the project knows how it all works.

3.- To make decisions : It is always better to make informed decisions that will lead to good results.

Comentarios

Entradas populares de este blog

Who needs an architect?

Who am I