Spårbarhetsåterhämtning

Spårbarhetsåterhämtning (eng. traceability recovery eller trace recovery) är aktiviteten att identifiera spårbarhetslänkar mellan programvaruartefakter inom programvaruutveckling. Metoder för att göra detta inkluderar informationssökning, informationsutvinning och regelbaserade angreppssätt genom ontologier.

De huvudsakliga användningsområdena för spårbarhetsåterhämtning är[1]:

  • Etablera en inledande mängd spårbarhetslänkar.
  • Föreslå spårbarhetslänkar vid behov (eng. on-demand tracing eller reactive tracing), vid till exempel påverkansanalys.
  • Verifiera befintliga spårbarhetslänkar, till exempel en spårbarhetsmatris.

Motivering

Storskalig programvaruutveckling består av en mängd processer som behöver fungera tillsammans. En bidragande orsak till svårigheter vid samordningen är de enorma informationsmängder som skapas i storskaliga dokumentdrivna projekt. Ofta bidrar tusentals utvecklare i olika världsdelar dagligen med stora mängder ny information. Typiska dokument som skapas och underhålls under utvecklingen är kravdokument, designdokument, källkodsfiler, testspecifikationer, testrapporter, defektrapporter och användarmanualer. Även informella dokument som mejl, webbsidor, byggloggar, lathundar och skärmdumpar genereras och leder till en informationsrymd som är svår att överblicka.

Det traditionella sättet att skapa struktur i programvaruutvecklingens dokumentrymd är att etablera och underhålla spårbarhetslänkar. Exempelvis kan det vara önskvärt att kunna spåra en metod i en källkodsfil till en specifik designmodul, ett funktionellt krav som beskriver beteendet, ett övergripande marknadskrav, en testsvit som verifierar funktionen och ett kapitel i användarmanualen. Vid säkerhetskritisk utveckling finns det dessutom ofta strikta krav på spårbarhet för att uppnå certifiering. Spårbarhetsinformation ändras kontinuerligt under utvecklingsprocessen och är dyr att underhålla.

IR-baserad spårbarhetsåterhämtning

Ett tillvägagångssätt för att skapa spårbarhetslänkar kommer från forskning inom datorbaserad informationssökning. Idén bygger på antagandet att utvecklare i någon utsträckning är konsekventa i sina formuleringar när de skriver dokument och källkod. Genom att tillämpa sökmotortekniker kan man analysera textuella likheter mellan olika dokument, exempelvis krav- och testspecifikationer. Vid stora likheter föreslås skapandet av spårbarhetslänkar, i extremfall kan även varningar för duplikat visas.

Pionjären inom området brukar anses vara Giuliano Antoniol, genom en välciterad tidskriftspublicering från 2002[2]. Tekniken har därefter implementerats i flera forskningsprototyper runt om i världen under det senaste decenniet, i viss utsträckning har den även inkluderats i kommersiella utvecklingsverktyg. Utvärderingar av tekniken har dock än så länge huvudsakligen gjorts småskaligt, i laborativ universitetsmiljö eller i projekt bestående av öppen källkod.

De IR-modeller som främst har utvärderats inom området är:[3]

Empirisk evidens

Ett systematiskt översiktsarbete från 2013 rapporterade att det fram till 2011 publicerats 79 vetenskapliga artiklar om IR-baserad spårbarhetsåterhämtning.[4] Översikten visade att flertalet studier gjorts med orealistiskt få dokument, samt att resultaten uppvisar ett stort databeroende. Dock pekar översikten på att det även finns ett antal studier som visat att verktygsstöd för IR-baserad spårbarhetsåterhämtning gynnar vissa kravspårningsaktiviteter. Experiment med studenter i Italien[5], USA[6] och Sverige[7][8] har utförts där man gjort jämförelser med manuellt arbetande kontrollgrupper. Även ett fåtal fallstudier har visat att verktygen är gynnsamma. En fallstudie i ett kinesiskt utvecklingsteam studerade hur arbetet underlättades av verktyg.[9] I Italien har fallstudier dokumenterat hur verktygen förbättrat spårbarhetsarbete i studentprojekt.[10]

Referenser

  1. ^ Leuser, J: Challenges for semi-automatic trace recovery in the automotive domain, Proceedings of the ICSE Workshop on Traceability in Emerging Forms of Software Engineering, 2009
  2. ^ G. Antoniol, G. Canfora, G. Casazza, A. De Lucia, E. Merlo: Recovering Traceability Links between Code and Documentation. IEEE Transactions on Software Engineering. 28(10), pp. 970-983, 2002
  3. ^ Cleland-Huang, J., Berenbach, B., Clark, S., Settimi, R., and Romanova, E.: Best Practices for Automated Traceability. Computer. 40(6), pp. 27-35, 2007.
  4. ^ Borg, M., Runeson, P., and Ardö, A.: Recovering from a Decade: A Systematic Mapping of Information Retrieval Approaches to Software Traceability. Empirical Software Engineering. 2013.
  5. ^ De Lucia, A., Oliveto, R., and Tortora, G.: Assessing IR-based traceability recovery tools through controlled experiments, Empirical Software Engineering, 14(1), pp. 57-92, 2009.
  6. ^ Huffman Hayes, J., Dekhtyar, A., Sundaram, S., Holbrook, A., Vadlamundi, S., and April, A.: REquirements Tracing On target (RETRO): Improving Software Maintenance through Traceability Recovery, Innovations in Systems and Software Engineering, 3(3), pp. 193-202, 2007
  7. ^ Natt och Dag, J., Thelin, T., and Regnell, B.: An experiment on linguistic tool support for consolidation of requirements from multiple sources in market-driven product development, Empirical Software Engineering, 11(2), pp. 303-329, 2006.
  8. ^ Wnuk, K., Höst, M, and Regnell, B.: Replication of an experiment on linguistic tool support for consolidation of requirements from multiple sources, Empirical Software Engineering, 17(3), pp. 305-344, 2012
  9. ^ Li, Y., Li, J., Yang, Y., and Li, M.: Requirement-centric traceability for change impact analysis: a case study. Proceedings of International Conference on Software Process, pp. 100-111, 2008
  10. ^ De Lucia, A., Fasano, F., Oliveto, R, and Tortora, G.: Recovering traceability links in software artifact management systems using information retrieval methods, Transactions on Software Engineering and Methodology, 16(4), 2007.