Software Architecture

In this blog, I will discuss the chapter titled "Software Architecture: Laying the foundations of Software Design" from Pete Goodliffe's book "Code Craft: The Practice of Writing Excellent Code".

So what is architecture? Or more specifically, what is software architecture? So we all know that architecture is the process of planning, designing and building structures of any kind. So how does this concept translate into software? Well, when building software it is very important to think of how it is going to be built. Because just like a building, software can fail and collapse if its components are not built and designed accordingly.

You might be thinking that in order to build the best piece of software (or building) you have to add a lot of things to it so it doesn’t fail, and make a very sophisticated design so everyone admires it. But the truth is, just like it's mentioned in the book, the simpler the better. The simpler it is, the more comprehensive it's going to feel and look. This is also important when building complex systems, when simplifying the problem into something more comprehensive reduces the workload and makes the problem easier to solve.

I like the comparison made to Vitruvius statement of what good architectural design should be: strength (firmitas), utility (utilitas) and beauty (venustas). This are all important factors to take in consideration when building our own software architecture. It should be robust and capable of handling the load it's taking (strength), it most serve a useful purpose and be efficient about its processes (utility) and the design must be elegant and simple enough so the relation between its components is optimized to its core (beauty).

Of course when building something everyone has different styles and the outcome can vary in different implementations, but for the most part, the inspiration comes from the same places. And the goal will always be to build software that follows efficient patterns and handles the problem at hand in an efficient manner.

Comentarios

Entradas populares de este blog

Is Design Dead?

Software Craftsmanship