SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Got Myth?
          ICSM Working Session
          October 4, 2007, Paris




Tom Zimmermann, University of Calgary, Canada
 Ahmed E. Hassan, Queen’s University, Canada
True or False?


      +
Using a cell phone while pumping gas
       can cause an explosion
True or False?


      +
                            ED
                       ST
                 BU
Using a cell phone while pumping gas
      can cause an explosion
Myths in SE?
Myths in SE?

Bugs reside in complex code
Myths in SE?

Bugs reside in complex code




             Clones are evil!
Myths in SE?

Bugs reside in complex code
        Aspect-oriented programs
        are easy to maintain



                Clones are evil!
Myths in SE?

Bugs reside in complex code
            Aspect-oriented programs
            are easy to maintain

Mythical man month
                     Clones are evil!
Thanks!

                        Winifred Menezes
Israel Herraiz

                        pmerson
    Gregor Kiczales
                           Chanchal Kumar Roy

 Farooq Iqbal         Huzefa Kagdi
Schedule
14:00-14:20 Intro & Wiki News
14:20-15:30 The Clone War Begins
15:30-16:00 Break
16:00-16:45 Bugs! Bugs! Bugs!
16:45-17:15 Top 100 Myths
17:15-17:30 Future of Myths in SE
Invited talks
Invited talks




Mike Godfrey   Andreas Zeller
Bugs reside
        in complex code.




In the quest for metrics that predict bugs, many tools report
various code complexity metrics; however, recent studies show
that most complexity metrics correlate with just LOC. Is it
really complexity that makes programs fail?
Bugs reside in complex code
■ In an 80s study on a ~90KLOC program for satellite
  planning, Basili and Perricone noted that
  – The larger modules (size in LOC) were less error prone
  – Error-prone modules did not have higher (cyclomatic) complexity
    than error-free modules. In fact, the defect rate of modules
    decreased with the increase in size and complexity
  – These results were quite surprising. So, bugs reside in complex: a
    myth or not a conclusive fact yet that needs further establishment?
■ In 2007 Herraiz and colleagues showed that
  – LOC and SLOC are highly correlated with classical complexity
    metrics for the case of the C programming language
  – The study was performed on a sample of 700,000 files, obtained
    from all the software packages included in FreeBSD
Bugs reside in complex code
■ I guess it depends on what is meant by complexity - many
  paths through the code, many jumps backward and
  forward, many loops. Clearly the more LOC - the more
  possibility there is for any or all of the above
■ I have done research on software defect models. I did a
  survey and most software people think that complexity is a
  good predictor of defects.
  – But some analysis done with defect data of various projects
    revealed to me that complexity (cyclomatic complexity) is not
    correlated with defects. I think software defects depend upon
    multiple factors out of which one can be 'complexity'.
Clones are evil!




For a long time code cloning was considered harmful;
however, recent studies show that cloning might even be
beneficial and desirable...
Clones are evil!
■ Cordy reports that removing clones
  increases risk for large systems
■ Kim et al. examine the evolution of clones
  and conclude that clone refactoring would
  not help many of the long lived clones
■ Kapser and Godfrey describe several
  patterns of clonning and discuss their
  benefits for the long term evolution of
  software systems
Clones are evil!
■ Aversano et al. study co-change analysis and show
  that most of the cloned code is consistently
  maintained, particularly while bug fixing of cloned
  fragments. Their study indirectly shows that clones
  may not be harmful to software maintenance
■ A prototype tool, CloneTracker, has been developed
  by Lozano et al. to evaluate the harmfulness of
  cloning. Although their case study intends to show
  that clones are harmful, they were unsure of the
  results
Clones are evil!
■ Monden et al. conducted an experiment for evaluating the
  relation between clones and software quality attributes,
  namely reliability and maintainability with industrial
  systems. Their study shows that
  – modules/files with code clones are on average 1.7 times more
    reliable than files/modules without code clones
  – However, modules/files with larger clones are less reliable than
    others
■ In the case of maintainability quality attribute, their results
  also support the usual hypothesis that clones have a bad
  impact on software maintenance
■ Koschke has a survery of state of research in cloning
AOP programs are
   easy to maintain.




