SlideShare ist ein Scribd-Unternehmen logo
1 von 77
Downloaden Sie, um offline zu lesen
Uma abordagem efetiva para melhoria contínua da qualidade de
                         software




  Roberto Pepato Mellado
  @rpepato


  Gabriel Moreira
  @gspmoreira
George L. Kelling




                    James Q. Wilson
[ISO 9126 / 25000]


Maintainability



    Analisability



   Modificability



      Stability



     Testability
Maintenance Effort and
Software Maintainability
                                 Accuracy




               Preventive
why?
[Kemerer et. Al, 1999]
[Jones, 2007]
[Bennet, 2002]
Not me!
Programmers are constantly in
     maintenance mode
           “You are rarely writing original
           code.”

           "I'm maintaining from day one."

           “It's only the first 10 minutes that
           the code's original, when you type it
           in the first time. That's it.”
Don’t Make This Common Mistake
Technical Debt
Quality or Fast Delivery?
It’s not my fault, but it is still my problem
Dreaming and Planning Software Quality
          for his next project
Dijkstra




              [design by
              Philip Calçado]




is Watching
Formal Inspection
Lightweight Inspection
Next, please!
Static Code Analysis
What about tools?




http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
FxCop (.NET)
StyleCop (.NET)
Resharper (.NET)
NDepend (.NET)
JDepend (Java)
Find Bugs (Java)
CCFinder (C#, Java, C++, VB)
SimpleCov (Ruby)
SimpleCov (Ruby)
Metric-fu -- Churn (Ruby)
Metric-fu -- Flog(Ruby)
Metric-fu -- Reek(Ruby)
Metric-fu -- Stats(Ruby)
Metric-fu -- Hotspots(Ruby)
Continuous
Inspection




 CI + SCA
Continuous
                              Improvement
Metrics


          Bad Smells



                       Inspection



                                    Refactoring
Conditional Complexity


               Measure: Cyclomatic complexity

               Tools
               • JavaNCSS
               • PMD
               • NDepend

               Refactorings
               • Replace Conditional with
                 Polymorphism
               • Extract Method
Duplicated Code


            Measure: Code duplication

            Tools: CheckStyle, PMD

            Refactorings:
            • Extract Method
            • Pull Up Method
            • Form Template Method
            • Substitute Algorithm
Long Method / Class


              Measure: Source lines of code
              (SLOC)

              Tool: PMD, JavaNCSS,
              CheckStyle

              Refactorings: Extract Method,
              Replace Temp with Query,
              Introduce Parameter Object,
              Preserve Whole Object,
              Replace Method with Method
              Object
Excessive Dependency


              Measure: Efferent coupling
              (fan-out per class)

              Tool: CheckStyle, NDepend

              Refactorings:
              • Move Method
              • Extract Class
Inspection Automation in CI
<target name="inspect" >
    <exec program="${tools.fxcop}"
     commandline="/p:${reports.scripts}Mineradores.fxcop
  /out:${reports.output}ccnet-fxcop-results.xml"
  failonerror="false"/>

    <exec program="${tools.stylecopcmd}"
     commandline="-sf
  &quot;${libandunittest.buildfile.path}LibAndUnitTest.sln&quot; -
  of &quot;${reports.output}ccnet-libstylecop-output.xml&quot;"
  failonerror="false"/>

    <exec program="${tools.ndepend}" failonerror="false">
     <arg value="${reports.scripts}Mineradores-NDepend.xml" />
     <arg value="/OutDir &quot;${reports.ndepend.output}&quot;" />
    </exec>
 </target>
NDepend Report
NDepend Report
Combination from measures of attributes belonging to a
software product, or to its development process, which shows
quantitatively some of its characteristics.
Software Product Metrics


                Métricas de Produto OO


Tamanho          Complexida       Acoplamento        Coesão            Herança             Other Metrics
•LOC             de               •AC – Aferent      •LCOM – Lack of   •NOC - Number of    •Churn
•N. Métodos                        Coupling           Cohesion          Children           •Program
                 •CC -                                Methods
•N. Atributos                     •EC – Eferent                        •DIT - Depth of      Vocabulary
                  Complexidade     Coupling          •LCOM-HS - Lack    Inheritance Tree   •...
                  Ciclomática     •ABC –              of Cohesion Of
                 •Métricas de      Association        Methods
                  Halstead         Between Classes    Henderson-
                 •MCD - Max                           Sellers
                  Conditional
                  Depth
                 •MLD - Max
                  Loop Depth
                 •DD - Decision
                  Density
How to Deal With Lots Of Data?
Metrics Analysis – Dashboards (Sonar)
Metrics Analysis – Temporal Series
Metrics Analysis - Control Charts
Metrics Analysis - OLAP
Metrics Analysis – Indicators from DW
Build Definition
Going Deeper
I need some help!
Roberto Pepato Mellado              Gabriel Moreira
  rpepato@gmail.com        gabrielspmoreira@yahoo.com.br
      @rpepato                       @gspmoreira


         http://workingsweng.wordpress.com/
http://www.agilevale.com.br/
                       @agilevale
                       #agilevale




19 e 20 de Agosto de 2011

Weitere ähnliche Inhalte

Ähnlich wie Continuous Inspection - Uma abordagem efetiva para melhoria contínua da qualidade de software

Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
The art of system and solution testing
The art of system and solution testingThe art of system and solution testing
The art of system and solution testing
gaoliang641
 
Detection of Seed Methods for Quantification of Feature Confinement
Detection of Seed Methods for Quantification of Feature ConfinementDetection of Seed Methods for Quantification of Feature Confinement
Detection of Seed Methods for Quantification of Feature Confinement
Andrzej Olszak
 

Ähnlich wie Continuous Inspection - Uma abordagem efetiva para melhoria contínua da qualidade de software (20)

The Diabolical Developers Guide to Performance Tuning
The Diabolical Developers Guide to Performance TuningThe Diabolical Developers Guide to Performance Tuning
The Diabolical Developers Guide to Performance Tuning
 
NLP Classifier Models & Metrics
NLP Classifier Models & MetricsNLP Classifier Models & Metrics
NLP Classifier Models & Metrics
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Introducing LCS to Digital Design Verification
Introducing LCS to Digital Design VerificationIntroducing LCS to Digital Design Verification
Introducing LCS to Digital Design Verification
 
Agile Base Camp - Agile metrics
Agile Base Camp - Agile metricsAgile Base Camp - Agile metrics
Agile Base Camp - Agile metrics
 
Art of Feature Engineering for Data Science with Nabeel Sarwar
Art of Feature Engineering for Data Science with Nabeel SarwarArt of Feature Engineering for Data Science with Nabeel Sarwar
Art of Feature Engineering for Data Science with Nabeel Sarwar
 
Keynote: Machine Learning for Design Automation at DAC 2018
Keynote:  Machine Learning for Design Automation at DAC 2018Keynote:  Machine Learning for Design Automation at DAC 2018
Keynote: Machine Learning for Design Automation at DAC 2018
 
Incremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software EngineeringIncremental Model Queries for Model-Dirven Software Engineering
Incremental Model Queries for Model-Dirven Software Engineering
 
The art of system and solution testing
The art of system and solution testingThe art of system and solution testing
The art of system and solution testing
 
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practicePHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
 
Performance Testing Java Applications
Performance Testing Java ApplicationsPerformance Testing Java Applications
Performance Testing Java Applications
 
Sista: Improving Cog’s JIT performance
Sista: Improving Cog’s JIT performanceSista: Improving Cog’s JIT performance
Sista: Improving Cog’s JIT performance
 
優化開發環境 無料提升戰鬥力
優化開發環境 無料提升戰鬥力優化開發環境 無料提升戰鬥力
優化開發環境 無料提升戰鬥力
 
Rethinking Testing
Rethinking TestingRethinking Testing
Rethinking Testing
 
Webinar: How We Evaluated MongoDB as a Relational Database Replacement
Webinar: How We Evaluated MongoDB as a Relational Database ReplacementWebinar: How We Evaluated MongoDB as a Relational Database Replacement
Webinar: How We Evaluated MongoDB as a Relational Database Replacement
 
H2O World - Solving Customer Churn with Machine Learning - Julian Bharadwaj
H2O World - Solving Customer Churn with Machine Learning - Julian BharadwajH2O World - Solving Customer Churn with Machine Learning - Julian Bharadwaj
H2O World - Solving Customer Churn with Machine Learning - Julian Bharadwaj
 
Testing Tools Classroom Training
Testing Tools Classroom TrainingTesting Tools Classroom Training
Testing Tools Classroom Training
 
General Tips for participating Kaggle Competitions
General Tips for participating Kaggle CompetitionsGeneral Tips for participating Kaggle Competitions
General Tips for participating Kaggle Competitions
 
Detection of Seed Methods for Quantification of Feature Confinement
Detection of Seed Methods for Quantification of Feature ConfinementDetection of Seed Methods for Quantification of Feature Confinement
Detection of Seed Methods for Quantification of Feature Confinement
 
The Art Of Performance Tuning
The Art Of Performance TuningThe Art Of Performance Tuning
The Art Of Performance Tuning
 

Mehr von Roberto Pepato

Mehr von Roberto Pepato (6)

Haskell 101
Haskell 101Haskell 101
Haskell 101
 
Be Agile, Stay Agile
Be Agile, Stay AgileBe Agile, Stay Agile
Be Agile, Stay Agile
 
METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...
METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...
METACOM - Um Método para Análise de Correlação entre Métricas de Produto de S...
 
An investigation of extreme programming practices and its impact on software ...
An investigation of extreme programming practices and its impact on software ...An investigation of extreme programming practices and its impact on software ...
An investigation of extreme programming practices and its impact on software ...
 
Adding where to your ruby apps
Adding where to your ruby appsAdding where to your ruby apps
Adding where to your ruby apps
 
Adding where to your ruby apps lt - (q con)
Adding where to your ruby apps   lt -  (q con)Adding where to your ruby apps   lt -  (q con)
Adding where to your ruby apps lt - (q con)
 

Kürzlich hochgeladen

Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
FIDO Alliance
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 

Kürzlich hochgeladen (20)

Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 

Continuous Inspection - Uma abordagem efetiva para melhoria contínua da qualidade de software