Way back in early 90’s, my brother and I were having a conversation around the theme as to how software development was more closer to making a movie. For some reason, this conversation stayed in my mind and I distinctly remember that it was right after a TV show featuring Subhash Ghai where he talked about different aspects of movie making.
Mats Wessberg writing in Developerworks @ IBM uses the same analogy in his article "Introducing the IBM Rational Unified process by Analogy", where he talks of "How is software development like moviemaking"
Making a feature film is a vast undertaking that involves managing a
huge crew and a substantial budget. Communicating well about needed
changes is vital to the success of such a project. Imagine that the
director wants to improve the final scene. Although it comes at the end
of the movie, the need for improvement can be identified early since
quality is continuously verified on all levels. Do the screenwriters
have to update the script? Who will review and approve it? Does the
scene have to be modeled again? If so, will storyboards, 3D graphics,
or plastic models be used? Does the set need to be modified, or does a
new set need to be built? Do we have to scout for a new location? Do we
need to call the special effects guys? How does this affect our budget?
Do we have to ask for more time and money? These are the kinds of
questions that result in changing plans and therefore must be
addressed, preferably in an iterative manner.
But the analogy that I liked the best:
If the functional requirements of software have their counterpart in
movies, can a movie also have nonfunctional requirements? The answer
(not surprisingly) is yes. Maybe (for commercial reasons) the movie
must be viewable by children under 18 and no longer than 120 minutes.
Although these requirements aren’t directly related to the story line,
they’ll have an impact on the final result — just as nonfunctional
software requirements must have on a computer system.