Кодты қарау - Code review

Бағдарламалық жасақтама жасау
Негізгі қызмет
Парадигмалар мен модельдер
Әдістемелер және шеңберлер
Қолдау пәндері
Тәжірибелер
Құралдар
Стандарттар және білім органдары
Глоссарийлер
Контурлар

Кодты қарау (кейде деп аталады өзара шолу ) Бұл бағдарламалық жасақтама сапасының кепілдігі бір немесе бірнеше адам тексеретін қызмет а бағдарлама негізінен оның бөліктерін көру және оқу арқылы бастапқы код, және олар мұны іске асырудан кейін немесе іске асыруды тоқтату ретінде жасайды. Адамдардың кем дегенде біреуі кодтың авторы болмауы керек. Авторды қоспағанда, тексеруді жүзеге асыратын адамдар «рецензенттер» деп аталады.[1][2]

Сапа проблемаларын тікелей табу көбінесе басты мақсат болғанымен,[3] кодтық шолулар, әдетте, мақсаттардың жиынтығына жету үшін жасалады:[4][5]

  • Кодтың сапасы жақсырақ - ішкі код сапасын жақсарту және қызмет ету мүмкіндігі (оқылымдылық, біркелкілік, түсініктілік, ...)
  • Іздеу ақаулар - сыртқы аспектілерге, әсіресе дұрыстылыққа қатысты сапаны жақсарту, сонымен қатар өнімділік проблемаларын, қауіпсіздіктің осал тұстарын, зиянды бағдарламаларды енгізу, ...
  • Оқыту / білім беру - код базасы туралы білімді беруге, шешім қабылдау тәсілдеріне, сапаға қатысты күтуге және т.б. көмек; рецензенттерге де, авторға да
  • Өзара жауапкершілік сезімін арттыру - сезімін арттыру ұжымдық код меншігі және ынтымақтастық
  • Жақсы шешімдер іздеу - нақты кодтан асып түсетін жаңа және жақсы шешімдер мен идеялар үшін идеялар жасау.
  • QA нұсқауларына сай болу - Кодекске шолу кейбір жағдайларда міндетті болып табылады, мысалы, әуе қозғалысына арналған бағдарламалық жасақтама

Кодты шолудың жоғарыда аталған анықтамасы оны көршілес, бірақ бөлек деп бөледі бағдарламалық жасақтама сапасының кепілдігі әдістері: жылы статикалық кодты талдау негізгі тексеруді автоматтандырылған бағдарлама жүзеге асырады өзін-өзі тексеру тек автор кодты тексереді, in тестілеу кодтың орындалуы ажырамас бөлігі болып табылады, және бағдарламалау жеке қадам ретінде емес, іске асыру кезінде үздіксіз орындалады.[1]

Қарау процестерінің түрлері

Кодты қарау процестерінің көптеген нұсқалары бар, олардың кейбіреулері төменде егжей-тегжейлі сипатталады.

Ресми тексеру

Тарихта зерттелген және егжей-тегжейлі сипатталған алғашқы кодтарды қарау процесін оның өнертапқышы «Инспекция» деп атады Майкл Фаган.[6]Бұл Фаганның инспекциясы бұл бірнеше қатысушылармен және бірнеше фазалармен мұқият және егжей-тегжейлі орындауды қамтитын ресми процесс. Ресми кодтық шолулар дәстүрлі шолу әдісі болып табылады, онда бағдарламалық жасақтама жасаушылар бірқатар кездесулерге қатысу және әдетте материалдың басылған көшірмелерін қолдану арқылы код бойынша жолдарды қарап шығу. Ресми тексерулер өте мұқият және қарастырылып отырған кодекстің ақауларын анықтауда тиімділігі дәлелденді.[6]

Өзгерістерге негізделген кодты үнемі қарау

