SlideShare a Scribd company logo
1 of 43
Download to read offline
Stop the Software
Architecture Erosion


Bernhard Merkle
Central Research & Development
Software-Engineering
SICK-AG Waldkirch
                     mailto: Bernhard.Merkle@gmail.com
                     Contact on linkedin.com or xing.com Erosion“
                                    Bernhard Merkle „Stop the Software Architecture
                                                              Page: 1
Note:
this is only a subset of
the presentation slides !
Bernhard Merkle
Central Research & Development
Software-Engineering
SICK-AG Waldkirch
                     mailto: Bernhard.Merkle@gmail.com
                     Contact on linkedin.com or xing.com Erosion“
                                    Bernhard Merkle „Stop the Software Architecture
                                                              Page: 2
Traffic and Luggage Control




                      Bernhard Merkle „Stop the Software Architecture Erosion“
                                              Page: 7
Introduction / Overview
Levels of Static Analysis
  – Code, Design, Architectural
  – Examples
Architectural Analysis
  –   Use Cases
  –   Tool Support,
  –   Examples
  –   Pros/Cons
Summary

                                  Bernhard Merkle „Stop the Software Architecture Erosion“
                                                          Page: 8
Possible levels of Static Analysis:
Micro-Level
  – Code
  – =, ==, { },


Macro-Level
  – Class-Design
  – by reference, String concat, Exception-Handling


Architecture-Level:
  – Layers, Graphs, Subsystems, Compoments, Interfaces
  – Coupling, Dependency, etc…
                                    Bernhard Merkle „Stop the Software Architecture Erosion“
                                                            Page: 9
Tool Example Java: findbugs




                     Bernhard Merkle „Stop the Software Architecture Erosion“
                                             Page: 13
Software-Architecture: Definitions
IEEE 1471-2000:
  –   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.



Kruchten: captured in two documents:
  – Software Architecture Document
  – Software Design Guidelines


                                      Bernhard Merkle „Stop the Software Architecture Erosion“
                                                              Page: 15
Erosion ALWAYS
happens
– Prototypes become products
– Hacks. Architectural restrictions ignored
– Lack of understanding the “should
  architecture” (e.g. outsourcing)
– Time pressure leads to abbreviations

– impossible to detect manually only
                         Bernhard Merkle „Stop the Software Architecture Erosion“
                                                 Page: 16
Architectural Erosion
“Sometimes the developers manage to
maintain this purity of design through the
initial development and into the first release.

More often something goes wrong.The
software starts to rot like a piece of bad
meat”.

Uncle Bob: “Agile Software Development”
                           Bernhard Merkle „Stop the Software Architecture Erosion“
                                                   Page: 17
Architectural Erosion
Why should we care ?
  – In (lots of) Projects, Architecture decay happens
  – We are not alone, as we‘ve some good representatives… ;-)




                                   Bernhard Merkle „Stop the Software Architecture Erosion“
                                                           Page: 18
Findbugs
Is there a architecture ?
Is there a erosion ?




Do AA-Tool work well ?
do codelevel lints care about architecture ?
                                 Bernhard Merkle „Stop the Software Architecture Erosion“
                                                         Page: 19
ONE BIG Tangle…




                                  1.3.8
                  Bernhard Merkle „Stop the Software Architecture Erosion“
                                  (03/2009)
                                          Page: 25
Bernhard Merkle „Stop the Software Architecture Erosion“
                        Page: 26
Modeling Subsystems:




                       Bernhard Merkle „Stop the Software Architecture Erosion“
                                               Page: 27
Fixing Architectural Violations




                       Bernhard Merkle „Stop the Software Architecture Erosion“
                                               Page: 28
Fixing Architectural Violations




                       Bernhard Merkle „Stop the Software Architecture Erosion“
                                               Page: 31
Fixing Architectural Violations




                       Bernhard Merkle „Stop the Software Architecture Erosion“
                                               Page: 32
Fixing Architectural Violations




                       Bernhard Merkle „Stop the Software Architecture Erosion“
                                               Page: 33
Findbugs:
   and the next level of
checking ;-)




                Bernhard Merkle „Stop the Software Architecture Erosion“
                                        Page: 34
Tools for Architecture-Analysis
  – Sotograph
  – Bauhaus
  – Structure101

  – SonarJ
  – Lattix
  – Klocwork K7

  – Others:
     • http://code.google.com/p/architecturerules/
     • Semmlecode, CodeCrawler, SeeSoft, XRadar,…
http://se-radio.net/podcast/2008-10/episode-115-architecture-analysis Erosion“
                                          Bernhard Merkle „Stop the Software Architecture
                                                                   Page: 35
