Introduction
The engineers worldwide were working around the clock as the economies struggled with a trivial yet powerful software bug. Y2K, also known as the millennium bug, was the computer’s inability to differentiate between the years 1900 and 2000. Back in the 1960s, storage and memory were expensive commodities. Hence, programmers use the last two digits of the date to represent the Year.
For example, the Year 1996 was stored as 96. That means the system will store the years 1900 and 2000 both as 00. The banking industry was in chaos as the y2k problem would calculate the interest rate for a thousand years instead of a single day on December 31. Transportation and power plants would be severely affected as a miscalculated date could disturb the maintenance checkups and put the environment at risk.
The purpose of introducing you to the Y2K bug was to make you aware that software engineers are responsible not only for developing software but for maintaining it and looking after potential problems as well. Ensuring good practices in the Software Development Life Cycle and monitoring strict quality checks is essential and is rigorously practiced.
In the traditional model of software development, i.e., the waterfall model, first the software (or for the sake of simplicity, consider that a program) is first developed, and then testing happens. While this may seem appropriate and systematic, the major drawback was the late identification of bugs and potential problems. Corporates now prefer Agile Methodologies for software development, wherein continuous and rigorous testing along with development takes place. A strict check on the overall quality of the process and the final product is done.
To understand the Quality Aspects of a Software Product and Software Quality Assurance, read out the full blog.
Quality Assurance
Quality refers to measurable characteristics such as correctness, reliability, durability, portability, reusability, testability. It’s all about meeting the requirements for the product’s functionality, design, accuracy, and reliability. Assurance is a positive declaration of a product or a service. It can be considered as a sort of guarantee that the product will work well.
Software Quality Assurance(SQA) is defined as the procedure to ensure that the software product or service provided to the customer by an organization meets the standard and is well conformed to the requirements. It is an umbrella activity that is applied throughout the software development life cycle.
IEEE defines SQA as
“A planned and systematic pattern of all actions necessary to provide adequate confidence that an item or product conforms to established technical requirements. A set of activities designed to evaluate the process by which the products are developed or manufactured.”
It may seem that it is all about the evaluation of Software, but it also includes the quality of the process used to develop, test, and release the software. SQA incorporates all software development processes starting from defining requirements to coding until release. Its prime goal is to ensure quality.
It has the following Activities:-
- Process definition and Implementation
- Auditing
- Training
A process could be a software development methodology, project management, requirements development, software design, software testing, and configuration management.
So now you have a little bit of understanding of Quality Assurance, now let’s look at the Quality Attributes on which a software product is being examined.
Attribute | Explanation |
Reliability | The ability of a system to continue to keep operating overtime under specific conditions is called Reliability. |
Functionality | The software must provide appropriate functions as per the requirements, and the software should interact effectively with other components of the system. |
Usability | The quality of the software is also defined by the ease of its use, how easily a user can understand the functions of the software, and the efforts required to follow the features. |
Efficiency | Following good practices when designing the architecture of the product and writing clean, well-tested code makes an efficient software product. |
Maintainability | It is defined as the ability of a software application to maintain and support new changes effectively. |
Portability | Portability refers to how quickly a system adapts itself to changing environments and specifications. It is also determined by how easy it is to install the software and how easy it is to replace a component. |
Apart from the six components mentioned above, other components such as Scalability, Testability, Flexibility, Supportability, Interoperability, and Performance are other important attributes on which a software product is being examined.