Empirical Software Engineering

, Volume 18, Issue 1, pp 60–88 | Cite as

Effort estimation of FLOSS projects: a study of the Linux kernel

Article

Abstract

Empirical research on Free/Libre/Open Source Software (FLOSS) has shown that developers tend to cluster around two main roles: “core” contributors differ from “peripheral” developers in terms of a larger number of responsibilities and a higher productivity pattern. A further, cross-cutting characterization of developers could be achieved by associating developers with “time slots”, and different patterns of activity and effort could be associated to such slots. Such analysis, if replicated, could be used not only to compare different FLOSS communities, and to evaluate their stability and maturity, but also to determine within projects, how the effort is distributed in a given period, and to estimate future needs with respect to key points in the software life-cycle (e.g., major releases). This study analyses the activity patterns within the Linux kernel project, at first focusing on the overall distribution of effort and activity within weeks and days; then, dividing each day into three 8-hour time slots, and focusing on effort and activity around major releases. Such analyses have the objective of evaluating effort, productivity and types of activity globally and around major releases. They enable a comparison of these releases and patterns of effort and activities with traditional software products and processes, and in turn, the identification of company-driven projects (i.e., working mainly during office hours) among FLOSS endeavors. The results of this research show that, overall, the effort within the Linux kernel community is constant (albeit at different levels) throughout the week, signalling the need of updated estimation models, different from those used in traditional 9am–5pm, Monday to Friday commercial companies. It also becomes evident that the activity before a release is vastly different from after a release, and that the changes show an increase in code complexity in specific time slots (notably in the late night hours), which will later require additional maintenance efforts.

Keywords

Mining software repositories Open source software Effort estimation  Effort models Complexity 

