Lifecycles of software systems that solve real world problems
can be broken down into distinct phases based on where it is
with respect to the problem and the eventual solution.
This article presents a taxonomy of these phases that should
help you understand how each part of the lifecycle fits
together.