Aspect-oriented programming seems to be a story of successes;
however, after ten years of active research (including its own
conference), it is not clear whether aspect-oriented programs
are any easier to maintain than traditional programs.
Aspect-oriented programs are
         easy to maintain
■ No rational AOP proponent would stand by this claim
■ For one thing, a badly written AOP program is not easy to
  maintain. Moreover, a program that really needs AOP is
  an inherently more complex thing than a program that
  really doesn’t need AOP — so there’s an apples vs.
  oranges error to be careful for there
■ In the end, the only reasonable claim one could make
  about AOP is that
  – When a system’s functionality inherently has crosscutting concerns,
    proper use of AOP leads to an implementation that is easier to
    maintain than the implementation one would get without AOP
■ Slides for AOP myths and realities
The mythical
             man month




Many software project managers still believe that men and
months are interchangeable commodities in software project
schedules.
Mythical Man Month
■ Project managers use the number of men and months as
  interchangeable units for measuring the project effort.
■ “The number of men and months are interchangeable
  measures in software projects” is a myth, Brooks 1975
■ McConnell argues that Brooks' Law is less pervasive than
  it appears
■ Today
  – Many managers still ignore the myth and add staff to software
    projects running behind schedule.
  – Coordination issues amplified with global software development.
    Geographically distributed teams suffer with the lack of face-to-face
    communication
Clones
■ What is a clone?
  – Task oriented definition of a clone (can I refractor it)
  – Intent matters (you meant it)
  – Find problematic code patterns instead
■ Effect of clones in the long term:
  – Refactoring is challenging but we provide tool support.
     • Should we provide clone support
  – Awareness is very important
■ How can we show that clones are good/bad?
  – What type of studies are needed
     • Scale/Industry vs. open source
■ What are bad clones?
  – Any patterns of bad clones
Clones
■ Where should research go?
 –New clone detection tools…
 –Study the long term effects of clones
 –Clone maintenance tools
■ How can we integrate clones into practice?
 –Clones as a project management/release tool
 –Clones as a way of coding (the new reuse!)
Clones
■ How can we show that clones are good/bad?
  – What type of studies are needed
    • Scale/Industry vs. open source
■ What are bad clones?
  – Any patterns of bad clones
■ Where should research go?
  – New clone detection tools
  – Study the long term effects of clones
  – Clone maintenance tools
■ How can we integrate clones into practice?
  – Clones as a project management/release tool
  – Clones as a way of coding (the new reuse!)
Bugs! Bugs! Bugs!
■ Watch out for confounding factors. It’s easy to be tricked.
■ History gives mostly correlations, rarely causation.
■ Are we using the wrong metrics?
  – OO complexity is rarely captured
■ Certain kinds of bugs matter more.
■ Different models for different kind of bugs?
■ Bugs are some form of disease.

■ Where should research go?
  – Better complexity metrics
  – More (controlled) experiments
  – Insure software against bugs (new business idea?)
Your myths?!
Software complexity/maintenance cost can be calculated by
1.
    measuring structural complexity
2. AOP promotes modularity

3. All new requirements can be implemented in an existing
    codebase
4. Overtime in necessary and useful

5. Cutting QA will save us money

6. Open source is better quality than proprietary software

7. Linux will become un-maintainable because of high internal
    coupling
8. Service orientation will lead to better (more maintainable)
    systems
9. Open source applications are mainly developed by people
    working in their free time on a voluntary basis and without
    being paid for that
10. Aspects != cross-cutting concerns

11. Open source software development process is different from
    industrial projects
Software testing is tedious but not hard (Not worth teaching in
12.
    universities)
13. Linux is a representative open source project

14. Requirements are not useful in open source projects

15. Software visualization is helpful

16. C++ is faster than Java

17. UIs can be separated from their application

18. Design patterns make better code

19. Quality is free

20. God classes are a problem

21. Software maintenance (is software really “maintained”)

22. OO systems are easier to maintain than procedural

23. Gotos are harmful

24. Features added to Java are novel and not invented in the 70s.

25. Good software can only be built with good requirements

