Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмдеу жане багдарламалау негиздери 4 г.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

28 Дәріс тақырыбы: Есептеуді тиімдеу. Программаны жөндеу және тестілеу әдістемесі.

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

Алгоритмді іске асыру кезеңінде алгоритмді конструкциялау және іске асыру жүреді, мыналарды қоса алғанда:

• кодтау;

• интеграция;

• тестілеу (сертификаттау).

Нақты компьютер үшін жобаны программаның формасына ауыстыру, жүйені жинау және жүйенің ерекшеліктеріне сәйкес оның жұмысын растау үшін тестілік және қалыпты жағдайлар кезінде оны өткізу жүргізіледі. Бұл кезең прогарммалаудың қандай тілі таңдап алынғанына, алгорит қандай компьютерде іске асырылатынына байланысты. Деректер құрылымына енгізілетін деректер типін таңдау, қоршаған ортамен байланыс осыған байланысты Интерактивтілікті, транслятор түрін (компилятор немесе интерпретатор), кіші программа кітапханасын, модульдер мен объектілердің бар болуы маңызды.

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

Тестілеу –бұл қателіктерді анықтау (табу) мақсатында программаны орындау процесі. Тестілеу – деструктивтік процесс, сондықтан қате табылса тест сәтті болды деп есептеледі. Әлі анықталмаған қатені айқындау ықтималдығы бар тест жақсы деп есептеледі. Сәтті тест деп әлі анықталмаған қателіктерді табатын тест есептеледі.

Программаны тестілеудің түрлі тәсілдері бар.

«Қара жәшік» сияқты программаны тестілеу («қара жәшік» стратегиясы кіріс дерктерді және программаның жұмыс нәтижелерін талдай отырып тестілеуді анықтайды). Толық кірістік тестілеудің критерийі кіріс дерктердің барлық мүмкін жиындарын пайдалану болып табылады.

Программаны «ақ жәшік» ретінде тестілеу программаның логикасын басқару стратегиясынан тұрады, оның ішкі құрылымын пайдалануға мүмкіндік береді. Критерийі программаның барлық бағыттары мен басқраушылық құрылымдарын толық тестілеу болады.

Тестілеудің нақты және саналы стратегиясы - («қара жәшік» пен «ақ жәшіктің» модельдерін үйлестіру.

Тестілеу принциптері:

- шығыс деректердің болжалған мәндерін суреттеу немесе нәтижелер тест жинағының қажетті бөлігі болуы тиіс;

- дұрыс емес және қаралмаған кіріс деректер үшін тестілерді дұрыс және қарастырылғандар үшін сияқты мұқият әзірлеген жөн;

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

- қателік табылмайды деген болжаммен тестілеуді жоспарлауға болмайды;

- программаның бөлігінде анықталмаған қателіктердің бар болу ықтималдығы осы бөлікте анықталған қателіктердің санына тепе тең;

- тестілеу – шығармашылық процесс.

Программалар әзірлеу кезінде инспекция және бастан-аяқ қарау негізінде («құрғақ» тестілеу) компьютерсіз «қолмен тестілеу» әдісі өте пайдалы болады.

Инспекция және бастан-аяқ қарау – бұл тексті оқу кезінде қателерді табудың тәсілдері мен процедураларының жиынтығы.

Программалау кезінде кездесетін қателіктердің негізгі типтері:

• мән берілмеген немесе инициализацияланбаған айнымалыларға қатынау;

- индекстердің жиымнан тыс шығып кетуі;

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

- жадыны адрестеудің анық немесе анық емес проблемалары;

- басқаруды қате беру;

- логикалық қателер.

Тестілеу процедурасын жобалау кезінде көпшілік қателерді табудың ең жоғары ықтималдығы бар бірқатар тестілерді қарастырады. Толық тестілеу мақсаты үшін кіріс параметрлерді баламалы бөлу құрылады, сонымен бірге екі топ қаралады: дұрыс кіріс деректер және дұрыс еместер (қате кіріс мәні). Эквиваленттіліктің әрбір тобы үшін өз тестін құрады. Тестілердің эквиваленттілігінің тобы дептестілердің мынадай жиынын айтуға болады, олардың бірінде алгоритмді орындау басқалар үшін өткізудің ұқсас нәтижесін кепілдендіреді.

Шектік шарттардағы тестілерге ерекше назар аудару қажет. Шектік шарттар – бұл эквиваленттіліктің кіріс және шығыс топтарының тікелей жоғары немесе төмен шекараларында пайда болатын жағдайлар (яғни эквивалентті бөлудің шекарасына жақын). Жекелеп алғанда эквивалентті тестілердің тобының мысалы квадраттық теңдеуді шешу алгоритмі үшін келесідей кластар болуы мүмкін: нөлден айырмашылығы бар, нақты а, b, с, сандар жиыны, мынадай bb - 4ас < 0; а =0, b және с нөлге тең емес сандар жиыны; b = 0, а және с нөлге тең емес және т.б.

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

Программаны жөндеу процесінде өрескел күш әдісі қолданылады, яғни барлық программа бойынша аралық деректер тұжырымын пайдалану (трассировка) немесе автоматты құралдарды пайдалану. Мысалы, Турбо-Паскальда программаны автоматты жөндеудің қуатты аппараты бар (DEBUG режимі).

Программистрдің мынадай айқын ережесі бар - өз программаңды, басқалар қалай жазғанын көргің келетіндей түрде құр. Әрбір соңғы программалық өнімге көмек (help) түрінде, (readme.txt) файлдік текст түрінде құжаттамалық сүйемелдеу қажет.