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).