SlideShare a Scribd company logo
A Large-Scale Empirical Study of
 the Relationship between Build
Technology and Build Maintenance




 Shane     Meiyappan Ahmed E.   Bram    Audris
McIntosh   Nagappan   Hassan    Adams   Mockus
What is a build system?
Source
 code




             2
What is a build system?
Source               Deliverable
 code




             2
Build systems describe how sources
        are translated into deliverables
 .c           .o           .a

.cc           .o                .exe        .deb

.tex         .dvi               .pdf
                       3
1) Listen for                   2) Build
  changes                       changes


                Continuous
                Integration:
                 Enabled by
                  the build
                   system


 4) Publish                    3) Execute
  results                         tests
                     4
The Build “Tax”
              “...nothing can be said
              to be certain, except
              death and taxes”
                            - Benjamin Franklin



                  Up to 27% of source
                  changes require build
                      changes, too!
                     An Empirical Study of
                   Build Maintenance Effort
                    S. McIntosh, B. Adams, T. H. D.
                    Nguyen,Y. Kamei, A. E. Hassan
                            [ICSE 2011]

                                                      5
Teams even migrate to different build technologies




                        6
...But does build technology
          really influence build
        maintenance activity?




7
Low-             Abstraction-        Framework-
     Level               Based               Driven
     File-level       Low-level scripts   Assumes standard
dependencies are       generated from     project layout and
explicitly declared   project metadata      dependencies
         Make
Rake

                           Autotools

Dependency Management
    Automatically manages 3rd-
     party API dependencies
                                                           8
Low-             Abstraction-        Framework-
     Level               Based               Driven
     File-level       Low-level scripts   Assumes standard
dependencies are       generated from     project layout and
explicitly declared   project metadata      dependencies
         Make
Rake

                           Autotools

Dependency Management
    Automatically manages 3rd-
     party API dependencies
                                                           9
Low-             Abstraction-        Framework-
     Level               Based               Driven
     File-level       Low-level scripts   Assumes standard
dependencies are       generated from     project layout and
explicitly declared   project metadata      dependencies
         Make
Rake

                           Autotools

Dependency Management
    Automatically manages 3rd-
     party API dependencies
                                                           10
Low-             Abstraction-        Framework-
     Level               Based               Driven
     File-level       Low-level scripts   Assumes standard
dependencies are       generated from     project layout and
explicitly declared   project metadata      dependencies
         Make
Rake

                           Autotools

Dependency Management
    Automatically manages 3rd-
     party API dependencies
                                                           11
Low-             Abstraction-        Framework-
     Level               Based               Driven
     File-level       Low-level scripts   Assumes standard
dependencies are       generated from     project layout and
explicitly declared   project metadata      dependencies
         Make
Rake

                           Autotools

Dependency Management
    Automatically manages 3rd-
     party API dependencies
                                                           12
Mining a Large-
 Scale Corpus

Amassing and indexing a
large sample of version
    control systems
 Towards the census of public
      source code history
   A. Mockus [MSR 2009]




 843,976 source
code repositories!


             13
Software Forges
Mining a Large-
 Scale Corpus
                                        repo.or.cz
Amassing and indexing a
large sample of version
    control systems
 Towards the census of public
      source code history
   A. Mockus [MSR 2009]




 843,976 source
code repositories!


             13
Software Forges
Mining a Large-
 Scale Corpus
                                        repo.or.cz
Amassing and indexing a
large sample of version
    control systems
 Towards the census of public   Software Ecosystems
      source code history
   A. Mockus [MSR 2009]




 843,976 source
code repositories!


             13
Software Forges
Mining a Large-
 Scale Corpus
                                        repo.or.cz
Amassing and indexing a
large sample of version
    control systems
 Towards the census of public   Software Ecosystems
      source code history
   A. Mockus [MSR 2009]




 843,976 source
                                Large Projects
code repositories!


             13
