- Quality management is an extensive and complex process. It is important to conduct quality management carefully because software quality affects development cost, timelines, revenue and investment prospects, data security, and scalability.
- Stakeholders are individuals or groups interested in product construction, operation, and expansion. They can be product owners, development teams, QA specialists, business analysts, PMs, end-users, and customers. Involving them in quality management allows for meeting project objectives, satisfying user needs, and complying with security requirements.
- It’s crucial to manage quality during all stages of the development cycle by conducting risk management, holding regular reviews, and applying testing techniques, CI/CD, and configuration management tools.
Want to know how to build secure and easily scalable software, meet stakeholders’ requirements, optimize development costs, and reduce your delivery time? Software quality management is the answer! In this article, we consider quality management best practices and the specifics of their implementation throughout the software development lifecycle (SDLC). We also offer some helpful tips and examples from market leaders that you can adopt in your development plan to achieve quality, stand out from the competition, and efficiently satisfy users’ needs.
What is software quality management and why should you be concerned about it?
To begin with, what is software quality management, and why do you need it?
Perhaps the first thing that comes to mind when you hear quality management is software testing. However, testing is only one software quality assurance method. Quality assurance (QA) is not the same as quality management.
Let’s figure out the difference between these concepts:
- Software testing is the process of evaluating a software product to determine whether it meets specified requirements and works as expected. Software testing can be conducted at different stages of the development lifecycle and includes various types of testing such as unit testing, integration testing, acceptance testing, etc.
- Quality control (QC) is an approach that focuses on identifying defects in the software product after development is completed. QC involves reviewing and testing the software product to identify any issues, bugs, or defects that may impact its functionality or performance. The goal of QC is to identify and eliminate defects before the software is released to the market.
- Quality assurance (QA) is a practice aimed at preventing defects in the software development process by establishing standards, procedures, and guidelines followed throughout the development lifecycle.
- Quality management refers to a set of techniques and tools that includes QA, but it’s more extensive and covers all elements of the software development lifecycle. This process involves systematic research, measurement, testing, and improvement of the product throughout the development cycle to ensure proper functioning and full compliance with requirements, the product owner’s goals, and users’ needs.
What benefits of software quality management make it a must for any IT project?
Cost savings. The more quality management you implement, the more you can reduce software development costs and the earlier you can detect malfunctions.
Low software product quality cost the US market more than $2.4 trillion in 2022. Coupled with a stable forecast for growth of the QM solutions market, we can conclude how beneficial such tools are for business financial planning.
Security improvements. You can achieve better data protection by addressing misconfiguration issues, conducting risk management, and following software testing practices. This advantage is especially significant for management software quality, as such products' development involves working with access levels and sensitive data. However, it is also relevant for other types of software. The example of Equifax shows how vital all of this can be. Equifax lost the personal data of 147 million users due to flaws in their software configuration and spent more than a billion dollars on improvements to cope with the consequences of this incident.
Scalability. According to the report made by Synopsys, technical shortcomings were the biggest obstacle to scaling software in 2022. You can make an application or website flexible by predicting possible errors and preventing them from accumulating through the use of software management practices.
Time savings. Implementing quality assurance techniques helps to reduce development time. Using IBM products for test management helped the largest Latin American investment bank, Itau BBA, reduce their build and deployment time by 55%.
Increased income and investment. Comprehensive quality tracking allows you to achieve a better user experience, and satisfied users lead to greater profits and make your product more attractive to investors. In addition, tracking quality will help you justify, control, and predict the outcomes of all your decisions about product modifications and expansion.
A thriving project with an expanding audience that’s based on well-founded decisions and makes efficient use of resources looks attractive to investors.
Secure, high-performance, and bug-free software will always be favored by customers. Thus, by implementing quality management in software development, you not only avoid most risks on the way to your market launch but also contribute to project expansion and increase your financial prospects.
Who are stakeholders and how does their involvement affect software quality?
Stakeholders are individuals or groups interested in the product’s construction, operation, and expansion.
They are divided into two categories:
- External stakeholders are people and organizations interested in product quality who interact with the product but are not directly involved in its development. External stakeholders can be end-users and customers, regulatory organizations, investors, and vendors.
- Internal stakeholders are people directly involved in product ideation, development, and operation. These are the founders, product owner, development team, QA specialists, business analysts, project managers, marketers, sales specialists, etc.
How stakeholders influence product quality
Back in 2020, Airbnb firmly committed to serving all stakeholders, recognizing the inseparable link between building a successful business and creating a positive societal impact. They prioritized the development of their platform based on the diverse needs of all participants. In 2023, improving services and expanding based on feedback from guests and hosts remain the company’s top priorities.
All these examples show how beneficial stakeholders’ involvement can be for business. It helps them to create outstanding product quality, offer smooth user experiences, and gain popularity and financial success. Now we will consider how to lead your software to high-end quality by involving stakeholders in software quality management.
Stakeholders’ involvement in QM processes
Each stakeholder interacts with the project from their own perspective and has unique expertise. All can be incorporated into the software quality management process in the following ways:
- Product owners oversee the development and quality management processes from planning to post-launch improvement. As the main decision-makers, they ensure the product conforms to the original idea, maintain continuous communication with stakeholders, participate in requirement gathering and task prioritization, and validate development and modifications to product components.
- Regulatory specialists can participate in risk management requirements gathering and provide guidance to the development team in terms of compliance. They can also review design documents, test plans, and validation reports to ensure they are complete, accurate, and meet regulatory requirements.
- Business analysts have all the necessary knowledge for planning product’s business model. Business analysts are crucial for prioritizing functions (determining which are more important for generating income) and software modification decisions (again, focusing on changes that lead to increased revenue).
- Project managers are involved in organizing the development process and facilitating communication between the product owner and the development team. They actively participate in prioritizing tasks, planning and scheduling quality management activities, and allocating resources and time for their completion.
- Software development engineers can contribute to software quality assurance by using a unified code style, conducting regular code reviews, and fixing issues.
- The QA team is directly responsible for planning and executing all stages of the software testing life cycle, which we will consider below. QA engineers have indispensable expertise in software quality issues. Their involvement in planning, risk management, and requirements gathering allows for creating a comprehensive testing plan, anticipating and warning of possible problems in advance.
- Independent hackers can participate in bug bounty programs as external stakeholders in software security testing. It may seem like this is only relevant for enterprise products, but we can see such programs at Grammarly, Zapier, Gitlab, and many other companies. A bug bounty program is actually an affordable option, allowing a company to save on security testing without sacrificing quality.
- Marketing and sales specialists’ involvement in software quality management can help ensure that the software meets customers’ needs and expectations, is competitive in the market, and is effectively presented to potential customers. These specialists can provide insights into the market and competitive landscape, which help define software quality goals and priorities. They also can track and report on customer satisfaction metrics related to software quality.
- Users can point out imperfections visible only from their side by taking part in A/B testing and providing your project with continuous feedback. You can use surveys, an evaluation system, and ratings of the application or site and its services to gather information about the user experience.
Based on all the examples we’ve considered, we can conclude that stakeholders’ involvement in app creation, planning, and testing is a globally used practice with proven effectiveness. Using it, the software owner can prevent extra expenses for product refinement, ensure the necessity and demand for implemented solutions, and expand the client audience.
How can you measure software quality?
We’ve described why tracking and managing software quality is important. But how can you organize and evaluate the collected information?
First, we’ll consider basic software quality requirements. These are the characteristics, features, and capabilities software should possess to meet the owner’s and stakeholders’ expectations. They include:
1. Reliability. This refers to the ability of software to perform without errors or failures within a given time under certain conditions, such as high load or network interruptions. It can be measured using these metrics:
- Defect density – the number of defects in a certain quantity of code
- MTTF – mean time to failure
- MTTR – mean time to repair
2. Performance. This reflects how well the software performs its functions, considering speed, load, and resource utilization. You can assess performance using these metrics:
- Response time reflects how long it takes to respond to a user request
- Processing time measures how long it takes to complete a certain task
- Resource use refers to how many computer resources, such as CPU, memory, and disk space, are consumed
3. Security. This quality aspect refers to the security of software against unauthorized access, vulnerabilities, and data leaks. You can assess and manage it using testing techniques, code reviews, and risk management, which we’ll consider below.
4. Maintainability and scalability. These characteristics relate to the software’s ease of support and flexibility. Here are some metrics to measure them:
- Technical debt measures how much extra work will be required in the future to fix problems caused by taking shortcuts or making compromises during development. You can assess technical debt by tracking the amount of duplicated code, the number of long methods, and instances of high code complexity.
- Code complexity is an indicator of technical debt. It reflects how difficult it is to understand and modify the code.
- Code churn is the number of lines of code added, deleted, or modified in a given period. High code churn indicates a lack of stability in the software, resulting in potential errors or issues.
5. Usability. This characteristic reflects how intuitive and convenient your product is for users. You can assess usability through surveys and testing techniques. You can also use the following tools:
- Analytic tools such as Google Analytics and Mixpanel
- Usability testing software such as Optimal Workshop and Loop11
- User testing platforms such as Usertesting.com and UserZoom
6. Compatibility. This is the ability of software to correctly integrate with all required platforms, hardware, and software systems. It is assessed through testing using such tools as VirtualBox and VMWare, Sauce Labs, and BrowserStack.
We have considered the main software quality criteria and how to evaluate them. Next, we will move on to core aspects of the quality management process, such as the specialists involved and the activities it includes. We will also describe the structure of quality management and algorithms for its implementation.
Software Quality Management across the SDLC
Quality management is a much broader approach than testing. Therefore, it’s vital to apply software quality management techniques from the very beginning of project development — not only at the testing stage. This is the principle behind Agile app development, which is utilized by the vast majority of software engineering teams.
Since there are plenty of quality management techniques, it can be challenging to understand which to choose to develop an MVP.
To save you time and avoid confusion, we’ll cover the best QM and QA practices and tools for each phase of the software project development lifecycle.
Forbes Council Member has named 16 main challenges for software on the way to success. Almost all of them, in one way or another, relate to a lack of software quality management at the planning stage.
To avoid the accumulation of problems at further stages of development, you need to:
1. Specify a business idea. Choose your business niche and product type (website, mobile application, PWA, multiplatform software, etc.) and clearly form its unique selling proposition — something that differentiates your product from competing solutions. It can be a unique feature, better pricing, or a more user-friendly interface.
2. Choose a software development partner or set up an in-house team. Outsourcing is more cost-effective, as you get a well-established experienced team with no need to organize the teamwork yourself. However, this cooperation model has potential problems related to communication quality and the product owner’s ability to control the development process. When considering a potential partner, it’s worth paying attention to their portfolio, previous clients’ feedback, methodologies, and techniques. Reliable outsourcing companies should also have clear terms of cooperation with well-defined zones of responsibility.
3. Form an app development business plan. Develop a detailed plan that outlines your target market, pricing strategy, marketing plan, and financial projections.
For the planning stage to be successful, it is necessary to involve stakeholders (who we have already mentioned). In addition, you can seek advice from professional teams with experience in similar business areas and software types. They can advise you on forming a software development team structure, defining your product’s USP, and analyzing a potential client, their pain points, and ways to solve them.
Requirements elicitation and risk management
A study by Deloitte states that 64% of software development errors originate during the requirements formation and prototyping stage.
We will describe how to pass the requirement elicitation stage in a way that minimizes risks of future malfunctions, errors, and problem accumulation.
The main goal of the requirement elicitation and risk management stage is to form a software requirements specification (SRS) document, which will serve as the foundation for further development stages.
Software requirements specification
Requirements are needs and constraints that a software product or system must meet. You should cooperate with stakeholders and use data collected during the planning stage to gather requirements.
Requirements are divided into two main categories: functional and non-functional.
- Functional requirements refer to product features and capabilities necessary to achieve the software’s goals. These capabilities include user interfaces and interactions, data storage and retrieval, processing and computation, output and reporting, and integration with other systems.
- Non-functional requirements, in simple words, mean how required features should work. They include performance requirements (speed, scalability, capacity, and response times), usability requirements (ease of use, user interface design, and user experience), reliability requirements (uptime, availability, and fault tolerance), and security requirements (access control, data protection, and compliance with industry requirements).
The key to reliable and high-quality software requirements documentation is clarity, consistency, measurability, and traceability. Also, all requirements must be testable, validated, and maintained. Here are some tips on how to achieve this:
- Involve stakeholders. As already indicated, it’s necessary to create a document that clearly states all requirements to ensure proper software quality, cost efficiency, and a satisfactory user experience.
- Create the requirements traceability matrix (RTM). This is essentially a table containing all requirements, their description, status (implemented, completed, or tested), and their dependencies and priorities. In addition, it contains data about the issues, testing process, and results. It also states which requirements are covered by which tests. The requirements traceability matrix is a great tool to avoid misinterpretations in the team and ensure compliance. In the case of small or midsize projects, a simple RTM will suffice. Applying more complicated options for projects of this scale can be too time-consuming, but it is indispensable for large software products. That’s why Apple, Intel, IBM, HP, Google, Microsoft, and many others use RTMs with advanced functionality, requirements management tools, and integrated development environments.
- Use software quality management tools like IBM Rational DOORS, Polarion, or Jama Connect if your project is complex or large-scale. They will help you control the quality of software during all SDLC stages. These tools have advanced capabilities for requirements analysis, formation, and management that are helpful for avoiding confusion and inconsistencies between stakeholders on sophisticated projects.
After gathering and prioritizing technical requirements, you can move to risk management. This is the process of identifying, assessing, prioritizing, and controlling risks that can impact software quality. Risk management includes several stages:
1. Identification. Analyze technical requirements, market conditions, regulatory issues (if this is relevant to your business niche), and competitors’ products to determine potential risks to the proper functioning, security, compliance, and user-friendliness of the future software. Brainstorming, consultations with business analysts and technical specialists, and SWOT analysis (strengths, weaknesses, opportunities, threats) can be extremely helpful for this.
2. Assessment. You need to assess the probability of risks and their potential impact, prioritize risks, and develop a plan for their mitigation. Tools like IBM OpenPages will help you with this.
3. Mitigation. This is a strategy of coping with risk. There are five strategies your team can choose from to approach identified risks:
- Avoidance. You can replace technology that may create certain malfunctions or doesn’t work well with the type of product you develop.
- Reduction. You can take precautions to reduce the likelihood of the occurrence of the problem or related consequences.
- Transfer. For example, you can transfer responsibility for related risks to your technical partner by outsourcing all or part of the development.
- Acceptance. In a situation where the use of resources for risk management is not expedient (for example, in case of limited time or budget, or a low probability of a problem occurring) it can be appropriate to simply accept the risk and not manage it.
- Сontingency planning. There is always the possibility of unexpected risks. By preparing a plan B in advance, you can significantly reduce the negative consequences in case a potential risk is realized.
4. Monitoring. After identifying risks and choosing mitigation strategies, you need to monitor those strategies to ensure that they are effective in reducing the risk to an acceptable level.
Design is usually associated with a beautiful, stylish image. It may seem impossible to evaluate it objectively. However, there are clear quality requirements for software design that are obligatory for achieving high prototyping quality.
- Functionality. Software design must meet the product’s technical requirements, reflecting its functional features.
- Maintainability. Software design should meet budget limitations and align with the development team’s capabilities for the proper completion of the following startup phases. The design should allow for modifications in functionality and allow the software to scale. These can allow you to prevent performance issues and the need for a redesign in case of the project is extended.
- Usability. Software design should be easy to understand and navigate. It should also involve consistent user interactions to provide a smooth and convenient user experience.
- Compatibility. Software design should be responsive, user-friendly, and display correctly on all software and hardware your product interacts with. It should work consistently with databases, web servers, or other application programming interfaces (APIs).
It doesn’t matter whether you hire a designer as part of your in-house engineering team or choose an offshoring development company with an external UI/UX specialist — these tools and techniques of quality management will help you control the quality of your prototype:
- Design guidelines. These are a set of recommendations or rules that provide guidance on how to create visually appealing and user-friendly designs. Usually, they are used to develop large and complex products, but they are generally useful for projects of any scale and focus. For example, all product owners follow Apple’s Human Interface Guidelines for apps published on the iOS platform. You can use ready-made guidelines such as IBM Design Language to save resources while obtaining quality standards that will help you attract customers by creating well-structured and intuitive interfaces.
- Design reviews. Conduct design reviews regularly during meetings, with the involvement of all stakeholders. You can use tools like Figma, Sketch, or InVision to conveniently involve stakeholders in design validation.
By following the software design requirements, using guidelines, and conducting regular reviews, you can provide your product with a reliable, flexible, and clearly defined foundation for further development.
Development best practices
Now, let’s focus on software quality management approaches, which are essential during the development phase. To organize development processes on your own team or to balance outsourcing benefits and risks if you hire dedicated developers, apply these techniques, tools, and methods:
- Code style. This is a list of code formatting requirements that are standard for a certain product. It serves to improve code comprehensibility, reusability, and debugging.
- Code review. This is the process of auditing code to identify syntax errors, potential security vulnerabilities, poor coding practices, or other issues that could impact code quality. Code review techniques include:
- Pair programming, which involves two developers working on the same part of the code. This technique is very time-consuming and laborious, which is why it’s not as common as the following two options.
- Automated code analysis is performed using customizable software tools such as SonarQube or CodeFactor. It can be a good addition to other review techniques, but it’s not a standalone solution. It has limited capabilities, as it checks only programmed errors and can’t allow for comprehensive evaluation of the code base.
- A peer review is essentially a code check by another programmer (or several). This is the most popular solution, as it does not take as many resources as pair programming and allows reviewers to evaluate the code comprehensively, considering the context and product requirements. This technique may involve one or more iterations and should be applied regularly to avoid the accumulation of errors.
- Version control systems can ensure tracking and control of changes during the development process. Examples of version control systems are Git, Subversion, and Mercurial.
These techniques have become must-haves for many teams, helping them to prevent the emergence and accumulation of problems during the development phase.
Software testing plays a crucial role in ensuring product quality.
Spotify explored that 44% of their software incidents were preventable and caused by flaws in the testing and notification process. They were able to reduce this percentage by prioritizing bug research and testing. Just imagine how much you can improve product quality by applying quality assurance best practices! Let’s consider this in more detail.
To begin with, we will consider testing techniques:
- Unit testing focuses on the smallest testable pieces of code, evaluating them in isolation to verify their correct functioning before integration into the entire product.
- Integration testing involves testing several components together to assess whether they interact correctly.
- Functional testing aims to evaluate if the software provides the specified functionality.
- Regression testing is performed after making changes to the product, including bug fixing. Essentially, it is a repetition of previously conducted testing activities. Its purpose is to check whether fixes or changes have had unintended effects on previously working components.
- Performance testing is necessary to check how the software performs under different conditions, such as a large number of users or with a large amount of data.
- Security testing aims to check the reliability of software against unauthorized activity and data leaks.
- Smoke testing focuses on evaluating key product features. The QA team applies it at the beginning of the software testing process. If the product passes smoke testing, it is worth moving to a more detailed inspection.
These are just a few testing techniques commonly used within the software testing lifecycle. To form a set of testing techniques required for evaluating your product, take into account its features and business niche as well as your timeline and budget limitations.
Now, let’s figure out how the testing process works. The software testing lifecycle involves several stages:
- Requirements analysis from the QA side еnsures that the requirements are clear, testable, and align with the desired quality standards.
- Planning includes consideration of test management strategies and estimates.
- Creation of test cases that demonstrate testing data, an algorithm of actions, and expected results ensures that the testing process is systematic and well-documented.
- Environment setup ensures that test results are relevant and allows testers to reproduce the exact conditions in which software will operate.
- The execution stage includes conducting all chosen testing techniques, tracking the results, and documenting them for further reporting by QA engineers.
- Cycle closure involves a general evaluation of testing and making a closure report. The data received from this report must be analyzed by the development team and stakeholders. Based on it, they can conclude if the product is ready for further development stages or needs additional changes and testing.
With all these techniques and tools in your arsenal, you can approach quality issues comprehensively, controlling problems with code quality and effectively detecting dysfunctions by examining the code base during the software testing lifecycle (STLC).
In simple words, deployment is the process of preparing and launching a product to the market, where it becomes available to the end user.
Deployment can involve several steps, including installation, configuration, data migration, testing, and training. You need to test the software in a development environment to ensure it will work properly in production. This process requires close collaboration among developers, testers, system administrators, and other stakeholders.
Quality management techniques will help with the main challenges of the deployment process: inconsistency, human error, and configuration issues.
- Firstly, through automation. Continuous integration and a continuous deployment approach will help to automate deployment and avoid errors and inconsistencies. This technique involves automated integration of code into a shared repository after development and testing, followed by automated deployment. Thus, the entire team and the product owner are aware of all changes, and the deployment process is faster and comes with a lower probability of human error. The most popular CI/CD products are Jenkins, GitLab, and GitHub Actions.
- Secondly, through configuration management. Containerization tools like Docker and Kubernetes allow you to deploy software in individual containers. With built-in version control, configuration validation, and templates, these software quality tools will keep your project from experiencing configuration issues.
Other advantages of containerization include:
- enhancing security and reducing the impact of errors through container isolation
- saving on server power thanks to lightweight containers
- ease of scaling and modifications
After the market launch, STLC continues with a new iteration that includes the same stages as the first. Your main tasks as a business owner are gathering feedback from early users (you can conduct analysis through services like Google Analytics, Mixpanel, and UserVoice), maintaining the application, and scaling it. Each subsequent iteration involves modifications, which means the software quality management techniques mentioned above are still relevant at the maintenance stage.
When planning to develop software from scratch or introduce significant changes in an existing project, consider software development consulting. It will give you a competent view of your project and valuable advice from an experienced team. It will also save you money, time, and effort on development and quality assurance.
The importance of quality management in software engineering is difficult to overestimate. It helps you save your budget, reduce the time to market, and make your software easily scalable and flexible.
Quality management encompasses more than just testing. It is a comprehensive and intricate process that requires careful planning and involves engaging stakeholders to ensure the product aligns with expectations, satisfies users’ needs, and meets security requirements.
It is crucial to prioritize quality throughout the development cycle, from initial planning to the post-launch stage, to achieve high-quality software.
By considering this information along with tips for every development stage and incorporating quality management practices, you can create the perfect recipe for a top-notch product that will lead your business to success!