26. Good tools make good programmers
Good software cannot be built with a weakly typed language
27.
    (like pythons)
28. Complexity of code will soon become unmanageable

29. Cobol is dead

30. It is not possible for a query language to be seriously logical
    and seriously object oriented at the same time
31. XML will solve world hunger problems!

32. Legacy=bad

33. Macs are better than PCs
Vote BUSTED
  or CONFIRMED
   (The following slides report what was voted
      by the majority of MythSE participants.)
AOP promotes
 modularity

       ED
     ST
  BU
Open source is better
quality than proprietary
        software
            ED
          ST
       BU
Service orientation will
 lead to better (more
 maintainable) systems
            ED
          ST
       BU
Linux is a
representative open
  source project
          ED
        ST
     BU
C++ is faster than Java

               ED
            RM
          I
       NF
    CO
Design patterns
     make better code

                       ED
          + CONF
    ED              RM
  ST              I
BU
                 (This one was a tie)
God classes
are a problem

          ED
       RM
     I
   NF
CO
Good tools make
good programmers

         ED
       ST
    BU
Cobol is dead

       ED
     ST
  BU
Legacy = bad!

       ED
     ST
  BU
Future of Myths in SE?


• Another working session?
• Workshop on Negative Results?
Got Myth!
Update the MythSE Wiki:
 mythse.wikispaces.com

Weitere ähnliche Inhalte

Was ist angesagt?

6 Most Common Threat Modeling Misconceptions
6 Most Common Threat Modeling Misconceptions6 Most Common Threat Modeling Misconceptions
6 Most Common Threat Modeling MisconceptionsCigital
 
DEVSECOPS: Coding DevSecOps journey
DEVSECOPS: Coding DevSecOps journeyDEVSECOPS: Coding DevSecOps journey
DEVSECOPS: Coding DevSecOps journeyJason Suttie
 
Amy DeMartine - 7 Habits of Rugged DevOps
Amy DeMartine - 7 Habits of Rugged DevOpsAmy DeMartine - 7 Habits of Rugged DevOps
Amy DeMartine - 7 Habits of Rugged DevOpsSeniorStoryteller
 
Getting to Know Security and Devs: Keys to Successful DevSecOps
Getting to Know Security and Devs: Keys to Successful DevSecOpsGetting to Know Security and Devs: Keys to Successful DevSecOps
Getting to Know Security and Devs: Keys to Successful DevSecOpsFranklin Mosley
 
Distributed Teams Infographic
Distributed Teams InfographicDistributed Teams Infographic
Distributed Teams InfographicBairesDev
 
Appsec Agility: A Brief Tour
Appsec Agility: A Brief TourAppsec Agility: A Brief Tour
Appsec Agility: A Brief TourRobert Keefer
 
Can You Really Automate Yourself Secure
Can You Really Automate Yourself SecureCan You Really Automate Yourself Secure
Can You Really Automate Yourself SecureCigital
 
Software Engineering - Ch1 introduction
Software Engineering - Ch1 introductionSoftware Engineering - Ch1 introduction
Software Engineering - Ch1 introductionRa'Fat Al-Msie'deen
 
Secure develpment 2014
Secure develpment 2014Secure develpment 2014
Secure develpment 2014Ariel Evans
 
What is Rapid Prototyping
What is Rapid PrototypingWhat is Rapid Prototyping
What is Rapid Prototypingclaromentis
 
Using security to drive chaos engineering - April 2018
Using security to drive chaos engineering - April 2018Using security to drive chaos engineering - April 2018
Using security to drive chaos engineering - April 2018Dinis Cruz
 
5 Things Every CISO Needs To Know About Open Source Security - A WhiteSource ...
5 Things Every CISO Needs To Know About Open Source Security - A WhiteSource ...5 Things Every CISO Needs To Know About Open Source Security - A WhiteSource ...
5 Things Every CISO Needs To Know About Open Source Security - A WhiteSource ...WhiteSource
 
Winning open source vulnerabilities without loosing your deveopers - Azure De...
Winning open source vulnerabilities without loosing your deveopers - Azure De...Winning open source vulnerabilities without loosing your deveopers - Azure De...
Winning open source vulnerabilities without loosing your deveopers - Azure De...WhiteSource
 
Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...Achim D. Brucker
 

