Кіріспе

Компьютерлік есептеудегі құрылым

Шақыру графигі (кейде шуақыру мультиграфы деп те аталады) – компьютерлік бағдарламадағы процедуралар арасындағы шақыру қатынастарын көрсететін басқару ағыны графигі. Әрбір түйін процедураны білдіреді, ал әрбір жиек (f, g) f процедурасы g процедурасын шақыратынын көрсетеді. Сондықтан, графиктегі цикл рекурсивті процедура шақыруларын білдіреді.

Негізгі түсініктер

Шақыру графигі динамикалық немесе статикалық болуы мүмкін. Динамикалық шақыру графигі – бағдарламаның орындалуын тіркеу, мысалы, профильдеу құралының нәтижесі ретінде. Осылайша, динамикалық шақыру графигі дәл болуы мүмкін, бірақ ол бағдарламаның тек бір орындалуын ғана көрсетеді. Статикалық шақыру графигі – бағдарламаның барлық мүмкін орындалуларын бейнелеуге арналған. Дәл статикалық шақыру графигін табу шешілмейтін мәселе, сондықтан статикалық шақыру графигін құрастыру алгоритмдері көбінесе шамадан тыс жуықтау болып табылады. Яғни, барлық шақыру қатынастары графикте көрсетіледі, және бағдарламаның нақты орындалуында ешқашан пайда болмайтын шақыру қатынастары да болуы мүмкін. Шақыру графиктерін әртүрлі дәрежедегі дәлдікпен құруға болады. Құрылымы жақсырақ шақыру графигі нақты бағдарламаның әрекетін дәлдеу үшін көбірек есептеу ресурстарын және жадты қажет етеді. Ең дәл шақыру графигі – толық контекстке сезімтал, яғни әрбір процедура үшін, сол процедураның шақырылу стегінің әрбір мүмкін жағдайы үшін жеке түйін болады. Толық контекстке сезімтал шақыру графигі – шақыру контексті ағашы деп аталады. Оны динамикалық түрде оңай есептеуге болады, бірақ ол көп жадты пайдалануы мүмкін. Шақыру контексті ағаштары көбінесе статикалық түрде есептелмейді, себебі үлкен бағдарлама үшін бұл тым көп уақытты қажет етеді. Ең төмен дәлдігі бар шақыру графигі – контекстке сезімтал емес, яғни әрбір процедура үшін тек бір түйін болады. Динамикалық диспетчеризация (мысалы, Java немесе C++), бірінші сыныпты функциялар (мысалы, Python немесе Racket) немесе функция көрсеткіштері (мысалы, C) мүмкіндігі бар тілдерде, статикалық шақыру графигін дәл құру үшін псевдонимдерді талдау нәтижелері қажет. Керісінше, псевдонимдерді дәл анықтау үшін шақыру графигі қажет. Көптеген статикалық талдау жүйелері бұл көрінетін шексіз регрессті екеуін бірдей есептеу арқылы шешеді.

Пайдалануы

Шақыру графиктерін әр түрлі мақсатта қолдануға болады. Шақыру графигінің ең қарапайым қолданысы – ешқашан шақырылмаған процедураларды табу. Шақыру графиктері адамдарға бағдарламаны түсінуге көмектесетін құжаттама ретінде пайдалы. Сонымен қатар, шақыру графиктерін бағдарлама орындалуының қалыптан тыс жағдайларын немесе код енгізу шабуылдарын анықтау үшін де қолдануға болады.

Басқа, ұқсас құралдар

Graphviz Кез келген графиктердің мәтіндік түсіндірілімін (соның ішінде шақыру графигін) суретке айналдырады. tsort Топологиялық реттеуді жүзеге асыратын командалық қабылдағыш.