From: New Earth Online
Testing is one of the fundamentals of Quality Assurance, it outlines where the defects are in a measurable form and helps to make an application "bug free". Remember though that software testing never reveals the absence of bugs, only the presence of them. The purpose of this guide is to help promote the ideals of software quality, and illustrate why it is a good thing.
The quality of a product is what gives your consumers confidence in your product, whether it be a software application or a website, careful thought has to go into it. There are various methodologies and techniques available in software engineering that help product products that are of a high quality, but these are of no use unless you and every member of your team understands the end product, the requirement of the customer, and the processes that take place in reaching the final stage. It can be considered that the end product is only as good as the process that created. If the software development process has no clear path, then it is likely that the number of defects in the product will be high. By improving this process, we start to use a methodology called software process improvement (SPI); a method of improving the software development process. As with software quality, the quality of the process is measurable (using the Capability Maturity Model) in terms of various factors; although I won't be discussing these factors here.
So just what is quality? Quality is something that can be quantified and measured, but can mean many different things, and can be measured in each of these cases. Quality can be seen as it's value for money, the satisfaction of the customer with the product, the process that created it, it's performance, it's speed, and lastly it's reliability. The ISO 9126 standard for software product evaluation states:
The totality of features and chacteristics of a software product that bear on its ability to satisfy stated or implied needs.
What it is important to understand are the stages in a good software process. These can be defined as having:
1. Defect Tracking (the tracking of bugs) 2. Usability Testing (making sure it's usable by the target audience) 3. Unit Testing (effectively looking for bugs in the software) 4. Integration Testing (making sure it works on any platform it's aimed at)
Such a process should be repeatable, well defined, managed, and is part of an ever improving cycle. The idea of this comes from the Capability Maturity Model (CMM) which was developed by the Software Engineering Institute (SEI) for the US Department of Defense and expresses the "maturity" of the process. This model describes the ability in a roadmap of 5 stages:
1. Initial - An adhoc process achieved through effort and talent of the programmers 2. Repeatable - Previous experience is utilised to construct standards, and a process 3. Defined - The process for engineering is documented, which is overviewed by a Software Engineering Process Group (SEPG) 4. Managed - The process is predicatable, and be quantified in terms of success 5. Optimising - A continuous self-improving process that is like to spawn new practices as a way of moving forward
Every software process can be defined as being in line with one of these stages; most being in the "Repeatable" level, whereas many large companies are categorised as being "Managed", and very very few are ever categorised as "Optimising". The CMM though is not the only was of quantifying a process, there are other methods, some of which are in wider use by companies.
Capability Maturity Model (CMM) broadly refers to a process improvement approach that is based on a process model. CMM also refers specifically to the first such model, developed by the Software Engineering Institute (SEI) in the mid-1980s, as well as the family of process models that followed.
Although simple to understand, the CMM has now been retired by the SEI and replaced with the Capability Maturity Model Integration (CMMI). This new intergration model has different versions for different types of purpose, the one aimed at software development is referred to as CMMI-DEV (links to PDF documentation) and also covers the maintenance of products. The discussion of this improvement is beyond the scope of the article, though itself is a testament to processes being able to be continuously improved. Now that you have a brief idea of what software quality is, that it is measurable, and that there are models for doing this, we can now begin looking at how some of these steps come together. |