SlideShare a Scribd company logo
1 of 23
When good architecture goes bad Mark Dalgarno Software Acumen Email:  [email_address] Blog: blog.software-acumen.com Image: www.touregypt.net/featurestories/pyramidcore2.jpg
Architecture decay (a.k.a. Software erosion) ,[object Object],[object Object],[object Object]
Common types of erosion ,[object Object],[object Object],[object Object],[object Object],[object Object]
Erosion in an open-source project ,[object Object],utils ant taskdefs Ant v1.4.1 11 October 2001
Erosion in an open-source project ,[object Object],utils ant taskdefs Ant v1.6.1 12 February 2004 Erosion
Results from our recent consultancy work 11 C/C++ projects varying from 10 KLOC to 800 KLOC EROSION
Indicators for decay ,[object Object],[object Object],[object Object],[object Object],[object Object]
Exercise 1 – Stories of software erosion ,[object Object],[object Object]
Why does software erode? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Some other reasons for software erosion ,[object Object],[object Object],[object Object],[object Object]
Whose fault is it? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exercise 2 - The cost of erosion ,[object Object],[object Object],[object Object]
The costs of software erosion Figure © Axivion GmbH 2008. Used with permission.
The cost of software erosion – an experiment ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exercise 3 - Causes of decay ,[object Object],[object Object],[object Object]
Fighting erosion – a process pattern ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fighting software erosion  – ACCU workshop ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Fighting software erosion – Tom Gilb ,[object Object],[object Object],[object Object],[object Object]
A few words on rewriting… ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Further things to ponder… ,[object Object],[object Object],[object Object],[object Object]
Fighting software erosion –  Three things to take away with you… ,[object Object],[object Object],[object Object]
Additional Resources ,[object Object],[object Object],[object Object],[object Object],[object Object]
Summary ,[object Object],[object Object],[object Object],[object Object]

More Related Content

Viewers also liked

Viewers also liked (9)

Machine response
Machine responseMachine response
Machine response
 
Database automated build and test - SQL In The City Cambridge
Database automated build and test - SQL In The City CambridgeDatabase automated build and test - SQL In The City Cambridge
Database automated build and test - SQL In The City Cambridge
 
Academy governance conference slides
Academy governance conference slidesAcademy governance conference slides
Academy governance conference slides
 
6th math c2 -l31--nov15
6th math c2 -l31--nov156th math c2 -l31--nov15
6th math c2 -l31--nov15
 
2partedesfile
2partedesfile2partedesfile
2partedesfile
 
Ccco press-release-cal step
Ccco press-release-cal stepCcco press-release-cal step
Ccco press-release-cal step
 
Why digital communications for seniors suck? By Agata Kukwa. #RockitWAW
Why digital communications for seniors suck? By Agata Kukwa. #RockitWAWWhy digital communications for seniors suck? By Agata Kukwa. #RockitWAW
Why digital communications for seniors suck? By Agata Kukwa. #RockitWAW
 
Conexiones de cable ethernet
Conexiones de cable ethernetConexiones de cable ethernet
Conexiones de cable ethernet
 
Prolapso mitral
Prolapso mitralProlapso mitral
Prolapso mitral
 

More from IrishDev.com

Phil Pursglove: Velocity, the Need for Speed - epicenter 2010
Phil Pursglove: Velocity, the Need for Speed - epicenter 2010Phil Pursglove: Velocity, the Need for Speed - epicenter 2010
Phil Pursglove: Velocity, the Need for Speed - epicenter 2010IrishDev.com
 
Werner Weil: UCUM - epicenter 2010
Werner Weil: UCUM - epicenter 2010Werner Weil: UCUM - epicenter 2010
Werner Weil: UCUM - epicenter 2010IrishDev.com
 
Werner Keil: Android - epicenter 2010
Werner Keil: Android - epicenter 2010Werner Keil: Android - epicenter 2010
Werner Keil: Android - epicenter 2010IrishDev.com
 
Iwtc 2008 Tom Raftery Why Blog
Iwtc 2008 Tom Raftery Why BlogIwtc 2008 Tom Raftery Why Blog
Iwtc 2008 Tom Raftery Why BlogIrishDev.com
 