Was ist angesagt? (20)

6 Most Common Threat Modeling Misconceptions
6 Most Common Threat Modeling Misconceptions6 Most Common Threat Modeling Misconceptions
6 Most Common Threat Modeling Misconceptions
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
DEVSECOPS: Coding DevSecOps journey
DEVSECOPS: Coding DevSecOps journeyDEVSECOPS: Coding DevSecOps journey
DEVSECOPS: Coding DevSecOps journey
 
Thinking in software testing
Thinking in software testingThinking in software testing
Thinking in software testing
 
Amy DeMartine - 7 Habits of Rugged DevOps
Amy DeMartine - 7 Habits of Rugged DevOpsAmy DeMartine - 7 Habits of Rugged DevOps
Amy DeMartine - 7 Habits of Rugged DevOps
 
Getting to Know Security and Devs: Keys to Successful DevSecOps
Getting to Know Security and Devs: Keys to Successful DevSecOpsGetting to Know Security and Devs: Keys to Successful DevSecOps
Getting to Know Security and Devs: Keys to Successful DevSecOps
 
Distributed Teams Infographic
Distributed Teams InfographicDistributed Teams Infographic
Distributed Teams Infographic
 
Appsec Agility: A Brief Tour
Appsec Agility: A Brief TourAppsec Agility: A Brief Tour
Appsec Agility: A Brief Tour
 
Can You Really Automate Yourself Secure
Can You Really Automate Yourself SecureCan You Really Automate Yourself Secure
Can You Really Automate Yourself Secure
 
The R.O.A.D to DevOps
The R.O.A.D to DevOpsThe R.O.A.D to DevOps
The R.O.A.D to DevOps
 
software characteristics
software characteristicssoftware characteristics
software characteristics
 
Software Engineering - Ch1 introduction
Software Engineering - Ch1 introductionSoftware Engineering - Ch1 introduction
Software Engineering - Ch1 introduction
 
Secure develpment 2014
Secure develpment 2014Secure develpment 2014
Secure develpment 2014
 
What is Rapid Prototyping
What is Rapid PrototypingWhat is Rapid Prototyping
What is Rapid Prototyping
 
Using security to drive chaos engineering - April 2018
Using security to drive chaos engineering - April 2018Using security to drive chaos engineering - April 2018
Using security to drive chaos engineering - April 2018
 
The Journey to DevSecOps
The Journey to DevSecOpsThe Journey to DevSecOps
The Journey to DevSecOps
 
5 Things Every CISO Needs To Know About Open Source Security - A WhiteSource ...
5 Things Every CISO Needs To Know About Open Source Security - A WhiteSource ...5 Things Every CISO Needs To Know About Open Source Security - A WhiteSource ...
5 Things Every CISO Needs To Know About Open Source Security - A WhiteSource ...
 
Winning open source vulnerabilities without loosing your deveopers - Azure De...
Winning open source vulnerabilities without loosing your deveopers - Azure De...Winning open source vulnerabilities without loosing your deveopers - Azure De...
Winning open source vulnerabilities without loosing your deveopers - Azure De...
 
TDC PoA submission
TDC PoA submissionTDC PoA submission
TDC PoA submission
 
Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...Bringing Security Testing to Development: How to Enable Developers to Act as ...
Bringing Security Testing to Development: How to Enable Developers to Act as ...
 

Ähnlich wie Got Myth? Myths in Software Engineering

Codemotion Berlin 2015 recap
Codemotion Berlin 2015   recapCodemotion Berlin 2015   recap
Codemotion Berlin 2015 recapTorben Dohrn
 
From 🤦 to 🐿️
From 🤦 to 🐿️From 🤦 to 🐿️
From 🤦 to 🐿️Ori Pekelman
 
2014 10-15-Nextbug edinburgh
2014 10-15-Nextbug edinburgh2014 10-15-Nextbug edinburgh
2014 10-15-Nextbug edinburghYannick Wurm
 
Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014Noah Sussman
 
From DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed ApidaysFrom DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed ApidaysOri Pekelman
 
