, " Förhållandet mellan evolutionär koppling och defekter i stor industriell programvara", Journal of Software: Evolution och Process, Vol. Detta är den publicerade versionen av https://doi.org/10.1002/smr.1842. © 2017 Författaren/författarna. Detta är en Open Access-artikel, som distribueras enligt villkoren i Creative Commons Attribution-licensen ( http://creativecommons.org/licenses/by/4.0/ ), som tillåter obegränsad återanvändning, distribution och reproduktion i alla medier, förutsatt att det ursprungliga verket citeras korrekt.  Förhållandet mellan evolutionär koppling och defekter i stor industriell programvara Evolutionär koppling (EC) definieras som det implicita förhållandet mellan 2 eller fler programvaruartefakter som ofta ändras tillsammans. Byta programvara är allmänt rapporterat att vara defekt-bene. I denna studie undersöker vi EG:s effekt på brister i stora industriella mjukvarusystem och förklarar varför effekterna varierar. Vi analyserade två stora industriella system: ett äldre finansiellt system och ett modernt telekommunikationssystem. Vi samlade historiska data i 7 år från 5 olika programvaruarkiv som innehöll 176 tusen filer. Vi tillämpade korrelations- och regressionsanalys för att undersöka sambandet mellan EC- och programvarudefekter, och vi analyserade defekttyper, storlek och processmått för att förklara olika effekter av EC på defekter genom korrelation. Våra resultat visar att det i allmänhet finns ett positivt samband mellan EG och defekter, men korrelationsstyrkan varierar. Evolutionär koppling är mindre sannolikt att ha en relation till programvarudefekter för delar av programvaran med färre filer och där färre utvecklare bidrog. Evolutionära kopplingsåtgärder visade högre korrelation med vissa typer av defekter (baserat på grundorsaker) såsom tillämpning av koder och acceptanskriterier. Även om EG-åtgärder kan vara användbara för att förklara fel, beror dessa åtgärders förklarande effekt på feltyper, storlek och processmått. Utvecklingskoppling, industriell programvara, äldre programvara, gruv programvara arkiv, mätning, programvarudefekter Programvara ändras ständigt av många skäl. [1] [2] [3] [4] Studier har visat att programvara som ändrar programvara kan vara en aktivitet med fel. [5] [6] [7] [8] Den kod som ändras oftast kommer sannolikt att vara mest felbenägen. 7, [9] [10] [11] Evolutionär koppling (EG) skulle kunna förklara en del av denna defekts benägenhet, eftersom när kod med hög EC ändras måste ett stort antal ändringar göras i relaterade delar av systemet. Platserna för dessa relaterade förändringar kan spridas inom applikationen eller till och med över applikationer i ett programvaruekosystem. Korrekt göra relaterade förändringar över dessa platser är sannolikt att vara utmanande. Utvecklare kan missa vissa platser, som borde ha varit cochanged, och detta kan orsaka oförutsedda krusning effekter och problem. Evolutionär kopplingsinformation är i allmänhet extraherad från commit historia versionskontrollsystem (VCS). Det bygger på antagandet att artefakter som begås tillsammans är logiskt kopplade. hävdade att övergripande farhågor var svårare att genomföra och ändra konsekvent eftersom flera (eventuellt orelaterade) platser i koden måste hittas och uppdateras samtidigt. Deras undersökning tydde på att ökade övergripande problem faktiskt kan orsaka eller bidra till brister. Vår egen tidigare studie av EG i ett banksystem 19 tydde på att EG har brister. Omvänt visade Graves et al 8 att EC-åtgärder på modulnivå var en dålig prediktor för felbenägenhet. Knab et al 20 fann också att EC inte förutsåg fel i Mozilla-projektet; inga studier finns för att förklara dessa motstridiga resultat. Dessutom har EG i stora kommersiella system sällan undersökts empiriskt. De flesta tidigare studier bygger på analys av system med öppen källkod. I denna studie analyserade vi sambandet mellan EG-åtgärder och antalet defekter och defekttäthet i två stora mjukvarusystem i industriella programvaruutvecklingsmiljöer. Korrelationsanalys utförs separat för varje modul.* Vi byggde också logistiska regressionsmodeller. I denna studie används multivariat regressionsanalys för att undersöka sambandet mellan EG (oberoende variabel) och defekter (beroende variabel) för att förstå hur användbara EC-åtgärder är i felanalys jämfört med andra processmått (vi bygger korrelationsmodeller snarare än prognosmodeller). Vi analyserade också förhållandet mellan EG och defekter. Våra forskningsfrågor är följande: Resultaten av vår studie visade att det i allmänhet fanns ett samband mellan EC och programvarudefekter i programvaruunderhåll/evolutionsfasen i de industriella programvarusystem som studeras. Vi upptäckte ett positivt samband mellan EG-åtgärder och defekter. Jämfört med andra processåtgärder, t.ex. antalet åtaganden och antalet utvecklare, verkar EG-åtgärderna innehålla ytterligare, ibland viktig, information om brister: för varje ytterligare EG är modulen 8 % mer sannolik att vara defekt. Korrelationsstyrkan varierade dock mellan moduler och i vissa moduler EC och defekter korrelerade inte. På grundval av dessa resultat lade vi till följande forskningsfråga till vår studie: Moduler, som var små i Lines of Code (LOC) och utvecklarsiffror, tenderade att vara mindre korrelerade med EC. Färre fel på grund av EG verkar förekomma i små moduler. Evolutionär koppling verkade också vara mer korrelerad med vissa typer av defekter såsom kodimplementering, acceptanskriterier och analysproblem. Totalt *En modul är en del av ett programvarusystem. Ett programvarusystem består av en eller flera oberoende utvecklade moduler. Liknande funktionalitet finns i samma modul, och en modul består i allmänhet av många källfiler. En modul ägs i allmänhet av ett specifikt team och teammedlemmarna ansvarar för dess utveckling och underhåll. I de system som analyseras i denna studie ingår moduler också i delsystemen. Det finns ett one-to-many förhållande mellan delsystem och moduler. En modul kan endast ingå i ett delsystem och ett delsystem kan ha många moduler. Men delsystem omfattas inte av detta arbete. regressionsanalys visade att EG kan vara användbart för att förklara defekter i industriella system. Vi lämnar följande bidrag i detta dokument. För det första analyserar vi stora kommersiella system, som sällan har studerats empiriskt för att förstå förhållandet mellan EG och defekter. För det andra visar vi att EG:s effekt på defekter varierar beroende på modulen. För det tredje varierar EG-åtgärdernas förklarande kraft beroende på typ av defekter och modulfunktioner såsom storlek och utvecklingsverksamhet. Detta dokument är organiserat enligt följande: I nästa avsnitt sammanfattar vi relaterade arbeten. I avsnitt 3 presenterar vi vår metodik inklusive åtgärder, datautvinning och analysmetoder.
På senare tid har liknande arbete utförts och det visar sig att det finns ett positivt samband mellan förändringskoppling och felmått REF.
The relationship between evolutionary coupling and defects in large industrial software
{'venue': 'J. Softw. Evol. Process.', 'journal': 'J. Softw. Evol. Process.', 'mag_field_of_study': ['Engineering', 'Computer Science']}