Joseph Yoder – The Refactory
Rebecca Wirfs-Brock – Wirfs-Brock Associates
When developing and delivering large, complex systems it can be all too easy to focus on features and overlook software qualities or “non-functional” requirements such as security, scalability, performance or reliability. As agile spreads across your organization it is even more important to pay attention to quality concerns and coordinate the delivery of features along with necessary architecture and system infrastructure work.
As organizations transition to agile processes, Quality Assurance (QA) activities and roles need to evolve. Agile teams embrace a “whole team” approach and incremental delivery of system functionality along with system qualities (also known as non-functional requirements). This requires changes to the ways we work. Instead of gatekeepers, Quality Assurance (QA) is engaged and involved throughout development helping clarify system quality requirements and how they will be measured. Quality Control generally refers to inspection activities that occur at the end of a process.
Quality Assurance or Total Quality Control is an alternative to Quality Control which recognizes that inspection at the end is ineffective and that you can be more effective if you take a more holistic approach that builds quality into the process from the start engaging the whole team, which we call Agile Quality (AQ). Although special skills may be required to develop and test system qualities, everyone on the team needs to be focused on their delivery.