SlideShare una empresa de Scribd logo
1 de 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]

Más contenido relacionado

Destacado

Destacado (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
 

Más de 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
 

Más de 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
 

Último

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Último (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

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.

Notas del editor

  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.