Mjukvarukarta

En mjukvarukarta representerar statisk, dynamisk och evolutionär information om mjukvarusystem och deras mjukvaruutvecklingsprocesser med hjälp av 2D- eller 3D-kartaorienterad informationsvisualisering . Det utgör ett grundläggande koncept och verktyg inom mjukvaruvisualisering , mjukvaruanalys och programvarudiagnos . Dess primära applikationer inkluderar riskanalys för och övervakning av kodkvalitet , teamaktivitet eller utveckling av mjukvaruutveckling och generellt förbättra effektiviteten av mjukvaruutveckling med avseende på alla relaterade artefakter, processer och intressenter genom hela programvaruutvecklingsprocessen och mjukvaruunderhåll .

Motivation och koncept

Mjukvarukartor tillämpas i samband med programvaruutveckling : Komplexa, långsiktiga programvaruutvecklingsprojekt står vanligtvis inför många svårigheter som friktionen mellan att fullborda systemfunktioner och samtidigt erhålla en hög grad av kodkvalitet och mjukvarukvalitet för att säkerställa mjukvaruunderhåll av systemet i framtiden. I synnerhet, "Att underhålla komplexa mjukvarusystem tenderar att bli kostsamt eftersom utvecklare spenderar en betydande del av sin tid med att försöka förstå systemets struktur och beteende." Nyckelidén med mjukvarukartor är att hantera den utmaningen och optimeringsproblemen genom att tillhandahålla effektiva kommunikationsmedel för att överbrygga kommunikationsklyftan mellan olika intressenter och informationsdomäner inom mjukvaruutvecklingsprojekt och få insikter i betydelsen informationsvisualisering .

Programvarukartor drar fördel av väldefinierade kartografiska karttekniker med hjälp av den virtuella 3D-stadsmodellmetaforen för att uttrycka det underliggande komplexa, abstrakta informationsutrymmet. Metaforen krävs "eftersom programvara inte har någon fysisk form, finns det ingen naturlig mappning av programvara till ett tvådimensionellt utrymme". Programvarukartor är icke-rumsliga kartor som måste konvertera hierarkidata och dess attribut till en rumslig representation.

Ansökningar

Mjukvarukartor tillåter generellt begriplig och effektiv kommunikation, naturligtvis, risker och kostnader för programvaruutvecklingsprojekt till olika intressenter såsom lednings- och utvecklingsteam. De kommunicerar status för applikationer och system som för närvarande utvecklas eller vidareutvecklas till projektledare och ledning på ett ögonblick. "En nyckelaspekt för detta beslutsfattande är att mjukvarukartor ger det strukturella sammanhang som krävs för korrekt tolkning av dessa resultatindikatorer". Som ett kommunikationsinstrument fungerar mjukvarukartor som öppna, transparenta informationsutrymmen som gör det möjligt att balansera prioriteringar av kodkvalitet och skapande av nya funktioner mot varandra och för att besluta om och implementera nödvändiga åtgärder för att förbättra mjukvaruutvecklingsprocessen .

De underlättar till exempel beslut om var i koden en kvalitetshöjning skulle vara till nytta både för att påskynda pågående utvecklingsaktiviteter och för att minska riskerna för framtida underhållsproblem.

På grund av deras höga grad av uttrycksfullhet (t.ex. informationstäthet) och deras omedelbara, automatiserade generering, tjänar kartorna dessutom till att spegla den aktuella statusen för system och utvecklingsprocesser, överbrygga en viktig informationsgap mellan ledning och utvecklingsteam, förbättra medvetenheten om status och fungera som instrument för tidig riskupptäckt.

Innehåll

Mjukvarukartor är baserade på objektiv information som bestäms av den KPI-drivna kodanalysen såväl som av importerad information från programvaruförrådssystem , information från källkoder eller mjukvaruutvecklingsverktyg och programmeringsverktyg . I synnerhet är mjukvarukartor inte bundna till ett specifikt programmeringsspråk , modelleringsspråk eller processmodell för mjukvaruutveckling .

Mjukvarukartor använder hierarkin av artefakter för programvaruimplementering, såsom källkodsfiler , som bas för att bygga en trädmappning , dvs ett rektangulärt område som representerar hela hierarkin, och delar upp området i rektangulära delområden. En mjukvarukarta, informellt sett, liknar en virtuell 3D-stadsmodell , där artefakter av mjukvarusystemet visas som virtuella, rektangulära 3D-byggnader eller torn, som placeras i enlighet med deras position i programvaruimplementeringshierarkin.

