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

Preview:

Citation preview

1

Nimble Framework - Software architecture & design in agile era

Only Guidelines, No Processes Aug 1, 2016

2

NameTushar Jain

Current LocationSilicon Valley, CA, USA

People & Software

Expertise

Quick DescriptionAgile, Lean, and Software

Architecture

Contact point http://agileanswer.blogspot.com tusjain@gmail.com @tjain

We will be talking about

How to create software

architecture in an agile

environment?

We will NOT be talking about

• What is a good software architecture?

• Technologies

Move Fast

Principles

Pushpagiri: http://webhoststar.blogspot.com

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

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

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

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

Thought Layers

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

Can we follow a set of processes to create

software architecture?NO

Can we follow a set process to create

software architecture?NOWhy?

Every one is different

Revisit the decisions on continuous

basis taken in each thought layer

continual

No Processe

sGuideline

s

but

I like to call these guidelines

as thought layers

• Thought Layer 1: Framework

• Thought Layer 2: Techniques

• Thought Layer 3: Patterns

Work need to be performed by foot

soldiers not by ivory tower politicians &

managers

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

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

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

DevTeam makes decisions, other teams may guide and help

This is BUFD!NO

Revisit the decisions on continuous

basis taken in each thought layer

continual

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

appropriate

When to revisit?

Tools

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

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

Obesity Matrix

Obesity Matrix

Cynefin framework

Cynefin framework

???

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

Contact metusjain@gmail.com

Bloghttp://agileanswer.blogspot.com

Twitter@tjain