Stages of Software Development

by Christopher Diggins


What specifically are the phases of software development? I was taught there were about 4 or 5, but I believe I have identified a few more.

I was taught (back in ’94 by my software engineering professor) that the stages of software development were something like (my memory is hazy, so I am not probably giving her full justice):

  • gather requirements
  • design
  • implementation
  • debugging
  • testing

I believe that it is important to consider a more fine-grained and less linear view of the stages of software development. I consider the following to be important interleaved phases for the development of most non-trivial commercial software:

  • scheduling – Self explanatory.
  • research – Learning more about the problems the software attempts to solve, and what the competing software does.
  • technology selection – Choosing what tools, languages, and technologies to use to build and develop the software.
  • reuse – Identifying code libraries and tools internally and externally that can be leveraged
  • prototyping – An important step which is often overlooked (often-times the first version is really a prototype).
  • code documentation
  • product documentation
  • refactoring – Change in the code to changes in implementation design.
  • extending – This refers to when more features are added during development, after prototyping, or after a release
  • revising – Related to refactoring, this refers to when the product requirement are significantly changed in some-way
  • internationalization – It is is usually the case the software will be released in different locales with different languages and cultural conventions.
  • optimizing – It is rare that software doesn’t have some areas where better performance could significantly improve the product.
  • static analysis – Static analysis tools are an important part of detecting defects
  • reviewing code – Code reviews are an important supplement to testing
  • releasing – Getting the internal versions to various teams, and external versions to customers in a smooth and timely manner
  • recycling code – The code in a successful project will almost invariable be reused in some other project.
  • porting – Porting software to new operating systems and platforms is almost always inevitable in a successful product
  • support – Customer support is easily overlooked, but when taken into consideration will affect design decisions, and profitability.

By being aware of, and giving proper consideration to, these stages of software development I believe software projects increase their chances of success.

Post a comment or leave a trackback: Trackback URL.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: