Creating Lean and Agile Software Architecture

“The lean and agile way of developing software architecture” has been my primary area of study for some time. I have been doing research study on this area and developed significant understanding of what researchers and practitioners of agile software development and software architecture have to say about this challenging subject which has been mostly ignored by lean and agile gurus and coaches in their expression of agile methods and principles.
 
 Many extreme agile practitioners and thought leaders discard any form of architecting activities in agile environment. They believe that software architecture emerges as result of incremental and iterative designing and implementation activities of teams and can be re-factored to the desired structure incrementally throughout the implementation cycle. This group of agile practitioners views all upfront architecture and designing activities as waste, documentation-intensive and high ceremonial activities which slow down the early valuable delivery to customer and reduce capabilities to respond to changes. They embrace principles of ‘YAGNI thinking’ (You aren’t gonna need it) to extremes, and controvert any upfront architecture-centric work during software development.  
 
On the other extreme are those ‘software architecture perfectionist’ and agile phobic groups who believe that software architecture in large and complex systems requires extensive, careful planning, upfront decision making, deep analysis, synthesis, centralized evaluation and it cannot be left to iteration teams to make those critical architecture decisions during their daily design and implementation activities. They are skeptical about the effectiveness and reliability of agile methods to solve software architecture problems. They are uncertain and fearful about the changes agile practices are bringing to their traditional and centralized software architectural practices of ‘big upfront design’. How often have we heard this in skeptical scrum team?  –  “Agile says no to architecture and design, so we did not do any at the start of the iteration. There would have been less re-work and no re-factoring issues if we had designed it all upfront”
 
As lean and agile approaches mature in handling software architecture in complex products, there is strong realization and need for complementary approaches to blend software architecture and iterative lean and agile software development activities by principles and practices for better quality software products and processes. Especially, large and complex software system development teams have realized that efficiencies, flexibilities and reliabilities of agile methods have to work in synch with effectiveness and elaborate details of established software architecting practices, which reduce cost and time, and provide an integrated and structural approach to software design and development. There is a need to architect solutions which embrace change, and design them within an incremental, iterative and shared framework to incorporate continuous feedback from all stakeholders. This means, software architecture has to be agile by its ‘form’ (structure) and by ‘process of architecting’. A shared, and consistent understanding of software architecture need to exist in different agile teams to realize agile architectures. Lean and agile methods can no longer ignore the software architecture aspects and there is immense need of a unified , collaborative and coexisting approach to architecting and designing lean and agile software. 
 
I plan to present my thoughts in a series of following upcoming blog posts:
 
  • Integrating software architecture with Lean and agile software development principles and practices.
  • Lean and agile software architecture by form and structure.
  • Lean and agile software architecting process
  • Differences between traditional and lean&agile software architecting.
  • Who are agile architects and what do they do differently
  • How lean and agile principles guide software architecture?
  • Tools, techniques and artifacts for agile and lean software architecture. 
     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s