Iwtc2008 Grainne Kirwan Internet Pyschology
Iwtc2008 Grainne Kirwan Internet PyschologyIwtc2008 Grainne Kirwan Internet Pyschology
Iwtc2008 Grainne Kirwan Internet PyschologyIrishDev.com
 
Irish Web Technologies Conference 2008 - Ken Brennock Web Based Testing
Irish Web Technologies Conference 2008 - Ken Brennock Web Based TestingIrish Web Technologies Conference 2008 - Ken Brennock Web Based Testing
Irish Web Technologies Conference 2008 - Ken Brennock Web Based TestingIrishDev.com
 

More from IrishDev.com (6)

Phil Pursglove: Velocity, the Need for Speed - epicenter 2010
Phil Pursglove: Velocity, the Need for Speed - epicenter 2010Phil Pursglove: Velocity, the Need for Speed - epicenter 2010
Phil Pursglove: Velocity, the Need for Speed - epicenter 2010
 
Werner Weil: UCUM - epicenter 2010
Werner Weil: UCUM - epicenter 2010Werner Weil: UCUM - epicenter 2010
Werner Weil: UCUM - epicenter 2010
 
Werner Keil: Android - epicenter 2010
Werner Keil: Android - epicenter 2010Werner Keil: Android - epicenter 2010
Werner Keil: Android - epicenter 2010
 
Iwtc 2008 Tom Raftery Why Blog
Iwtc 2008 Tom Raftery Why BlogIwtc 2008 Tom Raftery Why Blog
Iwtc 2008 Tom Raftery Why Blog
 
Iwtc2008 Grainne Kirwan Internet Pyschology
Iwtc2008 Grainne Kirwan Internet PyschologyIwtc2008 Grainne Kirwan Internet Pyschology
Iwtc2008 Grainne Kirwan Internet Pyschology
 
Irish Web Technologies Conference 2008 - Ken Brennock Web Based Testing
Irish Web Technologies Conference 2008 - Ken Brennock Web Based TestingIrish Web Technologies Conference 2008 - Ken Brennock Web Based Testing
Irish Web Technologies Conference 2008 - Ken Brennock Web Based Testing
 

Recently uploaded

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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
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
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Recently uploaded (20)

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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
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)
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

Mark Dalgarno: When Good Architecture Goes Bad - epicenter 2010

  • 1. When good architecture goes bad Mark Dalgarno Software Acumen Email: [email_address] Blog: blog.software-acumen.com Image: www.touregypt.net/featurestories/pyramidcore2.jpg
  • 2.
  • 3.
  • 4.
  • 5.
  • 6. Results from our recent consultancy work 11 C/C++ projects varying from 10 KLOC to 800 KLOC EROSION
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. The costs of software erosion Figure © Axivion GmbH 2008. Used with permission.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.