Wcre2009 bettenburg
Wcre2009 bettenburgWcre2009 bettenburg
Wcre2009 bettenburgSAIL_QU
 
Konstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from asideKonstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from asidePVS-Studio
 
Chaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosChaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosCharity Majors
 
Working Effectively with Legacy Code
Working Effectively with Legacy CodeWorking Effectively with Legacy Code
Working Effectively with Legacy Codeslicklash
 
Software Ecosystems as Networks - Advances on the FASTEN project, Paolo Boldi...
Software Ecosystems as Networks - Advances on the FASTEN project, Paolo Boldi...Software Ecosystems as Networks - Advances on the FASTEN project, Paolo Boldi...
Software Ecosystems as Networks - Advances on the FASTEN project, Paolo Boldi...Fasten Project
 
Enhancing Developer Productivity with Code Forensics
Enhancing Developer Productivity with Code ForensicsEnhancing Developer Productivity with Code Forensics
Enhancing Developer Productivity with Code ForensicsTechWell
 
DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...
DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...
DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...Daniel Bryant
 
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docxNo Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docxcurwenmichaela
 
Quality - Douglas Crockford
Quality - Douglas CrockfordQuality - Douglas Crockford
Quality - Douglas CrockfordRaghavan Mohan
 
Producing Quality Software
Producing Quality SoftwareProducing Quality Software
Producing Quality SoftwareSimon Smith
 
The 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz TestingThe 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz TestingSebastiano Panichella
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye codeKim Moir
 
Putting the science in computer science
Putting the science in computer sciencePutting the science in computer science
Putting the science in computer scienceFelienne Hermans
 

Ähnlich wie Got Myth? Myths in Software Engineering (20)

Codemotion Berlin 2015 recap
Codemotion Berlin 2015   recapCodemotion Berlin 2015   recap
Codemotion Berlin 2015 recap
 
From 🤦 to 🐿️
From 🤦 to 🐿️From 🤦 to 🐿️
From 🤦 to 🐿️
 
2014 10-15-Nextbug edinburgh
2014 10-15-Nextbug edinburgh2014 10-15-Nextbug edinburgh
2014 10-15-Nextbug edinburgh
 
Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014Continuous Automated Testing - Cast conference workshop august 2014
Continuous Automated Testing - Cast conference workshop august 2014
 
From DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed ApidaysFrom DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed Apidays
 
Wcre2009 bettenburg
Wcre2009 bettenburgWcre2009 bettenburg
Wcre2009 bettenburg
 
Konstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from asideKonstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from aside
 
Chaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just ChaosChaos Engineering Without Observability ... Is Just Chaos
Chaos Engineering Without Observability ... Is Just Chaos
 
Working Effectively with Legacy Code
Working Effectively with Legacy CodeWorking Effectively with Legacy Code
Working Effectively with Legacy Code
 
Software Ecosystems as Networks - Advances on the FASTEN project, Paolo Boldi...
Software Ecosystems as Networks - Advances on the FASTEN project, Paolo Boldi...Software Ecosystems as Networks - Advances on the FASTEN project, Paolo Boldi...
Software Ecosystems as Networks - Advances on the FASTEN project, Paolo Boldi...
 
Enhancing Developer Productivity with Code Forensics
Enhancing Developer Productivity with Code ForensicsEnhancing Developer Productivity with Code Forensics
Enhancing Developer Productivity with Code Forensics
 
DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...
DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...
DevoxxUK 2016: "DevOps: Microservices, containers, platforms, tooling... Oh y...
 
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docxNo Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
 
Quality - Douglas Crockford
Quality - Douglas CrockfordQuality - Douglas Crockford
Quality - Douglas Crockford
 
Producing Quality Software
Producing Quality SoftwareProducing Quality Software
Producing Quality Software
 
The 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz TestingThe 16th Intl. Workshop on Search-Based and Fuzz Testing
The 16th Intl. Workshop on Search-Based and Fuzz Testing
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye code
 
Mouna Abidi
Mouna AbidiMouna Abidi
Mouna Abidi
 
