Современные информационные технологии/2. Вычислительная техника и программирование

 

Балгабаева Р.Н.

Ш. Уалиханов атындағы Көкшетау Мемлекеттік Университеті, Қазақстан

Программамен жасақтаудағы қате түрлері және оны түзету әдістері

 

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

Программалаудағы компиляция және біріктіру бөлімінде бұғып жатқан кез келген қате соңында қайтседе үш тәсілдің біреуі түрінде: жүйенің қате туралы хабарламасы, компьютердің «тоқтап» қалуы және дұрыс емес нәтиже беруі арқылы көрінеді. Программа нәтижесін қатерлі жағдайға әкелмес бұрын қателер аралық дұрыс емес нәтиже, дұрыс емес басқарушы айнымалылар, типтердің сәйкес келмеуі, структуралық типтердің индекстерінің дұрыс болмауы т.б. түрінде кездеседі. Яғни, программа нәтижесіне ауыр жағдай туғызбай тұрып, қателердің қандай да бір бөлігін тауып, оны болдырмауға мүмкіндік бар.

Программалауда қатені ертерек табу және оны жою үшін арнайы әдістер қолданылады. Оны қолданғанда дұрыс емес нәтиже алу ықтималдығы азаяды. Қателерді жете талдау және олардың ерте көрінуі мүмкіндігі көрсетеді:

·        енгізу- шығару операцияларының орындалуының дұрыстығы;

·        аралық нәтижелердің өтімді болуы (басқарушы айнымалылардың  мәндері, индекстердің мәндері, деректер типтері, сандық аргументтердің мәндері және т.б.).

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

·        қате беру - аппарат құрылғысының, мысалы, дұрыс жұмыс істеуі салдарынан мәліметтерді өзгертеді;

·        түрлендіру қателері- программа бастапқы берілгендерді кіретін  формадан  ішкіге ауыстырғанда  дұрыс емес түрлендіреді;

·        көшіру қатесі-қолданушы мәліметтерді енгізу барысында басқа белгі енгізіп жіберуі;

·        мәліметтер қатесі-қолданушы дұрыс емес мәліметтер енгізеді.

Қате беру аппаратпен тексеріледі. Ал мәліметтерді түрлендіру барысында жіберілетін қатеден қорғану үшін енгізілгеннен кейін қолданушыға арнайы дыбыс («эхо») берілетін етіп ұйымдастырады. Онда біріншіден, ол ішкі формаға, ал сосын керісінше түрлендіріледі. Бірақ, барлық түрлендірудің қатесін бір этапта көру мүмкін емес, сондықтан сәйкес программа фрагменттерін эквивалентті бөлектеу әдісімен және шектік мәндерін тестілеу қажет.

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

Мәліметтер қатесін көбіне қолданушы көруі мүмкін.

Аралық нәтиже мәндерін тексеру мәліметтердің дұрыс емес екендігін соңынан көру ықтималдығын ғана емес, сонымен бірге кодтау мен жобалаудың да қатесінің азаюына әкеледі. Осындай тексеру мүмкін болу үшін программада кезкелген болуға шектеу қоятын айнымалы пайдаланылуы керек, мысалы, үлгіленетін үрдістердің болмысымен байланысқан.

Программада енгізілген қосымша операцияларға қосымша ресурстар (уақыт, жадыб т.с.с) керек және онда да қателіктер болуы мүмкін. Сондықтан да барлық аралық мәндерді тексеру тиімді емес, қатесін көруге мүмкіндік беретін, қиын емес мәндерді тексеруге болады, мысалы:

-         қандайда бір  түрде массив элементтері индекстері есептелетін болса, онда индекстің қолдану аумағынан асып кетпеуін қадағалау керек;

-         егер қайталану саны айнымалы мәнімен анықталған цикл тұрғызылған бола, онда ол айнымалы мәні теріс емес екендігіне көз жеткізу;

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

     Қателіктердің жинақталуын болдырмау. Есептеудің қателіктерін азайту үшін келесі қағидаларды сақтаған орынды:

-         жақын сандарды азайтудан сақтану керек( машиналық нөл)

-         үлкен шамаларды аз шамаларға және керісінше бөлуді болдырмау;

-         ұзын тізбекті қосуды абсоллютті шамасы кішісінен бастаған дұрыс;

-         операция сандарын азайтуға тырысу керек;

-         қателіктерің бағасы айқын әдістерді қолдану;

-         нақты сандарда теңдік шартын пайдаланбау керек;

-         екі дәлдікпен есептеп, нәтижені бір дәлдікпен шығару.

Мәліметттерді енгізу үрдісінде және есептеу барысында толық бақылау мүмкін болмағандықтан өңдеудің авариялық жағдайын болдырмауды да қарастыру керек.

Аппаратық және программалық нақты қателерді болдырмау мен өңдеудің кейбір программалу, мысалы, Delphi, Pascal, C++ және Java тілдерінде өңдеуді болдырмау құралы қарастырылған. Осы құралды пайдалану қолданушыға апаттық жағдайда программаны жабу туралы хабар беру мүмкіндігін азайтады, сонымен бірге қолданушы осы қатені болдырмау амалдарын қарап шығуына жағдай туады.