Mjukvarukartor kan uttrycka och kombinera information om mjukvaruutveckling, mjukvarukvalitet och systemdynamik genom att kartlägga den informationen på visuella variabler för trädkartelementen såsom fotavtrycksstorlek, höjd, färg eller textur. De kan systematiskt specificeras, genereras automatiskt och organiseras av mallar.

Exempel på kartläggningsprogram

Programkartor "kombinerar tematisk information om mjukvaruutvecklingsprocesser (evolution), mjukvarukvalitet, struktur och dynamik och visar den informationen på ett kartografiskt sätt". Till exempel:

  • Höjden på en virtuell byggnad kan vara proportionell mot kodenhetens komplexitet (t.ex. enstaka eller kombinerade programvarumått ).
  • Markytan för en virtuell 3D-byggnad kan vara proportionell mot antalet kodrader i modulen eller (t.ex. icke-kommentarrad kodrad NCLOC).
  • Färgen kan uttrycka den aktuella utvecklingsstatusen, dvs hur många utvecklare som ändrar/redigerar kodenheten.

Med denna exemplariska konfiguration visar mjukvarukartan avgörande punkter i källkoden med relationer till aspekter av mjukvaruutvecklingsprocessen. Till exempel blir det uppenbart med en blick vad man ska ändra för att:

  • implementera förändringar snabbt;
  • snabbt utvärdera effekten av förändringar på ett ställe på funktionalitet någon annanstans;
  • minska förvecklingar som leder till okontrollerade processer i applikationen;
  • hitta fel snabbare;
  • upptäcka och eliminera dålig programmeringsstil.

Mjukvarukartor representerar nyckelverktyg i omfattningen av mjukvarudiagnostik för automatiserad diagnostik .

Som business intelligence-verktyg och rekommendationssystem

Mjukvarukartor kan användas, i synnerhet, som analys- och presentationsverktyg för business intelligence -system, specialiserade på analys av mjukvarurelaterade data. Dessutom fungerar mjukvarukartor "som rekommendationssystem för mjukvaruutveckling".

Mjukvarukartor begränsas inte av programvarurelaterad information: De kan innehålla all hierarkisk systeminformation samt, till exempel underhållsinformation om komplexa tekniska artefakter.

Visualiseringstekniker

Mjukvarukartor undersöks inom området mjukvaruvisualisering . Visualiseringen av mjukvarukartor är vanligen baserad på trädkartläggning , "ett rymdfyllande tillvägagångssätt för visualisering av hierarkiska informationsstrukturer" eller andra metoder för hierarkisk kartläggning.

Layoutalgoritmer

För att konstruera mjukvarukartor används olika layoutmetoder för att generera den grundläggande rumsliga kartläggningen av komponenter, såsom:

  • Trädkartningsalgoritmer som initialt mappar mjukvaruhierarkin till ett rekursivt kapslat rektangulärt område.
  • Voronoi-kartalgoritmer som initialt kartlägger mjukvaruhierarkin genom att generera en Voronoi -karta.

Layout stabilitet

Det rumsliga arrangemanget som beräknas av layouter som definieras av trädkartor beror strikt på hierarkin. Om mjukvarukartor måste genereras ofta för ett system som utvecklas eller förändras, påverkas användbarheten av mjukvarukartor av instabila layouter, det vill säga mindre ändringar i hierarkin kan orsaka betydande förändringar i layouten.

Till skillnad från vanliga Voronoi-trädkartor, som inte tillhandahåller deterministiska layouter, kan layoutalgoritmen för Voronoi-trädkartor utökas till att ge en hög grad av layoutlikhet för olika hierarkier. Liknande tillvägagångssätt finns för det trädkartabaserade fallet.

Historia

Mjukvarukartor metoder och tekniker tillhör den vetenskapliga disciplinen mjukvaruvisualisering och informationsvisualisering . De utgör ett nyckelbegrepp och en nyckelteknik inom området mjukvarudiagnos . De har också applikationer inom mjukvaruutvinning och mjukvaruanalys . Mjukvarukartor har utvecklats och undersökts i stor omfattning av t.ex. Hasso Plattner Institutet för IT-systemteknik, särskilt för storskaliga, komplexa IT-system och applikationer.

externa länkar