3. Name
Tushar Jain
Current Location
Silicon Valley,
CA, USA
People & Software
Expertise
Quick Description
Agile, Lean, and
Software Architecture
Contact point
http://agileanswer.blogspot.com
tusjain@gmail.com
@tjain
4. We will be talking about
How to create
software architecture
in an agile
environment?
Tushar Jain
5. We will NOT be talking about
• What is a good software architecture?
• Technologies
Tushar Jain
10. 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
11. 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
12. 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
13. 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
19. I like to call these
guidelines as
thought layers
20. • Thought Layer 1: Framework
• Thought Layer 2: Techniques
• Thought Layer 3: Patterns
21. Work need to be
performed by foot soldiers
not by ivory tower
politicians & managers
22. 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
23. 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
24. Thought Layer 3: Patterns
• Coding guidelines
• Design guidelines
• Design patterns to avoid
• Sample working code
DevTeam makes decisions, other teams may guide and
help
29. 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