There are many correlations between good software designs and good software development processes. For instance, although there isn’t one design that is applicable to every project, there are principles of good designs that are. The same is true in development processes. Also, it takes multiple views to adequately describe both software architectures and software development processes. One of the process views we will examine is a swim lane chart. This view highlights another parallel; good software designs limit the number of dependencies and interaction points between modules. Your process should as well.

We’ll start with an introduction to the traditional waterfall, incremental and iterative development models. A quick overview of a classic formal process (DoD-2167a) will establish a common reference for what artifacts are typically created under a formal process. Other factors that add to a project’s complexity, and consequently, the need for a more formal process will be reviewed.