Nimble Framework - Software architecture and design in agile era - PSQT Template
Transcript of 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
2
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
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