SlideShare a Scribd company logo
1 of 24
Agile
versus?
Architecture
• “Who Needs An Architect?” by Martin Fowler
  - http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf



• “Architecture” video by Uncle Bob (Robert Martin)
  - http://www.cleancoders.com/codecast/clean-code-episode-7/show



• “Emergent Design and Evolutionary Architecture”
  by Neal Ford - http://www.thoughtworks.com/emergent-design
• “Design == Code” by Jack Reeves
  - http://www.developerdotstar.com/printable/mag/articles/reeves_design_main.html



• Zen and Enterprise Architecture (me at IASA)
  - http://richardalexandergreen.wordpress.com/2011/08/17/profil/zen-and-enterprise-architecture/



• Agile SOA, Agile EAI (me at IASA)
  - http://richardalexandergreen.wordpress.com/2011/08/17/profil/agilesoa_iasab/
Definitions

• Architecture
 is an aspect of design.
 - It is the aspect
 where the designers decide
 how the components
 will be organized.
Metaphors
•   Enterprise Architeture
    is like urban planning.
    - There is a big-picture plan,
    but it has to be developedone project at a time.

•   Application Architecture
    is like the floor plan of a building.
    - It identifies the major functional areas
    and indicates how they communicate.

•   Program Architecture
    is like the layout of a refrigerator.
    - It indicates the design patterns to be used
    by those who work on various types of modules.
Sometimes there is tension between
Agile concepts and
Architecture concepts
What
 will we
be asked
 to do?
Traditional Planning Needs
• Tradition: Long lead times
  for infrastructure purchases and installation
  seemed to require early planning.
• Tradition: The staffing of the project
  is based on the target framework
  for the product.
• Tradition:  Once the project is rolling,
  service, database, and desktop engineering
  all want to know how and when
  they will be expected to contribute.
HOW MUCH HOW SOON?
Planning process
tends to want
up-front designs
while agile
prefers to keep
options open.
• Traditionally, (pre-agile) Architecture
  wants to preview
  how the application will be deployed.
• In effect, several stakeholders
  want to know the how
  before the what is well established.
Keep
options
 open
Deploy via cloud
until that
becomes
too
expensive.
Risk:
This trades lead-time advantage
for other problems.
Design
so that you can
switch frameworks
with minimum costs.

Risk:
Such designs
seem too abstract
to some, and
they will
ignore the design.
Tell everyone that the early releases
are prototypes
to test usability (or some other quality).

Risk: All too frequently
the "prototype" message
means different things to different people.
Let the architecture emerge.
Risk:
Many teams
do not
know how
to do that.
(See next)
Agility means
keeping your options open.
Try to remember
that business practice, policy, and strategy
will change.

Defer decisions
to the last responsible moment.

Embrace change
- avoid strategies that constrain the future
of the product.

Define components
and coding practices
that minimize the costs and risks of change.
Architecture is not about
tools and frameworks.

Architecture is about collaboration
    collaborating components
and collaborating teams.

Architecture
defines the roles and responsibilities
of components.

A good architecture (and coding practice)
allows components to be replaced
with minimal costs.
Good architecture
is like good
object-oriented design.
You design for
  coherence,
  minimal coupling,
  potential re-use.

The difference between architecture and object-oriented design
is mainly a matter of context.

Well-designed components are like "black box"
  Other components see the interface,
  but don't need to know what goes on inside.

Black boxes are defined by their interfaces.
  Defining the interfaces clearly (and early)
  will enable and expedite collaboration
  between programmers and teams.
Technique
In an enterprise context,
certain "applications"
(and their corresponding teams)
are the natural candidates
for certain responsibilities.
- Example: Customer contact data
is owned by Customer Relationship Management
(CRM) system.

- Example: Contacting a customer
should involve CRM
when Field Service (another system)
requires some contact.
In an application design context,
there are various techniques for
predicting needed interfaces.
(At first, the designers might not have a clear idea of what the component actors
will be, let alone what they need to say to each other.
But there are team ideation and collaboration techniques
that tend to drive these things out quickly.)


-CRC cards = Class Responsibility Collaboration cards.

- Use Case Scenarios.                                      Story Cards

- There is a variation on Behavior Driven Design (BDD)
     where the design team starts from an BDD test
     and proceeds to create stub code and interface definitions.
         (This is similar to a CRC session,
         but it creates interface code instead of cards.
         It is slower but more precise.)