2014 abic-talk
2014 abic-talk2014 abic-talk
2014 abic-talk
 
Putting the science in computer science
Putting the science in computer sciencePutting the science in computer science
Putting the science in computer science
 

Mehr von Thomas Zimmermann

Software Analytics = Sharing Information
Software Analytics = Sharing InformationSoftware Analytics = Sharing Information
Software Analytics = Sharing InformationThomas Zimmermann
 
Predicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsPredicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsThomas Zimmermann
 
Analytics for smarter software development
Analytics for smarter software development Analytics for smarter software development
Analytics for smarter software development Thomas Zimmermann
 
Characterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedCharacterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedThomas Zimmermann
 
Data driven games user research
Data driven games user researchData driven games user research
Data driven games user researchThomas Zimmermann
 
Not my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsNot my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsThomas Zimmermann
 
Empirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchEmpirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchThomas Zimmermann
 
Security trend analysis with CVE topic models
Security trend analysis with CVE topic modelsSecurity trend analysis with CVE topic models
Security trend analysis with CVE topic modelsThomas Zimmermann
 
Analytics for software development
Analytics for software developmentAnalytics for software development
Analytics for software developmentThomas Zimmermann
 
Characterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedCharacterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedThomas Zimmermann
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
Cross-project defect prediction
Cross-project defect predictionCross-project defect prediction
Cross-project defect predictionThomas Zimmermann
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
Predicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsPredicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsThomas Zimmermann
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceThomas Zimmermann
 
Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Thomas Zimmermann
 
Mining Workspace Updates in CVS
Mining Workspace Updates in CVSMining Workspace Updates in CVS
Mining Workspace Updates in CVSThomas Zimmermann
 

Mehr von Thomas Zimmermann (20)

Software Analytics = Sharing Information
Software Analytics = Sharing InformationSoftware Analytics = Sharing Information
Software Analytics = Sharing Information
 
MSR 2013 Preview
MSR 2013 PreviewMSR 2013 Preview
MSR 2013 Preview
 
Predicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsPredicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode Operations
 
Analytics for smarter software development
Analytics for smarter software development Analytics for smarter software development
Analytics for smarter software development
 
Characterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedCharacterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get Reopened
 
Klingon Countdown Timer
Klingon Countdown TimerKlingon Countdown Timer
Klingon Countdown Timer
 
Data driven games user research
Data driven games user researchData driven games user research
Data driven games user research
 
Not my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsNot my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignments
 
Empirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchEmpirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft Research
 
Security trend analysis with CVE topic models
Security trend analysis with CVE topic modelsSecurity trend analysis with CVE topic models
Security trend analysis with CVE topic models
 
Analytics for software development
Analytics for software developmentAnalytics for software development
Analytics for software development
 
Characterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedCharacterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixed
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
Cross-project defect prediction
Cross-project defect predictionCross-project defect prediction
Cross-project defect prediction
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
Predicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsPredicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency Graphs
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open Source
 
Meet Tom and his Fish
Meet Tom and his FishMeet Tom and his Fish
Meet Tom and his Fish
 
Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities
 
Mining Workspace Updates in CVS
Mining Workspace Updates in CVSMining Workspace Updates in CVS
Mining Workspace Updates in CVS
 

Kürzlich hochgeladen

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 

Kürzlich hochgeladen (20)

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 

