Abstract
Traceability provides support for diverse software engineering activities including safety analysis, compliance verification, test-case selection, and impact prediction. However, in practice, there is a tendency for trace links to degrade over time as the system continually evolves. This is especially true for links between source-code and upstream artifacts such as requirements – because developers frequently refactor and change code without updating the links. In this paper we present TLE (Trace Link Evolver), a solution for automating the evolution of bidirectional trace links between source code classes or methods and requirements. TLE depends on a set of heuristics coupled with refactoring detection tools and informational retrieval algorithms to detect predefined change scenarios that occur across contiguous versions of a software system. We first evaluate TLE at the class level in a controlled experiment to evolve trace links for revisions of two Java applications. Second, we comparatively evaluate several variants of TLE across six releases of our in-house Dronology project. We study the results of integrating human analyst feed back in the evolution cycle of this emerging project. Additionally, in this system, we compare the efficacy of class-level versus method-level evolution of trace links. Finally, we evaluate TLE in a larger scale across 27 releases of the Cassandra Database System and show that the evolved trace links are significantly more accurate than those generated using only information retrieval techniques.
Similar content being viewed by others
Notes
Datasets: The Dronology dataset used in these experiments represents an early proof-of-concept prototype and can be downloaded from tinyurl.com/DronologyPOC. More extensive releases of our fully functioning Dronology system with additional artifacts will be released periodically at http://sarec.nd.edu/Dronology.html.
References
Ajila S, Kaba AB (2004) Using traceability mechanisms to support software product line evolution. In: IEEE International conference on information reuse and integration (IRI), pp 157–162
Anish PR, Balasubramaniam B, Sainani A, Cleland-Huang J, Daneva M, Wieringa RJ, Ghaisas S (2016) Probing for requirements knowledge to stimulate architectural thinking. In: Proceedings of the 38th International conference on software engineering, ICSE 2016. Austin, pp 843–854
Anquetil N, Kulesza U, Mitschke R, Moreira A, Royer J-C, Rummler A, Sousa A (2010) A model-driven traceability framework for software product lines. Softw Syst Model 9(4):427–451
Antoniol G, Canfora G, Casazza G, De Lucia A, Merlo E (2002) Recovering traceability links between code and documentation. IEEE Trans Softw Eng 28(10):970–983
Arnold S, Ricossa S (2010) San Jose, CA. Requirements engineering at cisco. In: Workshop on requirements engineering. International Symposium on Software Reliability Engineering
Asuncion HU, Asuncion A, Taylor RN (2010) Software traceability with topic modeling. In: 32nd ACM/IEEE International conference on software engineering (ICSE), pp 95–104
Berenbach B, Gruseman D, Cleland-Huang J (2010) Application of just in time tracing to regulatory codes. In: Proceedings of the conference on systems engineering research
Borland LC (2015) Modifying tracelinks in a matrix, micro focus documentation
Cassandra Documentation Cas (2017a) Apache git repositories, https://apache.googlesource.com/
Cassandra Documentation Cas (2017b) Cassandra wiki, http://wiki.apache.org/cassandra/
Cassandra Documentation Cas (2017c) Datastax documentation, http://docs.datastax.com/
Cassandra Documentation Cas (2017d) Datastax ruby driver for apache cassandra, http://datastax.github.io/ruby-driver/
Cassandra Documentation Cas (2017e) Planet cassandra, http://www.planetcassandra.org/
Cleland-Huang J, Chang CK, Ge Y (2002) Supporting event based traceability through high-level recognition of change events. In: 26th international computer software and applications conference (COMPSAC 2002), prolonging software life: development and redevelopment. Oxford, Proceedings, pp 595–602
Cleland-Huang J, Chang CK, Christensen MJ (2003) Event-based traceability for managing evolutionary change. IEEE Trans Software Eng 29(9):796–810
Cleland-Huang J, Mäder P, Mirakhorli M, Amornborvornwong S (2012) Breaking the big-bang practice of traceability: pushing timely trace recommendations to project stakeholders. In: RE, pp 231–240
Cleland-Huang J, Gotel O, Hayes JH, Mäder P, Zisman A (2014a) Software traceability: trends and future directions. In: FOSE, pp 55–69
Cleland-Huang J, Rahimi M, Mäder P (2014b) Achieving lightweight trustworthy traceability. In: Proceedings of the 22nd ACM SIGSOFT International symposium on foundations of software engineering, (FSE-22). Hong Kong, pp 849–852
Clements PC, Northrop L (2001) Software product lines. In: Practices and patterns. SEI Series in Software Engineering. Addison-Wesley
Collard ML, Decker MJ, Maletic JI (2011) Lightweight transformation and fact extraction with the srcml toolkit. In: 2011 11th IEEE International working conference on source code analysis and manipulation (SCAM). IEEE, pp 173–184
Collard ML, Decker MJ, Maletic JI (2013) srcml: An infrastructure for the exploration, analysis, and manipulation of source code: a tool demonstration. In: 2013 IEEE International conference on software maintenance. Eindhoven, pp 516–519
Dekhtyar A, Hayes JH, Sundaram SK, Holbrook E A, Dekhtyar O (2007) Technique integration for requirements assessment. In: 15th IEEE International requirements engineering conference, RE 2007. New Delhi, pp 141–150
De Lucia A, Marcus A, Oliveto R, Poshyvanyk D, Zisman A (2012) Information retrieval methods for automated traceability recovery. In: Cleland-Huang J, Gotel O (eds) Software and systems traceability. Springer, London, pp 71–98
Dig D, Comertoglu C, Marinov D, Johnson R (2006) Automated detection of refactorings in evolving components. In: ECOOP 2006–object-oriented programming. Springer, pp 404–428
Dömges R, Pohl K (1998) Adapting tracability environments to project-specific needs. Commun ACM 41:54–62. ISSN 0001–0782
Fowler M (1999) Refactoring: Improving the design of existing code. Addison-Wesley, Boston
Garcia J, Krka I, Mattmann C, Medvidovic N (2013) Obtaining ground-truth software architectures. In: 35th International conference on software engineering, ICSE ’13. San Francisco, pp 901–910
Gervasi V, Zowghi D (2014) Supporting traceability through affinity mining. In: IEEE Requirements engineering conference, RE 2014. Karlskrona, pp 143–152
Gotel OCZ, Finkelstein A (1994) An analysis of the requirements traceability problem. In: Proceedings of the First IEEE international conference on requirements engineering, ICRE ’94. Colorado Springs, pp 94–101
Gotel O, Finkelstein A (1995) Contribution structures [requirements artifacts]. In: 2nd IEEE International symposium on requirements engineering (RE), pp 100–107
Hammad M, Collard ML, Maletic JI (2011) Automatically identifying changes that impact code-to-design traceability during evolution. Softw Qual J 19(1):35–64
Hassine J, Rilling J, Hewitt J, Dssouli R (2005) Change impact analysis for requirement evolution using use case maps. In: Eighth International workshop on principles of software evolution. IEEE, pp 81–90
Hayashi S, Omori T, Zenmyo T, Maruyama K, Saeki M (2012) Refactoring edit history of source code. In: 28th IEEE International conference on software maintenance, ICSM 2012. Trento, pp 617-620
Hayes JH, Dekhtyar A, Sundaram SK (2006) Advancing candidate link generation for requirements tracing: the study of methods. IEEE Trans Software Eng 32(1):4–19
IBM (2015) Rational team concert 4.0.0, managing and composing requirements. IBM Knowledge Center
Jirapanthong W, Zisman A (2009) Xtraque: traceability for product line systems. Softw Syst Model 8(1):117–144
Kim M, Zimmermann T, Nagappan N (2014) An empirical study of refactoringchallenges and benefits at microsoft. IEEE Trans Softw Eng 40(7):633–649
Lakshman A, Malik P (2010) Cassandra: a decentralized structured storage system. SIGOPS Oper Syst Rev 44:35–40
Li Y, Li J, Yang Y, Li M (2008) Requirement-centric traceability for change impact analysis: a case study. In: Making globally distributed software development a success story. Springer, pp 100–111
Lohar S, Amornborvornwong S, Zisman A, Cleland-Huang J (2013) Improving trace accuracy through data-driven configuration and composition of tracing features. In: Joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on the foundations of software engineering, ESEC/FSE’13. Saint Petersburg, pp 378–388
Lucia AD, Fasano F, Oliveto R, Tortora G (2007) Recovering traceability links in software artifact management systems using information retrieval methods. ACM Trans Softw Eng Methodol 16:4
Mȧder P, Gotel O (2012) Towards automated traceability maintenance. J Syst Softw 85(10):2205–2227
Mȧder P, Gotel O, Kuschke T, Philippow I (2008) tracemaintainer - automated traceability maintenance. In: 16th IEEE international requirements engineering conference, RE 2008. Barcelona, pp 329–330
Mäder P, Gotel O, Philippow I (2009) Getting back to basics: promoting the use of a traceability information model in practice. In: 5th Workshop on traceability in emerging forms of software engineering (TEFSE)
Mäder P, Jones P, Zhang Y, Cleland-Huang J (2013) Strategic traceability for safety critical systems. IEEE Softw 30:3
Mahmoud A, Niu N (2015) On the role of semantics in automated requirements tracing. Requir Eng 20(3):281–300
Maletic JI, Collard ML, Simoes B (2005) An XML based approach to support the evolution of model-to-model traceability links. In: The 3rd International workshop on traceability in emerging forms of software engineering, co-located with the ASE 2005 conference, TEFSE@ASE 2005. Long Beach, pp 67–72
Mavin A, Wilkinson P, Gregory S, Uusitalo E (2016) Listens learned (8 lessons learned applying EARS). In: 24th IEEE International requirements engineering conference, RE 2016. Beijing, pp 276-282
Mens T, Tourwé T (2004) A survey of software refactoring. IEEE Trans Softw Eng 30(2):126–139
Mitschke R, Eichberg M (2008) Supporting the evolution of software product lines. In: 4th ECMDA-Traceability Workshop (ECMDA-TW), pp 87–96
Mohan K, Xu P, Cao L, Ramesh B (2008) Improving change management in software development: integrating traceability and software configuration management. Decis Support Syst 45(4):922–936
Murphy-Hill ER, Parnin C, Black AP (2012) How we refactor, and how we know it. IEEE Trans Softw Eng 38(1):5–18
Negara S, Chen N, Vakilian M, Johnson RE, Dig D (2013) A comparative study of manual and automated refactorings. In: ECOOP 2013 - object-oriented programming - 27th European conference. Montpellier, Proceedings, pp 552–576
Nejati S, Sabetzadeh M, Falessi D, Briand LC, Coq T (2012) A sysml-based approach to traceability management and design slicing in support of safety certification: framework, tool support, and case studies. Inf Softw Technol 54(6):569–590
Nuseibeh B (2001) Weaving together requirements and architectures. IEEE Comput 34(3):115–117
Olsson T, Grundy J (2002) Supporting traceability and inconsistency management between software artefacts. Int Conf Softw Eng Appl
Ouni A, Kessentini M, Sahraoui HA (2014) Multiobjective optimization for software refactoring and evolution. Adv Comput 94:103–167
Pimentel J, Castro J, Santos E, Finkelstein A (2012) Towards requirements and architecture co-evolution
Pohl K, Weidenhaupt K, Dömges R, Haumer P, Jarke M, Klamma R (1999) PRIME - toward process-integrated modeling environments: 1. ACM Trans Softw Eng Methodol 8(4):343–410
Rahimi M, Cleland-Huang J (2016) Patterns of Co-evolution between requirements and source code. http://re.cs.depaul.edu/Preprints/REPatternsPrePrint.pdf. IEEE Workshop on Requirements Patterns at Requirements Engineering Conference
Rahimi M, Goss W, Cleland-Huang J (2016) Evolving requirements-to-code trace links across versions of a software system. In: 2016 IEEE International conference on software maintenance and evolution, ICSME 2016. Raleigh, pp 99–109
Ramesh B, Jarke M (2001) Toward reference models of requirements traceability. IEEE Trans Softw Eng 27(1):58–93
Rempel P, Mäder P, Kuschke T, Cleland-Huang J (2014) Mind the gap: assessing the conformance of software traceability to relevant guidelines. In: 36th International conference on software engineering (ICSE)
Robertson S, Robertson J (2012) Mastering the requirements process. Pearson Education
Ryder BG (1979) Constructing the call graph of a program. IEEE Trans Softw Eng 5(3):216–226
Shin Y, Cleland-Huang J (2012) A comparative evaluation of two user feedback techniques for requirements trace retrieval. In: 27th Annual ACM symposium on applied computing (SAC), pp 1069–1074
Shin Y, Hayes JH, Cleland-Huang J (2015) Guidelines for benchmarking automated software traceability techniques. In: 8th IEEE/ACM international symposium on software and systems traceability, SST 2015. Florence, pp 61–67
Sultanov H, Hayes JH, Kong W (2011) Application of swarm techniques to requirements tracing. Requir Eng 16(3):209–226
TraceLab (2015) Tracelab - software traceability instrument to facilitate and empower traceability research and technology transfer. https://github.com/coest/tracelab
Weißgerber P, Diehl S (2006) Identifying refactorings from source-code changes. In: 21st IEEE/ACM International conference on automated software engineering (ASE 2006). Tokyo, pp 231–240
Winkler S (2009) Trace retrieval for evolving artifacts. In: ICSE Workshop on traceability in emerging forms of software engineering, TEFSE@ICSE 2009. Vancouver, pp 49–56
Acknowledgments
The work in this paper was partially funded by the US National Science Foundation Grant CCF:1319680 and CCF:1647342.
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by: Bram Adams and Denys Poshyvanyk
Rights and permissions
About this article
Cite this article
Rahimi, M., Cleland-Huang, J. Evolving software trace links between requirements and source code. Empir Software Eng 23, 2198–2231 (2018). https://doi.org/10.1007/s10664-017-9561-x
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-017-9561-x