nimble framework - software architecture and design in agile era

35
Framework - Software architecture & design in agile era Tushar

Upload: tjain

Post on 21-Feb-2017

106 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Nimble Framework - Software architecture and design in agile era

Nimble Framework -

Software architecture & design in agile

era

Tushar Jain

Page 2: Nimble Framework - Software architecture and design in agile era

Tushar Jain

Page 3: Nimble Framework - Software architecture and design in agile era

NameTushar Jain

Current LocationSilicon Valley,

CA, USA

People & Software

Expertise

Quick DescriptionAgile, Lean, and

Software Architecture

Contact point http://agileanswer.blogspot.com [email protected] @tjain

Page 4: Nimble Framework - Software architecture and design in agile era

We will be talking about

How to create software

architecture in an agile environment?

Tushar Jain

Page 5: Nimble Framework - Software architecture and design in agile era

We will NOT be talking about

• What is a good software architecture?

• Technologies

Tushar Jain

Page 6: Nimble Framework - Software architecture and design in agile era

Tushar Jain

Page 7: Nimble Framework - Software architecture and design in agile era

Tushar Jain

Page 8: Nimble Framework - Software architecture and design in agile era

Move Fast

Tushar Jain

Page 9: Nimble Framework - Software architecture and design in agile era

Principles

Pushpagiri: http://webhoststar.blogspot.com

Tushar Jain

Page 10: Nimble Framework - Software architecture and design in agile era

Principles• Simplicity of system with current and

immediate future function and non-functional requirement.

• Intellectually Relaxed: Things/concept must be understood by a large community.• Stackable: Things must be able to act as building blocks in a larger and/or a complex system.• Predictable/Reliable: Things must be highly predictable and reliable to ensure consistency.• High Performance or value/cost: Value delivered and cost incurred (in terms of money, time and intellectual stress) must be sufficiently high to make it attractive Tushar

Jain

Page 11: Nimble Framework - Software architecture and design in agile era

Principles• Collective ownership of architecture,

design, code and other artifacts• Software is a result of human interactions and shared

understanding

• Never commit unless you know why• Should address uncertainty, not justify procrastination

Tushar Jain

Page 12: Nimble Framework - Software architecture and design in agile era

Principles• Evolution does not cease

• Today’s best practice is tomorrow’s technical debt• We as human beings do not have luxury of time as

evolution in the biological world have. To overcome time handicap, directed evolution is preferred.

• No one escapes curse of entropy unless directed efforts

• Technical debt is a reality• Due to dynamic nature of the environment efforts are

needed to direct evolution but not everything is in control

Tushar Jain

Page 13: Nimble Framework - Software architecture and design in agile era

Principles• Reasoning over rituals

• Every rituals must have foundation in reasoning• Over the time period rituals drift away from reasoning

• Software is not the end in itself, it’s just a mean for business objectives

• Software is there to help the business to run; operating software is not the business

Tushar Jain

Page 14: Nimble Framework - Software architecture and design in agile era

Thought Layers

Nalanda: https://en.wikipedia.org/wiki/Nalanda

Tushar Jain

Page 15: Nimble Framework - Software architecture and design in agile era

Can we follow a set of processes to create

software architecture?NOTushar

Jain

Page 16: Nimble Framework - Software architecture and design in agile era

Can we follow a set process to create software

architecture?NOWhy?

Every one is different

Page 17: Nimble Framework - Software architecture and design in agile era

Then?

Page 18: Nimble Framework - Software architecture and design in agile era

No Processe

sGuideline

s

but

Page 19: Nimble Framework - Software architecture and design in agile era

I like to call these guidelines

as thought layers

Page 20: Nimble Framework - Software architecture and design in agile era

• Thought Layer 1: Framework

• Thought Layer 2: Techniques

• Thought Layer 3: Patterns

Page 21: Nimble Framework - Software architecture and design in agile era

Work need to be performed by foot

soldiers not by ivory tower politicians &

managers

Page 22: Nimble Framework - Software architecture and design in agile era

Thought Layer 1: Framework• Align yourself with enterprise

/product family architecture/enterprise guidelines

• Get hold of product vision• Get hold of user story map• Get hold of any learning, historical

data, any thing which can help you to make better decisions

Page 23: Nimble Framework - Software architecture and design in agile era

Thought Layer 2: Techniques• Make big technology decisions

• Architectural pattern: Microservice, event, pipe, etc.

• AppServer• Persistent layer (RDBMS, No SQL, etc.)• Libraries (Log4j or JavaLogging)

• Definition of Done• Definition of prototype, walking

skeleton, MVP, technical debt, spike, etc.

DevTeam makes decisions, other teams may guide and help

Page 24: Nimble Framework - Software architecture and design in agile era

Thought Layer 3: Patterns• Coding guidelines• Design guidelines• Design patterns to avoid• Sample working code

DevTeam makes decisions, other teams may guide and help

Page 25: Nimble Framework - Software architecture and design in agile era

This is BUFDNO

Page 26: Nimble Framework - Software architecture and design in agile era

Revisit the decisions on continuous

basis taken in each thought layer

continual

Page 27: Nimble Framework - Software architecture and design in agile era

• Starting of every sprint• Starting of every release cycle• When ever you feel it is

appropriate

When to revisit?

Page 28: Nimble Framework - Software architecture and design in agile era

Tools

Taxila: https://en.wikipedia.org/wiki/Taxila

Page 29: Nimble Framework - Software architecture and design in agile era

Obesity Matrix• To find reasoning in architectural

decisions• It is set of one table and a two

dimensional matrix. • It should be prepared in two

scenarios:• To choose one or more architectural option/s to implement a feature

• To visualize architectural decisions across product’s features

Tushar Jain

Page 30: Nimble Framework - Software architecture and design in agile era

Obesity Matrix

Tushar Jain

Page 31: Nimble Framework - Software architecture and design in agile era

Obesity Matrix

Tushar Jain

Page 32: Nimble Framework - Software architecture and design in agile era

Cynefin framework

Tushar Jain

Page 33: Nimble Framework - Software architecture and design in agile era

Cynefin framework

Tushar Jain

Page 34: Nimble Framework - Software architecture and design in agile era

???

Vikramaśīla: https://en.wikipedia.org/wiki/Vikramashila

Tushar Jain

Page 35: Nimble Framework - Software architecture and design in agile era

Contact [email protected]@tjain

Bloghttp://agileanswer.blogspot.com