Алгоритми. Структурно програмиране.


Категория на документа: Други


Tестването на програмата за коректност е една от най-важните и отговорни процедури. Една програма може да се счита, че работи правилно ако:
а) всички нейни клонове и участъци са проверени чрез съответните тестови примери;
б) работата на програмата е проверена за цялото множество от варианти на входните данни.
Изискването б) не е възможно да бъде проверено, тъй като комбинациите от стойности на входните данни са безкрайно много. На практика най-често се проверява цялостно изискването а), а изискването б) - частично за важни варианти на входните данни.
Тестването на програмата може да се извърши от хора които са запознати с програмата и проблема който тя решава.

Въпреки, че не могат да се дадат общовалидни правила за изпитване на програмни продукти все пак се препоръчват някои най- често срещани практически прийоми:
1. Използуване на тестови примери сметнати не ръка - сравнително най-прост и разпространен е случаят, когато програмата се съставя въз основа на методика за пресмятане, която е била използвана до този момент за изчисления на ръка. Тогава могат да се използват тестови примери сметнати на ръка по същата методика.
2. Проверка от физически съображения - при решаване на инжинерни и физически задачи с помоща на ЦЕИМ опитен изследовател може качествено да оцени получения резултат и да установи величината на грешката. По този начин се откриват по-груби грешки.
3. Използуване на тестови примери взети от литературата - тези примери служат за проверка на целия програмен продукт, а не за нейни части или подпрограми.
4. Проверка на програмния продукт за прости частни случаи - чрез отзи метод могат да се намерят много голям брой грешки, особено тези грешки, които са случайни.
5. Сравняване на резултатите получени от програмата с тези на аналогичен проверен програмен продукт - ако разработен програмен продукт А има област надефиниране Ωа, всяка точка от която съответствува на 1 вариант на съвкупността от N на брой входни данни. Аналогично мохе да се
определи областта не дефиниране Ωв на програмния продукт В, за който приемаме, че е готов, проверен и може да ни служи като "еталон" при проверката не продукт А. Проверката може да се извърши за всяка точка от областта Ωс представляваща сечение на областите Ωа и Ωв.

Това, което следва още веднъж да се подчертае е, че неоткриването на грешка чрез опсаните методи за проверка не е доказателство за несъществуването й. Но колкото по-щателна е проверката, толкова по-малка е вероятността някъде да е останала скрита грешка.
Проверка на програмните продукти се извършва не само в процеса на разработката им, но и по време на тяхната експлотация.
Нерядко се случва грешки да бъдат открити в програмата след дълго време на експлотация без да е имало такива. Причината за това е, че броя на възможните пътища на изпълнение на програмата зависи от броя на операторите IF, което води до невъзможност да се проверят всички разклонения в алгоритъма при по-сложните програми.

5. Структурно програмиране

Известно е, че сегашните програмни продукти нарастват значително по обем и могат да съдържат до милион оператори на алгоритмичен език. От тук възниква проблема една задача да бъде разпределена между екип от програмисти. Идеята е програмата да се чете и да се тества по-лесно. Решението на този проблем става чрез структурното програморане, идеята за което е на Дейк Стра (от Холандия). Структурното програмиране се базира на няколко принципа:
Модулност - модулната програма трябва да се състои от програмни единици (модули), които са с една точка за вход и една за изход. Самите модули също могат да се изграждат от други модули. Предполага се, че всеки модул е независим от останалите т.е. промените вътре в него не се отразяват на останалите модули и обратно. Независимостта на отделните модули трябва да се следи винаги. При модулната организация програмите се състоят от главна програма и модули на различни нива.

Метод за програмиране "отгоре-надолу" е тясно свързан с модулната организация. Това означава, че програмиста работи без да се интересува от подробностите в съседни и модули от други нива. За него са от значение само три неща:
а) връзка с модулите от по-горното ниво;
б) реализиране на алгоритмите, които се изискват от модула;
в) осъществяване на връзка с модулите от по-ниското ниво.
Структурно програмиране - предложено от професор Дейкстра, който се обявявя срещу оператора "GOTO". При този метод е валиден принципа "отгоре-надолу". В програмите може да има само три блока:
а) функционален - който има един вход и един изход;
б) цикличен - който има тяло на цикъла, което съдържа операторите изпълнявани многократно, както и проверка за крайност в някой случай, която може да е преди или след тялото на програмата;
в) конструкция за избор - IF - ако; ТHEN - тогава; ELSE - иначе.

Една програма споренд принципите на структурното програмиране може да има следните конструкции:
а) линейна структура;
б) изискване на функции, процедури, програми;
в) оператори със структури IF, THEN, ELSE;
г)конструкция за цикъл
д) структури съдържащи много разклонения от една точка оператора "CASE".
Приложенията в структурното програмиране имат следните приемущества:
а) програмите са по-ясни и читаеми;
б)програмите имат по-голяма производителност;
в) облекчава се тестването на програмите;
г) големите задачи се разпределят между колектив от програмисти.

6. Качество и надеждност на програмното осигуряване.
Съвременните програми съдържат хиляди или милиони оператори Windows има около 30 милиона оператора. Тестването е почти невъзможно поради тази причина този продукт не може да бъде "коректен". Това налага не абсолютна коректност на програмите, а за висока надежност, т.е. грешките да се появяват достатъчно рядко. Заради изскването за голяма отказоустойчивост се въвеждат следните дефиниции:

- спецификация на програмното осигуряване - представлява техническо задание, което задава всички изсквания по отношение на работата на програмното осигуряване в реално време.
- надежност на програмното осигуряване - тя се оценява чрез вероятността програмното осигуряване да работи без отказ в течение на зададен интервал от време.
- сигурност на програмното осигуряване - под сигурност се разбира, системата да може да работи нормално, дори в условия на външни злонамерени въздействия.
- качеството на програмното осгуряване - включва надежност, сигурност на средата в която ще работим и пълна програмна документация.



Сподели линка с приятел:





Яндекс.Метрика
Алгоритми. Структурно програмиране. 9 out of 10 based on 2 ratings. 2 user reviews.