Software Forges
   Framework builds
   tend to churn most                                                                        repo.or.cz




                                     Low−level                      Abstraction      Frame      Dependency




                   200
Build churn rate




                   100




                     0

                         Ant   Jam   Makefile    Rake   SCons    Autotools CMake     Maven    Bundler     Ivy


                                                            14
Source code coupling is                                 Software Ecosystems


tightest with framework
     and abstraction
1.2
1.0
0.8
0.6
0.4
0.2
−0.2




       Low-level Framework       Low-level Abstraction        Low-level Abstraction
       Apache − Ant vs. Maven   Debian − Make vs. Autotools   GNU − Make vs. Autotools




                                         15
Migration
                                                          Large Projects




         helps!                          KDE
                     1.00
                                                             Authorship
                            Autotools
                     0.75                                    decreases
Build author ratio




                                                              ●●
                                                         ●● ●●
                                                         ●●● ●●●
                                                          ●●
                     0.50                              ●● ● ●
                                                        ● ●
                                                        ●
                                                     ●       ● ●
                                                             ●
                                                     ●●          ●●           ●
                                                    ●
                                                    ● ●
                                                      ●           ●            ●
                                                                 ●●●● ●
                                                                    ●●
                                                                    ●● ●     ●
                                                   ●               ●●●●●●● ●
                                                                       ●
                                                                      ●● ●●●●●
                     0.25                                                ●●●
                                                   ●                       ●

                                                    ●
                                                   ●
                                              ●●●●●
                                                 ●●
                                             ●●● ●●
                                             ●●●
                     0.00
                            2000        2004             2008                2012



                                        16
Migration
                                                                                      Large Projects




                             helps!
                                          KDE
                     1.00
                                                           Authorship
                              Autotools
                     0.75                                  decreases
Build author ratio




                                                           ●
                                                         ● ●●
                                                        ●● ●
                                                       ●● ● ●●
                                                      ●●●● ●●
                                                       ●
                                                      ● ●
                     0.50                                 ● ●
                                                           ●
                                                    ●         ●●
                                                    ●●
                                                   ●●                      ●
                                                   ●●          ●
                                                              ●●●● ●
                                                                 ●●         ●
                                                  ●              ●● ●     ●
                                                                ●●●●●●● ●
                                                                    ● ● ●
                                                                    ●     ●
                                                                   ● ●● ●
                     0.25                         ●
                                                                       ●●
                                                                        ●

                                                   ●
                                                  ●
                     0.00                    ●●●●●
                                             ●●●●●
                                              ●●●●●

                             2000         2004          2008              2012




                        Teams dedicate build
                         experts to help cope
                           with the build tax                                    16
Buildtechs
Buildtechs
Buildtechs
Buildtechs
Buildtechs

More Related Content

What's hot

Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Shane McIntosh
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
Bram Adams
 
Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17
Daniel Barker
 
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMigrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHub
Matthew McCullough
 
.Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017 .Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017
Amanda Rousseau
 
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOpsBecoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Daniel Barker
 
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyGit Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh My
Matthew McCullough
 
CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)
Borislav Traykov
 
Git and GitHub at the San Francisco JUG
 Git and GitHub at the San Francisco JUG Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUG
Matthew McCullough
 
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build SystemsAn Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
corpaulbezemer
 
Gearman work queue in php
Gearman work queue in phpGearman work queue in php
Gearman work queue in php
Bo-Yi Wu
 
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
Vincenzo Ferme
 
CI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins PipelineCI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins Pipeline
Veaceslav Gaidarji
 
groovy & grails - lecture 10
groovy & grails - lecture 10groovy & grails - lecture 10
groovy & grails - lecture 10
Alexandre Masselot
 
Docker In the Bank
Docker In the BankDocker In the Bank
Docker In the Bank
Aleksandr Tarasov
 
groovy & grails - lecture 9
groovy & grails - lecture 9groovy & grails - lecture 9
groovy & grails - lecture 9
Alexandre Masselot
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon Vienna
Pantheon
 
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Martin de Keijzer
 