Editor's Notes

  1. Introduce self, work. Interactive, ask questions. Find out a bit about audience, any drive-by-developers or drive-by-architects? Software Architecture - The fundamental organization of a system, embodied in its components, their relationship to each other and the environment, and the principles governing its design and evolution. – IEEE 1471-2000 The Meidum pyramid was built in different stages, beginning as a seven-step pyramid to which an additional step was added at a later stage.
  2. These don’t inevitably indicate a problem but point to places where further analysis is required. Problems in class, package, sub-system and layer relationships. Encapsulation violations. Sub-system APIs bypassed, strict layering violated . Cyclic dependencies. Linear inheritance hierarchies or very deep inheritance hierarchies. Insufficient decomposition Monolithic Classes / Packages/ Subsystem – at the extreme no subsystems. Too much decomposition Ultra small packages. Obsolescence Imported but unused packages. Inclusion of dead code. Overgeneralization System more complex than it needs to be, sunk investment. Can’t understand system with cyclic dependencies just by looking at one place. Split up where there is insufficient decomposition to separate concerns and to aid comprehension. No subsystems – Example - (1989) (200 Kb animation application written in Lisp) – single file, never mind multiple subsystems!
  3. Researchers compared two versions of Ant System built in three layers taskdefs, ant, utils . V1.4.1 (11 October 2001) Layers well-separated. ant layer monolithic but small. V1.6.1 (12 February 2004) ant layer dependent on taskdefs (upward dependencies). ant layer still monolithic but now very large.
  4. Researchers compared two versions of Ant System built in three layers taskdefs, ant, utils . V1.4.1 (11 October 2001) Layers well-separated. ant layer monolithic but small. V1.6.1 (12 February 2004) ant layer dependent on taskdefs (upward dependencies). ant layer still monolithic but now very large.
  5. Literature shows 20% typical Here we’re seeing 2% - 32%
  6. Perceived architecture differs from architecture as-is => System not understood, can’t plan accurately – effort, risk, resources for changes Hard to make changes – software brittle or requires a lot of distributed changes to make one ‘small’ change. Note - http://turingmachine.org/opensource/papers/godfrey2000.pdf – different parts of a system may decay at different rates. The software is maintained by whoever happens to be around.
  7. 5-10 minute exercise, gather stories on flipchart
  8. Environmental factors could include staff churn (knowledge / skill loss) . Insufficient value placed on architectural integrity (potential for future change, difficulty of making modifications in future, difficulty of understanding system in future)
  9. One can also consider whether Programming languages have the necessary mechanisms to ensure architectural integrity.
  10. Is the architect an advisor who offers the project team a best-practice approach but is not responsible if they don’t take his or her advice or are they setting out exactly what the team must do and he / she has the power to force them to act according to his / her architectural guidance? Question: Who doesn’t undermine architectural integrity? – QA, documentation?
  11. 5 – 10 minute stand-up session after exercise with each group saying what they spoke about.
  12. Productivity is consequently significantly reduced as erosion sets in.
  13. STSC - "Software Technology Support Center" (STSC), has investigated the extent to which a satisfactory or defective inner structure influences the cost of further software development. A system with 50,000 lines of code was investigated; the aim was to extend it by the addition of about 3,000 lines of code. Source Hello2Morrow.com SonarJ whitepaper.
  14. 5 – 10 minute stand-up session after exercise with each group saying what they spoke about.
  15. Sustainable: Satisfies the current needs while maintaining the option (for future generations) to satisfy future needs. Use evolution scenarios to prove architecture. Expectations: Support ongoing development with minimal additional effort. Enable future additions and extensions. Keep the system and its structures intact. Be one step ahead – but in which direction? Visualization of software structure and flow Show what the architecture as-is is really like. Compare it to the architecture as-intended . McCabe – cyclomatic (or conditional) complexity – number of independent paths through code. Metrics indicate possible problems How to interpret them? Where to set boundaries of acceptable deviation from architecture? The smelliness of an architectural smell is a subjective concept – tools must be parameterisable. Evaluating smells requires architectural experience – role of the architect. Lots of data present – identify wheat from chaff using trends. Several tools have APIs that allows test to be written to ensure that no unwanted dependencies are introduced into the system. Visualization Structure and Flow (flow analysis). Other architectural views need a corresponding visualization. Heuristics Clean-up relationships between classes, packages and sub-systems before cleaning up individual classes, packages and subsystems Chaotic internal structure can be quarantined, chaotic external structure infects the whole system. Might be problematic if different people own different entities Architecture Analysis and assessment methods Applicability to enforcing architectural integrity? Can analyse start point for maintainability, evolvability – postulate scenarios Clone Detection is another capability to think about. Studies show that on average 20% of an application consists of cloned code. Some studies show significantly higher percentages (95% NUS Jarzabek). Is Clone Detection an architectural issue -> affects maintainability. Responsibilities could be unclear where clones exist. To patterns (architectural styles, design patterns) Use Heuristics Clean-up relationships between classes, packages and sub-systems before cleaning up individual classes, packages and subsystem. Use many small refactorings? Easier to manage. System available for longer. But, architecture smells often require larger refactorings. Refactoring outcomes can be hard to predict May not be clear what the quality effects are for example, may be some doubt over outcomes. Remember to refactor your intended architecture – it may not meet current requirements. Ignorance of the techniques / tools Focus on cost of tools rather than value of tools How often to apply the techniques Continuous architecture monitoring - like having a test framework in place to check code as it’s modified you can have a framework in place to check architecture as it’s modified. Easier to modify architectural ‘tests’ than code tests as architecture is evolved? (Fewer tests?)
  16. Lehman - Architectural decay is inevitable unless you actively take steps to combat it.