When I try to explain the process of producing software I often use this analogy. It's especially useful for describing bigger projects and projects with emphasis on architecture and components. To make sense, you will have to compare the type of system you’re designing with a building used for a similar purpose (if that is at all possible). For instance, if you’re talking about an on-line store, the corresponding building would be a compartment store or a shopping mall. Below is a list of software terms and their counterparts in construction.

Using this analogy you can get a long way describing the responsibilities of the different people involved in the project and the result of their work. Like all analogies, this one fails at some points, however. Some things I find hard to get into the analogy without being too far-fetched are: testing, documentation, and configuration management. Also, the fact that almost everything is designed from scratch in a software system, ruins the analogy a bit: You wouldn’t want someone to build a house where every nail and window pane are designed specifically for that house (read my writeup on Software development is not an engineering discipline for my thoughts on that).

Log in or register to write something here or to contact authors.