[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/1985793.1985817acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Assessing programming language impact on development and maintenance: a study on c and c++

Published: 21 May 2011 Publication History

Abstract

Billions of dollars are spent every year for building and maintaining software. To reduce these costs we must identify the key factors that lead to better software and more productive development. One such key factor, and the focus of our paper, is the choice of programming language. Existing studies that analyze the impact of choice of programming language suffer from several deficiencies with respect to methodology and the applications they consider. For example, they consider applications built by different teams in different languages, hence fail to control for developer competence, or they consider small-sized, infrequently-used, short-lived projects. We propose a novel methodology which controls for development process and developer competence, and quantifies how the choice of programming language impacts software quality and developer productivity. We conduct a study and statistical analysis on a set of long-lived, widely-used, open source projects - Firefox, Blender, VLC, and MySQL. The key novelties of our study are: (1) we only consider projects which have considerable portions of development in two languages, C and C++, and (2) a majority of developers in these projects contribute to both C and C++ code bases. We found that using C++ instead of C results in improved software quality and reduced maintenance effort, and that code bases are shifting from C to C++. Our methodology lays a solid foundation for future studies on comparative advantages of particular programming languages.

References

[1]
F. B. e. Abreu and W. Melo. Evaluating the impact of object-oriented design on software quality. In METRICS '96.
[2]
Bazaar. http://bazaar.launchpad.net/~mysql/mysql-server/.
[3]
P. Bhattacharya and I. Neamtiu. Higher-level Languages are Indeed Better: A Study on C and C++. Technical report, University of California, Riverside, March 2010. http://www.cs.ucr.edu/~pamelab/tr.pdf.
[4]
Blender Bug Tracker. https://projects.blender.org/tracker.
[5]
Blender Forum. http://www.blender.org/forum/viewtopic.php?t=16694.
[6]
https://svn.blender.org/svnroot/bf-blender/tags/.
[7]
F. P. Brooks, Jr. The Mythical Man-Month. Addison-Wesley, 1975.
[8]
Bugzilla. https://bugzilla.mozilla.org/.
[9]
C. J. Burgess. Software quality issues when choosing a programming language. Technical report, University of Bristol, UK, 1995.
[10]
DedaSys LLC. Programming Language Popularity. http://www.langpop.com/.
[11]
R. Denis-Courmont. Personal communication, based on experience with VLC development, June 2010.
[12]
R. Fateman. Software Fault Prevention by Language Choice: Why C is Not My Favorite Language. Technical report, University of California, Berkeley, 2000.
[13]
J. Fernández-Ramil, D. Izquierdo-Cortazar, and T. Mens. What does it take to develop a million lines of open source code? In OSS, pages 170--184, 2009.
[14]
Firefox Statistics. http://www.computerworld.com/s/article/9140819/1_in_4_now_use_Firefox_to_surf_the_Web.
[15]
M. Fischer, M. Pinzger, and H. Gall. Populating a release history database from version control and bug tracking systems. In ICSM '03.
[16]
A. Hars and S. Ou. Working for free? motivations for participating in open-source projects. Int. J. Electron. Commerce, 6(3):25--39, 2002.
[17]
N. M. Holtz and W. J. Rasdorf. An evaluation of programming languages and language features for engineering software development. Engineering with Computers, 1988.
[18]
Z. Hongyu, Z. Xiuzhen, and G. Ming. Predicting defective software components from code complexity measures. In ISPRDC '07.
[19]
C. Jones. Backfiring: Converting lines-of-code to function points. Computer, pages 87--88, 1995.
[20]
S. Kim, T. Zimmermann, K. Pan, and E. J. J. Whitehead. Automatic identification of bug-introducing changes. In ASE, 2006.
[21]
S. Koch. Exploring the effects of coordination and communication tools on the efficiency of open source projects using data envelopment analysis. IFIP, 2007.
[22]
S. Koch. Exploring the effects of sourceforge.net coordination and communication tools on the efficiency of open source projects using data envelopment analysis. Empirical Softw. Eng., 14(4):397--417, 2009.
[23]
J. Koskinen. Software maintenance costs, Sept 2003. http://users.jyu.fi/~koskinen/smcosts.htm.
[24]
Launchpad. https://launchpad.net/mysql-server.
[25]
M. Lipow. Number of faults per line of code. TSE'82.
[26]
T. J. McCabe. A complexity measure. In ICSE'76.
[27]
T. Mens, M. Wermelinger, S. Ducasse, S. Demeyer, R. Hirschfeld, and M. Jazayeri. Challenges in software evolution. In IWPSE '05, pages 13--22, 2005.
[28]
A. Mockus, R. T. Fielding, and J. D. Herbsleb. Two case studies of open source software development: Apache and mozilla. ACM Trans. Softw. Eng. Methodol., 11(3), 2002.
[29]
A. Mockus and L. G. Votta. Identifying reasons for software changes using historic databases. ICSM'00, pages 120--130.
[30]
I. Myrtveit and E. Stensrud. An empirical study of software development productivity in C and C++. In NIK'08.
[31]
MySQL Statistics. http://www.mysql.com/why-mysql/marketshare/.
[32]
N. Nagappan and T. Ball. Use of relative code churn measures to predict system defect density. In ICSE, 2005.
[33]
NIST. The economic impacts of inadequate infrastructure for software testing. Planning Report, May 2002.
[34]
M. C. Paulk. An Empirical Study of Process Discipline and Software Quality. PhD thesis, Univ. of Pittsburgh, 2005.
[35]
G. Phipps. Comparing observed bug and productivity rates for java and c++. Software Practice and Experience, 29, April 1999.
[36]
M Squared Technologies - Resource Standard Metrics. http://msquaredtechnologies.com/.
[37]
RSM Metrics. http://msquaredtechnologies.com/m2rsm/docs/index.htm.
[38]
R. C. Seacord, D. Plakosh, and G. A. Lewis. Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices. Addison-Wesley, 2003.
[39]
J. Śliwerski, T. Zimmermann, and A. Zeller. When do changes induce fixes? In MSR '05, pages 1--5, 2005.
[40]
TIOBE Software BV. TIOBE Programming Community Index. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html.
[41]
Trac. http://trac.videolan.org/.
[42]
VLC Statistics. http://www.videolan.org/stats/downloads.html.
[43]
B. L. Welch. The generalization of "student's" problem when several different population variances are involved. Biometrika, 1947.
[44]
B. A. Wichmann. Contribution of standard programming languages to software quality. In Software Engineering Journal, pages 3--12, 1994.

Cited By

View all
  • (2024)Uncovering Determinants of Code Quality In Education Via Static Code AnalysisIEEE Access10.1109/ACCESS.2024.3426299(1-1)Online publication date: 2024
  • (2024)Programming languages ranking based on energy measurementsSoftware Quality Journal10.1007/s11219-024-09690-432:4(1539-1580)Online publication date: 27-Jul-2024
  • (2024)Examining ownership models in software teamsEmpirical Software Engineering10.1007/s10664-024-10538-529:6Online publication date: 27-Sep-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '11: Proceedings of the 33rd International Conference on Software Engineering
May 2011
1258 pages
ISBN:9781450304450
DOI:10.1145/1985793
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 May 2011

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. developer productivity
  2. empirical studies
  3. high-level languages
  4. software evolution
  5. software quality

Qualifiers

  • Research-article

Conference

ICSE11
Sponsor:
ICSE11: International Conference on Software Engineering
May 21 - 28, 2011
HI, Waikiki, Honolulu, USA

Acceptance Rates

Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)49
  • Downloads (Last 6 weeks)3