Basic Approaches
  –   Your makesystem…
  –   makedepend, jdepend
  –   RE code into UML model
  –   Eclipse (Java Build Path)




                                  Bernhard Merkle „Stop the Software Architecture Erosion“
                                                          Page: 36
Basic Approaches
PDE Dependency Visualization




                               Bernhard Merkle „Stop the Software Architecture Erosion“
                                                       Page: 37
Missing in basic approaches
Architecture Analysis (Deviation)
Drill-Down+Aggregation
Displaying results
Monitoring changes, trends
Rating of Architecture

  Requirements for Architectural Analysis Tools




                                Bernhard Merkle „Stop the Software Architecture Erosion“
                                                        Page: 38
Architecture Analysis (deviation)

 Requirements    •System SHOULD be: maintainable, easy to understand, extensible, independent


                                    •Model Dependencies
                                    •Model Interfaces
 Architecture-       Should-        •Model Subsystems
    Design         Architecture

                                       Comparison                     “Diff-”                   Actions
                                                                   Architecture

  Extraction           Is-                                               •Violations
                                    •Dependencies as exist               •Conformance
                   Architecture
                                    •Interfaces / Usage as exist
                                    •Subsystems


 Existing Code   •System IS: … ☺


                                                     Bernhard Merkle „Stop the Software Architecture Erosion“
                                                                             Page: 39
Drill-Down + Aggregation:
Component   System   Package          Class              Src-Line




                          Bernhard Merkle „Stop the Software Architecture Erosion“
                                                  Page: 40
Displaying results:
Graphical and/or numerical




                             Bernhard Merkle „Stop the Software Architecture Erosion“
                                                     Page: 41
Monitoring changes, trends (QA)
New artefacts
  – Interface, Subsystem, Package, File, Class, Operation etc.
  – Dependencies
  – Architecture violations


Early, betimes correction of violations

Monitoring
  – Trendreports
  – “outsourcing” projects



                                     Bernhard Merkle „Stop the Software Architecture Erosion“
                                                             Page: 42
Rating of Architecture
NO Rating of external Requirements (Fullfillment)

Internal Quality:
  –   Cycles
  –   Coupling
  –   Stability
  –   Anti-Patterns, Bad Smells




                                  Bernhard Merkle „Stop the Software Architecture Erosion“
                                                          Page: 43
Eclipse: Architectural Analysis
  – JDT




  – CDT

                   Bernhard Merkle „Stop the Software Architecture Erosion“
                                           Page: 49
Eclipse Architecture




                       Bernhard Merkle „Stop the Software Architecture Erosion“
                                               Page: 50
Eclipse Architecture




         Bernhard Merkle „Stop the Software Architecture Erosion“
                                 Page: 51
E3.4: Runtime   Update




                     Bernhard Merkle „Stop the Software Architecture Erosion“
                                             Page: 53
E3.4: Workbench   Text, Update, Help




                      Bernhard Merkle „Stop the Software Architecture Erosion“
                                              Page: 54
CDT:




       Bernhard Merkle „Stop the Software Architecture Erosion“
                               Page: 72
Interface Design
more than OSGI
Well balanced arragement of…
Layout/Visualize the
     calling graph key communication
     inheritance key abstractions

                      Bernhard Merkle „Stop the Software Architecture Erosion“
                                              Page: 75
Bernhard Merkle „Stop the Software Architecture Erosion“
                        Page: 77
Dependent BaseClass

 – Type:
     • Design Problem


 – Problem:
     • one of more Methods shall implement different
     • behavior, depending on the type, passed in
 – Context:
     • make “extensible” systems, frameworks
 – Forces:
     • Programming languages offer, instanceof/typeid funcs.
 – Antipattern:
     • Methods of the baseclass, depend on derived classes, e.g. accessing their
       members, doing switch/case depending on type information


                                                Bernhard Merkle „Stop the Software Architecture Erosion“
                                                                        Page: 78
AntiPatterns / Bad Smells:
Metrics/1000 Classes        Eclipse                     JDK

Dependent Baseclass:          1                            16
Multiple Interface Inher.     4                            18

Abstractable Methods         80                          60
Abstractable Attributes      45                         170

Unused Classes               50                       150
Unused Methods              950                      2500
Unused Attributes            30                        20


                             Bernhard Merkle „Stop the Software Architecture Erosion“
                                                     Page: 80
Code Clones




              Bernhard Merkle „Stop the Software Architecture Erosion“
                                      Page: 81
