When talking about software quality assurance, it is beneficial to talk about the history of quality assurance and how we have come to use certain methodologies, such as Agile and Waterfall, because, in many ways, the failures and successes of the past have had an impact on our perception of quality today.
Quality has always been something society has strived for since ancient human civilization. It can derive back as far as specifications for buildings in ancient Greece to the Egyptians building the pyramids. For the sake of quality in products, the principles seen in modern quality assurance first came prominent with guilds in the Middle Ages. Guilds were formed in part to build a standard of quality dictated by monarchs for certain trades, such as, blacksmithing. Goods would be inspected by other guild masters to ensure that a standard of quality was maintained by members within the guild. In addition, you could not officially master a trade until you had created a masterpiece of a particular quality.
Guilds lasted until the late 19th century, and dissipated, at least in part, due to the Industrial Revolution. The guilds hindered free trade, so they were done away with almost completely.
The Industrial Revolution started the modern ideology of quality assurance. Instead of skilled craftsmen joining guilds to make a living, these craftsmen had to work in factories. This was due to the methods prescribed by Frederick Winslow Taylor. Taylor was an American mechanical engineer whose ideas pushed the methods of efficiency and productivity in manufacturing. These methods included training employees rather than having them train themselves, implementing and enforcing stringent documentation and protocol based on scientific study, and dispersing work equally among workers and managers. This philosophy became known as scientific management.
From the methodologies of scientific management came the work of Walter Shewhart, who, in the 1930s, improved on the system Taylor had made famous. Shewhart was an expert in quality at Bell Labs and saw that there was a growing need for quality improvements. He introduced the use of plan-do-study-act (PDSA) in the development process. It was this system that first introduced cycles for increasing quality.
After WWII, General MacArthur worked to prop up Japan after their defeat. With the help of a man named W. Edwards Deming, the idea was to make Japan an industrial force. Due to his work, which led to an increase in factory efficiency and quality, Deming is considered a hero in Japan. Contrary to previous methods, the idea was that more time would be focused on the quality of products instead of worrying about the total cost.
Due to this improved version of the PDSA model, especially in the auto industry, customers started choosing to buy products from Japan over the United States due to the recognizably higher quality of product.
Deming was a strong advocate for PDSA and arguably the beginning of iteration development, much like, Waterfall and Agile. It is important to understand that Deming realized that there was a conflict between hard work and smart work. Instead of working harder to produce more, Deming felt his methods of QA would lessen the workload and therefore save money and time by analyzing and documenting all aspects of the development process.
In short, PDSA led to iterative and incremental development (IID), which in sequence led to the Agile software development processes we see today. The first example documented in a development process was by the project team made up of Mike Dyer, Bob McHenry and Don O’Neill at IBM. (Note that this was not the first use of iterations, but rather the first well-recognized use of IID in a project.)
The project consisted of more than a million lines of code. This was the command and control system for the first U.S. Trident submarine and the project required a tremendous amount of work be done in a very small amount of time as stated in contract by the U.S. military. No wonder the process focused more on customer involvement and less on time consuming documentation and protocol standards.
The team met the deadlines and the product was a success. This was the first time that short iterations with less emphasis on documentation were proven to work. If a total quality management approach had been in place, we could argue that this project would never have been completed.
This is why we see two different types of development methodology today. Waterfall development’s emphasis on documentation and spending more time to perfect the code, while Agile was built upon the success of quick sprints, such as in the case of the Trident submarine command and control console. Both models have their advantages and disadvantages, but it is most important to understand that each of these ideas was created from the successes and failures of previous projects.