domingo, 24 de enero de 2016

Software Architecture: Laying the Foundations of Software Design

This week lecture was chapter 4 of Pete Goodliffe's book "Code Craft: The Practice of Writing Excellent Code" titled: "Laying the Foundations of Software Design".
It starts by defining what a software blueprint is, which is an overview of the system that specifically avoids too much detail. In other words in this high-level view all implementation details are hidden. This is a really good point of view in which we only get to see the fundamental behaviors of the system. And so Goodliffe explain why identifying since the beginning which components are going to communicate with each other is a good thing, that is because it is essential to get right in the early stages of development.

He mentions four kinds of views that will help us build our architecture I will enlist then with a short explanation.
- The conceptual view (Show the major parts of the system and their interconnections)
- The implementation view (Real implementation modules)
- The process view (Show the dynamic structure)
- The deployment view (Show allocation of task to physical nodes)

In order to document all our architecture we need to write a "architecture specification" which explains what the system structure is, and shows how it resolves the problem for which that architecture was chosen. This document is used to validate what it's going to be build, communicate the design to all interested parties and discriminate what's important and what's not.

A truly great architecture is born when technical and strategic visions meet to create a product that stands out from its competitors. Good system architecture is simple. It can be described in a single paragraph and summarized in one elegant diagram.

Now I took one interesting question of the discussion part:

1. Where architecture ends and software design begin?:
The architecture of a system is a skeleton of the entire software system. it's the highest level of abstraction of a system.
Software design is the next step, a more defined and focused activity.

I choose this question in order to clarify what software architecture is. Before building we must make a plan of the system, express the complexity of the system, its cost, future extensions and so on. If we fail at building this, correcting something in future stages is going to be very expensive and messy, well depending of the size of your system.

Sources:

*Goodliffe, P. (2007). Code Craft: The Practice of Writing Excellent Code. San Francisco: No Starch Press. 

No hay comentarios:

Publicar un comentario