Chapter 14. Code Craft: The Practice of Writing Excellent Code

After reading chapter 14 “Software Architecture: Laying the Foundations of Software Design” I can now understand more about Software and its Architecture and how important it is in software development. Software Architecture is a high-level design for the software that creates a blueprint for it. Creating software architecture generates different views, such as identifying the key software, which components communicate with others, help to identify the nature of system interfaces.

What is the importance of software architecture? Creating a clear software architecture will allow us to know how the software should be adapted and what components should be put in each module. This means that the architecture is the largest influence on the design and growth of a software system. 

There are also different views in the architecture, we have the conceptual view, which shows the major parts of the system and their interconnections. The implementation view which shows the terms of real implementation modules. The process view which is designed to show the structure with tasks, processes, and communications. And finally, the deployment view which shows the allocation of tasks to physical nodes. 

The architecture is used to validate what is going to be built, to communicate the design to everyone involved, to discriminate and make correct decisions. It is very recommended to document the system architecture where everyone involved in it can check whenever it is needed. 

With this chapter, I also understood about two main concepts in architecture: components (it could be an object, process, library database, etc) and connections (a simple function call or data flow through a pipe, an event handler, etc). Connections can be synchronous and asynchronous. Having many components can generate a bewildering and hard to work architecture while having too few can generate an unclear, hard to maintain and hard to extends. That's why it is recommended to have an architecture with a balance somewhere. 
Something I really enjoyed is how the author compares the different types of architecture with pasta, including lasagna, spaghetti balls. The architectural patterns describe component structures to maintain the level. Finally, I also understood more about good programmers and bad programmers. 

I can say that I still have more to learn about what makes a good software architecture. 

References: 

Goodliffe, P. (2007). Code craft: The practice of writing excellent code. San Francisco: No Starch Press.

Comentarios

Entradas más populares de este blog

Microservices

Understanding the SOLID Principles

Ethical Reflection on Ready Player One