Software and Economics

Main menu

Post navigation

Software Architecture vs. Software Technologies

In my opinion one of the biggest misunderstanding in the field of software development is the distinction between the technology and the architecture of the software considered. It sounds like a miniscule distinction between the two and to experts in the field the distinction is rather obvious. But to many people in the domain of software engineering it is topic they never really thought about and the results of that neglect of thinking about it clouds their vision and understanding of both.

Have you ever talked to a collegue or friend of yours that is working as a developer asking him to describe the design of the software he is working on? Have you ever been puzzled trying to understand the workings of the software as he talks in words like “XML, Java, Grooy, XSLT, Load Runner, jQuery, JSF, Android, NoSql, AST , DOM, Scala and maybe even Visual Basic”?
Well I have. And the reason is because the person almost always talked a lot about technologies (well that all gets us exited doesn`t it 😉 ) while thinking he perfectly described you the architecture of the software.

Let me describe the values, architecture and technologies of a shelf I built a few years ago.

It is a real world example to the point I am making. This is me standing in front of it.And now let me describe it short and clear:

I wish we could all describe the technologies and architecture of software as well as the reasoning to use them as easily and precise as I did describing the shelf I built.
Unfortunately software is a lot more complicated. We struggle every time to describe software design, code and the technologies employed.

Technologies influence the design up to a certain point. They are the building materials of software. Java, Groovy, XML, Webservices,…. you name it.Design is something else. Design reveals how developers understood the technology employed, the problem domain and how much experience knowledge we have in both things.

So what is to take away from all of this?
Agile Developers need to be precise in talking about software. We need to make good distinctions between values, architecture and technology. Most non software engineering sciences are professional about this. We should be too.