Duration: 1 to 2 days
Recommended Class Size: 20 to 30
Prerequisites: The need for more reliable practices.
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 workshop 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 at 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".
- How to overcome barriers between QA and agile teams?
- How to structure Agile Teams keeping the focus on quality?
- When to focus on important qualities of your organization?
- How to integration Quality into your agile process?
- Ways to find and describe system qualities for agile teams.
- Ways to measure System Qualities and to make them visible to the agile team.
- Overview of different Testing Strategies for System Qualities.
- Ways to improve and sustain your agile practices with quality.
This course is adaptable based on the needs of the client and can accommodate up to thirty people, some parts of it are intended to get the team working collaboratively. This can be followed up with a few days of mentoring/consulting working with teams so they can start integrating these ideas into their systems.