견고성 vs 정확성 경쟁


17

요구 사항 품질 문단 에서 "Code Complete 2"를 읽으면 다음을 발견했습니다.

예를 들어 견고성과 정확성 사이의 경쟁 속성간에 허용 가능한 절충점이 지정되어 있습니까?

(위의 요구 사항의 품질을 확인하기 위해 큰 확인란 목록의 포인트입니다)

그래서 나는 웹, 학술 도서 등에서 견고성과 정확성에 대한 많은 정의를 발견했습니다.

예 :

"Object Oriented Software Construction, 2nd Edition, Bertrand Meyer, Prentice-Hall, 1997"책에서 :

  • 정확성 : 시스템의 사양, 디자인 및 구현에서 시스템에 결함이없는 정도.
  • 견고성 : 유효하지 않은 입력 또는 스트레스가 많은 환경 조건에서 시스템이 계속 작동하는 정도.

그럼에도 불구하고,이 두 가지가 왜 어떤 상황에서 충돌하는지는 확실하지 않습니다.

내 질문은 : 왜이 두 가지 특성이 경쟁에서 있습니까?


11
다른 책들은이 용어들에 대해 다른 정의를줍니다. (일반적으로 일반 프로그래머를 위해 작성된 책은 학술 출판물과 동일한 정의를 사용하지 않습니다.) 아마도이 책이 그 책을 어떻게 정의하는지 살펴볼 수 있습니다. (이러한 용어는 정의가없는 책에서 사용되기도합니다.)
rwong

"기능적으로 필요한 입력 외에도"모든 종류의 예기치 않은 입력을 정상적으로 처리 "이외의"강력한 "정의에 대해서는 잘 모릅니다.
Kaz

나는 다시 열 수 있도록 가능한 한 명확하게하려고 내 질문을 편집했습니다.
극복 자

답변:


36

이 두 가지가 상충되는 상황이 많이 있습니다. 예를 들어 견고성은로드가 많은 경우 탄력성을 포함 할 수 있습니다. 요청에 대한 대략적인 (즉, 부정확 한) 응답이 정확한 (올바른) 응답보다 훨씬 빠르게 계산 될 수있는 경우 시스템이 대략적인 결과를 제공해야하는지 또는 전체적으로 전달하지 못하는지를 알아야합니다.


17

이 두 가지는 당신이 말한 예일뿐입니다. 실제로, 이러한 종류의 비 기능적 요구 사항은 잠재적으로 서로 충돌 할 수 있습니다. "진화 아키텍처 구축 (Building Evolutionary Architectures)"책에는 이러한 백서의 대략 100 개 (대표라고도 함)가 있습니다.

소프트웨어 아키텍트가이 두 가지 사이의 잠재적 충돌을 고려하는 것은 일종의 연습입니다. 기본적으로 프로젝트에서 중요한 요소를 결정한 다음 이러한 충돌을 추적 할 수 있습니다.

정확한 예제로 돌아가서 robustnessWikipedia 에서 용어의 정의를 살펴보십시오 .

컴퓨터 과학에서 견고성은 컴퓨터 시스템이 실행 중 오류에 대처하고 [1] [2] 잘못된 입력에 대처할 수있는 능력입니다.

정의에서 볼 수 있듯이 견고성은 오류와 관련이 있습니다 . 반면에 정확성을 원하면 기본적으로 오류가 없음을 의미합니다.

충돌을보다 분명하게하기 위해 간단한 입력 필드를 고려해 봅시다. 정확성 요구 사항에서 사용자가 잘못 입력 한 내용을 거부하는 것이 가장 쉽습니다. 그러나 견고성을 위해서는이 입력으로 작업 할 수 있어야하며 이는 완전히 정확하지 않을 수 있습니다.

모든 것을 당신의 책으로 가져 오려면 : 현재 수용 가능한 트레이드 오프 란 무엇입니까? 사용자가 크기를 포함하여 전압을 입력 할 수있는 과학적 응용 프로그램을 작성한다고 가정 해 봅시다. 따라서 올바른 입력은 "10 kV"또는 "200 mV"와 같습니다. 허용 가능한 절충에는 "10kV", "10kVolt"또는 심지어 "10"과 같은 입력 허용 및 정확성을 위해 유효한 전압 값으로 매핑하는 것이 포함됩니다. 이것은 여전히 ​​"최고의 세계"가 아니라 트레이드 오프입니다. 대문자 대 소문자를 고려하십시오. "10 kV"및 "10 KV"는 양호하지만 "10 mV"및 "10 MV"는 좋지 않을 수 있습니다. 밀리인지 메가인지 확실하지 않기 때문에 정확성에 의문이 생깁니다.


5

실제 예는 XHTMLHTML 입니다.

  • 엄격 모드의 브라우저는 구문 오류가있는 XHTML을 거부합니다. 이렇게하면 잘못된 결과가 사용자에게 표시되지 않고 오류를 찾는 데 도움이됩니다.
  • 브라우저는 매우 명백한 문제가 있더라도 HTML 코드를 계속 구문 분석하려고 시도합니다. 이렇게하면 내용이 약간 엉망이더라도 사용자가 페이지를 볼 수 있습니다.

따라서 XHTML은 정확성을 목표로하고 HTML은 견고성을 목표로합니다. 현재 HTML이 더 대중적인 것처럼 보이지만 양쪽 모두 좋은 주장이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.