Got Myth? Myths in Software Engineering

  • 1. Got Myth? ICSM Working Session October 4, 2007, Paris Tom Zimmermann, University of Calgary, Canada Ahmed E. Hassan, Queen’s University, Canada
  • 2.
  • 3. True or False? + Using a cell phone while pumping gas can cause an explosion
  • 4. True or False? + ED ST BU Using a cell phone while pumping gas can cause an explosion
  • 6. Myths in SE? Bugs reside in complex code
  • 7. Myths in SE? Bugs reside in complex code Clones are evil!
  • 8. Myths in SE? Bugs reside in complex code Aspect-oriented programs are easy to maintain Clones are evil!
  • 9. Myths in SE? Bugs reside in complex code Aspect-oriented programs are easy to maintain Mythical man month Clones are evil!
  • 10.
  • 11. Thanks! Winifred Menezes Israel Herraiz pmerson Gregor Kiczales Chanchal Kumar Roy Farooq Iqbal Huzefa Kagdi
  • 12. Schedule 14:00-14:20 Intro & Wiki News 14:20-15:30 The Clone War Begins 15:30-16:00 Break 16:00-16:45 Bugs! Bugs! Bugs! 16:45-17:15 Top 100 Myths 17:15-17:30 Future of Myths in SE
  • 14. Invited talks Mike Godfrey Andreas Zeller
  • 15. Bugs reside in complex code. In the quest for metrics that predict bugs, many tools report various code complexity metrics; however, recent studies show that most complexity metrics correlate with just LOC. Is it really complexity that makes programs fail?
  • 16. Bugs reside in complex code ■ In an 80s study on a ~90KLOC program for satellite planning, Basili and Perricone noted that – The larger modules (size in LOC) were less error prone – Error-prone modules did not have higher (cyclomatic) complexity than error-free modules. In fact, the defect rate of modules decreased with the increase in size and complexity – These results were quite surprising. So, bugs reside in complex: a myth or not a conclusive fact yet that needs further establishment? ■ In 2007 Herraiz and colleagues showed that – LOC and SLOC are highly correlated with classical complexity metrics for the case of the C programming language – The study was performed on a sample of 700,000 files, obtained from all the software packages included in FreeBSD
  • 17. Bugs reside in complex code ■ I guess it depends on what is meant by complexity - many paths through the code, many jumps backward and forward, many loops. Clearly the more LOC - the more possibility there is for any or all of the above ■ I have done research on software defect models. I did a survey and most software people think that complexity is a good predictor of defects. – But some analysis done with defect data of various projects revealed to me that complexity (cyclomatic complexity) is not correlated with defects. I think software defects depend upon multiple factors out of which one can be 'complexity'.
  • 18. Clones are evil! For a long time code cloning was considered harmful; however, recent studies show that cloning might even be beneficial and desirable...
  • 19. Clones are evil! ■ Cordy reports that removing clones increases risk for large systems ■ Kim et al. examine the evolution of clones and conclude that clone refactoring would not help many of the long lived clones ■ Kapser and Godfrey describe several patterns of clonning and discuss their benefits for the long term evolution of software systems
  • 20. Clones are evil! ■ Aversano et al. study co-change analysis and show that most of the cloned code is consistently maintained, particularly while bug fixing of cloned fragments. Their study indirectly shows that clones may not be harmful to software maintenance ■ A prototype tool, CloneTracker, has been developed by Lozano et al. to evaluate the harmfulness of cloning. Although their case study intends to show that clones are harmful, they were unsure of the results
  • 21. Clones are evil! ■ Monden et al. conducted an experiment for evaluating the relation between clones and software quality attributes, namely reliability and maintainability with industrial systems. Their study shows that – modules/files with code clones are on average 1.7 times more reliable than files/modules without code clones – However, modules/files with larger clones are less reliable than others ■ In the case of maintainability quality attribute, their results also support the usual hypothesis that clones have a bad impact on software maintenance ■ Koschke has a survery of state of research in cloning
  • 22. AOP programs are easy to maintain. Aspect-oriented programming seems to be a story of successes; however, after ten years of active research (including its own conference), it is not clear whether aspect-oriented programs are any easier to maintain than traditional programs.
  • 23. Aspect-oriented programs are easy to maintain ■ No rational AOP proponent would stand by this claim ■ For one thing, a badly written AOP program is not easy to maintain. Moreover, a program that really needs AOP is an inherently more complex thing than a program that really doesn’t need AOP — so there’s an apples vs. oranges error to be careful for there ■ In the end, the only reasonable claim one could make about AOP is that – When a system’s functionality inherently has crosscutting concerns, proper use of AOP leads to an implementation that is easier to maintain than the implementation one would get without AOP ■ Slides for AOP myths and realities
  • 24. The mythical man month Many software project managers still believe that men and months are interchangeable commodities in software project schedules.
  • 25. Mythical Man Month ■ Project managers use the number of men and months as interchangeable units for measuring the project effort. ■ “The number of men and months are interchangeable measures in software projects” is a myth, Brooks 1975 ■ McConnell argues that Brooks' Law is less pervasive than it appears ■ Today – Many managers still ignore the myth and add staff to software projects running behind schedule. – Coordination issues amplified with global software development. Geographically distributed teams suffer with the lack of face-to-face communication
  • 26. Clones ■ What is a clone? – Task oriented definition of a clone (can I refractor it) – Intent matters (you meant it) – Find problematic code patterns instead ■ Effect of clones in the long term: – Refactoring is challenging but we provide tool support. • Should we provide clone support – Awareness is very important ■ How can we show that clones are good/bad? – What type of studies are needed • Scale/Industry vs. open source ■ What are bad clones? – Any patterns of bad clones
  • 27. Clones ■ Where should research go? –New clone detection tools… –Study the long term effects of clones –Clone maintenance tools ■ How can we integrate clones into practice? –Clones as a project management/release tool –Clones as a way of coding (the new reuse!)
  • 28. Clones ■ How can we show that clones are good/bad? – What type of studies are needed • Scale/Industry vs. open source ■ What are bad clones? – Any patterns of bad clones ■ Where should research go? – New clone detection tools – Study the long term effects of clones – Clone maintenance tools ■ How can we integrate clones into practice? – Clones as a project management/release tool – Clones as a way of coding (the new reuse!)
  • 29. Bugs! Bugs! Bugs! ■ Watch out for confounding factors. It’s easy to be tricked. ■ History gives mostly correlations, rarely causation. ■ Are we using the wrong metrics? – OO complexity is rarely captured ■ Certain kinds of bugs matter more. ■ Different models for different kind of bugs? ■ Bugs are some form of disease. ■ Where should research go? – Better complexity metrics – More (controlled) experiments – Insure software against bugs (new business idea?)
  • 31. Software complexity/maintenance cost can be calculated by 1. measuring structural complexity 2. AOP promotes modularity 3. All new requirements can be implemented in an existing codebase 4. Overtime in necessary and useful 5. Cutting QA will save us money 6. Open source is better quality than proprietary software 7. Linux will become un-maintainable because of high internal coupling 8. Service orientation will lead to better (more maintainable) systems 9. Open source applications are mainly developed by people working in their free time on a voluntary basis and without being paid for that 10. Aspects != cross-cutting concerns 11. Open source software development process is different from industrial projects
  • 32. Software testing is tedious but not hard (Not worth teaching in 12. universities) 13. Linux is a representative open source project 14. Requirements are not useful in open source projects 15. Software visualization is helpful 16. C++ is faster than Java 17. UIs can be separated from their application 18. Design patterns make better code 19. Quality is free 20. God classes are a problem 21. Software maintenance (is software really “maintained”) 22. OO systems are easier to maintain than procedural 23. Gotos are harmful 24. Features added to Java are novel and not invented in the 70s. 25. Good software can only be built with good requirements 26. Good tools make good programmers
  • 33. Good software cannot be built with a weakly typed language 27. (like pythons) 28. Complexity of code will soon become unmanageable 29. Cobol is dead 30. It is not possible for a query language to be seriously logical and seriously object oriented at the same time 31. XML will solve world hunger problems! 32. Legacy=bad 33. Macs are better than PCs
  • 34. Vote BUSTED or CONFIRMED (The following slides report what was voted by the majority of MythSE participants.)
  • 36. Open source is better quality than proprietary software ED ST BU
  • 37. Service orientation will lead to better (more maintainable) systems ED ST BU
  • 38. Linux is a representative open source project ED ST BU
  • 39. C++ is faster than Java ED RM I NF CO
  • 40. Design patterns make better code ED + CONF ED RM ST I BU (This one was a tie)
  • 41. God classes are a problem ED RM I NF CO
  • 42. Good tools make good programmers ED ST BU
  • 43. Cobol is dead ED ST BU
  • 44. Legacy = bad! ED ST BU
  • 45. Future of Myths in SE? • Another working session? • Workshop on Negative Results?
  • 46. Got Myth! Update the MythSE Wiki: mythse.wikispaces.com