Day 16 of 100 Understanding and Achieving Robust Architectures

May 26, 2013 — Posted by Al Shalloway

May 17, 2013 — Posted by Al Shalloway

Continuing with the 100 Things You Must Know to Be Effective In Software Development

Many wonder how a quality architecture can be built in an large organization attempting to achieve Agile methods.  While most acknowledge big design up front (BDUF) has certain disadvantages, the design as you go approach that many espouse in the Agile community seems to have its own pitfalls and risks.  At Net Objectives we believe that both extremes – too much architecture and no architecture - are fraught with risk and waste and are to be equally avoided.  To understand what is needed and how to achieve architecture in the Agile space, one must step back and look at what architecture needs to provide to us.

Architecture, whether Agile or otherwise, needs to provide the following:

  • A vision of the context within which we are designing so as to allow different teams to stay aligned while implementing in the best way for their local needs
  • Enable extensions to the system, in particular, new concepts, technologies and scaling requirements that are discovered/demanded/required must be able to be implemented with low overhead
  • Enable new ways of implementing existing concepts (e.g., new pricing, new countries) with only the cost of the new functionality.  That is, there should not be any impact to existing functions.
  • Foster testability throughout the system – both at the acceptance level and team functional level.  In particular, new requirements should not adversely affect regression testing.
  • De-couple systems from the application.  As systems evolve, the application should not have to change merely because the system architecture does unless the changing system enables new functionality
  • Facilitate reuse of common functions across teams

Doing the above is not necessarily easy, but it is made much more possible with an understanding of:

  • how to evolve systems with emergent design
  • how to test systems at the behavioral and functional level
  • the different perspectives of conceptual Vs specification; creation from using; and system architecture from application architecture

The skill sets associated with the above are:

  • Being able to do quickly identify sets of implementations that are conceptually the same and how they relate to each other (this is readily achieved with commonality / variability analysis using the analysis matrix)
  • Pattern oriented design
  • Test-Driven Development
  • Acceptance Test-Driven Development

Agile architectures will then enable us to:

  • Inject new concepts with little to no rework
  • Add new implementations of existing concepts with only minimally affecting the existing system
  • Change the system with little risk of introducing errors and full confidence that if you do you will detect them

We would suggest the needs of Agile and non-Agile architecture are really the same, Agile architecture merely needs to evolve in smaller increments.  Architecture shifts from being this static structure that can accommodate everything to one of an architecture that can be easily modified as new information (often in the form of additional requirements) become known.

As you might guess, we have training and coaching on all of the areas mentioned above.  We are introducing an online course, instructor facilitated course as well.  If you are interested in improving the skill sets of your folks, please send me a note.

Al Shalloway
CEO, Net Objectives

 
A note on the 100 in 100 challenge: I will pick up the daily entries this week.  To be able to accommodate this with my existing schedule, I will start writing short blogs that point to other materials when available.  The intent will shift to awareness instead of trying to explain the concept. This should make it both easier for both author (me) and reader (you) to keep up.

If you liked this blog please tweet about it by clicking the icon below.

 

Subscribe to our blog Net Objectives Thoughts Blog

Share this:

About the author | Al Shalloway

Al Shalloway is the founder and CEO of Net Objectives. With 45 years of experience, Al is an industry thought leader in Lean, Kanban, product portfolio management, Scrum and agile design. He helps companies transition to Lean and Agile methods enterprise-wide as well teaches courses in these areas.



        

Blog Authors

Al Shalloway
Business, Operations, Process, Sales, Agile Design and Patterns, Personal Development, Agile, Lean, SAFe, Kanban, Kanban Method, Scrum, Scrumban, XP
Cory Foy
Change Management, Innovation Games, Team Agility, Transitioning to Agile
Guy Beaver
Business and Strategy Development, Executive Management, Management, Operations, DevOps, Planning/Estimation, Change Management, Lean Implementation, Transitioning to Agile, Lean-Agile, Lean, SAFe, Kanban, Scrum
Israel Gat
Business and Strategy Development, DevOps, Lean Implementation, Agile, Lean, Kanban, Scrum
Jim Trott
Business and Strategy Development, Analysis and Design Methods, Change Management, Knowledge Management, Lean Implementation, Team Agility, Transitioning to Agile, Workflow, Technical Writing, Certifications, Coaching, Mentoring, Online Training, Professional Development, Agile, Lean-Agile, SAFe, Kanban
Ken Pugh
Agile Design and Patterns, Software Design, Design Patterns, C++, C#, Java, Technical Writing, TDD, ATDD, Certifications, Coaching, Mentoring, Professional Development, Agile, Lean-Agile, Lean, SAFe, Kanban, Kanban Method, Scrum, Scrumban, XP
Marc Danziger
Business and Strategy Development, Change Management, Team Agility, Online Communities, Promotional Initiatives, Sales and Marketing Collateral
Max Guernsey
Analysis and Design Methods, Planning/Estimation, Database Agility, Design Patterns, TDD, TDD Databases, ATDD, Lean-Agile, Scrum
Scott Bain
Analysis and Design Methods, Agile Design and Patterns, Software Design, Design Patterns, Technical Writing, TDD, Coaching, Mentoring, Online Training, Professional Development, Agile
Steve Thomas
Business and Strategy Development, Change Management, Lean Implementation, Team Agility, Transitioning to Agile
Tom Grant
Business and Strategy Development, Executive Management, Management, DevOps, Analyst, Analysis and Design Methods, Planning/Estimation, Innovation Games, Lean Implementation, Agile, Lean-Agile, Lean, Kanban