Code Clones
 – identical Files
     • E2.0 JDT,CDT
          – jdtdebuginternaluidialogfieldsListDialogField.java
          – cdtdebuginternaluidialogfieldsListDialogField.java
     • E3.4 CDT: identical packages
          – cdtdebuginternaluidialogfields, cdtdebugmiinternaluidialogfields

 – variation of former identical Files
     • E34 JDT,CDT
          – jdtdebuginternaluidialogfieldsListDialogField.java
          – cdtdebuginternaluidialogfieldsListDialogField.java

 – identical behaviour in different Classes
     • e.g. Codegeneration ;-)

 – Identical behaviour in same Class
     • swt.graphics.ImageData.java
          – static void blit(…) // four variations


                                                     Bernhard Merkle „Stop the Software Architecture Erosion“
                                                                             Page: 82
Rating Eclipse Architecture
– VERY clean

– OSGI helps a lot

– API Police




–     Technology and People



                              Bernhard Merkle „Stop the Software Architecture Erosion“
                                                      Page: 88
Rating Eclipse Architecture:
Process and Tools !
  – Violations
     • Upper layers
     • Internal access


  – OSGI is not enough

  – Small amount of
     • AntiPatterns
     • CodeCones




                         Bernhard Merkle „Stop the Software Architecture Erosion“
                                                 Page: 89
Pictures under CC license from flickr:
1191285966_d701fcb1c3_b_flickr_bluemeat.jpg
3425532267_bd74526b23_b_flickr_tiwo.jpg
1813471845_5a4be999dc_o_flickr_thatcanadiangrrl.jpg
2401122677_c25dea1233_b_flickr_EnglishGirlAbroad.jpg
501709581_f3729ceaeb_b_flickr.jpg




                                  Bernhard Merkle „Stop the Software Architecture Erosion“
                                                          Page: 91

More Related Content

Similar to Eclipse Summit 2009 Bernhard Merkle Stop The Software Architecture Erosion

The Language of Application Architecture
The Language of Application ArchitectureThe Language of Application Architecture
The Language of Application ArchitectureBrad Beiermann
 
Hatii seminar 2014 - The emerging needs and the long standing issues curating...
Hatii seminar 2014 - The emerging needs and the long standing issues curating...Hatii seminar 2014 - The emerging needs and the long standing issues curating...
Hatii seminar 2014 - The emerging needs and the long standing issues curating...Ruggero Lancia
 
Democratising Software Architecture
Democratising Software ArchitectureDemocratising Software Architecture
Democratising Software ArchitectureEoin Woods
 
SE2_Lec 19_Design Principles and Design Patterns
SE2_Lec 19_Design Principles and Design PatternsSE2_Lec 19_Design Principles and Design Patterns
SE2_Lec 19_Design Principles and Design PatternsAmr E. Mohamed
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsAmr E. Mohamed
 
Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization  Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization Ivano Malavolta
 
SDA 01.pptx
SDA 01.pptxSDA 01.pptx
SDA 01.pptxJuttG6
 
[2017/2018] Architectural languages
[2017/2018] Architectural languages[2017/2018] Architectural languages
[2017/2018] Architectural languagesIvano Malavolta
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)stanbridge
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)stanbridge
 
02archintro
02archintro02archintro
02archintro624820
 
Design & Technology
Design & TechnologyDesign & Technology
Design & TechnologyLuca Galli
 
Design concepts and principle,
Design concepts and principle, Design concepts and principle,
Design concepts and principle, awikhan12
 
Enterprise Architecture 2012
Enterprise Architecture 2012Enterprise Architecture 2012
Enterprise Architecture 2012Vincent Tacquet
 
[2016/2017] Architectural languages
[2016/2017] Architectural languages[2016/2017] Architectural languages
[2016/2017] Architectural languagesIvano Malavolta
 
Modelling the User Interface
Modelling the User InterfaceModelling the User Interface
Modelling the User InterfacePedro J. Molina
 
Challenges In Managing Embedded Product Development
Challenges In Managing Embedded Product DevelopmentChallenges In Managing Embedded Product Development
Challenges In Managing Embedded Product DevelopmentAtul Nene
 
Visualize your architecture and information
Visualize your architecture and informationVisualize your architecture and information
Visualize your architecture and informationPeter Norrhall
 

Similar to Eclipse Summit 2009 Bernhard Merkle Stop The Software Architecture Erosion (20)

The Language of Application Architecture
The Language of Application ArchitectureThe Language of Application Architecture
The Language of Application Architecture
 
Hatii seminar 2014 - The emerging needs and the long standing issues curating...
Hatii seminar 2014 - The emerging needs and the long standing issues curating...Hatii seminar 2014 - The emerging needs and the long standing issues curating...
Hatii seminar 2014 - The emerging needs and the long standing issues curating...
 
