Quality by Software Engg. Perspective
Attributes of a Good Quality Software:
1) A Good Quality Software Product: Is the one which meets all the requirements when viewed through customer�s perspective. Hence the prime definition of software quality goes by meeting the needs of the customer or having a clear understanding of all the requirements and expectations of the customer and even exceeding these expectations. If using the software product satisfies the customer, then it is a good quality product otherwise it is not.
2) Customer needs are not always translated into his requirements: Although the software creation team tries their level best to precisely translate the customer needs and expectations into customer requirements; in spite of all these efforts, sometimes the developers fail in their endeavor due to 1) Lack of accurate communication of the exact needs by the customer 2) Misunderstanding of the requirements as captured by the developers.
3) A Software Free from Bugs or Defects may not always be a Product of Good Quality: Quality of a software product is not merely the absence of bugs / defects in it. Even if it has been developed without any bugs; however if it is tedious to learn and tiresome to operate, then it can�t be called a product of good quality.
4) A Software may be termed as a Product of Good Quality in spite of presence of some Bugs or Defects in it: Acceptance of few known bugs in the software is a subjective term depending upon the nature of the bugs. If the software product is released to the customer very well within the constraints of budget, time & resources, & it contains some known open bugs, which will not cause any harm to the customer; then also it may be termed as a product of good quality. However for critical products aim of ensuring 100% or zero defect approach becomes necessary.
5) Maintaining quality of a software product is not only the responsibility of software testers: Producing right quality software product is the responsibility of everyone involved in the chain including even the customer. Role of a software tester is to find out the deviations from the intent and report the same to the development team effectively.
Software Tester has a prime role of validating the functional correctness, reliability and interoperability of the software product and reports deviations if any.
Software tester may not be able to validate certain important quality related factors like maintainability, reusability, flexibility & portability etc. etc.
6) Software tester should endeavor to detect bugs in the software right from the beginning itself: As the software moves into advanced stages of its development, the cost component for fixing such bugs also keeps on increasing drastically.
For example, If during an advanced stage of system testing of software, any bug is found in its basic design itself, this could lead to an extremely costly process of fixing the bug. In addition to this may necessitate amendments in the design & the basic code itself.
Hence detection & rectification of bugs during initial stages of design are quite economical.
7) Quality Factors for any Software are essential attributes, absence of which can pose threat to its success: For any software product following are the important quality factors, the significance and priority of which may vary among different software product. For example, factors like flexibility and reusability gain prime importance, if the software under development undergoes frequent changes.
#) Flexibility: Refers to the effort required to modify the operational program.
#) Correctness: Refers to the degree to which the program satisfies the desired requirements.
#) Reusability: Refers to the extent to which the program can be used in other applications.
#) Usability: Refers to the ease of its learning, operating, feeding data inputs, and interpreting the outputs.
#) Reliability: Refers to the expected ability of the program to perform its intended functions with desired precision.
#) Testability: Refers to the ease of its testing to ensure it performance in accordance with the expected functions.
#) Efficiency: Refers to the quantum of resources required to perform the desired functions.
#) Integrity: Refers to the ability of the software program to provide access / deny access to authorized / unauthorized persons according to the predefined rules.
#) Maintainability: Refers to the ease of detecting errors in a fully functional program & ease of further fixing them.
#) Portability: Refers to ease by which the software can be transferred from a particular hardware to the other with different configuration.
#) Interoperability: Refers to the ease by which the program can be coupled among different systems.
8) Cost of software quality refers to the total expenditure incurred on firstly preventing the errors, secondly identifying the errors and lastly correcting these errors: Cost of quality can be brought down if the software developers are extra vigilant in developing their application and before passing it into testing phase & endeavor to ensure that the application is either free of defects or has bare minimum number of defects. However such activities aimed at preventing defects from migrating to the final product involve additional efforts & costs. This calls for added concentration on implementing effective processes of development and doing continuous improvement in them by identifying their weaknesses etc. The benefits of such extra efforts may not be immediate, however in the long run cost of software quality ought to come down significantly.
9) Cost of detecting and fixing a bug is possible to be brought down, if the bug is able to be detected during the early stages of development: As the software moves into advanced stages of its development, the cost attached to fix such bugs in it also keeps on increasing drastically. Hence practice of life cycle like testing becomes necessary.
10) Apart from testing of the software product, repeated inspections, design reviews & code walkthroughs are effective quality control measures.