Advertisement

Software Developer Activity as a Source for Identifying Hidden Source Code Dependencies

  • Martin Konôpka
  • Mária Bieliková
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8939)

Abstract

Connections between source code components are important to know in the whole software life. Traditionally, we use syntactic analysis to identify source code dependencies which may not be sufficient in cases of dynamically typed programming languages, loosely coupled components or when multiple programming languages are combined. We aim at using developer activity as a source for identifying implicit source code dependencies, to enrich or supplement explicitly stated dependencies in the source code. We propose a method for identification of implicit dependencies from activity logs in IDE, mainly of switching between source code files in addition to usually used logs of copy-pasting code fragments and commits. We experimentally evaluated our method using data of students’ activity working on five projects. We compared implicit dependencies with explicit ones including manual evaluation of their significance. Our results show that implicit dependencies based on developer activity partially reflect explicit dependencies and so may supplement them in cases of their unavailability. In addition, implicit dependencies extend existing dependency graph with new significant connections applicable in software development and maintenance.

Keywords

software component dependency source code developer activity dependency graph implicit dependency implicit feedback 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Antunes, B., Cordeiro, J., Gomez, P.: An Approach to Context-based Recommendation in Software Development. In: Proc. of the 6th ACM Conf. on Recommendation Systems, pp. 171–178. ACM (2012)Google Scholar
  2. 2.
    Bieliková, M., Návrat, P., Chudá, D., Polášek, I., Barla, M., Tvarožek, J., Tvarožek, M.: Webification of Software Development: General Outline and the Case of Enterprise Application Development. In: AWERProcedia Information Technology and Computer Science: 3rd World Conf. on Information Technology, vol. 3, pp. 1157–1162 (2013)Google Scholar
  3. 3.
    Bieliková, M., Polášek, I., Barla, M., Kuric, E., Rástočný, K., Tvarožek, J., Lacko, P.: Platform Independent Software Development Monitoring: Design of an Architecture. In: Geffert, V., Preneel, B., Rovan, B., Štuller, J., Tjoa, A.M. (eds.) SOFSEM 2014. LNCS, vol. 8327, pp. 126–137. Springer, Heidelberg (2014)CrossRefGoogle Scholar
  4. 4.
    Bird, C., Nagappan, N., Gall, H., et al.: Putting It All Together: Using Socio-technical Networks to Predict Failures. In: 20th Int. Symposium on Software Reliability Engineering, pp. 109–119. IEEE CS Press (2009)Google Scholar
  5. 5.
    Boehm, B.W., Brown, J.R., Lipow, M.: Quantitative Evaluation of Software Quality. In: Proc. of the 2nd Int. Conf. on Program Comprehension, pp. 592–605. IEEE CS Press (1976)Google Scholar
  6. 6.
    Coman, I.D., Sillitti, A.: Automated Identification of Tasks in Development Sessions. In: Proc. of 16th IEEE Int. Conf. on Program Comprehension, pp. 212–217. IEEE CS Press (2008)Google Scholar
  7. 7.
    Counsell, S., Hassoun, Y., Loizou, G., et al.: Common Refactorings, a Dependency Graph and Some Code Smells: An Empirical Study of Java OSS. In: Proc. of the ACM/IEEE Int. Symp. on Empirical Software Engineering, pp. 288–296. ACM (2006)Google Scholar
  8. 8.
    DeLine, R., Czerwinski, M., Robertson, G.: Easing Program Comprehension by Sharing Navigation Data. In: Proc. of the 2005 IEEE Symp. on Visual Languages and Human-Centric Computing, pp. 241–248. IEEE CS Press (2005)Google Scholar
  9. 9.
    Ebbinghaus, H.: Memory: A Contribution to Experimental Psychology. Ruger, H.A., Bussenius, C.E. (trans.) Teachers College, New York (1885/1913)Google Scholar
  10. 10.
    Fenton, N.E., Pfleeger, S.L.: Software Metrics: A Rigorous and Practical Approach, 2nd edn. PWS Pub. Co., Boston (1998)Google Scholar
  11. 11.
    Fritz, T., Murphy, G.C., Hill, E.: Does a Programmer’s Activity Indicate Knowledge of Code? In: Proc. of 6th Joint Meeting of the European Software Eng. Conf. and the ACM SIGSOFT Symp. on The Foundations of Software Eng., pp. 341–350. ACM (2007)Google Scholar
  12. 12.
    Kalliamvakou, E., Gousios, G., Spinellis, D., et al.: Measuring Developer Contribution from Software Repository Data. In: Proc. of the 4th Mediterranean Conf. on Information Systems, pp. 600–611 (2008)Google Scholar
  13. 13.
    Kersten, M., Murphy, G.C.: Using Task Context to Improve Programmer Productivity. In: Proc. of 14th ACM SIGSOFT Int. Symp. on Foundations of Software Eng., pp. 1–11. ACM (2006)Google Scholar
  14. 14.
    Polášek, I., Ruttkay-Nedecký, I., Ruttkay-Nedecký, P., Tóth, T., Černík, A., Dušek, P.: Information and Knowledge within Software Projects and Their Graphical Representation for Collaborative Programming. Acta Polytechnica Hungarica 10(2), 173–192 (2013) ISSN: 1785-8860Google Scholar
  15. 15.
    Robillard, M.P., Murphy, G.C.: Automatically Inferring Concern Code from Program Investigation Activities. In: Proc. of 18th IEEE Int. Conf. on Automated Software Engineering, pp. 225–234. IEEE CS Press (2003)Google Scholar
  16. 16.
    White, K.G.: Forgetting Functions. Animal Learning & Behavior 29(3), 193–207 (2001)CrossRefGoogle Scholar
  17. 17.
    Zimmermann, T., Nagappan, N.: Predicting Defects Using Network Analysis on Dependency Graphs. In: Proc. of 30th Int. Conf. on Software Engineering, pp. 531–540. ACM (2008)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2015

Authors and Affiliations

  • Martin Konôpka
    • 1
  • Mária Bieliková
    • 1
  1. 1.Faculty of Informatics and Information TechnologiesSlovak University of TechnologyBratislavaSlovakia

Personalised recommendations