scrum bangalore 18th meetup - october 15, 2016 - agile architecture - deepak relan - at prowareness

24
Agile Architecture

Upload: scrum-bangalore

Post on 16-Apr-2017

158 views

Category:

Technology


0 download

TRANSCRIPT

Agile Architecture

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

Agile and Architecture

• Contradictory

• Compatible

• Complementary

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

[email protected]

https://www.linkedin.com/in/deepak-relan-pmp-agile-pgm-csp-csm-safe-agilist-9b00401b