dbo:abstract
|
- Defenzivní programování je forma návrhu softwaru, která se snaží zaručit jeho nepřetržitou funkčnost i za podmínek použití, ke kterým nebyl původně navržen. Snaží se eliminovat tzv. Murphyho zákony. Ty říkají, že cokoliv se může potenciálně pokazit, se zaručeně pokazí. Defenzivní forma návrhu se aplikuje především, pokud by mohlo selhání softwaru vést ke katastrofickým či velmi nákladným scénářům. Při defenzivním programování autor předpokládá, že okolní svět se snaží za každou cenu zničit jeho dílo, a tudíž svůj program připravuje na všechny možné situace, které by ho mohly poškodit. Autor tedy očekává, že uživatelé budou posílat nesmyslné či záludné vstupy, nebudou dodržovat stanovený kontrakt atd. Jedním z cílů defenzivního programování je zabránit poškození vlastních dat či stavu programu, ale na druhou stranu a reagovat benevolentně. Je třeba mít na paměti, že největším nebezpečím pro program je autor sám a tudíž by měl hlídat hlavně sebe a důsledek své práce. Programátor myslí dopředu, musí ošetřit všechny možné stavy, výjimky a chybové situace v kódu. Defenzivní programování také brání proti SQL injection, DNS útokům, neoprávněnému přístupu a dalším útokům zevnějšku. Podporuje tzv. audity kódu, při kterých dochází ke kontrole čitelnosti a snadnému porozumění kódu. (cs)
- Unter defensivem Programmieren wird eine Programmierung von Computersystemen verstanden, die möglichst viele Voraussetzungen selbst überprüft, bevor der eigentliche Selbstzweck erfüllt wird. Ein Programmierer ist mit verschiedenen bekannten und unbekannten Aspekten bezüglich Benutzer-Eingabe, verschiedener Betriebssysteme und -Versionen konfrontiert. Die so defensiv programmierten Applikationen sind misstrauisch gegenüber allen Eingaben und Voraussetzungen und verhalten sich gegenüber Verstößen robust. Durch das Voraussehen möglichst vieler Umstände laufen sie weiter oder brechen in einem geordneten Prozess ab. Ein Alternativansatz zur defensiven Programmierung ist Design by contract. Dabei stellt diejenige Komponente, welche die Dienstleistung einer anderen Komponente in Anspruch nimmt, lediglich auf der Basis eines Vertrages eine Reihe von Vorbedingungen sicher und verlässt sich auf Nachbedingungen, die für die Dienstleistung im Vertrag definiert wurden. Bei defensiver Programmierung wären hingegen die Vorbedingungen unklar, während die Nachbedingungen von der in Anspruch nehmenden Komponente überprüft werden müssten. Ein System muss sich nicht einem einzigen Konzept verschreiben. Grundsätzlich lässt es sich so aufteilen, dass Einwirkungen von außen (Benutzereingaben, Datenimport, API) defensiv zu handhaben sind, während das bei inneren Abläufen nicht erforderlich ist. (de)
- Defensive programming is a form of defensive design intended to develop programs that are capable of detecting potential security abnormalities and make predetermined responses. It ensures the continuing function of a piece of software under unforeseen circumstances. Defensive programming practices are often used where high availability, safety, or security is needed. Defensive programming is an approach to improve software and source code, in terms of:
* General quality – reducing the number of software bugs and problems.
* Making the source code comprehensible – the source code should be readable and understandable so it is approved in a code audit.
* Making the software behave in a predictable manner despite unexpected inputs or user actions. Overly defensive programming, however, may safeguard against errors that will never be encountered, thus incurring run-time and maintenance costs. There is also a risk that code traps prevent too many exceptions, potentially resulting in unnoticed, incorrect results. (en)
- La programación defensiva (defensive programming en inglés) es una forma de diseño defensivo aplicada al diseño de software que busca garantizar el comportamiento de todo elemento de una aplicación ante cualquier situación de uso por incorrecta o imprevisible que ésta pueda parecer. En general, esto supone multiplicar las comprobaciones que se realizan en todos los módulos programados, con la consiguiente penalización en carga de procesador, tiempo y aumento en la complejidad del código. Las técnicas de programación defensiva se utilizan especialmente en componentes críticos cuyo mal funcionamiento, ya sea por descuido o por ataque malicioso, podría acarrear consecuencias graves o daños catastróficos. La programación defensiva es un enfoque que busca mejorar el software y el código fuente, en términos de:
* Calidad - reduciendo el número de fallos de software y, en consecuencia, problemas.
* Haciendo el código fuente comprensible - el código fuente debe ser legible y comprensible, a prueba de una auditoría de código.
* Hacer que el software se comporte de una manera predecible pese a entradas o acciones de usuario inesperadas. (es)
- 방어적 프로그래밍(Defensive programming)은 예상치 못한 입력에도 한 소프트웨어가 계속적 기능 수행을 보장할 수 있도록 고안된 의 한 형태이다. 이 생각은 머피의 법칙이 발현할 가능성을 줄이거나 제거하는 것으로 보일 수 있다. 방어적 프로그래밍은 기법들은 한 소프트웨어가 해롭거나 부주의하게 잘못 사용되어 재앙적 결과를 가져올수도 있을 때 사용된다. 방어적 프로그래밍은 소프트웨어와 소스코드를 아래의 관점에서 향상시키는 한 접근법이다:
* 일반적 품질 - 소프트웨어 버그와 문제의 수를 줄인다.
* 그 소스 코드를 이해하기 쉽게 만든다 - 그 소스 코드는 읽기 쉽고 이해하기 쉬워서 코드 리뷰(code audit)에서 승인된다.
* 그 소프트웨어가 예상치 못한 입력들이나 사용자의 동작들에도 예상 가능한 방식으로 동작하도록 한다. (ko)
- Programowanie defensywne - tworzenie oprogramowania z myślą o jego poprawnym działaniu nawet przy nieprzewidywalnych sposobach jego użycia. Techniki programowania defensywnego:
* Upraszczanie kodu źródłowego
* Zewnętrzne audyty kodu źródłowego
* Wyjątki i asercje
* Testowanie oprogramowania
* Bezpieczna obsługa
* Zapis danych w postaci kanonicznej
* Zasada najmniejszego uprzywilejowania (pl)
- Programação defensiva é um conjunto de técnicas de projeto (do inglês design) e programação objetivando a estabilidade e a segurança de um software independentemente de seu imprevisível. A ideia pode ser vista como forma de reduzir ou eliminar a hipótese de as Leis de Murphy terem efeito. Técnicas de programação defensiva começaram a ser desenvolvidas quando sistemas de software começaram a possibilitar efeitos catastróficos, seja deliberadamente ou inadvertidamente. (pt)
- Безпечне програмування — одна з форм , мета якої забезпечити тривале функціонування певної частини коду програми під впливом непередбачуваних обставин. Його ідея полягає у зменшенні або навіть ліквідації можливості появи прояву закону Мерфі. Техніка безпечного програмування використовується особливо часто коли потрібно звести до мінімуму використання коду не за призначенням. Мета безпечного програмування покращити програмний код в таких його аспектах:
* якість коду в цілому (зменшення кількості програмних багів та інших проблем)
* покращення зрозумілості програмного коду(код має бути читабельний і зрозумілий)
* програма повинна працювати належним чином навіть при некоректному введенні даних або інших невизначених діях користувача Однак надмірне застосування принципів безпечного програмування може призвести до надлишковості перевірок. Тобто код запобігатиме помилкам, які не можуть трапитись, але повинні опрацьовуватися програмістом. Таким чином збільшується час виконання програми або витрати на технічне обслуговування. В цьому випадку також збільшується кількість опрацьованих виняткових ситуацій. Таким чином помилка буде опрацьована і пройде непомітно, але результат все ще буде хибний. (uk)
- 防御性编程(Defensive programming)是防御式设计的一种具体体现,它是为了保证,对程序的不可预见的使用,不会造成程序功能上的损坏。它可以被看作是为了减少或消除墨菲定律效力的想法。防御式编程主要用于可能被滥用,恶作剧或无意地造成灾难性影响的程序上。 主要概念:若常式收到錯誤的資料,即便錯誤資料是由其他常式出錯所造成,此常式也不會受到傷害。 防御性编程通常通过以下途径,从而提高软件和源码的质量:
* 提高工程质量——减少bug和问题
* 提高源码可读性—— 源码应该变得可读且可理解,并且能经受代码审计。
* 让软件能通过预期的行为来处理不可预期的用户操作。 值得注意的是,过度的防御性编程可能会预防不可能会发生的错误,这样将导致运行时间与维护的损耗。当源码中拥有过多异常捕捉和异常处理,这有可能导致结果不正确或者被隐藏。 (zh)
|
rdfs:comment
|
- 방어적 프로그래밍(Defensive programming)은 예상치 못한 입력에도 한 소프트웨어가 계속적 기능 수행을 보장할 수 있도록 고안된 의 한 형태이다. 이 생각은 머피의 법칙이 발현할 가능성을 줄이거나 제거하는 것으로 보일 수 있다. 방어적 프로그래밍은 기법들은 한 소프트웨어가 해롭거나 부주의하게 잘못 사용되어 재앙적 결과를 가져올수도 있을 때 사용된다. 방어적 프로그래밍은 소프트웨어와 소스코드를 아래의 관점에서 향상시키는 한 접근법이다:
* 일반적 품질 - 소프트웨어 버그와 문제의 수를 줄인다.
* 그 소스 코드를 이해하기 쉽게 만든다 - 그 소스 코드는 읽기 쉽고 이해하기 쉬워서 코드 리뷰(code audit)에서 승인된다.
* 그 소프트웨어가 예상치 못한 입력들이나 사용자의 동작들에도 예상 가능한 방식으로 동작하도록 한다. (ko)
- Programowanie defensywne - tworzenie oprogramowania z myślą o jego poprawnym działaniu nawet przy nieprzewidywalnych sposobach jego użycia. Techniki programowania defensywnego:
* Upraszczanie kodu źródłowego
* Zewnętrzne audyty kodu źródłowego
* Wyjątki i asercje
* Testowanie oprogramowania
* Bezpieczna obsługa
* Zapis danych w postaci kanonicznej
* Zasada najmniejszego uprzywilejowania (pl)
- Programação defensiva é um conjunto de técnicas de projeto (do inglês design) e programação objetivando a estabilidade e a segurança de um software independentemente de seu imprevisível. A ideia pode ser vista como forma de reduzir ou eliminar a hipótese de as Leis de Murphy terem efeito. Técnicas de programação defensiva começaram a ser desenvolvidas quando sistemas de software começaram a possibilitar efeitos catastróficos, seja deliberadamente ou inadvertidamente. (pt)
- 防御性编程(Defensive programming)是防御式设计的一种具体体现,它是为了保证,对程序的不可预见的使用,不会造成程序功能上的损坏。它可以被看作是为了减少或消除墨菲定律效力的想法。防御式编程主要用于可能被滥用,恶作剧或无意地造成灾难性影响的程序上。 主要概念:若常式收到錯誤的資料,即便錯誤資料是由其他常式出錯所造成,此常式也不會受到傷害。 防御性编程通常通过以下途径,从而提高软件和源码的质量:
* 提高工程质量——减少bug和问题
* 提高源码可读性—— 源码应该变得可读且可理解,并且能经受代码审计。
* 让软件能通过预期的行为来处理不可预期的用户操作。 值得注意的是,过度的防御性编程可能会预防不可能会发生的错误,这样将导致运行时间与维护的损耗。当源码中拥有过多异常捕捉和异常处理,这有可能导致结果不正确或者被隐藏。 (zh)
- Defenzivní programování je forma návrhu softwaru, která se snaží zaručit jeho nepřetržitou funkčnost i za podmínek použití, ke kterým nebyl původně navržen. Snaží se eliminovat tzv. Murphyho zákony. Ty říkají, že cokoliv se může potenciálně pokazit, se zaručeně pokazí. Defenzivní forma návrhu se aplikuje především, pokud by mohlo selhání softwaru vést ke katastrofickým či velmi nákladným scénářům. (cs)
- Unter defensivem Programmieren wird eine Programmierung von Computersystemen verstanden, die möglichst viele Voraussetzungen selbst überprüft, bevor der eigentliche Selbstzweck erfüllt wird. Ein Programmierer ist mit verschiedenen bekannten und unbekannten Aspekten bezüglich Benutzer-Eingabe, verschiedener Betriebssysteme und -Versionen konfrontiert. Die so defensiv programmierten Applikationen sind misstrauisch gegenüber allen Eingaben und Voraussetzungen und verhalten sich gegenüber Verstößen robust. Durch das Voraussehen möglichst vieler Umstände laufen sie weiter oder brechen in einem geordneten Prozess ab. (de)
- Defensive programming is a form of defensive design intended to develop programs that are capable of detecting potential security abnormalities and make predetermined responses. It ensures the continuing function of a piece of software under unforeseen circumstances. Defensive programming practices are often used where high availability, safety, or security is needed. Defensive programming is an approach to improve software and source code, in terms of: (en)
- La programación defensiva (defensive programming en inglés) es una forma de diseño defensivo aplicada al diseño de software que busca garantizar el comportamiento de todo elemento de una aplicación ante cualquier situación de uso por incorrecta o imprevisible que ésta pueda parecer. En general, esto supone multiplicar las comprobaciones que se realizan en todos los módulos programados, con la consiguiente penalización en carga de procesador, tiempo y aumento en la complejidad del código. Las técnicas de programación defensiva se utilizan especialmente en componentes críticos cuyo mal funcionamiento, ya sea por descuido o por ataque malicioso, podría acarrear consecuencias graves o daños catastróficos. (es)
- Безпечне програмування — одна з форм , мета якої забезпечити тривале функціонування певної частини коду програми під впливом непередбачуваних обставин. Його ідея полягає у зменшенні або навіть ліквідації можливості появи прояву закону Мерфі. Техніка безпечного програмування використовується особливо часто коли потрібно звести до мінімуму використання коду не за призначенням. Мета безпечного програмування покращити програмний код в таких його аспектах: (uk)
|