Being Agile about Qualities: Values, Practices, and Patterns
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 gate keepers, 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.
This session introduces techniques and practices for interjecting system quality specification and related architecture, design and testing efforts into your project while being more agile about it. I will present several agile techniques and practices that support the definition and delivery of system qualities. I will explore how QA, including testers, and architects can collaborate to ensure that system qualities are addressed in an agile manner emphasizing architecture capabilities such as usability, security, performance, scalability, and availability. You will get hands-on experience briefly practicing some of these techniques. You will learn options for coordinating work among teams and be exposed to techniques and practices that support the incremental definition and delivery of system qualities along with system functionality and weaving quality-related work into your projects and programs.