Docker In Bank Unrated
Docker In Bank UnratedDocker In Bank Unrated
Docker In Bank Unrated
Aleksandr Tarasov
 
Madrid JAM limitaciones - dificultades
Madrid JAM limitaciones - dificultadesMadrid JAM limitaciones - dificultades
Madrid JAM limitaciones - dificultades
Javier Delgado Garrido
 

What's hot (20)

Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
Collecting and Leveraging a Benchmark of Build System Clones to Aid in Qualit...
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
 
Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17Becoming A Plumber: Building Deployment Pipelines - LISA17
Becoming A Plumber: Building Deployment Pipelines - LISA17
 
Migrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHubMigrating from Subversion to Git and GitHub
Migrating from Subversion to Git and GitHub
 
.Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017 .Net Hijacking to Defend PowerShell BSidesSF2017
.Net Hijacking to Defend PowerShell BSidesSF2017
 
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOpsBecoming a Plumber: Building Deployment Pipelines - All Day DevOps
Becoming a Plumber: Building Deployment Pipelines - All Day DevOps
 
Git Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh MyGit Graphs, Hashes, and Compression, Oh My
Git Graphs, Hashes, and Compression, Oh My
 
CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)CI from scratch with Jenkins (EN)
CI from scratch with Jenkins (EN)
 
Git and GitHub at the San Francisco JUG
 Git and GitHub at the San Francisco JUG Git and GitHub at the San Francisco JUG
Git and GitHub at the San Francisco JUG
 
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build SystemsAn Empirical Study of Unspecified Dependencies in Make-Based Build Systems
An Empirical Study of Unspecified Dependencies in Make-Based Build Systems
 
Gearman work queue in php
Gearman work queue in phpGearman work queue in php
Gearman work queue in php
 
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
 
CI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins PipelineCI/CD on Android project via Jenkins Pipeline
CI/CD on Android project via Jenkins Pipeline
 
groovy & grails - lecture 10
groovy & grails - lecture 10groovy & grails - lecture 10
groovy & grails - lecture 10
 
Docker In the Bank
Docker In the BankDocker In the Bank
Docker In the Bank
 
groovy & grails - lecture 9
groovy & grails - lecture 9groovy & grails - lecture 9
groovy & grails - lecture 9
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon Vienna
 
Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)
 
Docker In Bank Unrated
Docker In Bank UnratedDocker In Bank Unrated
Docker In Bank Unrated
 
Madrid JAM limitaciones - dificultades
Madrid JAM limitaciones - dificultadesMadrid JAM limitaciones - dificultades
Madrid JAM limitaciones - dificultades
 

Viewers also liked

SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
Igor Wiese
 
Unicode - What you need to know
Unicode - What you need to knowUnicode - What you need to know
Unicode - What you need to knowKeheliya Gallaba
 
Module System in Standard ML
Module System in Standard MLModule System in Standard ML
Module System in Standard ML
Keheliya Gallaba
 
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
Igor Wiese
 
Orchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software EvolutionOrchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software Evolution
Shane McIntosh
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenance
Shane McIntosh
 
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
Igor Wiese
 
Sonar Metrics
Sonar MetricsSonar Metrics
Sonar Metrics
Keheliya Gallaba
 
O que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidasO que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidas
Elaine Naomi
 

Viewers also liked (10)

SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
SOCIAL METRICS INCLUDED IN PREDICTION MODELS ON SOFTWARE ENGINEERING: A MAPPI...
 
Unicode - What you need to know
Unicode - What you need to knowUnicode - What you need to know
Unicode - What you need to know
 
Module System in Standard ML
Module System in Standard MLModule System in Standard ML
Module System in Standard ML
 
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
UM ESTUDO EMPÍRICO DO USO DA COMUNICAÇÃO PARA CARACTERIZAR A OCORRÊNCIA DE DE...
 
Orchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software EvolutionOrchestrating Change: An Artistic Representation of Software Evolution
Orchestrating Change: An Artistic Representation of Software Evolution
 
Icse2011 build maintenance
Icse2011 build maintenanceIcse2011 build maintenance
Icse2011 build maintenance
 
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
USING STRUCTURAL HOLES METRICS FROM COMMUNICATION NETWORKS TO PREDICT CHANGE ...
 
Qt Apresentação
Qt ApresentaçãoQt Apresentação
Qt Apresentação
 
Sonar Metrics
Sonar MetricsSonar Metrics
Sonar Metrics
 
O que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidasO que é BIG DATA e como pode influenciar nossas vidas
O que é BIG DATA e como pode influenciar nossas vidas
 

Similar to Buildtechs

Framework Engineering
Framework EngineeringFramework Engineering
Framework Engineering
YoungSu Son
 
Best software development tools in 2021
Best software development tools in 2021Best software development tools in 2021
Best software development tools in 2021
Samaritan InfoTech
 
Improve Android System Component Performance
Improve Android System Component PerformanceImprove Android System Component Performance
Improve Android System Component Performance
National Cheng Kung University
 
A Software Factory Integrating Rational Team Concert and WebSphere tools
A Software Factory Integrating Rational Team Concert and WebSphere toolsA Software Factory Integrating Rational Team Concert and WebSphere tools
A Software Factory Integrating Rational Team Concert and WebSphere tools
Prolifics
 
webOS App by Example: Sorting Thoughts
webOS App by Example: Sorting ThoughtswebOS App by Example: Sorting Thoughts
webOS App by Example: Sorting Thoughts
Hendrik Ebel
 
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Tamir Dresher
 
Heterogeneous Development With RTC - Sreerupa Sen
Heterogeneous Development With RTC -  Sreerupa SenHeterogeneous Development With RTC -  Sreerupa Sen
Heterogeneous Development With RTC - Sreerupa SenRoopa Nadkarni
 
Chapter6 web apps-tomcat
Chapter6 web apps-tomcatChapter6 web apps-tomcat
Chapter6 web apps-tomcatVenkat Gowda
 
COMPRO- WEB ALBUM & MOTION ANALYZER
COMPRO- WEB ALBUM  & MOTION ANALYZERCOMPRO- WEB ALBUM  & MOTION ANALYZER
COMPRO- WEB ALBUM & MOTION ANALYZERAshish Tanwer
 
Continuous Delivery in the AWS Cloud
Continuous Delivery in the AWS CloudContinuous Delivery in the AWS Cloud
Continuous Delivery in the AWS Cloud
Nigel Fernandes
 
Continuous Delivery in the Cloud
Continuous Delivery in the CloudContinuous Delivery in the Cloud
Continuous Delivery in the CloudFabio Lessa
 
Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?
John Rofrano
 
Architecture Proposition For Multimedia repository
Architecture Proposition For Multimedia repositoryArchitecture Proposition For Multimedia repository
Architecture Proposition For Multimedia repositoryMcRaken
 
Eclipse vs Netbean vs Railo
Eclipse vs Netbean vs RailoEclipse vs Netbean vs Railo
Eclipse vs Netbean vs Railo
Mohd Safian
 
How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...
Rob Crowley
 
PHP Buildpacks in the Cloud on Bluemix
PHP Buildpacks in the Cloud on BluemixPHP Buildpacks in the Cloud on Bluemix
PHP Buildpacks in the Cloud on Bluemix
IBM
 
Cloud Foundry for PHP developers
Cloud Foundry for PHP developersCloud Foundry for PHP developers
Cloud Foundry for PHP developers
Daniel Krook
 
Ukfs Snr Dev Arch Forum Pres3 Re
Ukfs Snr Dev Arch Forum Pres3 ReUkfs Snr Dev Arch Forum Pres3 Re
Ukfs Snr Dev Arch Forum Pres3 ReAllyWick
 
DevOps demystified
DevOps demystifiedDevOps demystified
DevOps demystified
Xebia IT Architects
 
Codecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseCodecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San Jose
Fabian Lange
 

Similar to Buildtechs (20)

Framework Engineering
Framework EngineeringFramework Engineering
Framework Engineering
 
Best software development tools in 2021
Best software development tools in 2021Best software development tools in 2021
Best software development tools in 2021
 
Improve Android System Component Performance
Improve Android System Component PerformanceImprove Android System Component Performance
Improve Android System Component Performance
 
A Software Factory Integrating Rational Team Concert and WebSphere tools
A Software Factory Integrating Rational Team Concert and WebSphere toolsA Software Factory Integrating Rational Team Concert and WebSphere tools
A Software Factory Integrating Rational Team Concert and WebSphere tools
 
webOS App by Example: Sorting Thoughts
webOS App by Example: Sorting ThoughtswebOS App by Example: Sorting Thoughts
webOS App by Example: Sorting Thoughts
 
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
 
Heterogeneous Development With RTC - Sreerupa Sen
Heterogeneous Development With RTC -  Sreerupa SenHeterogeneous Development With RTC -  Sreerupa Sen
Heterogeneous Development With RTC - Sreerupa Sen
 
Chapter6 web apps-tomcat
Chapter6 web apps-tomcatChapter6 web apps-tomcat
Chapter6 web apps-tomcat
 
COMPRO- WEB ALBUM & MOTION ANALYZER
COMPRO- WEB ALBUM  & MOTION ANALYZERCOMPRO- WEB ALBUM  & MOTION ANALYZER
COMPRO- WEB ALBUM & MOTION ANALYZER
 
Continuous Delivery in the AWS Cloud
Continuous Delivery in the AWS CloudContinuous Delivery in the AWS Cloud
Continuous Delivery in the AWS Cloud
 
Continuous Delivery in the Cloud
Continuous Delivery in the CloudContinuous Delivery in the Cloud
Continuous Delivery in the Cloud
 
Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?
 
Architecture Proposition For Multimedia repository
Architecture Proposition For Multimedia repositoryArchitecture Proposition For Multimedia repository
Architecture Proposition For Multimedia repository
 
Eclipse vs Netbean vs Railo
Eclipse vs Netbean vs RailoEclipse vs Netbean vs Railo
Eclipse vs Netbean vs Railo
 
How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...
 
PHP Buildpacks in the Cloud on Bluemix
PHP Buildpacks in the Cloud on BluemixPHP Buildpacks in the Cloud on Bluemix
PHP Buildpacks in the Cloud on Bluemix
 
Cloud Foundry for PHP developers
Cloud Foundry for PHP developersCloud Foundry for PHP developers
Cloud Foundry for PHP developers
 
Ukfs Snr Dev Arch Forum Pres3 Re
Ukfs Snr Dev Arch Forum Pres3 ReUkfs Snr Dev Arch Forum Pres3 Re
Ukfs Snr Dev Arch Forum Pres3 Re
 
DevOps demystified
DevOps demystifiedDevOps demystified
DevOps demystified
 
Codecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseCodecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San Jose
 