Ақырғы жылдарда,[қашан? ] өнеркәсіптегі көптеген командалар кодты қараудың жеңіл түрін енгізді.[7][3] Оның негізгі сипаттамасы мынада, әр шолудың көлемі билетте, пайдаланушының тарихында, тапсырмасында немесе басқа жұмыс бірлігінде орындалатын код базасындағы өзгерістерге негізделген. Сонымен қатар, шолу тапсырмасын әзірлеу үдерісіне енгізетін ережелер немесе конвенциялар бар (мысалы, «әр билетті қарау керек»), әр шолуды нақты жоспарлаудың орнына. Мұндай шолу процесі «тұрақты, өзгеріске негізделген кодты шолу» деп аталады.[1] Бұл негізгі процестің көптеген нұсқалары бар. 2017 жылдан бастап 240 даму топтары арасында жүргізілген сауалнама нәтижелері бойынша командалардың 90% -ы өзгерістерге негізделген қарау процесін қолданады (егер олар шолу қолданса), ал 60% -ы тұрақты, өзгеріске негізделген кодты шолуды қолданады.[3] Сондай-ақ, Microsoft сияқты ірі бағдарламалық жасақтама корпорациялары,[8] Google,[9] және Facebook өзгертілген кодты қарау процесін қадағалайды.

Пікірлердің тиімділігі мен тиімділігі

Кэперс Джонстың 12000-нан астам бағдарламалық жасақтама әзірлеу жобаларына жүргізіп отырған талдауы көрсеткендей, ресми инспекцияның жасырын ақауларды табу жылдамдығы 60-65% аралығында. Бейресми тексеру үшін бұл көрсеткіш 50% -дан аз. Тестілеудің көптеген формалары үшін жасырын ақауларды табу деңгейі шамамен 30% құрайды.[10][11]Кітапта жарияланған кодты қараудың кейс-стадиі Peer Code шолудың үздік құпиялары жеңіл шолулар ресми шолулар сияқты көптеген қателіктерді анықтай алатындығын анықтады, бірақ тезірек және экономикалық жағынан тиімді болды[12] Кейпер Джонстың зерттеуіне қайшы келеді[10]

Код шолуларында анықталған ақаулардың түрлері де зерттелген. Эмпирикалық зерттеулер кодты қарау ақауларының 75% -на дейін функционалдылықтан гөрі бағдарламалық жасақтаманың өзгеруіне / сақталуына әсер ететіндігін көрсетті,[13][14][4][15] кодтық шолулар жасау өнімнің немесе жүйенің ұзақ өмірлік циклі бар бағдарламалық жасақтама компаниялары үшін тамаша құрал.[16]Бұл сонымен қатар код шолуларында талқыланатын мәселелердің 15% -дан азы қателіктерге қатысты екенін білдіреді.[17]

Нұсқаулық

Кодты қарау тиімділігі қарау жылдамдығына байланысты екені анықталды, кодты қарау жылдамдығы сағатына 200-ден 400 жолға дейін болуы керек.[18][19][20][21] Бағдарламалық жасақтама үшін сағатына бірнеше жүзден астам кодтық кодты тексеру және қарау (мысалы, қауіпсіздік өте маңызды) енгізілген бағдарламалық жасақтама ) қателерді табу өте жылдам болуы мүмкін.[18][22]

Қолдау құралдары

Статикалық кодты талдау бағдарламалық жасақтама кодтың үлкен бөліктерін қарауды азайтады әзірлеуші белгілі осалдықтар мен ақау түрлеріне арналған бастапқы кодты жүйелі түрде тексеру арқылы.[23] VDC Research компаниясының 2012 жылғы зерттеуі бойынша, зерттелген бағдарламалық жасақтама инженерлерінің 17,6% -ы қазіргі уақытта өзара бағалау кодын қолдау үшін автоматтандырылған құралдарды пайдаланады және 23,7% оларды 2 жыл ішінде қолданады деп хабарлайды.[24]