there are design patterns
and programming conventions
that teams discuss and agree to follow.

- Late Binding:
Dependency Injection vs. Class Factory vs. RPC

- Initialization: Automatic / Lazy / Eager / How much?

- Conventions for documenting methods / messages.
(Write an English sentence describing the action / fact.)

- Logging: Which logging framework?
  What/When/Why to log at each level of logging.

- How to model a real-world concept in data?
 (measurement, money, date, time-stamp, location)
Agile
Architecture
Agile Architecture (MAE slides)

More Related Content

What's hot

Who is an architect and Why care about Architecture
Who is an architect and Why care about ArchitectureWho is an architect and Why care about Architecture
Who is an architect and Why care about ArchitectureQuovantis
 
Technical Architect Role
Technical Architect RoleTechnical Architect Role
Technical Architect Roleguestbeb036
 
IA 3: Information Architecture Concepts
IA 3: Information Architecture ConceptsIA 3: Information Architecture Concepts
IA 3: Information Architecture ConceptsHarald Felgner, PhD
 
IT architecture and architects
IT architecture and architectsIT architecture and architects
IT architecture and architectsAndre Dovgal
 
Is your code SOLID enough?
 Is your code SOLID enough? Is your code SOLID enough?
Is your code SOLID enough?SARCCOM
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software ArchitectureRuth Malan
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)Hayim Makabee
 
Architecture in an Agile World
Architecture in an Agile WorldArchitecture in an Agile World
Architecture in an Agile WorldDon McGreal
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkJoseph Yoder
 
Design Software Driven by Domain
Design Software Driven by DomainDesign Software Driven by Domain
Design Software Driven by Domainssuser1a0b8f
 
Low-code vs Model-Driven Engineering
Low-code vs Model-Driven EngineeringLow-code vs Model-Driven Engineering
Low-code vs Model-Driven EngineeringJordi Cabot
 

What's hot (13)

The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
 
Who is an architect and Why care about Architecture
Who is an architect and Why care about ArchitectureWho is an architect and Why care about Architecture
Who is an architect and Why care about Architecture
 
Technical Architect Role
Technical Architect RoleTechnical Architect Role
Technical Architect Role
 
IA 3: Information Architecture Concepts
IA 3: Information Architecture ConceptsIA 3: Information Architecture Concepts
IA 3: Information Architecture Concepts
 
IT architecture and architects
IT architecture and architectsIT architecture and architects
IT architecture and architects
 
Is your code SOLID enough?
 Is your code SOLID enough? Is your code SOLID enough?
Is your code SOLID enough?
 
Introduction to Software Architecture
Introduction to Software ArchitectureIntroduction to Software Architecture
Introduction to Software Architecture
 
The Role of the Software Architect (short version)
The Role of the Software Architect (short version)The Role of the Software Architect (short version)
The Role of the Software Architect (short version)
 
Architecture in an Agile World
Architecture in an Agile WorldArchitecture in an Agile World
Architecture in an Agile World
 
2011 Career Day - Architect
2011 Career Day - Architect2011 Career Day - Architect
2011 Career Day - Architect
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
 
Design Software Driven by Domain
Design Software Driven by DomainDesign Software Driven by Domain
Design Software Driven by Domain
 
Low-code vs Model-Driven Engineering
Low-code vs Model-Driven EngineeringLow-code vs Model-Driven Engineering
Low-code vs Model-Driven Engineering
 

Similar to Agile Architecture (MAE slides)

3 d and 4d modeling for design and construction
3 d and 4d modeling for design and construction3 d and 4d modeling for design and construction
3 d and 4d modeling for design and constructionAnkit Singhai
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownAvisi B.V.
 
Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03
Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03
Same Patterns Different Architectures - Colombo Architecture Meetup - Session-0399X Technology
 
Modern Agile Software Architecture
Modern Agile Software ArchitectureModern Agile Software Architecture
Modern Agile Software ArchitectureKannan Durairaj
 
Deep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software ArchitectureDeep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software ArchitectureMatthew Clarke
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
Agile Architecture (MAE slides with speaker notes)
Agile Architecture (MAE slides with speaker notes)Agile Architecture (MAE slides with speaker notes)
Agile Architecture (MAE slides with speaker notes)Richard Green
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachBen Stopford
 
