Лекция: 45 сағат С¤Ж: 45 саѓат обс¤Ж: 45 саѓат Барлыќ саѓат саны: 135 саѓ Ќорытынды баќылау: емтихан 2 семестр


Лекция 10 Тақырыбы: Программаның дұрыстығы туралы ұғым



бет9/31
Дата24.04.2016
өлшемі1.97 Mb.
#79257
түріЛекция
1   ...   5   6   7   8   9   10   11   12   ...   31

Лекция 10

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



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

2. Спецификация

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

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


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

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

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

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


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

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

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

Лекция 11

Тақырыбы: Программаның спецификациясын құру



1. Спецификацияны құру үшін қажеттті айнымалылар мен ұғымдар

2. Анықтамалар
1. Программаның спецификациясын құру үшін түрлі айнымалы болуы қажет: енгізу, прогроаммалық, шығару айнымалылары.

Енгізу айнымалылары алғашқы деректерді, программалық айнымалылары арқылы нәтижелерді, ал шығару айнымалылары соңғы нәтижелерді, беруге арналған. Осы айнымалылар сәйкес векторларды топатаса алады:



  1. мәндері алғашқы кезеңде белгілі болатын және программаны орындау кезінде өзгермейтін енгізу айнымалыларынан тұратын енгізу векторы. Х=( х1, х2,..., хк );

  2. мәндері программаның орындалу барысында арлық жағдайда айқындалатын, программалық айнымалылардан тұратын орындалу векторы; y= (y, y2,…, y1 );

  3. мәндері программаның соңғы жағдайында айқындалатын, шығару айнымалыларынан тұратын шығару векторы, Z=(z1,z2,…, zm ).

Программа Р үшін енгізу векторлары мәндерінің жиыны inp(p), орындалу векторлар мәндерінің жиыны ran (p), шығару векторлары мәдерінің жиыны out(p) арқылы белгіленеді. Осы жиында бос емес, яғни,

Inp(p)

Сәйкесінше, әр программалық бірлік рt, tn, үшін бос емес жиын inp (p)6 out (p1), белгілеуге болады.Мұнда,

Ip (p1)=inp out(pn) = out (p)

Сонымен қатар, үшін

Inp(p1) ran (p), out(p1) ran(p)

Егер осы векторлардың мәнін анықтайтын функция val болса, онда:

Val (x) =,val (y) = , val (x)=,

Мұнда inp (p), out (p).

Енгізу векторының мәні туралы және Р програмасының бастапқы жағдайын анықтайтын ір(х) тұжырымды алғышарт деп атайды яғни, ір (х): inp (p) {0,1},

Мұнда 0- логикалық “жалған” мән, ал, 1- логикалық “ақиқат” мән.

Енгізу және шығару векторларының байланысы туралы және программаның аралық жағдайын анықтайтын rp(x,y), t=2,n- 1

Тұжырымды аралықшарттар деп атайды, яғни,

Rp1(x,y): inp (p) {0,1}


2. 1 Анықтама

Р программасы ір (х) – те аяқталады дейді, егер кез- келген Х үшін ір (х) ақиқат болса және Р программасын орындау оның соңғы жағдайына алып келетін болса, яғни, Р(Х) анықталған.



2 Анықтама.

Р программасы ір (х) анықталмаған дейді, егер Р программасында шексіз орындауды талап ететін қандай-да бір құрылым бар болса, яғни, Р(х) анықталмаған.



3 Анықтама.

Р программасы ір (х) мен ор (Х,Z) – ке қатысты дербес дұрыс дейді, егер кез- келген Х үшін ір (х) ақиқат болатындығынан және Р программасын орындау ір (Х) –те аяқталатындығынан ор (x,z) -ң ақиқаттығы шығатын болса.

Егер Р программасының ір (х) мен ор (Х,Z) – ке қатысты дербес дұрыстығын ір {P} op деп белгілесек, онда ол формалды түрде былай анықтайды.

ір {P} op [( ір (х) & p(x)=z) op (x,z)]

мұнда - анықтама бойынша деген таңба.

4 Анықтама.

Р программасы ір (х) мен ор (Х,Z) – ке қатысты толық дұрыс дейді, егер кез- келген Х үшін ір (х) ақиқат болатындығынан Р программасын орындау ір (х)- те аяқталатындығы және ор (Х,Z) –ң ақиқаттығы шықса.





Достарыңызбен бөлісу:
1   ...   5   6   7   8   9   10   11   12   ...   31




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет