all bits considered data to information to knowledge


Design vs. Architecture

Some time ago I came across a discussion posted in a LinkedIN Enterprise Architecture group; it was about how (if) design is different from architecture. The question kept bugging me for a while - I felt that there is difference but could not quite formulate my thought. Until today, that is 🙂

The break trough came while reading Software Systems Architecture by Nick Rozanski and Eoin Woods

Design refers to functional composition of the system, while architecture is also concerned with behavioral aspects of it. Therefore, architecture includes the design component, and extends it by adding quality attributes.


Thinking software into existence

I remember a quote that I think belongs to Michelangelo, though I was unable to find it on the Internet. Once asked about his approach to creating beautiful statues he replied: “I take a piece of marble, and cut off all unnecessary parts”. This resonates with the quote that I was able to find – “I saw the angel in the marble and carved until I set him free”.

Now, what does it have to do with software creation? It seems to me, quite a lot. A software system is a manifestation of a thought process. Just as a statue that could be carved from marble, granite or cast in bronze, there are many different technologies that software could be implemented in, each with their own advantages and drawbacks.

Knowing these allows for a series of trade-off decisions that lead towards a particular implementation – functionality and features as envisioned by an architect, constructed by an engineer, and implemented by a developer; at every one of these stages creative thinking is at the core of the process. An idea, a vision leads the process of discarding unnecessary parts up until a coherent system emerges from alphabet soup of JMS, Ajax, SSO, MOSS, AD, DOM, SAX, SSIS and other incomprehensible acronyms...

A software system is thought into existence, everything else is implementation details.