Milyen hibákat követnek el leggyakrabban a programozók?

2014-07-02

A Google egy nem régiben megjelentetett esettanulmányában foglalta össze annak okait, hogy miért és miben hibáznak leggyakrabban a programozók. Reményeik szerint a 9 hónapon át tartó kutatás elősegítheti a fejlesztők hatékonyságának javítá...

A Google egy nem régiben megjelentetett esettanulmányában foglalta össze annak okait, hogy miért és miben hibáznak leggyakrabban a programozók. Reményeik szerint a 9 hónapon át tartó kutatás elősegítheti a fejlesztők hatékonyságának javítását.

Data_collection
A szoftverfejlesztés folyamatának szerves része a building. Amikor azonban egy szoftverkiadás hibás, a programozóknak gyakran rengeteg időbe és erőfeszítésbe telik megtalálni és kijavítani a probléma okát, ami csökkenti munkájuk hatékonyságát. A Google előfeltevése az volt, hogy a leggyakrabban előforduló típushibák megismerése újszerú fejlesztőeszközök létrejöttéhez vezethet, melyek segíthetnének a hibák számának csökkentésében.

A tanulmányt a Hong Kongi Egyetem Természettudományi és Technológiai Kara, valamint a Nebraskai Egyetem kutatócsoportja jegyzi.


A csapat három kérdésre kereste a választ: Milyen gyakoriak a hibák? Miért keletkeznek? Mennyi ideig tart megtalálni őket?
Build_error_categorys

Hogy ezekre a kérdésekre választ kapjanak, több mint 26 millió buildet vizsgáltak meg 2012 novembere és 2013 júliusa között. Arra voltak kíváncsiak, hogy a több ezer C++ és Java fejlesztő milyen típusú hibaüzeneteket kapott a fejlesztőeszközeiktől. Végül több, mint 56 millió hibát összesítettek, a kapott hibaüzenetek alapján öt hibacsoportot állapítottak meg. (függőségek feloldásával kapcsolatos hibák, típusegyezési problémák, szintaktikai hibák, szemantikai hibák és egyéb jellegú hibák).


Feltételezték, hogy a tapasztalatlanabb fejlesztők gyakrabban hibáznak. Kiderült azonban, hogy nincs bizonyíték arra, hogy a fejlesztői tapasztalat befolyásolná a hibaszázalékot.


A programozók által leggyakrabban elkövetett hibák főleg a függőségek feloldásával voltak kapcsolatosak.

Az összes Java nyelven írt kódra kapott hibaüzenet csaknem 65%-a tartozott ebbe a típusba, míg C++ esetében közel 53%. Ezekben az esetekben a fejlesztők nem megfelelően deklarált azonosítókat és hiányzó osztályváltozókat használtak.


A második helyen a típusegyezési problémák szerepeltek

C++ esetén minden negyedik (~27%), Java esetében pedig minden ötödik (~19%) hiba tartozott ebbe a kategóriába, azaz, a fejlesztők ilyen arányban próbáltak meg a deklarálttól eltérő típusú ill. azzal inkompatibilis értéket hozzárendelni egy változóhoz vagy mezőhöz, illetve paraméterként átadni egy függvénynek.

Build_failures


Figyelmetlen fejlesztők?

Az első és második helyen végzett típushibák kimagasló aránya azért is meglepő, mert a magas függőségfeloldási és típusegyezőségi hibaszám leginkább a fejlesztők nemtörődömségével és felületességével indokolható. Ezt a feltételezést erősíti az is, hogy nagyjából minden második esetben (44%) a hibával zárult fordítási kísérletet újabb hibával záruló fordítási kísérlet követett. A fejlesztők gyakran halmozták a hibákat, illetve, hogy a típusegyezési hibák sokszor abból eredtek, hogy a programozók a függvényhívásokban túl kevés paramétert adtak meg, illetve rossz számban vagy helyen használtak zárójeleket.


A teljes esttanulmányt ide kattintva olvashatja angol nyelven. Magyar összefoglalót pedig a prog.hu oldalon talál.