nimble framework - software architecture and design in agile era - psqt template

35
1 Nimble Framework - Software architecture & design in agile era Only Guidelines, No Processes Aug 1, 2016

Upload: tjain

Post on 21-Feb-2017

47 views

Category:

Documents


1 download

TRANSCRIPT

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

1

Nimble Framework - Software architecture & design in agile era

Only Guidelines, No Processes Aug 1, 2016

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

2

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

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 - PSQT Template

We will be talking about

How to create software

architecture in an agile

environment?

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

We will NOT be talking about

• What is a good software architecture?

• Technologies

Page 6: Nimble Framework - Software architecture and design in agile era - PSQT Template
Page 7: Nimble Framework - Software architecture and design in agile era - PSQT Template
Page 8: Nimble Framework - Software architecture and design in agile era - PSQT Template

Move Fast

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

Principles

Pushpagiri: http://webhoststar.blogspot.com

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

PrinciplesSimplicity 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

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

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

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

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

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

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

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

Thought Layers

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

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

Can we follow a set of processes to create

software architecture?NO

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

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 - PSQT Template

Revisit the decisions on continuous

basis taken in each thought layer

continual

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

No Processe

sGuideline

s

but

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

I like to call these guidelines

as thought layers

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

• Thought Layer 1: Framework

• Thought Layer 2: Techniques

• Thought Layer 3: Patterns

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

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 - PSQT Template

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 - PSQT Template

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 - PSQT Template

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 - PSQT Template

This is BUFD!NO

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

Revisit the decisions on continuous

basis taken in each thought layer

continual

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

• 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 - PSQT Template

Tools

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

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

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

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

Obesity Matrix

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

Obesity Matrix

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

Cynefin framework

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

Cynefin framework

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

???

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

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

Contact [email protected]

Bloghttp://agileanswer.blogspot.com

Twitter@tjain