Agile Software Architecture

21
© AgiliX Agile Development Consulting Agile Software Architecture Cesario Ramos

description

Agile Software Architecture. Cesario Ramos. Agile Architecture. Classic Architecture. Code focussed Do what is important now Evolves during the project Defers Implementation. Documentation focussed Do what is important in the long term Defined upfront Includes Implementation. - PowerPoint PPT Presentation

Transcript of Agile Software Architecture

Page 1: Agile Software Architecture

© AgiliX Agile Development Consulting

Agile Software Architecture

Cesario Ramos

Page 2: Agile Software Architecture

© AgiliX Agile Development Consulting

Code focussedDo what is important nowEvolves during the projectDefers Implementation

Documentation focussedDocumentation focussed

Do what is important in Do what is important in the long termthe long term

Defined upfrontDefined upfront

Includes ImplementationIncludes Implementation

Agile Agile ArchitectureArchitecture

Classic Classic ArchitectureArchitecture

Page 3: Agile Software Architecture

© AgiliX Agile Development Consulting

Why agile software Why agile software architecture?architecture?

Page 4: Agile Software Architecture

© AgiliX Agile Development Consulting

Deliver FastIncrease ROI.Early validation of your business case.Give customers what they want when they want it.

Page 5: Agile Software Architecture

© AgiliX Agile Development Consulting

Defer CommitmentReduce risk.Decide based on most possible knowledge.

Keep yours and the customers options open.

Page 6: Agile Software Architecture

© AgiliX Agile Development Consulting

Eliminate WasteSupport something that does not add value now.Have the architecture slow you down

Page 7: Agile Software Architecture

© AgiliX Agile Development Consulting

Be the simplest solution to support the current Be the simplest solution to support the current functionality.functionality.

Change without increasing risk or waste.Change without increasing risk or waste.

Change economically.Change economically.

Change without making the software worse.Change without making the software worse.

Evolve in early and refine later iterations.Evolve in early and refine later iterations.

so we need architecture to...

Page 8: Agile Software Architecture

© AgiliX Agile Development Consulting

Comparing with Comparing with engineeringengineering

Page 9: Agile Software Architecture

© AgiliX Agile Development Consulting

Based on concrete analysis using physics and mathematics.Based on things you know and change slowly.Plan, Do, Review.

Plan the work, work the plan

Page 10: Agile Software Architecture

© AgiliX Agile Development Consulting

RequirementsDesignCodingTestingRelease

AnalysisAnalysis

DesignDesign

ConstructionConstruction

InspectionInspection

ReleaseRelease

Software Software DevelopmentDevelopment

Civil Civil EngineeringEngineering

Coding is N

OT Constr

uction

Coding is N

OT Constr

uction

Page 11: Agile Software Architecture

© AgiliX Agile Development Consulting

When do we test our When do we test our requirements?requirements?

When do we test our When do we test our design?design?

What if we overdevelop What if we overdevelop it? it?

How do you handle How do you handle changes?changes?

and then....

RequirementsRequirements

Architecture and DesignArchitecture and Design

CodingCoding

TestingTesting

ReleaseRelease

Page 12: Agile Software Architecture

© AgiliX Agile Development Consulting

How to create agile software How to create agile software architecture?architecture?

Page 13: Agile Software Architecture

© AgiliX Agile Development Consulting

High level steps.

Establish vision and high level requirements.

Perform Lightweight domain analysis.

Work on architectural components only when actually needed.

Consider ROI in the decision making process

Evolve the architecture during the project

Do not let quality decay.

Refactor to the Open Closed.

Validate and adapt.

Page 14: Agile Software Architecture

© AgiliX Agile Development Consulting

Lean architecture using DCI

What the system ISCaptures what is stableThe domain classes

What the system DOESUser stories.Business objects.

Page 15: Agile Software Architecture

© AgiliX Agile Development Consulting

Open Closed Principle

A module should be open for extension and closed for modification

Page 16: Agile Software Architecture

© AgiliX Agile Development Consulting

Refactoring as Fowler proposed

Improving the design of existing code.

Refactoring to be Open Closed.

For handling future requirements.

Refactoring

Provides Value byProvides Value by

Reducing RiskReducing Risk

Reducing WasteReducing Waste

Page 17: Agile Software Architecture

© AgiliX Agile Development Consulting

Separation Of Concerns

Low CouplingMinimal dependenciesMinimal side effects

High CohesionSingle responsibilityOne reason to change

Page 18: Agile Software Architecture

© AgiliX Agile Development Consulting

Tests Drive Design

Forces you to look at your public API.Forces you to think about cohesion.Forces you to think about coupling.Forces you to not produce redundancies.

Page 19: Agile Software Architecture

© AgiliX Agile Development Consulting

Test Driven Development

Documents your intentInvestigates the nature of the code you are developing Report on progress

Page 20: Agile Software Architecture

© AgiliX Agile Development Consulting

Summary

Agile Architecture helps you reduce risk and waste.OO/XP principles and practices make evolving architecture possible.Particular approach depends upon knowledge of domain, technology and project size.

Page 21: Agile Software Architecture

© AgiliX Agile Development Consulting

Agile Software Architecture

Cesario Ramos