Software Quality

Planning - One of the most important areas to focus on in order to achieve software quality is in the initial planning. Getting a good idea of the user requirements up front and developing strong use cases will help the team to efficiently create reliable software. Even if they can't get all the specific requirements up front, even having a rough idea of what the completed software will need to accomplish will help ensure it is flexible enough to change or grow to meet the needs of the customer.

Testing - Regular testing throughout the development process should help in eliminating bugs, as well as verifying that the software meets the set requirements. The benefits of regular, on-going testing have a positive impact on the development process in that any problems are discovered and can be fixed early on during the process, instead of needing to do huge amounts of fixes right before delivering the software, and make it easier to present real, working software to the customer throughout the development process for feedback.

Feedback/Customer Involvement - Getting feedback from the customer during development will help improve software quality. Having the customer involved in the process means that the development team can better understand what the customer is expecting, and can make tweaks or changes to individual components early on. As components come together to form the full software package, the customer can get a better idea of what the team is producing and bring up any concerns or changes during the development process so changes can be made. If the customer was not involved until the end, the software would be delivered and it may be too difficult, costly, or time consuming to make changes that would improve the quality of the softare at that time.

Define and Measure - The development team should not only strive for quality software, but should have a definition of quality and metrics they can use to measure success. This is often done by creating a weighted scoring system using 5 characteristics identified by The Consortium for IT Software Quality (CISQ) - reliability, efficiency, security, maintainability, and size. Reliability, efficiency and security mostly relates to using good practices for architecture and coding. Maintainability has to do with the ability of a new development team to understand, change, test, and reuse the software/code when the responsibilities are transferred from the original developers and has a lot to do with documentation, programming practices, and the original teams approach to complexity. Size relates to both the actual size of the application (lines of code, file size, databases, etc.) and the functional size (functionality, inputs, outputs, data, etc.)