견고성(컴퓨터 과학)

Robustness (computer science)

컴퓨터 과학에서 견고성은 실행 중 오류[1][2] 잘못된 [2]입력에 대처하는 컴퓨터 시스템의 능력입니다.견고성은 견고한 프로그래밍, 견고한 머신 러닝, 견고한 보안 네트워크 등 컴퓨터 과학의 많은 분야를 망라합니다.이러한 유형의 테스트에는 무효 또는 예기치 않은 입력이 수반되기 때문에 퍼즈 테스트와 같은 공식 기법은 건전성을 나타내는 데 필수적이다.또는 고장 주입을 사용하여 건전성을 테스트할 수 있습니다.다양한 시판 제품이 소프트웨어 [3]분석의 견고성 테스트를 수행합니다.

서론

일반적으로 가능한 모든 고장 지점을 포함하는 견고한 시스템을 구축하는 것은 가능한 입력과 입력 [4]조합의 방대한 양 때문에 어렵습니다.모든 입력과 입력의 조합은 테스트에 너무 많은 시간이 필요하기 때문에 개발자는 모든 케이스를 완전히 실행할 수 없습니다.대신 개발자는 이러한 [5]사례를 일반화하려고 할 것이다.예를 들어, 일부 정수 을 입력한다고 가정합니다.선택한 일부 입력은 음수, 0 및 양수로 구성될 수 있습니다.이러한 숫자를 사용하여 소프트웨어를 테스트하는 경우 개발자는 모든 실수의 집합을 3개의 숫자로 일반화합니다.이 방법은 더 효율적이고 관리하기 쉽지만 실패하기 쉽습니다.테스트 케이스를 일반화하는 것은 장애, 특히 무효 사용자 입력으로 인한 장애에 대처하는 하나의 기술일 뿐입니다.통상, 네트워크로부터의 절단 등, 다른 이유로도 시스템에 장해가 발생하는 일이 있습니다.

단, 복잡한 시스템에서는 발생한 오류를 정상적으로 처리할 수 있습니다.그러한 성공적인 시스템의 예는 많이 있다.가장 강력한 시스템 중 일부는 진화가 가능하며 새로운 [4]상황에 쉽게 적응할 수 있습니다.

과제들

프로그램과 소프트웨어는 매우 구체적인 작업에 초점을 맞춘 도구이기 때문에 일반화되고 [4]유연하지 않습니다.그러나 인터넷이나 생물학적 시스템과 같은 시스템의 관찰은 환경에 대한 적응을 보여준다.생물학적 시스템이 환경에 적응하는 방법 중 하나는 [4]중복성을 사용하는 것이다.많은 장기가 인간의 장기에 중복되어 있다.신장이 그런 예 중 하나입니다.인간은 일반적으로 하나의 신장만 필요로 하지만, 두 번째 신장을 갖는 것은 실패의 여지가 있다.소프트웨어에도 같은 원칙을 적용할 수 있지만 몇 가지 문제가 있습니다.중복성 원리를 컴퓨터 공학에 적용할 때 무작정 코드를 추가하는 것은 권장되지 않습니다.무작정 코드를 추가하면 오류가 증가하고 시스템이 복잡해지고 [6]이해하기 어려워집니다.기존 코드를 강화하지 않는 코드는 원하지 않습니다.새로운 코드는 기능이 고장났을 경우 수동 또는 자동화된 소프트웨어 다양성을 사용하여 동일한 기능을 제공하는 다른 코드가 대신할 수 있도록 동등한 기능을 가져야 합니다.이를 위해서는 새로운 코드가 장애점에 [4]대응하는 방법과 시기를 알고 있어야 합니다.즉, 시스템에 논리를 추가해야 합니다.그러나 시스템이 더 많은 논리, 구성 요소 및 크기를 추가할수록 복잡해집니다.따라서 보다 장황한 시스템을 만들 때는 시스템도 더욱 복잡해지기 때문에 개발자는 장황성과 복잡성의 균형을 고려해야 합니다.

현재 컴퓨터 사이언스 실무는 견고한 [4]시스템 구축에 중점을 두고 있지 않습니다.오히려 확장성효율성에 중점을 두는 경향이 있습니다.오늘날 건전성에 중점을 두지 않는 주된 이유 중 하나는 일반적인 방법으로 [4]하기 어렵기 때문이다.

지역들

견고한 프로그래밍

강력한 프로그래밍은 예기치 않은 종료 및 예기치 않은 [7]액션을 처리하는 데 초점을 맞춘 프로그래밍 스타일입니다.정확하고 명확한 오류 메시지를 표시함으로써 이러한 종료 및 액션을 정상적으로 처리하려면 코드가 필요합니다.이러한 에러 메세지에 의해서, 유저는 프로그램을 보다 간단하게 디버깅 할 수 있습니다.

원칙

