Кеңейтілген статикалық тексеру - Extended static checking

Кеңейтілген статикалық тексеру (ШЫҒУ) деген информатикадағы жиынтық атау болып табылады статикалық тексеру әртүрлі бағдарламалық шектеулердің дұрыстығы.[1] ESC-ді кеңейтілген түрі ретінде қарастыруға болады типті тексеру. Түрді тексеру сияқты, ESC автоматты түрде орындалады жинақтау уақыты (яғни адамның араласуынсыз). Бұл оны жалпыға ортақ тәсілдерден ажыратады ресми тексеру әдетте адам жасаған дәлелдерге сүйенетін бағдарламалық жасақтама. Сонымен қатар, бұл олардың санын күрт азайтуға бағытталғандығымен негізділікке қарағанда практикалыққа ықпал етеді жалған позитивтер (нақты қателіктер емес, яғни қатаңдыққа қатысты ESC) жоғары бағаланған қателер) жалған негативтер (ESC-ті дұрыс бағаламау қатесі, бірақ бұл бағдарламашының назарын қажет етпейді немесе ESC-ге бағытталмайды).[2][3] ESC қазіргі уақытта тип тексергіштің шеңберінен тыс қателіктер диапазонын анықтай алады, оның ішінде нөлге бөлу, шекарадан тыс массив, толып жатқан бүтін сан және нөлдік рефераттар.

Кеңейтілген статикалық тексеруде қолданылатын әдістер әр түрлі өрістерден алынған Информатика, оның ішінде статикалық бағдарламалық талдау, символдық модельдеу, модельді тексеру, дерексіз түсіндіру, SAT шешімі және автоматтандырылған теорема және типті тексеру. Ұзартылған статикалық тексеру, әдетте, тек ауқымды бағдарламаларға масштабтау үшін тек ішкі процедуралық деңгейде (интерпроцедуралық емес) жүзеге асырылады.[2] Сонымен қатар, кеңейтілген статикалық тексеру пайдаланушы ұсынған сипаттамаларды пайдалану арқылы қателер туралы есеп беруге бағытталған алдын-ала және кейінгі жағдайлар, цикл инварианттары және сынып инварианттары.

Ұзартылған статикалық дойбылар көбінесе көбейту арқылы жұмыс істейді ең күшті посткондициондар (респ. ең әлсіз алғышарттар ) интрроцедуралық әдіс арқылы алғышарттан басталатын әдіс (респ. кейінгі шарт). Осы процестің әр нүктесінде сол бағдарлама нүктесінде белгілі нәрсені жазатын аралық шарт жасалады. Бұл а пунктін құру үшін бағдарлама операторының қажетті шарттарымен үйлеседі тексеру шарты. Бұған мысал ретінде бөлуге қатысты тұжырымды келтіруге болады, оның қажетті шарты - бөлгіш нөлге тең емес Осыдан туындайтын тексеру шарты: осы кездегі аралық шартты ескере отырып, бөлгіштің нөлге тең болмайтындығына сүйену керек. Барлық тексеру шарттары жалған болып көрсетілуі керек (демек, көмегімен дұрыс) үшінші алынып тасталды ) әдіс кеңейтілген статикалық тексеруден өтуі үшін (немесе «басқа қателерді таба алмау»). Әдетте, тексеру шарттарын жою үшін автоматтандырылған теоремалық провайдердің кейбір түрлері қолданылады.

Ұзартылған статикалық тексеру ESC / Modula-3-те жасалды[4] және кейінірек, ESC / Java. Оның түбірлері статикалық түзету сияқты қарапайым статикалық тексеру әдістерінен бастау алады[5] немесе Lint (бағдарламалық жасақтама) және FindBugs. Бірқатар басқа тілдерде ESC қабылданды, соның ішінде Spec # және SPARKada және VHDL VSPEC. Алайда, қазіргі кезде кеңейтілген статикалық тексеруді қамтамасыз ететін кеңінен қолданылатын бағдарламалық жасақтама тілі жоқ.

Сондай-ақ қараңыз

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

  1. ^ C. Фланаган, К.Р.М. Leino, M. Lillibridge, G. Nelson, Дж.Бакс және Р.Стата. «Java үшін кеңейтілген статикалық тексеру». Жылы Бағдарламалау тілдерін жобалау және енгізу бойынша конференция материалдары, 234-245 беттер, 2002. дои: http://doi.acm.org/10.1145/512529.512558
  2. ^ а б «Кеңейтілген статикалық тексеру». UWTV. Алынған 2012-02-01.[тұрақты өлі сілтеме ]
  3. ^ Calysto: масштабталатын және нақты кеңейтілген статикалық тексеру, Domagoj Babic және Alan J. Hu. Бағдарламалық жасақтама жасау бойынша халықаралық конференция материалында (ICSE), 2008 ж. дои:10.1145/1368088.1368118
  4. ^ Modula-3, K. Rustan M. Leino және Greg Nelson үшін кеңейтілген статикалық тексергіш. Компилятордың құрылысы туралы конференция материалдарында, 302-305 беттер, 1998 ж. дои:10.1007 / BFb0026418
  5. ^ Бағдарлама инварианттарының вебіндегі қателерді ұстау, C. Фланаган, М. Флетт, С. Кришнамурти. С.Вейрих және М.Феллейзен, 23-32 беттер, 1996 ж., дюйм: http://doi.acm.org/10.1145/249069.231387

Әрі қарай оқу