I. Цел на настоящия документ


Обработка на грешки и непредвидени събития по време на изпълнение



страница5/7
Дата08.06.2017
Размер385.9 Kb.
#23135
1   2   3   4   5   6   7

2.6.Обработка на грешки и непредвидени събития по време на изпълнение

2.6.1.Защитно програмиране. Управление на изключенията (Exceptions Handling)


        • Какво означава защитно програмиране? Кога и как трябва да се използва?

        • Какво е представляват предпазните проверки (assertions)? За какво служат? Кога трябва да се използват? Каква част от тях трябва да се отстрани от програмата при завършването на разработката й и каква част трябва да остане след евентуална преработка?

        • Какви са препоръките за управление на грешките в подпрограмите и в програмирането въобще? Защо когато една подпрограма се извика с некоректен вход, тя не трябва да връща некоректен изход, а трябва да докладва за грешка?

        • Какво представлява механизмът на изключенията (exceptions) в обектно-ориентираното програмиране? За какво служи този механизъм? Как се реализира в съвременните обектно-ориентирани езици (C++, Java, C#)? Какви са му предимствата пред стандартния подход за обработка на грешки и непредвидени обстоятелства? Какви са препоръките за правилното му използване? Какви са опастностите, които крие той и как могат да се избегнат?

        • Полезно ли е създаването на йерархии от изключения? С какво ни помагат те? Кога и как трябва да се използват?

        • Кога една подпрограма трябва да връща грешките като резултат от извикването си или в изходен параметър и кога трябва да генерира изключение? Кой от дават механизма за обработка на грешки трябва да се предпочита? Могат ли да се смесват двата механизма?

2.6.2. Сигурен програмен код


        • Какво е сигурен програмен код? Какви могат да бъдат последствията от несигурен програмен код? Как злонамерени лица могат да накарат нашите програми да извършат нещо, което не е предвидено да извършват? Как да защитим програмите? Какви са препоръките трябва да спазваме, за да бъде нашия програмен код сигурен?

        • Вярно ли е че програмите са толкова сигурни, колкото най-слабото място в тях? Верен ли е принципът за най-малкото привилегии? Вярно ли е че простите програми са по-сигурни? Какви други основни принципи за сугурността на софтуера има?

        • Какви опасности крие директното управление на паметта в езиците, които го позволяват? Какво е препълване на буфер (buffer overflow) и как може да се използва за вграждане и изпълнение на чужд код в нашата програма?

        • Как трябва да се управляват правата на файловете и другите ресурси, които програмата използва? Какви опасности крие използването на временни файлове?

        • Какви са рисковете при използване на несигурни алгоритми за генериране на случайни числа?

        • Как трябва да се работи с потребителски пароли и друга поверителна информация? Какво е крипрография и има ли тя свое място в сигурния програмен код?

        • Какви други опасности има за нашите програми? Как да ги защитим от тях?

        • Еднакви ли са опасностите при различните езици за програмиране и платформи? Какви са най-често срещаните опасности в съвременните езици за програмиране? Какви са опасностите в C и C++? Какви са опасностите при използване на SQL и динамично състявяне на заявките към базата? Какви са опасностите в Perl и PHP? Какви са опасностите в Java? Какви са опасностите в C#? Какви са опасностите при другите езици и платформи и как да се предпазим от тях?

        • Зависи ли сигурността на програмата от това дали кодът й е отворен? Какво е “reverse engineering”, кой го използва и защо? Вярно ли е че дори в затвореният код не може да има тайни? Какво означава “code obfuscation”?

2.7.Оформление и форматиране на програмния код

2.7.1.Оформление и форматиране на блоковете в програмата


        • Защо е важно как е форматиран програмният код? Каква е ползата от доброто форматиране?

        • Кои са основните принципи за доброто форматиране на кода? Какво гласи фундаменталната теорема на форматирането на кода?

        • Как се форматира празното пространство в програмата (интервали, табулации, нови редове)? Как празното пространство в програмата се отразява на четимостта на кода? Как се форматират скобите в изразите?

        • Какви стилове има за оформление на блоковете в програмата?

        • Какво представляват естествените блокове (pure blocks), изградени от синтактичните елементи на конструкциите за управление на езика, които са типични за някои езици за програмиране като Basic и Ada? Какви са предимствата на този подход за оформяне на структурата на програмата?

        • Какво е оформление на блоковете в стил “блокове вдясно от края на реда” (end-line layout)?

        • Какво е оформление на блоковете в стил “имитация на естествени блокове”, когато скобата за начало на блок е на същия ред, за скобата за край е под оператора за управление, за който се отнася блока?

        • Какво е оформление на блоковете в стил “отместен блок на следващия ред” (begin-end layout)?

        • Кой от изброените стилове е най-добрият? Защо? Кой стил трябва да се използва? Могат ли да се смесват стиловете?

        • Как се форматират конструкциите за управление в програмата, така че да отразяват ясно структурата й? Може ли да се счита за вредна двойната идентация, типична за езика Pascal? Трябва ли да се оставят празни редове в програмата? Защо операторът goto не може да се форматира по начин, който отразява структурата на програмата?

2.7.2.Оформление и форматиране на останалите елементи на програмата


        • Как се форматират индивидуалните изрази? Каква трябва да е максималната дължина на редовете? Трябва ли да се използват интервали? Трябва ли да се подравнява по знака “=” при присвоявания?

        • Как трябва да се форматират изразите, които са много дълги, за да се съберат на един ред?

        • Задължително ли е да се слага само по един израз на ред и защо?

        • Как трябва да се форматират декларациите на променливите?

        • Как трябва да се форматират коментарите в програмата?

        • Как трябва да се форматират подпрограмите?

        • Как трябва да се форматират класовете, модулите и файловете на програмата?


Сподели с приятели:
1   2   3   4   5   6   7




©obuch.info 2024
отнасят до администрацията

    Начална страница