Acism's Offshore Outsourcing Guide > Outsourcing SDLC

  
SDLC – Software Development Life Cycle

Whether it's one line of code or ten thousand lines of code, the basic model for a unit of software development/ enhancement is as below :

We shall start explaining from the central one :

  • Coding: This is the central step, and the most important one, because actually writing the code gets done here.
  • Design: “How to code” and “What to code” is decided in the design step. Of course, this needs to be done before coding.
  • Requirement Analysis: Understanding the requirements – the intention of making the change. This of course needs to be done before design.
  • Testing: After the coding is done, ensuring that the code has the desired effect.
  • Deploy / UAT (User Acceptance Testing): Deployment is the act of putting the code in a location where it's supposed to work finally. User Acceptance testing is the testing from the client side before accepting.

The first and the last step are colored in a different color because they need interaction between the client and the vendor. The middle steps are carried by the vendor alone.

We have seen norms about the relative sizes (duration/ effort) of each step in software development companies and in software engineering books, such as these :

  • Requirement analysis – 30%
  • Design – 20%
  • Coding – 30%
  • Testing – 15%
  • Deployment/ UAT - 5%

In practice, they vary widely from work to work. Therefore these norms need to be treated only as reference points – possibly applicable to normal situations. Some interesting deviations are as follows:

  • In case of small work, quite often one or more of the steps is trivial and the effort requirement is negligible.
  • When a solution needs to be tested against various platforms, the testing effort can become higher than any other phase.