References

  1. Abdel-Hamid TK (1993) Adapting, correcting, and perfecting software estimates: a maintenance metaphor. Computer 26(3):20–29CrossRefGoogle Scholar
  2. Abdel-Hamid T, Madnick SE (1991) Software project dynamics: an integrated approach. Prentice-Hall, Inc., Upper Saddle River, NJ, USAGoogle Scholar
  3. Aberdour M (2007) Achieving quality in open source software. IEEE Softw 24(1):58–64. doi:10.1109/MS.2007.2 CrossRefGoogle Scholar
  4. Abran A, Robillard PN (1993) Reliability of function points productivity model for enhancement projects (a field study). In: ICSM ’93: proceedings of the conference on software maintenance. IEEE Computer Society, Washington, DC, USA, pp 80–87Google Scholar
  5. Adams PJ, Capiluppi A, Boldyreff C (2009) Coordination and productivity issues in free software: the role of brooks law. In: ICSM. IEEE, pp 319–328Google Scholar
  6. Albrecht AJ, Gaffney JE (1983) Software function, source lines of code, and development effort prediction: a software science validation. IEEE Trans Softw Eng 9(6):639–648CrossRefGoogle Scholar
  7. Amor JJ, Robles G, Gonzalez-Barahona JM (2006) Effort estimation by characterizing developer activity. In: Proceedings of the 2006 international workshop on economics driven software engineering research, ser. EDSER ’06. ACM, New York, NY, USA, pp 3–6. doi: 10.1145/1139113.1139116 CrossRefGoogle Scholar
  8. Antoniol G, Villano U, Merlo E, Di Penta M (2002) Analyzing cloning evolution in the Linux kernel. Inf Softw Technol 44(13):755–765CrossRefGoogle Scholar
  9. Bandi RK, Vaishnavi VK, Turk DE (2003) Predicting maintenance performance using object-oriented design complexity metrics. IEEE Trans Softw Eng 29(1):77–87CrossRefGoogle Scholar
  10. Basili VR, Caldiera G, Rombach DH (1994) The goal question metric approach. In: Encyclopedia of software engineering. Wiley, pp 528–532. http://sdqweb.ipd.uka.de/wiki/GQM
  11. Basili VR, Shull F, Lanubile F (1999) Building knowledge through families of experiments. IEEE Trans Softw Eng 25:456–473CrossRefGoogle Scholar
  12. Bird C, Rigby P, Barr E, Hamilton D, German D, Devanbu P (2009) The promises and perils of mining git. In: Proceedings of the 2009 6th IEEE international working conference on mining software repositories. Citeseer, pp 1–10Google Scholar
  13. Boehm BW (1981) Software engineering economics, 1st edn. Prentice Hall PTR, Upper Saddle River, NJ, USAMATHGoogle Scholar
  14. Boehm BW, Sullivan KJ (2000) Software economics: a roadmap. In: ICSE ’00: proceedings of the conference on the future of software engineering. ACM, New York, NY, USA, pp 319–343CrossRefGoogle Scholar
  15. Boehm BW, Clark B, Horowitz E, Brown AW, Reifer D, Chulani S, Madachy R, Steece B (2000) Software cost estimation with Cocomo II with Cdrom. Prentice Hall PTR, Upper Saddle River, NJ, USAGoogle Scholar
  16. Briand LC, Basili V (1992) A classification procedure for an effective management of changes during the software maintenance process. In: ICSM ’92: IEEE international conference on software maintenanceGoogle Scholar
  17. Brooks Jr FP (1975) The mythical man-month. In: Proceedings of the international conference on reliable software. ACM, New York, NY, USA, p 193CrossRefGoogle Scholar
  18. Capiluppi A, Fernandez-Ramil J, Higman J, Sharp HC, Smith N (2007) An empirical study of the evolution of an agile-developed software system. In: ICSE ’07: Proceedings of the 29th international conference on software engineering. IEEE computer society, Washington, DC, USA, pp 511–518Google Scholar
  19. Crowston K, Scozzi B, Buonocore S (2003) An explorative study of open source software development structure. In: Proceedings of the ECIS, Naples, ItalyGoogle Scholar
  20. Curtis B (1992) Keynote address: i’m mad as hell and i’m not going to maintain this anymore. In: ICSM ’92: IEEE international conference on software maintenanceGoogle Scholar
  21. DeMarco T (1986) Controlling software projects: management, measurement, and estimates. Prentice Hall PTR, Upper Saddle River, NJ, USAGoogle Scholar
  22. Farr L, Zagorski H (1964) Factors that affect the cost of computer programming: a quantitative analysis, pp 59–86Google Scholar
  23. German DM (2006) An empirical study of fine-grained software modifications. Empir Softw Eng 11:369–393. http://portal.acm.org/citation.cfm?id=1146474.1146486 Google Scholar
  24. Glass RL (2002) Facts and fallacies of software engineering. Addison-Wesley Professional. http://www.amazon.fr/exec/obidos/ASIN/0321117425/citeulike04-21
  25. Godfrey M, Tu Q (2000) Evolution in open source software: a case study. In: Proceedings of the international conference on software maintenance. Citeseer, pp 131–142Google Scholar
  26. Godfrey M, Tu Q (2001) Growth, evolution, and structural change in open source software. In: Proceedings of the 4th international workshop on principles of software evolution, ser. IWPSE ‘01. ACM, New York, NY, USA, pp 103–106. doi:10.1145/602461.602482 Google Scholar
  27. Granja-Alvarez JC, Barranco-García MJ (1997) A method for estimating maintenance cost in a software project: a case study. J Softw Maint 9(3):161–175CrossRefGoogle Scholar
  28. Herraiz I, Cortazar DI, Hernández FR (2009) FLOSSMetrics: free/libre/open source software metrics. In: European conference on software maintenance and reengineering, vol 0, pp 281–284. doi:10.1109/CSMR.2009.43
  29. Izurieta C, Bieman J (2006) The evolution of freebsd and Linux. In: Proceedings of the 2006 ACM/IEEE international symposium on empirical software engineering. ACM, p 211Google Scholar
  30. Jørgensen M (1995) Experience with the accuracy of software maintenance task effort prediction models. IEEE Trans Softw Eng 21(8):674–681CrossRefGoogle Scholar
  31. Jørgensen M, Shepperd M (2007) A systematic review of software development cost estimation studies. IEEE Trans Softw Eng 33(1):33–53CrossRefGoogle Scholar
  32. Kemerer CF (1987) An empirical validation of software cost estimation models. Commun ACM 30(5):416–429CrossRefGoogle Scholar
  33. Koch S (2008) Effort modeling and programmer participation in open source software projects. Inform Econ Policy 20(4):345–355. Empirical issues in open source software. http://www.sciencedirect.com/science/article/pii/S0167624508000334
  34. Li W, Henry S (1993) Object-oriented metrics that predict maintainability. J Syst Softw 23(2):111–122CrossRefGoogle Scholar
  35. Molkken K, Jrgensen M (2003) A review of surveys on software effort estimation. In: Proceedings of the 2003 international symposium on empirical software engineering, ser. ISESE ’03. IEEE Computer Society, Washington, DC, USA, pp 223–. http://portal.acm.org/citation.cfm?id=942801.943636
  36. Mockus A, Fielding RT, Herbsleb JD (2002) Two case studies of open source software development: apache and mozilla. ACM Trans Softw Eng Methodol 11(3):309–346CrossRefGoogle Scholar
  37. McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng 2:308–320. http://doi.ieeecomputersociety.org/10.1109/TSE.1976.233837 MathSciNetMATHCrossRefGoogle Scholar
  38. McCabe TJ, Butler CW (1989) Design complexity measurement and testing. Commun ACM 32(12):1415–1425CrossRefGoogle Scholar
  39. Michlmayr M (2007) Quality improvement in volunteer free and open source software projects: exploring the impact of release management. PhD dissertation. University of Cambridge. http://www.cyrius.com/publications/michlmayr-phd.html
  40. Pfleeger SL (2001) Software engineering: theory and practice. Prentice Hall PTR, Upper Saddle River, NJ, USAGoogle Scholar
  41. Putnam LH, Myers W (1991) Measures for excellence: reliable software on time, within budget. Prentice Hall Professional Technical ReferenceGoogle Scholar
  42. Robles G (2010) Replicating msr: a study of the potential replicability of papers published in the mining software repositories proceedings. In: MSR, pp 171–180Google Scholar
  43. Robles G, González-Barahona JM, Izquierdo-Cortazar D, Herraiz I (2009) Tools for the study of the usual data sources found in libre software projects. Intl J of Open Source Softw and Proc (IJOSSP) 1(1):24–45. http://www.igi-global.com/bookstore/article.aspx?TitleId=2769
  44. Shull FJ, Carver JC, Vegas S, Juristo N (2008) The role of replications in empirical software engineering. Empir Softw Eng 13:211–218CrossRefGoogle Scholar
  45. Sneed HM (1995) Estimating the costs of software maintenance tasks. In: ICSM ’95: proceedings of the international conference on software maintenance. IEEE Computer Society, Washington, DC, USA, p 168CrossRefGoogle Scholar
  46. Sneed HM (1997) Measuring the performance of a software maintenance department. In: CSMR ’97: proceedings of the 1st Euromicro working conference on software maintenance and reengineering (CSMR ’97). IEEE Computer Society, Washington, DC, USA, p 119CrossRefGoogle Scholar
  47. Sneed HM (2004) A cost model for software maintenance & evolution. In: ICSM ’04: proceedings of the 20th IEEE international conference on software maintenance. IEEE Computer Society, Washington, DC, USA, pp 264–273Google Scholar
  48. Sneed HM, Brössler P (2003) Critical success factors in software maintenance—a case study. In: ICSM ’03: proceedings of the international conference on software maintenance. IEEE Computer Society, Washington, DC, USA, p 190CrossRefGoogle Scholar
  49. Sommerville I (2004) Software engineering, 7th edn. International computer science series, Addison WesleyGoogle Scholar
  50. Wolverton RW (1974) The cost of developing large-scale software. IEEE Trans Comput 23:615–636. http://portal.acm.org/citation.cfm?id=1310173.1310916 MATHCrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media, LLC 2011

Authors and Affiliations

  1. 1.School of Architecture, Computing and Engineering (ACE)University of East LondonLondonUK
  2. 2.Libre Software Engineering Lab (GSyC)Universidad Rey Juan CarlosMadridSpain

Personalised recommendations