Software quality is an important aspect to consider when developing software. The quality of the product depends on both the processes and products.
Perceived quality is usually what a customer experiences when using a product, while the internal quality might not be perceived. There are several schools of thought depending on the type of model used.
Schools of Thought
The three dominant schools of thought in Software Quality Models are:
Static Precision is linear in its approach of having a predefined set of critical parameters for software evaluation. This school of thought focuses on the development process.
The program’s structure is evaluated to see if there are critical sections of code that are not accessible to the public. There should be no critical information in the program, which is not visible to users.
The design aspect determines if there are any critical parts of data structures hidden from the user. The design part also ensures that if there are multiple users, they need to be authorized before accessing critical information in the program.
This school of thought evaluates if all access is stopped when an exception occurs– all exceptions and errors in the program should be handled and processed.
This school of thought ensures that all critical parts of the program are assigned a higher priority.
The Dynamic Empirical is also known as participatory testing. It tests software while during development rather than after the software development.
This method of evaluation ensures that the product delivered by developers meets customer requirements and expectations. The tests used for this school of thought need to be effective in finding bugs and errors.
This school of thought evaluates how well the tests are conducted. The structure of the tests needs to be appropriate to test for found bugs– if they are critical or not. There should be a method for keeping track of all discovered flaws and problems.
This school of thought focuses on how well tests are designed to find issues with each priority level.
This school of thought evaluates the activities after reporting and tracking bugs– whether or not critical issues are tracked, fixed and reported to the customer.
This part also ensures that all test results are correctly reported to different personnel involved in testing.
Dynamic Pragmatic is also known as evolutionary testing. It ensures that the testing is conducted as close to end-users as possible and that the issues are resolved quickly and accurately.
Issues with high impact need to be resolved first before testing is allowed to continue; lower priority issues can wait until later in the process.
This school of thought evaluates how well each module is tested and the coverage achieved.
The structure of this evaluation method includes a timeline for all tests completed, with clear marks showing which of those tests were successful or unsuccessful.
This school of thought looks into what tests were applied and how they were applied. All tests need to be documented and reported along with their results.
This school of thought evaluates the activities done after test execution. It ensures that issues found in testing are tracked and reported to management.
It also ensures that all test results are correctly reported to responsible personnel.
The Main Models Of Software Quality
Functional Model Quality Assurance (FMQA)
This model evaluates how well the product meets what it is intended to do. The focus should be on the intention of each requirement that has been achieved.
This part examines any errors in coding, design and architecture issues that lead to the failure of meeting requirements.
Non-Functional Model Quality Assurance (NFMQA)
This model evaluates how well requirements are met. It looks at elements like reliability, usability and compatibility.
The emphasis is on whether or not the criteria for each component have been met.
Structural Model Quality Assurance (SMQA)
This model evaluates the structure of how software elements are organized, structured and configured.
It ensures that hardware, operating system and programming language requirements are met along with all architecture components.
It is worth noting that there is no one correct way to do software testing; each method has its own benefits and drawbacks– take the time to learn about all models and choose which one works best for you.