Microservices as an evolutionary architecture: lessons learned
Microservices as an evolutionary architecture: lessons learnedMicroservices as an evolutionary architecture: lessons learned
Microservices as an evolutionary architecture: lessons learnedLuram Archanjo
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2Jim Brisson
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st CenturyHenry Jacob
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectColdFusionConference
 
Agile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystemAgile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystemTurja Narayan Chaudhuri
 
Agile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native EcosystemAgile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native EcosystemCloud Study Network
 
J2EE Performance And Scalability Bp
J2EE Performance And Scalability BpJ2EE Performance And Scalability Bp
J2EE Performance And Scalability BpChris Adkin
 
How to Use Engineers in a UX Department
How to Use Engineers in a UX DepartmentHow to Use Engineers in a UX Department
How to Use Engineers in a UX DepartmentStephen James
 
Model Driven Architectures
Model Driven ArchitecturesModel Driven Architectures
Model Driven ArchitecturesLalit Kale
 
Understanding and Addressing Architectural Challenges of Cloud- Based Systems
Understanding and Addressing Architectural Challenges of Cloud- Based SystemsUnderstanding and Addressing Architectural Challenges of Cloud- Based Systems
Understanding and Addressing Architectural Challenges of Cloud- Based SystemsCREST @ University of Adelaide
 

Similar to Agile Architecture (MAE slides) (20)

3 d and 4d modeling for design and construction
3 d and 4d modeling for design and construction3 d and 4d modeling for design and construction
3 d and 4d modeling for design and construction
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
 
Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03
Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03
Same Patterns Different Architectures - Colombo Architecture Meetup - Session-03
 
Modern Agile Software Architecture
Modern Agile Software ArchitectureModern Agile Software Architecture
Modern Agile Software Architecture
 
Deep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software ArchitectureDeep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software Architecture
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
Same Patterns, Different Architectures
Same Patterns, Different Architectures Same Patterns, Different Architectures
Same Patterns, Different Architectures
 
Agile Architecture (MAE slides with speaker notes)
Agile Architecture (MAE slides with speaker notes)Agile Architecture (MAE slides with speaker notes)
Agile Architecture (MAE slides with speaker notes)
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 
L02 What is Software Architecture?
L02 What is Software Architecture?L02 What is Software Architecture?
L02 What is Software Architecture?
 
Microservices as an evolutionary architecture: lessons learned
Microservices as an evolutionary architecture: lessons learnedMicroservices as an evolutionary architecture: lessons learned
Microservices as an evolutionary architecture: lessons learned
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
 
Software Development in 21st Century
Software Development in 21st CenturySoftware Development in 21st Century
Software Development in 21st Century
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an Architect
 
Agile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystemAgile architectures in a modern cloud-native ecosystem
Agile architectures in a modern cloud-native ecosystem
 
Agile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native EcosystemAgile Architecture in a Modern Cloud-Native Ecosystem
Agile Architecture in a Modern Cloud-Native Ecosystem
 
J2EE Performance And Scalability Bp
J2EE Performance And Scalability BpJ2EE Performance And Scalability Bp
J2EE Performance And Scalability Bp
 
How to Use Engineers in a UX Department
How to Use Engineers in a UX DepartmentHow to Use Engineers in a UX Department
How to Use Engineers in a UX Department
 
Model Driven Architectures
Model Driven ArchitecturesModel Driven Architectures
Model Driven Architectures
 
Understanding and Addressing Architectural Challenges of Cloud- Based Systems
Understanding and Addressing Architectural Challenges of Cloud- Based SystemsUnderstanding and Addressing Architectural Challenges of Cloud- Based Systems
Understanding and Addressing Architectural Challenges of Cloud- Based Systems
 

More from Richard Green

Inventing The Next Business Programming Language
Inventing The Next Business Programming LanguageInventing The Next Business Programming Language
Inventing The Next Business Programming LanguageRichard Green
 
Agile SOA - Agile EAI
Agile SOA - Agile EAIAgile SOA - Agile EAI
Agile SOA - Agile EAIRichard Green
 
Practical Ontology For Enterprise Data Management
Practical Ontology For Enterprise Data ManagementPractical Ontology For Enterprise Data Management
Practical Ontology For Enterprise Data ManagementRichard Green
 
Zen and Enterprise Architecture
Zen and Enterprise ArchitectureZen and Enterprise Architecture
Zen and Enterprise ArchitectureRichard Green
 

More from Richard Green (7)

