People rely a lot on software these days. This makes quality a vital aspect for any software product. To avoid making mistakes that compromise quality, Software Quality Management (SQM) is essential. The main duty of SQM is to assure that the product is strictly following quality regulations and customer needs. Job of SQM does not end with the quality checking process. They also have to ensure the security of the product.
Let’s see the process involved in SQM and the factors affecting it,
Process Involved in Software Quality Management
Duties of a Software Quality Management team can be dived into three:
• Quality Planning: – This is the first process of SQM. Proper planning as well is discussions are the forte of this session. The standard determinations, as well as the means for it, are also discussed in this process.
• Quality Assurance: – Quality planning is the main input of this process. Keep the standards and plan derived at the quality planning session in mind. The team evaluates a project strictly and makes sure that the development team is following the standards and implementing it in to the software.
• Quality Control: – Quality control makes sure that the final product has met all their standards criteria and is devoid of any flaws. Series of tests are done by the team to check and counter check the software and if there is any issue, it will be sent directly back to the development team again.
There are certain non-functional factors which have a direct impact on the quality of software. Here they are.
• Efficiency: – Software is said to be efficient if it uses computing as well as the storage facility effectively. To achieve efficiency, Software Quality Management has 5 techniques to assist them. They are:
• Programming language
• Operating System (OS)
• Access Strategies
• Programming techniques
• Maintainability: – It simply means how well the software can be maintained as well as tested and how cost effective it is. Maintainability can be perfected in the software by good interface definitions as well as documentation.
• Flexibility/Extensibility: – Software can be deemed as flexible if it can be modified without damaging the actual texture of it. Meanwhile, Extensibility, as the word suggests, is the ability of software to add functionality without any kind of irregularities to the normal working process of the software.
• Portability and Compatibility: – Compatibility of software is a term used to define the ability of it to run on different platforms. The word platform in this context is not just confined to the OS (Operating Software), but also certain software that use browsers to run. In short, the word compatibility in this context has broader aspects to it. Portability of software means how easily it can be shifted from one environment to other. For instance, software which works on the Windows XP platform should be able to install and perform well in the higher versions.
• Reusability: – Sometimes it would save a great deal of time as well as money to use certain component or programs of software in another after making modifications. This ability of software to reuse existing components to build something entirely different or even bigger is called reusability.
• Integrity: – Integrity of a software (Applies mostly to network-based software) means how secure it is and to what extent it will restrict permissions to unauthorized access.
• Interoperability: – It means the heterogeneity feature of software. To be precise, Interoperability of software means its ability to communicate with other software through shared data. This particular feature of software has earned developers a lot of success when it comes to development.
• Security: – Security might be one of the most used words when it comes to software in 2017. Millions of people are now accessing software from numerous locations all over the world. Obviously, there will be people who are trying to steal information and money at the same time. Well secured software means it will not have any loose entry points (authorizations, authentication, network attack protections, data encryption, also possible security leaks etc.).
• Testability: – It means to what extent a software can be tested. Testing and quality of software are directly proportional. So such characteristics of software need to be thought, planned as well as executed at the beginning stage itself. If software has a shabby complex design, it will be hard to test.
• Well Documented: – Documentation when it comes to software means mostly written tests or even an illustration which helps users understand the software elaborately. Well-documented software helps users access it without any trouble. Attributes of a well-documented software includes:
• It should suit user needs
• Easily accessible information
• Technically accurate
• Grammatically accurate and has a consistent style.
• Functionality: – Functionality of software refers to the ability of it to function exactly to the design specifications.
• Correctness: – Correctness can be referred to how well the software sticks to its specifications so that users can interact with it. Software is said to behave correctly if it serves it purpose without any kind of abnormality.
• Accessibility: – For a user, the UI (User Interface) is his window to software. Hence the software ought to cater to the needs of all kinds of people, including those with disabilities. In short, UI should be attractive yet simple.