Democratising Software Architecture
Democratising Software ArchitectureDemocratising Software Architecture
Democratising Software Architecture
 
SE2_Lec 19_Design Principles and Design Patterns
SE2_Lec 19_Design Principles and Design PatternsSE2_Lec 19_Design Principles and Design Patterns
SE2_Lec 19_Design Principles and Design Patterns
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design Patterns
 
Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization  Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization
 
SDA 01.pptx
SDA 01.pptxSDA 01.pptx
SDA 01.pptx
 
[2017/2018] Architectural languages
[2017/2018] Architectural languages[2017/2018] Architectural languages
[2017/2018] Architectural languages
 
Software Design
Software DesignSoftware Design
Software Design
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)
 
02archintro
02archintro02archintro
02archintro
 
Design & Technology
Design & TechnologyDesign & Technology
Design & Technology
 
Product Development Brochure
Product Development BrochureProduct Development Brochure
Product Development Brochure
 
Design concepts and principle,
Design concepts and principle, Design concepts and principle,
Design concepts and principle,
 
Enterprise Architecture 2012
Enterprise Architecture 2012Enterprise Architecture 2012
Enterprise Architecture 2012
 
[2016/2017] Architectural languages
[2016/2017] Architectural languages[2016/2017] Architectural languages
[2016/2017] Architectural languages
 
Modelling the User Interface
Modelling the User InterfaceModelling the User Interface
Modelling the User Interface
 
Challenges In Managing Embedded Product Development
Challenges In Managing Embedded Product DevelopmentChallenges In Managing Embedded Product Development
Challenges In Managing Embedded Product Development
 
Visualize your architecture and information
Visualize your architecture and informationVisualize your architecture and information
Visualize your architecture and information
 

Recently uploaded

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 

