Empirical Software Engineering

, Volume 17, Issue 4–5, pp 467–499 | Cite as

Refining code ownership with synchronous changes

  • Lile Palma Hattori
  • Michele Lanza
  • Romain Robbes
Article

Abstract

When mining software repositories, two distinct sources of information are usually explored: the history log and snapshots of the system. Results of analyses derived from these two sources are biased by the frequency with which developers commit their changes. We argue that the usage of mainstream SCM (software configuration management) systems influences the way that developers work. For example, since it is tedious to resolve conflicts due to parallel commits, developers tend to minimize conflicts by not contemporarily modifying the same file. This however defeats one of the purposes of such systems. We mine repositories created by our tool Syde, which records changes in a central repository whenever a file is compiled locally in the IDE (integrated development environment) by any developer in a multi-developer project. This new source of information can augment the accuracy of analyses and breaks new ground in terms of how such information can assist developers. We illustrate how the information we mine provides a refined notion of code ownership with respect to the one inferred by SCM system data. We demonstrate our approach on three case studies, including an industrial one. Ownership models suffer from the assumption that developers have a perfect memory. To account for their imperfect memory, we integrate into our ownership measurement a model of memory retention, to simulate the effect of memory loss over time. We evaluate the characteristics of this model for several strengths of memory.

Keywords

Code ownership Mining software repositories Fine-grained changes Software visualization 

