Software Architecture
In this post, I will discuss chapter 14: "Software Architecture: Laying the Foundations of Software Design" from the book "Code Craft: The Practice of Writing Excellent Code.", written by Pete Goodliffe.
Although the software is not made of bricks, software architects, like building designers, have to take much into consideration before building something, in order to cover each and every one of the requested requirements (This is key!).
Software architecture is a high-level design. "Is our first chance to map the problem domain to a solution domain." To develop software, you need a detailed plan with all the important features included and its fundamental behavioral characteristics. It should be a general description of the system, the details must be hidden for the moment.
I had not taken it so seriously that architecture is the single biggest influence on the design and future growth of a software system, it is very necessary to do things right from the beginning. We have to understand the requirements very well, in order to carry out a good planning, to do is, as the author mentions, it's important to generate a specification, because it provides a way to review and validate the design decisions. In this way, we avoid duplication of work, wasted effort or redundancy. Likewise, we use the architecture specification to communicate the design to all interested parties.
Something I found of great importance was the fact that architecture affects everyone on the project, the architecture determines how malleable is the software and how the requirements are cover, so the architecture, influences the commercial success of a company, a good architecture may be a
unique selling point and may provide a
strong competitive advantage. That's the reason because everyone must clearly understand the plan, Goodlife give us the key: "The key to good architecture is simplicity." Neither too much or too little, it should be just enough to adapt to the project.
I found it very funny how Godliffe compares architecture styles with pasta, the key here is to identify and appreciate the pros and cons of each style because this helps to work with existing software and perform appropriate system design. I hope that in the future my designs will be more like a lasagna and less like a ball of spaghetti (Strong, useful and beautiful too!).
Comentarios
Publicar un comentario