Disruptive change at an ever increasing pace is the order of the day. Advancements in technology provide exciting opportunities for businesses to know their customers and their competitors better, engage their customers in new and better ways, dramatically reduce operating costs, quickly bring innovative products and services to the market and in general respond to market dynamics with agility.
However, these same advancements also increase their exposure to the risk of failure from quality issues, real or perceived, in their products and services.
How are these products and services conceived, designed, developed and delivered to their customers? The truth is that much of it is enabled by software-intensive systems. It isn’t much of an exaggeration to say that businesses are run by software these days. Heck, the world is run by software these days! Therefore, the significant influence software quality has on the success of a business cannot be overstated. It is obvious that there is wide recognition of this fact among technology and business leaders –the share of IT budget allocated to quality assurance (QA) has been steadily increasing in recent years, from 18 percent in 2012 to 26 percent in 2014 according to World Quality Report 2014-15.All that money being spent doesn’t necessarily mean that managing software quality has got any better or easier. On the contrary, achieving quality is becoming increasingly challenging these days. Some of the major reasons are:
• End user expectations on quality are high-sky these days, spoiled as they are with the many conveniences and powerful capabilities that technologies such as social, mobility, analytics and cloud have enabled them to have.
• The inherent nature of software makes managing its quality really difficult – you can’t see it, you can’t touch it; its quality attributes are not as simple or tangible unlike for a physical product such as a gearbox.
• Modern enterprise applications are highly complex. They are usually highly interconnected with a web of other applications, and the components that make them up tend to be highly distributed. They could be hosted in-house or on an external cloud. You have little control over many of the factors that influence the quality of such software.
• Enterprise software is increasingly being developed by an outsourcing partner or bought from the market and customized or integrated with other systems. Agile development practices are commonplace these days, which means self-managing teams, blurring of boundaries between project roles, and a highly iterative development process that multiplies the chances of errors. It’s hard to manage the quality of software that is put together under environmental factors that are not within your direct control.
• There is constant pressure to keep costs low while accelerating time to market. This raises the question of how much money and time you can afford to spend on assuring quality, especially when you are not quite sure how effectively that spend is being utilized and what you are going to get in the end from it.
• A holistic approach to software quality management is missing. You rely too much on testing, which happens after defects have already been introduced into the product, in an attempt to “control” quality by finding and removing the offensive “bugs” from your software rather than trying to prevent them in the first place.
• Metrics related to quality are poorly understood or wrongly used. To take decisions on how much to spend on quality and whether or not to proceed with the deployment of an application to production, you need quantitative information you can rely on and the skills to analyze and generate meaningful insights from that information. Many companies lack in both. Jay Nair Quality Management of Software in the Modern Enterprise – Challenges and Solutions
• Effective use of automation for software quality management is not yet a reality. Is automation all that important? Oh yes, it is! When there’s a lot you have to do to assure the quality of highly complex software that is undergoing repeated cycles of changes within shrinking schedules, you just cannot get to all of it through timeconsuming, error-prone manual processes. Need another reason? Automation of IT processes, including those for software development and deployment, has been gathering momentum in recent times, and as the speed and efficiency of these processes improve, you need similar performance from your quality management processes as well, which can be achieved only through automation.
So what do you do about these challenges? A few recommendations for the CIO for starters:
• Make it clear, in no uncertain terms, that quality is top priority. Publish a quality policy and quality goals for your organization.
• Make quality everybody’s business, not just that of your QA department. This may need a big change in mindset. Enablement, encouragement and enforcement may be needed in various measures!
• Be smart about the use of quality metrics so you don’t have to fly blind. Hold your managers accountable for metrics based decision-making.
• Invest in automation. I have explained above why it is important. It will fetch you returns over and over again that more than make up for the upfront investment (provided you do it right).
The good news is that things are changing for software quality management. Not only is there an increasing acknowledgement of its importance by top executives and a corresponding increase in spend, there are also innovative solutions appearing in the market that leverage advancements in technology to address many of the challenges discussed above. These include tools for integrated test management, code reviews, cloud based mobile testing, Continuous Integration, Service Virtualization, test lab management and the like. A capable software quality management system will have to bring together a number of these tools and integrate them effectively into your software development process infrastructure. You can’t buy it off the shelf; you will have to build it yourself or work with a consultant who can help you with it.