References

  1. Anvik J, Hiew L, Murphy GC (2006) Who should fix this bug? In: Proceedings of ICSE 2006 (28th international conference on software engineering). ACM Press, pp 361–370Google Scholar
  2. Anvik J, Murphy GC (2007) Determining implementation expertise from bug reports. In: Proceedings of MSR 2007 (4th international workshop on mining software repositories). IEEE Computer Society, p 2Google Scholar
  3. Biehl JT, Czerwinski M, Smith G, Robertson GG (2007) FASTDash: a visual dashboard for fostering awareness in software teams. In: Proceedings of CHI 2007 (25th SIGCHI conference on human factors in computing systems). ACM Press, pp 1313–1322Google Scholar
  4. Baysal O, Malton AJ (2007) Correlating social interactions to release history during software evolution. In: Proceedings of MSR 2007 (4th international workshop on mining software repositories). IEEE Computer Society, p 7Google Scholar
  5. Bird C, Rigby PC, Barr ET, Hamilton DJ, German DM, Devanbu P (2009) The promises and perils of mining git. In: Proceedings of MSR 2009 (6th working conference on mining software repositories). IEEE Computer SocietyGoogle Scholar
  6. Carpenter SK, Pashler H, Wixted JT, Vul E (2008) The effects of tests on learning and forgetting. Mem Cogn 36(2):438–448CrossRefGoogle Scholar
  7. da Silva I, Chen P, Van der Westhuizen C, Ripley R, van der Hoek A (2006) Lighthouse: coordination through emerging design. In: Proceedings of ETX 2006 (OOPSLA Workshop on Eclipse Technology eXchange). ACM Press, pp 11–15Google Scholar
  8. de Souza CRB, Redmiles D, Dourish P (2003) Breaking the code, moving between private and public work in collaborative software development. In: Proceedings of GROUP 2003 (International ACM SIGGROUP conference on supporting group work). ACM Press, pp 105–114Google Scholar
  9. Dig D, Manzoor K, Johnson R, Nguyen TN (2007) Refactoring-aware configuration management for object-oriented programs. In: Proceedings of ICSE 2007 (29th international conference on software engineering). IEEE Computer Society, pp 427–436Google Scholar
  10. Ebbinghaus H (1913) Uber das Gedchtnis. Untersuchungen zur experimentellen Psychologie (Memory. A contribution to experimental psychology). Duncker and Humblot, LeipzigGoogle Scholar
  11. Estublier J, Leblang D, van der Hoek A, Conradi R, Clemm G, Tichy W, Wiborg-Weber D (2005) Impact of software engineering research on the practice of software configuration management. ACM Trans Softw Eng Methodol 14(4):383–430CrossRefGoogle Scholar
  12. Fluri B, Würsch M, Pinzger M, Gall H (2007) Change distilling: tree differencing for fine-grained source code change extraction. IEEE Trans Softw Eng (TSE) 33(11):725–743CrossRefGoogle Scholar
  13. Gîrba T, Kuhn A, Seeberger M, Ducasse S (2005) How developers drive software evolution. In: Proceedings of IWPSE 2005 (8th international workshop on principles of software evolution). IEEE Computer Society, pp 113–122Google Scholar
  14. Grinter RE (1996) Supporting articulation work using software configuration management systems. Comput Support Coop Work 5(4):447–465CrossRefGoogle Scholar
  15. Hassan AE, Holt RC (2004) Predicting change propagation in software systems. In: Proceedings of ICSM 2004 (20th IEEE international conference on software maintenance). IEEE Computer Society, pp 284–293Google Scholar
  16. Hattori L, Lanza M (2009) An environment for synchronous software development. In: Proceedings of ICSE 2009 (31st ACM/IEEE international conference on software engineering—new ideas and emerging results track). IEEE CS Press, pp 223–226Google Scholar
  17. Hattori L, Lanza M (2010) Syde: a tool for collaborative software development. In: Proceedings of ICSE 2010 (32nd ACM/IEEE international conference on software engineering), pp 235–238Google Scholar
  18. Hegde R, Dewan P (2008) Connecting programming environments to support ad-hoc collaboration. In: Proceedings of ASE 2008 (23rd IEEE/ACM international conference on automated software engineering). IEEE CS PressGoogle Scholar
  19. John TW, Shana KC (2007) The wickelgren power law and the ebbinghaus savings function. Psychological Science 18(2):133–134CrossRefGoogle Scholar
  20. Lanza M, Hattori L, Guzzi A (2010) Supporting collaboration awareness with real-time visualization of development activity. In: Proceedings of CSMR 2010 (14th IEEE European conference on software maintenance and reengineering). IEEE CS Press, pp 207–216Google Scholar
  21. Levenshtein VI (1966) Binary codes capable of correcting deletions, insertions and reversals. Sov Phys Dokl 10:707–710MathSciNetGoogle Scholar
  22. Lippe E, van Oosterom N (1992) Operation-based merging. SIGSOFT Softw Eng Notes 17(5):78–87CrossRefGoogle Scholar
  23. Ma D, Schuler D, Zimmermann T, Sillito J (2009) Expert recommendation with usage expertise. In: Proceedings of ICSM 2009 (25th IEEE international conference on software maintenance). IEEE Computer Society, pp 535–538Google Scholar
  24. Matter S, Kuhn A, Nierstrasz O (2009) Assigning bug reports using a vocabulary-based expertise model of developers. In: Proceedings of MSR 2009 (6th international working conference on mining software repositories). IEEE Computer Society, pp 131–140Google Scholar
  25. McDonald DW, Ackerman MS (2000) Expertise recommender: a flexible recommendation system and architecture. In: Proceedings of CSCW 2000 (ACM conference on computer supported cooperative work). ACM Press, pp 231–240Google Scholar
  26. Mockus A, Herbsleb JD (2002) Expertise browser: a quantitative approach to identifying expertise. In: Proceedings of ICSE 2002 (22nd international conference on software engineering). IEEE Computer Society, pp 503–512Google Scholar
  27. Murre J, Chessa A (2009) Spurious power laws of learning and forgetting: mathematical and computational analyses of averaging artifacts. In: Proceedings of CogSci 2009 (31st annual conference of the Cognitive Science Society). Cognitive Science Society, pp 1175–1179Google Scholar
  28. Omori T, Maruyama K (2008) A change-aware development environment by recording editing operations of source code. In: Proceedings of MSR 2008 (5th international working conference on mining software repositories). ACM Press, pp 31–34Google Scholar
  29. Robbes R (2007) Mining a change-based software repository. In: Proceedings of the 4th international workshop on mining software repositories (MSR 2007). ACM Press, p 15Google Scholar
  30. Robbes R, Lanza M (2005) Versioning systems for evolution research. In: Proceedings of IWPSE 2005 (8th international workshop on principles of software evolution). IEEE CS Press, pp 155–164Google Scholar
  31. Robbes R, Lanza M (2008) Spyware: a change-aware development toolset. In: Proceedings of ICSE 2008 (30th ACM/IEEE international conference in software engineering). ACM Press, pp 847–850Google Scholar
  32. Sarma A, Bortis G, van der Hoek A (2007) Towards supporting awareness of indirect conflicts across software configuration management workspaces. In: Proceedings of ASE 2007 (22nd IEEE/ACM international conference on automated software engineering). IEEE CS Press, pp 94–103Google Scholar
  33. Sarma A, Redmiles D, van der Hoek A (2008) Empirical evidence of the benefits of workspace awareness in software configuration management. In: Proceedings of FSE 2008 (16th ACM SIGSOFT international symposium on foundations of software engineering). ACM Press, pp 113–123Google Scholar
  34. Schneider KA, Gutwin C, Penner R, Paquette D (2004) Mining a software developer’s local interaction history. In: Proceedings of MSR 2004 (1st international workshop on mining software repositories), pp 106–110Google Scholar
  35. Tu Q, Godfrey MW (2001) The build-time software architecture view. In: Proceedings of ICSM 2001(17th IEEE international conference on software maintenance). IEEE Computer Society, p 398Google Scholar
  36. Van Rysselberghe F, Demeyer S (2004) Studying software evolution information by visualizing the change history. In: Proceedings of ICSM 2004 (20th IEEE international conference on software maintenance). IEEE Computer Society, pp 328–337Google Scholar
  37. Ying ATT, Ng R, Chu-Carroll MC, Murphy GC (2004) Predicting source code changes by mining change history. IEEE Trans Softw Eng 30(9):574–586CrossRefGoogle Scholar
  38. Yu L, Ramaswamy S (2007) Mining cvs repositories to understand open-source project developer roles. In: Proceedings of MSR 2007 (4th international workshop on mining software repositories). IEEE Computer Society, p 8Google Scholar
  39. Zeller A (2007) The future of programming environments: integration, synergy, and assistance. In: Proceedings of FOSE 2007 (2nd conference on the future of software engineering). IEEE CS Press, pp 316–325Google Scholar
  40. Zimmermann T, Weisgerber P, Diehl S, Zeller A (2004) Mining version histories to guide software changes. In: Proceedings of ICSE 2004 (26th ACM international conference on software engineering). IEEE CS Press, pp 563–572Google Scholar

Copyright information

© Springer Science+Business Media, LLC 2010

Authors and Affiliations

  • Lile Palma Hattori
    • 1
  • Michele Lanza
    • 1
  • Romain Robbes
    • 2
  1. 1.REVEAL @ Faculty of InformaticsUniversity of LuganoLuganoSwitzerland
  2. 2.PLEIAD Lab, Computer Science Department (DCC)University of ChileSantiagoChile

Personalised recommendations