Inventing The Next Business Programming Language
Inventing The Next Business Programming LanguageInventing The Next Business Programming Language
Inventing The Next Business Programming Language
 
User stories
User storiesUser stories
User stories
 
Genetic algorithms
Genetic algorithmsGenetic algorithms
Genetic algorithms
 
Agile SOA - Agile EAI
Agile SOA - Agile EAIAgile SOA - Agile EAI
Agile SOA - Agile EAI
 
Given When Then
Given When ThenGiven When Then
Given When Then
 
Practical Ontology For Enterprise Data Management
Practical Ontology For Enterprise Data ManagementPractical Ontology For Enterprise Data Management
Practical Ontology For Enterprise Data Management
 
Zen and Enterprise Architecture
Zen and Enterprise ArchitectureZen and Enterprise Architecture
Zen and Enterprise Architecture
 

Recently uploaded

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 

Recently uploaded (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 

Agile Architecture (MAE slides)

  • 2. • “Who Needs An Architect?” by Martin Fowler - http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf • “Architecture” video by Uncle Bob (Robert Martin) - http://www.cleancoders.com/codecast/clean-code-episode-7/show • “Emergent Design and Evolutionary Architecture” by Neal Ford - http://www.thoughtworks.com/emergent-design • “Design == Code” by Jack Reeves - http://www.developerdotstar.com/printable/mag/articles/reeves_design_main.html • Zen and Enterprise Architecture (me at IASA) - http://richardalexandergreen.wordpress.com/2011/08/17/profil/zen-and-enterprise-architecture/ • Agile SOA, Agile EAI (me at IASA) - http://richardalexandergreen.wordpress.com/2011/08/17/profil/agilesoa_iasab/
  • 3. Definitions • Architecture is an aspect of design. - It is the aspect where the designers decide how the components will be organized.
  • 4. Metaphors • Enterprise Architeture is like urban planning. - There is a big-picture plan, but it has to be developedone project at a time. • Application Architecture is like the floor plan of a building. - It identifies the major functional areas and indicates how they communicate. • Program Architecture is like the layout of a refrigerator. - It indicates the design patterns to be used by those who work on various types of modules.
  • 5. Sometimes there is tension between Agile concepts and Architecture concepts
  • 6. What will we be asked to do?
  • 7. Traditional Planning Needs • Tradition: Long lead times for infrastructure purchases and installation seemed to require early planning. • Tradition: The staffing of the project is based on the target framework for the product. • Tradition:  Once the project is rolling, service, database, and desktop engineering all want to know how and when they will be expected to contribute.
  • 8. HOW MUCH HOW SOON?
  • 9. Planning process tends to want up-front designs while agile prefers to keep options open. • Traditionally, (pre-agile) Architecture wants to preview how the application will be deployed. • In effect, several stakeholders want to know the how before the what is well established.
  • 11. Deploy via cloud until that becomes too expensive. Risk: This trades lead-time advantage for other problems.
  • 12. Design so that you can switch frameworks with minimum costs. Risk: Such designs seem too abstract to some, and they will ignore the design.
  • 13. Tell everyone that the early releases are prototypes to test usability (or some other quality). Risk: All too frequently the "prototype" message means different things to different people.
  • 14. Let the architecture emerge. Risk: Many teams do not know how to do that. (See next)
  • 15. Agility means keeping your options open. Try to remember that business practice, policy, and strategy will change. Defer decisions to the last responsible moment. Embrace change - avoid strategies that constrain the future of the product. Define components and coding practices that minimize the costs and risks of change.
  • 16. Architecture is not about tools and frameworks. Architecture is about collaboration collaborating components and collaborating teams. Architecture defines the roles and responsibilities of components. A good architecture (and coding practice) allows components to be replaced with minimal costs.
  • 17. Good architecture is like good object-oriented design. You design for coherence, minimal coupling, potential re-use. The difference between architecture and object-oriented design is mainly a matter of context. Well-designed components are like "black box" Other components see the interface, but don't need to know what goes on inside. Black boxes are defined by their interfaces. Defining the interfaces clearly (and early) will enable and expedite collaboration between programmers and teams.
  • 19. In an enterprise context, certain "applications" (and their corresponding teams) are the natural candidates for certain responsibilities. - Example: Customer contact data is owned by Customer Relationship Management (CRM) system. - Example: Contacting a customer should involve CRM when Field Service (another system) requires some contact.
  • 20.
  • 21. In an application design context, there are various techniques for predicting needed interfaces. (At first, the designers might not have a clear idea of what the component actors will be, let alone what they need to say to each other. But there are team ideation and collaboration techniques that tend to drive these things out quickly.) -CRC cards = Class Responsibility Collaboration cards. - Use Case Scenarios. Story Cards - There is a variation on Behavior Driven Design (BDD) where the design team starts from an BDD test and proceeds to create stub code and interface definitions. (This is similar to a CRC session, but it creates interface code instead of cards. It is slower but more precise.)
  • 22. there are design patterns and programming conventions that teams discuss and agree to follow. - Late Binding: Dependency Injection vs. Class Factory vs. RPC - Initialization: Automatic / Lazy / Eager / How much? - Conventions for documenting methods / messages. (Write an English sentence describing the action / fact.) - Logging: Which logging framework? What/When/Why to log at each level of logging. - How to model a real-world concept in data? (measurement, money, date, time-stamp, location)

Editor's Notes

  1. This presentation is about Software Architecture and its relationship to Agile practices.\n\nThere is often a kind of tension between Agile Concepts and Architecture concepts.Why is that?\nWhat can be done about it?\n
  2. I am putting the links up front instead of out back.\n\n- If you want to understand this subject better,I can think of no faster way than watching Uncle Bob’s “Architecture” video.It is well worth the $___ and 90 minutes it will cost you.\n\nTooting my own horn: I’ve also presented two technical “how to do it” talks at two regional “International Association of Software Architects” (IASA) conferences.\n
  3. \n
  4. \n
  5. Now back to our story.\n\nMany people, especially project managers, perceive a tension between Agile practices and Architecture practices.\n\nThese tensions are real, not just perceived.\nI have been an Enterprise Architect, but I am trying to quit.\nMy point of view is largely that of an architecture proponent.\nBut I have also been a project manager, methodologist, business analyst, strategic planning consultant, and still program in Smalltalk, Java, and Erlang.So I tend to think I can also think in other contexts.\n\nLater, Suzanne and Scott and you in the audience will have a chance to talk about your experiences in this context.\n
  6. One of the drivers of the tension between Agile and Architectureis that people outside your team feel that they need some advance noticeso that they can be ready for deploymentor provide budget.\n
  7. - One of the drivers of the tension between Agile concepts and Architecture conceptsis that traditionally there were long lead times for infrastructure.\n- Many companies still have an annual planning cycle that is driven by their budget preparation process.That means that their average response time is on the order of 180 days.When I worked for Ford Power-train Engineering, we figured software time-to-solution was on order of 3 years for new projects because of the way budgets worked.\n- But even if budgeting was not a constraint, traditionally there were other things that drive planners and managers to want an early forecast of infrastructure needs.\n- If you ask your server engineering folks for a host, how long will it take them to provide it? \n- Do you need to know what technology will be used for your product before you staff your project? \n- Once your project is rolling, how much lead-time do your infrastructure support groups need or want before you deploy at scale?\n
  8. The essential question is how much can be known at various stages of the project. \n\nEarly on, we can only predict some big picture aspects.As the project progresses and individual features are created in an Agile process, detail is developed “just in time” as needed.\n
  9. Also, of course, not-so-agile project management traditionstend to want up-front designs and forecasts.\n\nThose who wish to assure themselves that things are under controlwant often follow the idea that there should be a roadmap and scheduleand expect reports that show that the project is on the path and on schedule.\n\nExperienced managers know that this form of control only works for low tech projects.\nMilitary officers have a saying: “No plan survives contact with the enemy.”\nSo other systems of control are needed.As Agile people we have a control system based on evolution rather than a priori science fiction.\n\n
  10. Being agile in any context requires keeping your options open.\n\nThe remainder of this presentation is mostly about various ways you can keep options open.\n\nA good architecture allows you and your business partners the ability to experiment, change you mind, and respond to changes without getting in your own way.\n
  11. Currently, many people are suggesting that you can work around infrastructure lead times by deploying in the cloud.\n\nI’ve never done that, so I can’t really say that I know enough about it to predict the trade-offs.Again, it is worth some thought.\nHave any of you deployed in the cloud? \n
  12. Any software architect worthy of the name will know design patterns and programming practices that will enable the team to switch to another deployment framework.\nHowever, many programmers and project managers will find the architecture diagrams too abstract. As a consequence, they will ignore the design.\n\nThis strategy works best with people who have strong object-oriented design experience.\n
  13. One technique that is frequently suggested is . . . tell everyone that your early releases are prototypes.\n\nMy own experience is that this can be very dangerous but it is worth thinking about.\n
  14. An additional strategy is to allow the architecture to emerge as the implementation is developed.\n\nThe basic idea is that early concepts of the architecture are often wrong and/or examples of pre-mature optimization.\n\nUncle Bob says that when he and his co-inventor were developing fitness, they assumed they would need a database to support persistence. In the end, they discovered that persistence, in their case, did not require a database. \n
  15. These are design principles that apply to architecture and agile programming.\n- Don’t hard-code a business practice into your product if you can avoid it.. . What will happen to your product if the practice changes?\n. . Don’t hard-code a business policy.\n. . What will happen to the investment in your product if your client changes their business strategy?\n- Whenever possible, defer decisions to the last responsible moment.. . This can be very difficult because it resemble vacillation.\n- To embrace change you need to avoid strategies that constrain the future of the product.. . Try to make sure that a plan B will be available.\n- A good architecture allows you to replace components with minimal impact.\n
  16. Architects and vendors sometimes cause people to think that architecture is about the tools and frameworks that you use. \nHowever, think about this:\n- An out-house has a certain architecture. Does the architecture change when the construction material changes?\nIt will have the same essential architecture whether it is build of straw, wood, brick, stone, or fiberglass.\n- A client-server application should have the same basic architecturewhether it is built using visual basic, or one of three dozen web application frameworks.\n- The architecture of any system is really about assigning roles and responsibilities to the various components of the system.This is true whether the architecture is for a bridge, a city, an aircraft, a vehicle, a business, or a software product.\nBut an agile architecture will allow any of those components to be re-engineered at will.\n
  17. - Here is how hardware and software architects think about systems.\nThey think about the components as black boxes.\n- Software architects tend to apply the same concepts that are recommended for good object-oriented design.\nThey design components that have good coherence, minimal coupling, and potential re-use.\nThe difference between software architecture design and object-oriented design is mainly a matter of context.\n- Back to black boxes.The essential idea is that you don’t need to know exactly what is going on inside the black box.You define the function of the black box by specifying its interfaces with the outside world.Defining interfaces is the basis basic skill for being agile in architecture.- A modern automobile has over 3000 parts. They are typically designed by almost as many engineers.But they come together on the assembly line with very good predictability.An agile company can bring a new automobile to market in about 24 months from concept to production.\nHow do they do that?\nThey focus their attention on the interfaces between the components.\n
  18. There are techniques that can be applied at various levels of design.\n
  19. - As an enterprise architect,I tend to want a function to be assigned cleanly to a single component.\n\n- But consider this, a field service person might need to contact a customer to confirm an appointment.It seem natural enough that the field service person might contact the customer using their own cell phone.\nBut, what if the customer does not get the field service cell phone number and they phone your call center?\nWill the call center understand what is going on?\n\n- If something goes wrong, will we have a record of the various conversations so that we can respond intelligently.\nOur customer expects us to act as if we are a single brain with some level of intelligence.\n
  20. Okay. We could say that each customer contact should go through the Customer Relationship system. \n\nThat kind of decision seems obvious enough, \nbut at the application level,such assignments are not that obvious.\n
  21. - At the level of the application architecture, it is often not at all obvious how responsibilities for various functions will be assigned.\nBut there are techniques for quickly making educated guesses.\nHere are three techniques that your design team should know.I won’t explain these because each one could be the subject of an 3 hour tutorial.\n- CRC cards provide a way of writing down the basic functions to be performed and identify collaborations.\n- Use case scenarios provide a way of writing out the sequence of collaborations.\n- A somewhat newer technique is based on behavior driven concepts.The basic idea is that you start with the original request and work your way to the needed class interfaces.The advantage of this technique is that you can write the interface specifications in code.It gives you a more precise specification but it takes more time.\n
  22. At the level of a program,teams make decisions about how programs will be organized and written.These decisions define patternsthat the team members are expected to follow.\n\nThe goal is make all of the programs look alike so that a team member or future maintainer can easily read the code.\n
  23. In summary, if you want to be agile with architecture and enable collaboration inside and outside your team, focus everyone’s attention on how interfaces are defined and in how they evolve over time.\n
  24. Now for some stories from the front-lines \n\nand from someplace behind the lines.\n\n\n