Программаның дұрыстығы туралы ұғым

  1. Қарастырылып отырған обьектілер есепті шешуге мүмкіндік  беретін, нақты, толық және бірмәнді жазылған  программа болып  табылады. Есепті шешу мағынасында оның алғашқы деректер  мәндерімен аралық  нәтижелер алу  барысында соңғы нәтижесін табу процесі  жатыр. Бұл  процесс  программаны  орындау арқылы  жүзеге асады. Егер программаны орындау күтілген нәтжеге дұрыс  алып келсе, онда ол  программа дұрыс деп саналады. Сондықтан, программаны орындау программаның дұрыстығының  критерийі қызметін  атқарады. Бірақ  программалау практикасы  көбінесе,  алғашқы деректердің кейбір  мәндерімен алынған дұрыс нәтижелі программалардың да қателері барлығын көрсетеді. Сондықтан  програманың дұрыстығын  дәлелдеу мақсатында (тестілеу) программаны  нақты  деректер мәндерімен (тестермен) орындау, практикада еш  көмегін тигізбейді. Толданатын  программаға арналған  толық  тестілер құрылғаны дәлелденбесе, тестілеу  әдісі программадағы  қатені тауып  бергенімен, оның  жоқтығын  ешқашан дәлелдей алмайды. Бұл  жағдай  прогграмманың дұрыстығын дәлелдейтін әр түрлі  математикалық әдістерді ойлап  табуға әкеледі.

Мұндай математикалық әдістерді  жасаудың екі  жолы  бар.  Бірінші жол дайын  рограмманың дұрыстығын дәлелдеуге  үмкіндік  береді, және  ол  программаны  верификациялау деп  аталады. Екінші жолы  программаны синтездеу деп  аталады және дұрыстығы авлдын  ала дәлелденген программаны  құруға мүмкіндік  береді. Программаны верификациялауды программаны  дәлелдеу деп, ал  програманы синтездеуді дәлелдеуді программалау деп те атауға  болады. Екі консепцияның ұқсастығы формалды жүйелерде (програмалық, логикалық  жүйелерде ) негізделуі және  олардың “ спецификация ”деген  ұғымды  қолдану.

  1. “Спецификация” (specification) сөзі сипаттама дегендің, ал Спецификациялау сипаттауды білдіреді.

Белгілі бі есепті шешуге арналған программаны  жазбастан бұрын  алдымен осы  есепті түсініп алу  қажет, содан кейін оның и  Спецификациясын құру керек.  Програманы Спецификациялау  деп программа арқылы  шешілітін есептің формалді сипаттамасын айтады, спецификация тілінде құрылады. Программамен спецификация айырмашылығы : программа – программалаушының компьютерге берген  бұйрығы, ал спецификация- програмалаушыға берілген бұйрық. Пракимка жүзінде программаны  спецификациялау, программалаумен  қатар  жүреді. Көп  жағдайда спецификация тілі  программалау  тіліне  байланысты. Егер  спецификация  тілі жасалынып және  оны  түсінетін программалар  жүйесі  құрылса, онда  бұл  тіл  программалау  тіліне айналады.

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

Бұл  түсінік  екіге  бөлінеді: “ дербес дұрыстық ” ( егер  нәтиже  шықса, онда  ол дұрыс)

  1. Программаның дұрыстығын дәлелдеу өте қиын, көп және қымбат жұмыс. Программаның дұрыстығын дәлелдеуді программаны верификациялау  деп атайды.  Жалпы  жағдайда, кезкелген программаны верификациялау  әдісі  жоқ, оның  болуы дап  мүмкін емес. Алайда  нақты  программалар класына ( табына) арналған программаны верификациялау әідістерін жасауға көзделген  бірнеше  жолы бар.  Программаны  синтездеу проблемасы кейбір спецификацияларды қанағаттандыратын программаның  автоматты  түрде құрылуына  әкеледі.

Кез-келген программаны  программалық  бірліктеғріне  композиция операциясын қолдану  қөмегімен  құру  мүмкін  екені  белгілі. Программалық  бірліктер  программа жазылған  тілдің  мооделіне  байланысты. әдетте  программалық  бірлік  ретінгде  программалау тілінің се мантикасымен  анықталатын  анық  мәнге  ие  тілдің  синтаксистік бірлігі  алынады. Мұндай  бірліктер мысалы, Pascal сияқты императивті  ( процерадуралық)  тілдерді – операторлар Lisp сияқты  функционалдық  тілдерде – функциялар Refal сияқты  алмастырымдылық тіілдерде – алмастырым  ережелері, ал, Prolog сияқты  логикалық тілдерде – логикалық  тұжырымдар  болып табылады.

Яғни, қарастырылып отырған  Р программасы р1,  р2,..., рп  программалық бірліктер композитциясынан тұрады. Бұл  жағдайда, Р программасының орындалуы Р1, Р2,..., Рп  программалық бірліктерінің  тізбектеліп  орындалуына әкеледі. Яғни, Р программасы  Р 1, орындалмастан  бұрын  шешілетін  есептің барлық  алғашқы деректерінің мәндері белгілі  болатын бастапқы  күйінде болады, ал Рп орындалғаннан кейін  осы есептің барлық нәтижесі анықталған  соңғы  күйінде  болуы  қажет.

«Baribar.kz-тің» Telegram-каналына жазыламыз!