Buildtechs

  • 1. A Large-Scale Empirical Study of the Relationship between Build Technology and Build Maintenance Shane Meiyappan Ahmed E. Bram Audris McIntosh Nagappan Hassan Adams Mockus
  • 2. What is a build system? Source code 2
  • 3. What is a build system? Source Deliverable code 2
  • 4. Build systems describe how sources are translated into deliverables .c .o .a .cc .o .exe .deb .tex .dvi .pdf 3
  • 5. 1) Listen for 2) Build changes changes Continuous Integration: Enabled by the build system 4) Publish 3) Execute results tests 4
  • 6. The Build “Tax” “...nothing can be said to be certain, except death and taxes” - Benjamin Franklin Up to 27% of source changes require build changes, too! An Empirical Study of Build Maintenance Effort S. McIntosh, B. Adams, T. H. D. Nguyen,Y. Kamei, A. E. Hassan [ICSE 2011] 5
  • 7. Teams even migrate to different build technologies 6
  • 8. ...But does build technology really influence build maintenance activity? 7
  • 9. Low- Abstraction- Framework- Level Based Driven File-level Low-level scripts Assumes standard dependencies are generated from project layout and explicitly declared project metadata dependencies Make Rake Autotools Dependency Management Automatically manages 3rd- party API dependencies 8
  • 10. Low- Abstraction- Framework- Level Based Driven File-level Low-level scripts Assumes standard dependencies are generated from project layout and explicitly declared project metadata dependencies Make Rake Autotools Dependency Management Automatically manages 3rd- party API dependencies 9
  • 11. Low- Abstraction- Framework- Level Based Driven File-level Low-level scripts Assumes standard dependencies are generated from project layout and explicitly declared project metadata dependencies Make Rake Autotools Dependency Management Automatically manages 3rd- party API dependencies 10
  • 12. Low- Abstraction- Framework- Level Based Driven File-level Low-level scripts Assumes standard dependencies are generated from project layout and explicitly declared project metadata dependencies Make Rake Autotools Dependency Management Automatically manages 3rd- party API dependencies 11
  • 13. Low- Abstraction- Framework- Level Based Driven File-level Low-level scripts Assumes standard dependencies are generated from project layout and explicitly declared project metadata dependencies Make Rake Autotools Dependency Management Automatically manages 3rd- party API dependencies 12
  • 14. Mining a Large- Scale Corpus Amassing and indexing a large sample of version control systems Towards the census of public source code history A. Mockus [MSR 2009] 843,976 source code repositories! 13
  • 15. Software Forges Mining a Large- Scale Corpus repo.or.cz Amassing and indexing a large sample of version control systems Towards the census of public source code history A. Mockus [MSR 2009] 843,976 source code repositories! 13
  • 16. Software Forges Mining a Large- Scale Corpus repo.or.cz Amassing and indexing a large sample of version control systems Towards the census of public Software Ecosystems source code history A. Mockus [MSR 2009] 843,976 source code repositories! 13
  • 17. Software Forges Mining a Large- Scale Corpus repo.or.cz Amassing and indexing a large sample of version control systems Towards the census of public Software Ecosystems source code history A. Mockus [MSR 2009] 843,976 source Large Projects code repositories! 13
  • 18. Software Forges Framework builds tend to churn most repo.or.cz Low−level Abstraction Frame Dependency 200 Build churn rate 100 0 Ant Jam Makefile Rake SCons Autotools CMake Maven Bundler Ivy 14
  • 19. Source code coupling is Software Ecosystems tightest with framework and abstraction 1.2 1.0 0.8 0.6 0.4 0.2 −0.2 Low-level Framework Low-level Abstraction Low-level Abstraction Apache − Ant vs. Maven Debian − Make vs. Autotools GNU − Make vs. Autotools 15
  • 20. Migration Large Projects helps! KDE 1.00 Authorship Autotools 0.75 decreases Build author ratio ●● ●● ●● ●●● ●●● ●● 0.50 ●● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ● ● ● ●●●● ● ●● ●● ● ● ● ●●●●●●● ● ● ●● ●●●●● 0.25 ●●● ● ● ● ● ●●●●● ●● ●●● ●● ●●● 0.00 2000 2004 2008 2012 16
  • 21. Migration Large Projects helps! KDE 1.00 Authorship Autotools 0.75 decreases Build author ratio ● ● ●● ●● ● ●● ● ●● ●●●● ●● ● ● ● 0.50 ● ● ● ● ●● ●● ●● ● ●● ● ●●●● ● ●● ● ● ●● ● ● ●●●●●●● ● ● ● ● ● ● ● ●● ● 0.25 ● ●● ● ● ● 0.00 ●●●●● ●●●●● ●●●●● 2000 2004 2008 2012 Teams dedicate build experts to help cope with the build tax 16