Friday, February 19, 2010

Quality for Software Development Projects

Let's first clarify what is meant by Software Quality. High Quality Software needs to be reliable, supportable, maintainable, scalable, portable and easily integrated with other tools. Please note that there are a number of definitions that cover Software Quality. Check this link to see a starting point to learn more.
To get to a high quality Software Product we need a Test plan (check also the posting on Quality Management from November 27, 2009). The test plan needs to cover at least
  1. Test Cases for all the functionality (Use Cases) that was developed
  2. Unit, Functional, Regression, Performance, Failover and Usability Testing. For some of these tests you probably use tools like LoadRunner from Hewlett-Packard to simplify the testing
  3. Assign Test Cases to Testers
  4. Inform Testers how to report issues?
  5. Inform Testers how Software Developers follow up on reported issues and provide a status of the fix to the Testers
  6. Assign Test Cases to Testers
In addition to the test plan you want to make sure that your Software Developers follow some generally accepted Software Engineering Standards (e.g. IEEE, ANSI, ISO) .

The critical question is how big is the Test Plan. Do you have 50 Test Cases or 5000 or 50000. The more test cases you have the trickier it will be to ensure the desired quality. In addition to the number of test cases it is important to consider that a fix for test case 1 might break something for test case 2. Therefore we can conclude that it is desirable to have fewer test cases.

Example:

Software Developer 1: develops code to extract data from SAP into an Excel File

Software Developer 2: develops code that sends the file from Developer 1 to another IT system

If Developer 2 writes extensive code but finds out later that Developer 1 extracted incorrect Data then his work was not used efficiently since the code needs to be changed again.

Hence the next conclusion is that the earlier you find an issue the less impact it will have on your next development steps since it can be corrected earlier. Check this link for more info (start with slide 5)

What Project Management Methodology do you use and what does the above mean for your Software Quality approach?

Traditional Project Management:

Disadvantages

  • The Test Plan can be very large (e.g. several thousand test cases) since it needs to ensure that the existing functionality as well as the new functionality is working as expected. The sheer size of the test plan is usually a challenge for the Test Teams.
  • Problems are found late in the process (when the development is done). To do code changes now becomes expensive.
Agile Project Management:

Advantages

  • If the Quality Assurance Team Members are included in the Software Development Team from the start they will find issues earlier. 
  • The test plan is smaller since it contains only test cases that can be released within a sprint (e.g. 30 days).
Conclusion: It is beneficial to use an agile Project Management Methodology for Software Development Projects since you can find issues early and so you can fix them early which means you save money.

To check the conclusion above use Agile on one your Software Development Projects and compare your Post-Go Live Issues to traditional projects. Nothing speaks louder than a KPI.