Recently uploaded (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 

Eclipse Summit 2009 Bernhard Merkle Stop The Software Architecture Erosion

  • 1. Stop the Software Architecture Erosion Bernhard Merkle Central Research & Development Software-Engineering SICK-AG Waldkirch mailto: Bernhard.Merkle@gmail.com Contact on linkedin.com or xing.com Erosion“ Bernhard Merkle „Stop the Software Architecture Page: 1
  • 2. Note: this is only a subset of the presentation slides ! Bernhard Merkle Central Research & Development Software-Engineering SICK-AG Waldkirch mailto: Bernhard.Merkle@gmail.com Contact on linkedin.com or xing.com Erosion“ Bernhard Merkle „Stop the Software Architecture Page: 2
  • 3. Traffic and Luggage Control Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 7
  • 4. Introduction / Overview Levels of Static Analysis – Code, Design, Architectural – Examples Architectural Analysis – Use Cases – Tool Support, – Examples – Pros/Cons Summary Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 8
  • 5. Possible levels of Static Analysis: Micro-Level – Code – =, ==, { }, Macro-Level – Class-Design – by reference, String concat, Exception-Handling Architecture-Level: – Layers, Graphs, Subsystems, Compoments, Interfaces – Coupling, Dependency, etc… Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 9
  • 6. Tool Example Java: findbugs Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 13
  • 7. Software-Architecture: Definitions IEEE 1471-2000: – 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. Kruchten: captured in two documents: – Software Architecture Document – Software Design Guidelines Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 15
  • 8. Erosion ALWAYS happens – Prototypes become products – Hacks. Architectural restrictions ignored – Lack of understanding the “should architecture” (e.g. outsourcing) – Time pressure leads to abbreviations – impossible to detect manually only Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 16
  • 9. Architectural Erosion “Sometimes the developers manage to maintain this purity of design through the initial development and into the first release. More often something goes wrong.The software starts to rot like a piece of bad meat”. Uncle Bob: “Agile Software Development” Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 17
  • 10. Architectural Erosion Why should we care ? – In (lots of) Projects, Architecture decay happens – We are not alone, as we‘ve some good representatives… ;-) Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 18
  • 11. Findbugs Is there a architecture ? Is there a erosion ? Do AA-Tool work well ? do codelevel lints care about architecture ? Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 19
  • 12. ONE BIG Tangle… 1.3.8 Bernhard Merkle „Stop the Software Architecture Erosion“ (03/2009) Page: 25
  • 13. Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 26
  • 14. Modeling Subsystems: Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 27
  • 15. Fixing Architectural Violations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 28
  • 16. Fixing Architectural Violations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 31
  • 17. Fixing Architectural Violations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 32
  • 18. Fixing Architectural Violations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 33
  • 19. Findbugs: and the next level of checking ;-) Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 34
  • 20. Tools for Architecture-Analysis – Sotograph – Bauhaus – Structure101 – SonarJ – Lattix – Klocwork K7 – Others: • http://code.google.com/p/architecturerules/ • Semmlecode, CodeCrawler, SeeSoft, XRadar,… http://se-radio.net/podcast/2008-10/episode-115-architecture-analysis Erosion“ Bernhard Merkle „Stop the Software Architecture Page: 35
  • 21. Basic Approaches – Your makesystem… – makedepend, jdepend – RE code into UML model – Eclipse (Java Build Path) Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 36
  • 22. Basic Approaches PDE Dependency Visualization Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 37
  • 23. Missing in basic approaches Architecture Analysis (Deviation) Drill-Down+Aggregation Displaying results Monitoring changes, trends Rating of Architecture Requirements for Architectural Analysis Tools Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 38
  • 24. Architecture Analysis (deviation) Requirements •System SHOULD be: maintainable, easy to understand, extensible, independent •Model Dependencies •Model Interfaces Architecture- Should- •Model Subsystems Design Architecture Comparison “Diff-” Actions Architecture Extraction Is- •Violations •Dependencies as exist •Conformance Architecture •Interfaces / Usage as exist •Subsystems Existing Code •System IS: … ☺ Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 39
  • 25. Drill-Down + Aggregation: Component System Package Class Src-Line Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 40
  • 26. Displaying results: Graphical and/or numerical Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 41
  • 27. Monitoring changes, trends (QA) New artefacts – Interface, Subsystem, Package, File, Class, Operation etc. – Dependencies – Architecture violations Early, betimes correction of violations Monitoring – Trendreports – “outsourcing” projects Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 42
  • 28. Rating of Architecture NO Rating of external Requirements (Fullfillment) Internal Quality: – Cycles – Coupling – Stability – Anti-Patterns, Bad Smells Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 43
  • 29. Eclipse: Architectural Analysis – JDT – CDT Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 49
  • 30. Eclipse Architecture Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 50
  • 31. Eclipse Architecture Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 51
  • 32. E3.4: Runtime Update Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 53
  • 33. E3.4: Workbench Text, Update, Help Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 54
  • 34. CDT: Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 72
  • 35. Interface Design more than OSGI Well balanced arragement of… Layout/Visualize the calling graph key communication inheritance key abstractions Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 75
  • 36. Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 77
  • 37. Dependent BaseClass – Type: • Design Problem – Problem: • one of more Methods shall implement different • behavior, depending on the type, passed in – Context: • make “extensible” systems, frameworks – Forces: • Programming languages offer, instanceof/typeid funcs. – Antipattern: • Methods of the baseclass, depend on derived classes, e.g. accessing their members, doing switch/case depending on type information Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 78
  • 38. AntiPatterns / Bad Smells: Metrics/1000 Classes Eclipse JDK Dependent Baseclass: 1 16 Multiple Interface Inher. 4 18 Abstractable Methods 80 60 Abstractable Attributes 45 170 Unused Classes 50 150 Unused Methods 950 2500 Unused Attributes 30 20 Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 80
  • 39. Code Clones Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 81
  • 40. Code Clones – identical Files • E2.0 JDT,CDT – jdtdebuginternaluidialogfieldsListDialogField.java – cdtdebuginternaluidialogfieldsListDialogField.java • E3.4 CDT: identical packages – cdtdebuginternaluidialogfields, cdtdebugmiinternaluidialogfields – variation of former identical Files • E34 JDT,CDT – jdtdebuginternaluidialogfieldsListDialogField.java – cdtdebuginternaluidialogfieldsListDialogField.java – identical behaviour in different Classes • e.g. Codegeneration ;-) – Identical behaviour in same Class • swt.graphics.ImageData.java – static void blit(…) // four variations Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 82
  • 41. Rating Eclipse Architecture – VERY clean – OSGI helps a lot – API Police – Technology and People Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 88
  • 42. Rating Eclipse Architecture: Process and Tools ! – Violations • Upper layers • Internal access – OSGI is not enough – Small amount of • AntiPatterns • CodeCones Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 89
  • 43. Pictures under CC license from flickr: 1191285966_d701fcb1c3_b_flickr_bluemeat.jpg 3425532267_bd74526b23_b_flickr_tiwo.jpg 1813471845_5a4be999dc_o_flickr_thatcanadiangrrl.jpg 2401122677_c25dea1233_b_flickr_EnglishGirlAbroad.jpg 501709581_f3729ceaeb_b_flickr.jpg Bernhard Merkle „Stop the Software Architecture Erosion“ Page: 91