A kódfelülvizsgálat (amit néha szoktak egyenrangú felülvizsgálatnak is nevezni) olyan szoftverbiztonsági tevékenység, amiben egy vagy több ember ellenőriz egy programot, főként a néző és olvasó forráskódjának részeit az implementáció után, vagy pedig az implementáció félbeszakításaként. A személyek közül, akik a kódáttekintést végzik, legalább egyikőjüknek nem szabad a kód szerzőjének lennie. Azok a személyek, akik végrehajtják az ellenőrzést, kivéve a szerzőt, bírálóknak, felülvizsgálóknak nevezzük.

Bár a minőségi problémák felfedezése gyakran a fő cél, a kód áttekintést általában többféle cél elérése érdekében végzik:

Jobb kódminőség - a kód belső minőségének és karbantarthatóságának javítása (olvashatóság, egységesség, érthetőség stb.) Hiányok megtalálása - a minőség javítása külső szempontok tekintetében, különösen a helyesség tekintetében, de teljesítményproblémák, biztonsági sebezhetőségek, bejuttatott rosszindulatú programok is megtalálhatók. Tudás átvitele - segít a kódbázisra, a megoldási megközelítésekre, a minőséggel kapcsolatos elvárásokra stb. vonatkozó ismeretek átadásában; mind a bírálók, mind a szerző számára. A kölcsönös felelősségérzet növelése - a közös kódtulajdonlás és a szolidaritás érzésének erősítése. Jobb megoldást találni - új ötletek felszínre hozása új és jobb megoldások érdekében, amelyek felülmúlják a vizsgált kód megoldásait. A Q/A irányelveknek teljesítése, ISO/IEC standardok - A kódok felülvizsgálata bizonyos kontextusokban kötelező, pl. légiforgalmi szoftverek, biztonságkritikus szoftverek esetében.

A fent említett kódvizsgálat definíciója elhatárolja a szomszédos, de különálló szoftverminőségi biztosítási technikáktól: A statikus kódelemzésnél a fő ellenőrzést egy automatizált program végzi, az önellenőrzés esetében csak a szerző ellenőrzi a kódot, a tesztelés a kód végrehajtás szerves része, a páros programozás pedig a megvalósítás során folyamatosan, és nem külön lépésként történik

Felülvizsgálati típusok A kódáttekintő eljárásoknak sokféle variációja van, ami közül néhányat a későbbiekben részletezünk. A további áttekintő típusok az IEEE1028 részét képezik.

Az IEEE1028-2008 lista a következő típusokat foglalja magába:

Vezetőségi felülvizsgálatok Műszaki felülvizsgálatok Ellenőrzések Átjárók Ellenőrzések

Vizsgálat (formális) Történelmileg ez az első kód áttekintő eljárás, amit részletesen tanulmányoztak és leírtak, amit úgy hívtak „Vizsgálat” (Inspection), melynek feltalálója Michael Fagan. Ez a Fagan-féle vizsgálat egy formális folyamat, amely gondos és részletes, több résztvevővel és több fázisban történő végrehajtást foglal magában. A formális kódellenőrzés a felülvizsgálat hagyományos módszere, amelynek során a szoftverfejlesztők egy sor megbeszélésen vesznek részt, és soronként vizsgálják át a kódot, általában az anyag nyomtatott példányait használva. A formális felülvizsgálatok rendkívül alaposak, és bizonyítottan hatékonyak a hibák felderítésében a vizsgált kódban.

Rendszeres változásalapú kódellenőrzés (áttekintés) Az utóbbi években számos ipari csapat bevezette a kódellenőrzés egy könnyebb típusát. Fő jellemzője, hogy az egyes felülvizsgálatok terjedelme a kódbázisban egy jegyben, felhasználói történetben, commit-ban vagy más munkaegységben végrehajtott változásokon alapul. Továbbá vannak olyan szabályok vagy konvenciók, amelyek a felülvizsgálati feladatot a fejlesztési folyamatba ágyazzák (pl. "minden jegyet felül kell vizsgálni"), ahelyett, hogy minden egyes felülvizsgálatot kifejezetten megterveznének. Az ilyen felülvizsgálati folyamatot rendszeres, változás alapú kód felülvizsgálatnak nevezik. Ennek az alapfolyamatnak számos változata létezik. Egy 2017-es 240 fejlesztőcsapat körében végzett felmérés szerint a csapatok 90%-a használ változtatásokon alapuló felülvizsgálati folyamatot (ha egyáltalán használnak felülvizsgálatot), 60% pedig rendszeres, változásalapú kód ellenőrzést. Emellett a legtöbb nagy szoftvercég, például a Microsoft, a Google, és a Facebook is változásalapú kód felülvizsgálati folyamatot alkalmaz.

A felülvizsgálatok hatékonysága és eredményessége A Capers Jones több mint 12 000 szoftverfejlesztési projektjének folyamatos elemzése azt mutatta, hogy a formális ellenőrzés során a rejtett hibák felfedezési aránya 60-65% között van. Az informális ellenőrzés esetében ez az arány kevesebb, mint 50%. A tesztelés legtöbb formája esetében a látens hibák felfedezési aránya 30% körül van. A Best Kept Secrets of Peer Code Review című könyvben közzétett kódvizsgálati esettanulmány szerint a könnyített felülvizsgálatok ugyanannyi hibát fedeznek fel, mint a formális felülvizsgálatok, de gyorsabbak és költséghatékonyabbak, ami ellentmond a Capers Jones által végzett tanulmánynak.

A többi fajta hiányosságokat, amiket a kód áttekintésben felfedeztek még ma is tanítják.A kódáttekintések során feltárt hibák típusait is vizsgálták. Empirikus tanulmányok bizonyították, hogy a kódvizsgálati hibák akár 75%-a inkább a szoftver fejleszthetőségét/fenntarthatóságát, mint a funkcionalitást érinti, ami a kódvizsgálatokat kiváló eszközzé teszi a hosszú termék- vagy rendszer-életciklusú szoftvercégek számára. Ez azt is jelenti, hogy a kódvizsgálatok során megvitatott problémák kevesebb, mint 15%-a kapcsolódik hibákhoz.

Irányelvek Megállapították, hogy a kódellenőrzés hatékonysága a felülvizsgálat sebességétől függ. A kód felülvizsgálati sebességnek óránként 200 és 400 kódsor között kell lennie. Kritikus szoftverek (például biztonságkritikus beágyazott szoftverek) esetében az óránkénti néhány száz kódsornál több kódsor vizsgálata és felülvizsgálata túl gyors lehet a hibák megtalálásához.

Támogató eszközök A statikus kódelemző szoftverek a forráskód szisztematikus, ismert sebezhetőségek és hibatípusok szisztematikus ellenőrzésével csökkentik a nagy mennyiségű kód felülvizsgálatának a fejlesztőre háruló feladatát. A VDC Research 2012-es tanulmánya szerint a megkérdezett szoftvermérnökök 17,6 %-a használ jelenleg automatizált eszközöket a szakértői kódellenőrzés támogatására, és 23,7 %-uk számít arra, hogy 2 éven belül használni fogja őket.

Jegyzetek

Fordítás

Kapcsolódó szócikkek Szoftveráttekintés Szoftverfejlesztési filozófiák listája

További információk Öt Code Review Antipatterns (Java magazin, 2020 legjobbja)

Kategória:Szoftverfejlesztés