What would you like to hear ?
• Agile for Architects
• Architecting Agile Applications
• Agile Architecture
• Architecting for Application or Enterprise applications
Agile
Agile Development focus on delivering continuous Business Value.
Is Iterative, Incremental and Evolutionary
With Efficient and effective communication
Short feedback loops and Adaption cycles
Built-in quality and early risk reduction
Definition of Architecture
Software architecture refers to the fundamental / high level structures ofa software system, the discipline of creating such structures, and thedocumentation of these structures. These structures are needed to reasonabout the software system. Each structure comprises software elements,relations among them, and properties of both elements and relations, alongwith rationale for the introduction and configuration of each element.
Software architecture is about making fundamental structural choices whichare costly to change once implemented.
Source : https://en.wikipedia.org/wiki/Software_architecture
Definition of Architecture
“Everything that is expensive to change”, Martin Fowler
The architecture defines the parts of a system that are hard and costlyto change. Therefore we are in need of a clean, simple, flexible,evolvable, and agile architecture to be able to keep up with all thechanges surrounding us.
In today’s software development world, requirements change,environments change, team members change, technologies change,and so should the architecture of our systems.
What is Agile Architecture?
Agile Architecture is an architecture that allows to replace details and is easy to verify.
An architecture that supports agile software development by enabling the principles of the Agile Manifesto [6].
Allow Change quickly
Verifiable at any given point of time
Support Rapid Development
Always working System
Why we need Agile Architecture
• Traditional architecture focus on rules, guidelines, standard and limiting the implementation area.
• Support BDUF
• Non tolerant of ambiguity
• Non supportive of change
• ??
When needed Agile Architecture
Architecture or Structure features.
Enablers
Adding functionality via new feature
implementation
Technical Debt Defects
Val
ue
Visible
Low
High
Low High
NFR’s
• Usability
• Scalability
• Portability
• Maintainability
• Availability
• Accessibility
• Supportability
• Reliability
• Security
• Performance
• Cost
• Legal
• Cultural
• ……
Captured as : • Acceptance
Criteria• Definition of
Done• User Stories
Pattern for Agile Architecture
Architecture in Backlog
Architecture Trigger
Technical Debt
Management
Architecture Spikes
Agile Architecture Objective
Agile Architecture
objective
Deliver working solutions
Maximize stakeholder
value
Find solutions which meet
the goals of all stakeholders
Enable the next effort
Manage change and complexity
Principle of Agile Architecting
• Value People
• Communicate!
• Less is More
• Embrace Change: Plan It, Manage It!
• Choose the Right Solution for the Enterprise
• Deliver Quality
• Model and Document in an Agile Fashion
Agile Architecture Practices
• Part of the Scrum team
• Maintain the pace of development of project
• Communicate often and early
• Travel Light, Focus on the Essence
• Architecture needs testing too!
• Beware of standards …
• Find Agile Business Metaphors
Role of Agile Architect
• Understanding the requirements
• Formulating the design
• Communicating the architecture
• Supporting the developers
• Verifying the implementation
• Define and Describe • Metaphors, design principles and patterns on which the architecture is based,• The technology, tools and standards which will be used,• Key mechanisms, such as data access and error handling,• Specifications and interfaces of components to be bought or built.
Characteristics of an Agile Architect
A good agile architect is defined by his attitudes:
Understanding all the stakeholders
Hands on Person
Current and future
A "big picture" view
Willingness to accept and adapt ideas from various sources
Acknowledging that people are more important than processes or tools.
Interested in Technique, loves testing, want to improve.
someone who follows the principles of agile architecture.
SAFe Way
Key Principles Design Emerges & Architecture is a Collaboration The bigger the System , the Longer the Runway Build the simplest Architecture that can possibly work When in doubt , code it or model it They build it , They test it There is no Monopoly in Innovation Implement Architectural Flow
Spotify way
• highly service-oriented• Many distinct systems, and each can be
maintained and deployed separately.• Effective feature teams, anyone is allowed
to edit any system• focuses on the integrity of the system as a
whole.• Have a role called “System Owner”.
DAD wayArchitectural vision guides development
efforts
Initial architectural envisioning
Architecture owner facilitates architectural decisions
throughout Construction
Architecture handbook and models updated as required
Architecture spikes to explore a technical issue
Reduce risk early by proving the architecture works © Scott Ambler + Associates
When in doubt ?? Look this
Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it.Through this work we have come to value:
Individuals and interactions over processes and toolsWorking software over comprehensive documentation
Customer collaboration over contract negotiationResponding to change over following a plan
That is, while there is value in the items on the right,
we value the items on the left more.
http://agilemanifesto.org
Principles behind the Agile Manifesto1. Our highest priority is to satisfy the customer through early and continuous delivery of
valuable software.2. Welcome changing requirements, even late in development. Agile processes harness
change for the customer's competitive advantage.3. Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shorter timescale.4. Business people and developers must work together daily throughout the project.5. Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.6. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.7. Working software is the primary measure of progress.8. Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely. 9. Continuous attention to technical excellence and good design enhances agility.10. Simplicity--the art of maximizing the amount of work not done--is essential. 11. The best architectures, requirements, and designs emerge from self-organizing teams. 12. At regular intervals, the team reflects on how to become more effective, then tunes and
adjusts its behavior accordingly.
References & Advanced Reading
• https://www.infoq.com/articles/agile-architecture
• https://www.thoughtworks.com/talks/agile-architecture-rethink-2014
• http://www.scaledagileframework.com/agile-architecture/
• http://agilemodeling.com/essays/agileArchitecture.htm#Myths
• http://www.disciplinedagiledelivery.com/agility-at-scale/enterprise-architecture/
• http://www.disciplinedagiledelivery.com/agile-enterprise-architecture/
• Agile + Model Driven Design (AMDD)
• Domain Driven Design
• Agile modeling
• Agile Data
• Microservices
• SoA
• TDD, ATDD, BDD, Refactoring
• Vertical slicing, Vertical / cross functional team
Thanks !!
Deepak Relan
Agile and DevOps Coach @Wipro
https://www.linkedin.com/in/deepak-relan-pmp-agile-pgm-csp-csm-safe-agilist-9b00401b