Skip to main content

Advertisement

Log in

Evolving software trace links between requirements and source code

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7

Similar content being viewed by others

Notes

  1. 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Fowler M (1999) Refactoring: Improving the design of existing code. Addison-Wesley, Boston

    MATH  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Kim M, Zimmermann T, Nagappan N (2014) An empirical study of refactoringchallenges and benefits at microsoft. IEEE Trans Softw Eng 40(7):633–649

    Article  Google Scholar 

  • Lakshman A, Malik P (2010) Cassandra: a decentralized structured storage system. SIGOPS Oper Syst Rev 44:35–40

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Mȧder P, Gotel O (2012) Towards automated traceability maintenance. J Syst Softw 85(10):2205–2227

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Mahmoud A, Niu N (2015) On the role of semantics in automated requirements tracing. Requir Eng 20(3):281–300

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Murphy-Hill ER, Parnin C, Black AP (2012) How we refactor, and how we know it. IEEE Trans Softw Eng 38(1):5–18

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • Nuseibeh B (2001) Weaving together requirements and architectures. IEEE Comput 34(3):115–117

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  MathSciNet  MATH  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

Download references

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

Authors

Corresponding author

Correspondence to Mona Rahimi.

Additional information

Communicated by: Bram Adams and Denys Poshyvanyk

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10664-017-9561-x

Keywords

Navigation