Reflects downloads up to 01 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Uncovering Determinants of Code Quality In Education Via Static Code AnalysisIEEE Access10.1109/ACCESS.2024.3426299(1-1)Online publication date: 2024
  • (2024)Programming languages ranking based on energy measurementsSoftware Quality Journal10.1007/s11219-024-09690-432:4(1539-1580)Online publication date: 27-Jul-2024
  • (2024)Examining ownership models in software teamsEmpirical Software Engineering10.1007/s10664-024-10538-529:6Online publication date: 27-Sep-2024
  • (2024)On the value of instance selection for bug resolution prediction performanceJournal of Software: Evolution and Process10.1002/smr.2710Online publication date: 2-Jul-2024
  • (2023)Knowledge sharing and discovery across heterogeneous research infrastructuresOpen Research Europe10.12688/openreseurope.13677.31(68)Online publication date: 6-Jun-2023
  • (2023)Bash in the Wild: Language Usage, Code Smells, and BugsACM Transactions on Software Engineering and Methodology10.1145/351719332:1(1-22)Online publication date: 13-Feb-2023
  • (2023)Automatic Identification of Crash-inducing Smart Contracts2023 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER56733.2023.00020(108-119)Online publication date: Mar-2023
  • (2023)Understanding Resolution of Multi-Language Bugs: An Empirical Study on Apache Projects2023 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1109/ESEM56168.2023.10304793(1-11)Online publication date: 26-Oct-2023
  • (2022)Change Impact Analysis Case Study for Aviation: Mutation TestingThe European Journal of Research and Development10.56038/ejrnd.v2i2.582:2(213-223)Online publication date: 7-Jun-2022
  • (2022)A Systematic Review of Attributes and Techniques for Open Source Software Evolution AnalysisResearch Anthology on Agile Software, Software Development, and Testing10.4018/978-1-6684-3702-5.ch006(84-106)Online publication date: 2022
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media