When developing and delivering large, complex systems it can be too easy to focus on features and overlook software qualities or “non-functional” requirements such as security, scalability, performance or reliability. As organizations transition to agile processes, Quality Assurance (QA) activities and roles need to evolve. Quality Assurance (QA) is engaged and involved throughout development helping clarify system quality requirements and how they will be measured; a more holistic approach that builds quality into the process from the start.
Maximum number of participants: 30
Target Audience: Architects, Developers, QA, Managers
Prerequisites: Agile principles and enterprise-scale agile, Quality assurance and software and systems architecture
Being Agile, with its attention to extensive testing, frequent integration, and focusing on important product features, has proven invaluable to many software teams. When building complex systems, it can be all too easy to primarily focus on features and overlook software qualities, specifically those related to the architecture. Some believe that by simply following Agile practices — starting as fast as possible, keeping code clean, and having lots of tests — a good architecture will magically emerge. While an architecture will emerge, if there is not enough attention paid to it and the code, technical debt and design problems will creep in until it becomes muddy, making it hard to deliver new features quickly and reliably.
It is essential to have a sustainable architecture that can evolve through the project life-cycle. Sustainable architecture requires ongoing attention, especially when there are evolving priorities, lots of technical risk, and many dependencies. This talk presents a set of patterns that focus on practices for creating and evolving a software architecture while remaining Agile. These practices include a set of tools that allow teams to define “enough” architecture in the beginning of the project and to manage the state and the evolution of the architecture as the project evolves.
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. We will present several agile techniques and practices that support the definition and delivery of system qualities. We 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.
I have been innovating, collecting and writing on the best practices and patterns on this topic over the last several years. During this time I have given presentations, workshops, and keynotes at various conferences and in an industrial setting and published (and continuing writing and collecting) over two dozen patterns on this topic. I have recently worked with organizations on the best practices for Agile Quality Assurance and also shepherded Agile Experience reports on the subject. I received the New Directions award with a colleague at Saturn, given to the presentation that best describes innovative new approaches and thought leadership in the application of architecture-centric practices for the topic "QA to AQ: Shifting from Quality Assurance to Agile Quality".