Әдебиеттер тізімі

  1. ^ а б c Баум, Тобиас; Лискин, Ольга; Никлас, Кай; Шнайдер, Курт (2016). «Өзгерістерге негізделген өнеркәсіптік кодтарды қарау үдерістеріне арналған жіктеу схемасы». Бағдарламалық жасақтама сапасы, сенімділік және қауіпсіздік бойынша IEEE 2016 халықаралық конференциясы (QRS). 74-85 бет. дои:10.1109 / QRS.2016.19. ISBN  978-1-5090-4127-5. S2CID  9569007.
  2. ^ Колава, Адам; Хуизинга, Дорота (2007). Автоматтық ақаулардың алдын-алу: бағдарламалық жасақтаманы басқарудың үздік тәжірибелері. Wiley-IEEE Computer Society баспасы. б. 260. ISBN  978-0-470-04212-0.
  3. ^ а б c Баум, Тобиас; Лессман, Хендрик; Шнайдер, Курт (2017). Кодты қарау процесін таңдау: тәжірибе жағдайына шолу. Бағдарламалық жасақтама процесін жақсарту: 18-ші Халықаралық конференция, PROFES 2017, материалдары. Информатика пәнінен дәрістер. 10611. 111–127 бб. дои:10.1007/978-3-319-69926-4_9. ISBN  978-3-319-69925-7.
  4. ^ а б Бакчелли, А; Bird, C (мамыр 2013). «Қазіргі кодексті қараудың күтілімдері, нәтижелері және қиындықтары» (PDF). Бағдарламалық жасақтама жасау бойынша 35-ші IEEE / ACM халықаралық конференциясының материалдары (ICSE 2013). Алынған 2015-09-02.
  5. ^ Баум, Тобиас; Лискин, Ольга; Никлас, Кай; Шнайдер, Курт (2016). «Өнеркәсіптегі кодтарды қарау процестеріне әсер ететін факторлар». Бағдарламалық жасақтама негіздері бойынша 2016 жылғы 24-ші ACM SIGSOFT Халықаралық симпозиумының материалдары - FSE 2016. 85-96 бет. дои:10.1145/2950290.2950323. ISBN  9781450342186. S2CID  15467294.
  6. ^ а б Фаган, Майкл (1976). «Бағдарламаны құрудағы қателіктерді азайту үшін дизайн және кодтық тексерулер». IBM Systems Journal. 15 (3): 182–211. дои:10.1147 / sj.153.0182.
  7. ^ Ригби, Питер; Bird, Christian (2013). Конвергентті заманауи бағдарламалық жасақтаманы өзара бағалау тәжірибесі. Бағдарламалық жасақтама негіздері бойынша 2013 жылғы 9-шы бірлескен мәжіліс материалдары. б. 202. CiteSeerX  10.1.1.641.1046. дои:10.1145/2491411.2491444. ISBN  9781450322379. S2CID  11163811.
  8. ^ Маклеод, Лаура; Грайлер, Михаэла; Стори, Маргарет-Анн; Құс, христиан; Червонка, Яцек (2017). Траншеялардағы кодтарды қарау: қиындықтар және үздік тәжірибелер (PDF). IEEE бағдарламалық жасақтамасы. 35. б. 34. дои:10.1109 / MS.2017.265100500. Алынған 2020-11-28.
  9. ^ Садовски, Кейтлин; Седерберг, Эмма; Шіркеу, Лұқа; Сипко, Михал; Баахелли, Альберто (2018). Қазіргі кодқа шолу: Google-дағы жағдайды зерттеу. Бағдарламалық жасақтама, тәжірибелік бағдарламалық жасақтама бойынша халықаралық конференция. б. 181. дои:10.1145/3183519.3183525.
  10. ^ а б Джонс, Кейперс (маусым 2008). «Ақау әлеуетін өлшеу және ақауларды жою тиімділігі» (PDF). Crosstalk, Journal of Defence Software Engineering. Архивтелген түпнұсқа (PDF) 2012-08-06. Алынған 2010-10-05.
  11. ^ Джонс, Кейперс; Эберт, Кристоф (сәуір, 2009). «Енгізілген бағдарламалық жасақтама: фактілер, сандар және болашақ». Компьютер. 42 (4): 42–52. дои:10.1109 / MC.2009.118. S2CID  14008049.
  12. ^ Джейсон Коэн (2006). Peer Code шолудың жақсы сақталған құпиялары (заманауи тәсіл. Практикалық кеңестер.). Smart Bear Inc. ISBN  978-1-59916-067-2.
  13. ^ Червонка, Яцек; Грайлер, Михаэла; Тилфорд, Джек (2015). «Код шолуларында қателер табылмайды. Қазіргі кодты қараудың ең жақсы тәжірибесі бізді қалай баяулатады» (PDF). ICSE '15: Бағдарламалық жасақтама бойынша 37-ші Халықаралық конференция материалдары. 2: 27–28. дои:10.1109 / ICSE.2015.131. Алынған 2020-11-28.
  14. ^ Мантыла, М.В .; Lassenius, C. (2009). «Кодтық шолуларда ақаулардың қандай түрлері шынымен табылған?» (PDF). Бағдарламалық жасақтама бойынша IEEE транзакциялары. 35 (3): 430–448. CiteSeerX  10.1.1.188.5757. дои:10.1109 / TSE.2008.71. S2CID  17570489. Алынған 2012-03-21.
  15. ^ Беллер, М; Бакчелли, А; Зайдман, А; Juergens, E (мамыр 2014). «Ашық кодты жобалардағы заманауи кодтық шолулар: олар қандай мәселелерді шешеді?» (PDF). Тау-кен бағдарламалық қамтамасыз ету репозитарийлері бойынша 11-ші жұмыс конференциясының материалдары (MSR 2014). Алынған 2015-09-02.
  16. ^ Си, Харви; Вотта, Лоуренс (2004-12-01). «Қазіргі кодексті тексерудің маңызы бар ма?» (PDF). unomaha.edu. Архивтелген түпнұсқа (PDF) 2015-04-28. Алынған 2015-02-17.
  17. ^ Босу, Амиангшу; Грайлер, Михаэла; Құс, Крис (мамыр 2015). «Пайдалы код шолуларының сипаттамалары: Microsoft-тағы эмпирикалық зерттеу» (PDF). 2015 IEEE / ACM тау-кен бағдарламалық қамтамасыз ету репозитарийлері бойынша 12-ші жұмыс конференциясы. Алынған 2020-11-28.
  18. ^ а б Кемерер, СФ .; Полк, М.С. (2009-04-17). «Бағдарламалық жасақтама сапасына дизайн мен кодтық шолулардың әсері: PSP деректері негізінде эмпирикалық зерттеу». Бағдарламалық жасақтама бойынша IEEE транзакциялары. 35 (4): 534–550. дои:10.1109 / TSE.2009.27. S2CID  14432409.
  19. ^ «Кодты қарау метрикасы». Веб қосымшасының қауіпсіздігі жобасын ашыңыз. Веб-қосымшаның қауіпсіздігі жобасын ашыңыз. Архивтелген түпнұсқа 2015-10-09. Алынған 9 қазан 2015.
  20. ^ «Пароль кодтарын қараудың үздік тәжірибелері». Ақылды аю. Smart Bear бағдарламалық жасақтамасы. Архивтелген түпнұсқа 2015-10-09. Алынған 9 қазан 2015.
  21. ^ Бисант, Дэвид Б. (қазан 1989). «Бағдарламалау өнімділігін жақсарту үшін екі адамдық тексеру әдісі». Бағдарламалық жасақтама бойынша IEEE транзакциялары. 15 (10): 1294–1304. дои:10.1109 / TSE.1989.559782. S2CID  14921429. Алынған 9 қазан 2015.
  22. ^ Ганссл, Джек (ақпан 2010). «Кодтарды тексеруге арналған нұсқаулық» (PDF). Ganssle тобы. Алынған 2010-10-05.
  23. ^ Балачандран, Випин (2013). «Автоматты статикалық талдау мен рецензенттің ұсынымын қолдана отырып, теңдесі жоқ кодтарды шолуда адамның күш-жігерін азайту және сапасын жақсарту». Бағдарламалық жасақтама бойынша 35-ші Халықаралық конференция (ICSE). 931–940 бб. дои:10.1109 / ICSE.2013.6606642. ISBN  978-1-4673-3076-3. S2CID  15823436.
  24. ^ VDC зерттеуі (2012-02-01). «Енгізілген бағдарламалық жасақтама сапасының автоматтандырылған ақауларының алдын алу». VDC зерттеуі. Алынған 2012-04-10.

Сыртқы сілтемелер