Rundtursteknik

Rundtursteknik ( RTE ) är en funktion i mjukvaruutvecklingsverktyg som synkroniserar två eller flera relaterade programvaruartefakter, såsom källkod, modeller, konfigurationsfiler och till och med dokumentation. Behovet av konstruktion tur och retur uppstår när samma information finns i flera artefakter och därför kan en inkonsekvens uppstå om inte alla artefakter konsekvent uppdateras för att återspegla en given förändring. Till exempel lades en del information till/ändrades i endast en artefakt och som ett resultat blev den saknad i/inkonsekvent med de andra artefakterna.

Round-trip engineering är nära besläktad med traditionella programvarutekniska discipliner: forward engineering (skapa programvara från specifikationer), reverse engineering (skapa specifikationer från befintlig mjukvara) och reengineering (förstå befintlig programvara och modifiera den). Rundtursteknik definieras ofta felaktigt som att den helt enkelt stöder både framåt- och bakåtteknik. Faktum är att det viktigaste kännetecknet för round-trip engineering som skiljer den från framåt och bakåt engineering är förmågan att synkronisera befintliga artefakter som utvecklats samtidigt genom att stegvis uppdatera varje artefakt för att återspegla ändringar som gjorts i de andra artefakterna. Vidare kan forward engineering ses som en speciell instans av RTE där endast specifikationen finns och reverse engineering kan ses som en speciell instans av RTE där bara mjukvaran finns. Många omstruktureringsaktiviteter kan också förstås som RTE när programvaran uppdateras för att återspegla ändringar som gjorts i den tidigare omvända specifikationen.

Ett annat kännetecken för konstruktion tur och retur är automatisk uppdatering av artefakterna som svar på automatiskt upptäckta inkonsekvenser. I den meningen skiljer det sig från framåt- och bakåtteknik som kan vara både manuell (traditionellt) och automatisk (via automatisk generering eller analys av artefakterna). Den automatiska uppdateringen kan vara antingen omedelbar eller på begäran . I momentan RTE uppdateras alla relaterade artefakter omedelbart efter varje ändring som görs i en av dem. I on-demand RTE kan författare till artefakterna samtidigt utveckla artefakterna (även i en distribuerad miljö) och vid någon tidpunkt välja att utföra matchning för att identifiera inkonsekvenser och välja att sprida några av dem och förena potentiella konflikter.

Rundtursteknik stöder en iterativ utvecklingsprocess. Efter att du har synkroniserat din modell med den reviderade koden är du fortfarande fri att välja det bästa sättet att arbeta – gör ytterligare ändringar i koden eller gör ändringar i din modell. Du kan synkronisera i båda riktningarna när som helst och du kan upprepa cykeln så många gånger som behövs.

Exempel på tur- och returteknik

Den kanske vanligaste formen av konstruktion tur och retur är synkronisering mellan UML-modeller ( Unified Modeling Language ) och motsvarande källkod. Många kommersiella verktyg och forskningsprototyper stödjer denna form av RTE; en bok från 2007 listar Rational Rose , Micro Focus Together , ESS-Model, BlueJ och Fujaba bland de som kan, med Fujaba som sägs kunna identifiera designmönster . Vanligtvis stöds UML-klassdiagram till viss del; vissa UML-koncept, såsom associationer och inneslutning har dock inte enkla representationer i många programmeringsspråk, vilket begränsar användbarheten av den skapade koden och noggrannheten i kodanalys (t.ex. är inneslutning svårt att känna igen i koden). En bok från 2005 om Visual Studio noterar till exempel att ett vanligt problem i RTE-verktyg är att den omvända modellen inte är densamma som den ursprungliga, om inte verktygen får hjälp av mödosamma kommentarer. De beteendemässiga delarna av UML innebär ännu fler utmaningar för RTE.

En mer lätthanterlig form av konstruktion tur och retur implementeras i sammanhanget med ramgränssnitt för applikationsprogrammering (API), varvid en modell som beskriver användningen av ett ramverks API av en applikation synkroniseras med den applikationens kod. I den här inställningen föreskriver API: et alla korrekta sätt som ramverket kan användas i applikationer, vilket möjliggör exakt och fullständig detektering av API-användningar i koden samt skapande av användbar kod som implementerar korrekt API-användning. Två framträdande RTE-implementeringar i denna kategori är ramspecifika modelleringsspråk och Spring Roo .

Rundtursteknik är avgörande för att upprätthålla överensstämmelse mellan flera modeller och mellan modellerna och koden i Object Management Groups ( OMG) modelldrivna arkitektur . OMG föreslog QVT- standarden (query/view/transformation) för att hantera modelltransformationer som krävs för MDA. Hittills har några implementeringar av standarden skapats. (Behöver presentera praktiska erfarenheter av MDA i relation till RTE).

Exempel inom mjukvaruteknik

Rundtursteknik baserad på Unified Modeling Language (UML) behöver tre grundläggande komponenter för mjukvaruutveckling: [ citat behövs ]

  • Källkodsredigerare;
  • UML Editor för attribut och metoder;
  • Visualisering av UML-struktur.

Ett exempel på grundläggande rundtursteknik är tillgängligt som ett webbaserat verktyg med öppen källkod är: [ citat behövs ]

  • JavaScript Class Creator tillåter integrerad rundtursteknik för JavaScript-klasser. UML- diagram genereras med ett diagrambibliotek JointJS. Redigering av JavaScript-källkod görs med redigeraren ACE.