편집증
소프트웨어를 만들 때 프로그래머는 사용자가 코드를 [7]해독하기 위해 나갔다고 가정합니다.또, 프로그래머는, 작성한 코드에 장해가 발생하거나,[7] 올바르게 동작하지 않는 경우가 있다고 가정합니다.
어리석음
프로그래머는 사용자가 부정확하고 가짜이며 잘못된 형식의 [7]입력을 시도한다고 가정합니다.그 결과 프로그래머는 오류 코드를 찾을 필요가 없는 명확하고 직관적인 오류 메시지를 사용자에게 반환합니다.에러 메세지는, 유저에게 오해를 일으키지 않게 가능한 한 정확하게 해 주세요.그러면 문제를 쉽게 해결할 수 있습니다.
위험한 용품
사용자는 라이브러리, 데이터 구조 또는 데이터 [7]구조에 대한 포인터에 액세스해서는 안 됩니다.이 정보는 사용자가 실수로 수정하여 코드에 버그가 발생하지 않도록 사용자에게 숨겨야 합니다.이러한 인터페이스가 올바르게 구축되면 사용자는 인터페이스를 변경하기 위해 허점을 발견하지 않고 인터페이스를 사용할 수 있습니다.인터페이스가 이미 올바르게 실장되어 있기 때문에 사용자는 변경할 필요가 없습니다.따라서 사용자는 자신의 코드에만 집중합니다.
있을 수 없다
코드가 변경되는 경우가 많아 "불가능한" 케이스가 발생할 가능성이 있습니다.따라서 불가능한 경우는 그 [7]대신 가능성이 매우 낮은 것으로 가정한다.개발자는 가능성이 매우 낮은 경우의 처리 방법을 생각하고 그에 따라 처리를 실시합니다.

견고한 머신 러닝

강력한 기계 학습은 일반적으로 기계 학습 알고리즘의 견고성을 의미한다.기계학습 알고리즘이 견고하다고 간주되려면 테스트 오류가 훈련 오류와 일치하거나 데이터 [8]세트에 노이즈를 추가한 후 성능이 안정되어야 합니다.

견고한 네트워크 설계

견고한 네트워크 설계는 가변적이거나 불확실한 수요에 [9]직면한 네트워크 설계의 연구입니다.어떤 의미에서 네트워크 설계의 견고성은 변경 또는 입력의 가능성이 매우 크기 때문에 소프트웨어 설계의 견고성과 마찬가지로 광범위합니다.

견고한 알고리즘

입력[10] 또는 계산 [11]중 오류를 허용하는 알고리즘이 있습니다.이 경우 계산은 최종적으로 올바른 출력으로 수렴됩니다.이러한 현상을 "정확성 매력"[11]이라고 부릅니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "A Model-Based Approach for Robustness Testing" (PDF). Dl.ifip.org. Retrieved 2016-11-13.
  2. ^ a b 1990. IEEE 표준 소프트웨어 엔지니어링 용어집, IEEE 규격 610.12-1990은 건전성을 "무효 입력 또는 부하가 높은 환경 조건 하에서 시스템 또는 컴포넌트가 올바르게 기능할 수 있는 정도"로 정의한다.
  3. ^ Baker, Jack W.; Schubert, Matthias; Faber, Michael H. (2008). "On the assessment of robustness" (PDF). Structural Safety. 30 (3): 253–267. doi:10.1016/j.strusafe.2006.11.004. Retrieved 2016-11-13.
  4. ^ a b c d e f g Gerald Jay Sussman (January 13, 2007). "Building Robust Systems an essay" (PDF). Groups.csail.mit.edu. Retrieved 2016-11-13.
  5. ^ Joseph, Joby (2009-09-21). "Importance of Making Generalized Testcases - Software Testing Club - An Online Software Testing Community". Software Testing Club. Retrieved 2016-11-13.
  6. ^ Agents on the wEb : Robust Software. "Building Robust Systems an essay" (PDF). Cse.sc.edu. Retrieved 2016-11-13.
  7. ^ a b c d e f "Robust Programming". Nob.cs.ucdavis.edu. Retrieved 2016-11-13.
  8. ^ El Sayed Mahmoud. "What is the definition of the robustness of a machine learning algorithm?". Retrieved 2016-11-13.
  9. ^ "Robust Network Design" (PDF). Math.mit.edu. Retrieved 2016-11-13.
  10. ^ Carbin, Michael; Rinard, Martin C. (12 July 2010). "Automatically identifying critical input regions and code in applications" (PDF). Proceedings of the 19th international symposium on Software testing and analysis - ISSTA '10. ACM. pp. 37–48. doi:10.1145/1831708.1831713. ISBN 9781605588230. S2CID 1147058.
  11. ^ a b Danglot, Benjamin; Preux, Philippe; Baudry, Benoit; Monperrus, Martin (21 December 2017). "Correctness attraction: a study of stability of software behavior under runtime perturbation". Empirical Software Engineering. 23 (4): 2086–2119. arXiv:1611.09187. doi:10.1007/s10664-017-9571-8. S2CID 12549038.