이제 제 질문은, 컴퓨터 프로그램이 논리적 이유없이 갑자기 잘못 될까요?
동일한 컴퓨팅 환경을 가진 경우 프로그램에 입력 X를 제공하면 항상 동일한 결과 R이 생성됩니다. 실제로 단일 프로그램을 단독으로 실행하는 것은 거의 없습니다. 오늘날 가장 간단한 응용 프로그램은 운영 체제에서 실행되며 동시에 메모리에 '로드'될 수있는 다른 프로그램과 메모리를 공유합니다. 이러한 프로그램은 특정 프로그램이 오작동하는 방식으로 메모리를 변경할 수 있습니다. 이것은 예를 들어 '포인터'유형의 변수에 대한 유명한 문제입니다. 일반적으로 이러한 오류는 비정상적인 시스템 동작을 유발하며 잘못된 계산 결과는 아닙니다.
귀하의 경우, 문제는 위에서 설명한 것과 다를 수 있다고 가정합니다. 문제는 다음과 같습니다.
- 프로그램은 잘못된 데이터 유형을 사용하여 결과를 계산했으며, 특수 값을 사용할 때만 오류가 나타납니다.
- 프로그램에서 계산 오류 (논리적 조건으로 인해)가 발생했지만 오류를 처리하지 않았으며 여전히 결과를 생성했습니다. (예 : float와 integer 산술 혼합)
- 비즈니스 규칙 또는 논리 조건이 올바르게 코딩되지 않은 경우 입력 된 데이터가이 조건을 나타내지 만 잘못된 계산이 사용되었습니다. (예 : 계정에서 금액을 먼저 확인하기 전에 계정 금액에서 금액을 뺍니다).
- 특정 범위의 숫자에만 적용되지만 데이터에 다른 범위가 포함 된 수식 사용 (예 : 값의 범위에 따라 이자율 계산)
소프트웨어 사람들이 올바른 소프트웨어를 만들려고 많은 리소스를 소비하는 위와 다른 많은 이유들로 인해 소프트웨어 오류는 여전히 발생하지만 오류는 '논리적'이며 그 이유는 분명하지 않습니다. 좋은 연구 없이도 따라서 일반적으로 테스트 된 소프트웨어는 예측 가능하며 임의의 결과를 생성하지 않습니다. 일부 프로그램의 복잡성 및 기타 요인으로 인해 테스트 된 프로그램조차 잘못 될 수 있지만 이러한 상황이 발생하면 오류는 논리적 이유입니다.
서버 컴퓨터에서 슬램하면 컴퓨터가 계산하는 숫자 중 하나가 다른 숫자가되어 계산이 잘못됩니까?
대답은 일반적으로 아니요, 소프트웨어는 그런 의미에서 취약하지 않습니다.
수행 할 수있는 작업은 오류가 발생하는 경우를 격리하고, 오류를 발생시키는 이러한 데이터 세트 간의 유사성을 찾고, 이러한 세트와 올바른 결과를 생성하는 다른 세트 간의 차이를 찾는 것입니다. 문제를 일으키는 특정 값 집합을 식별 할 수 있습니다. 예를 들어 변수가 음수 값을 가질 때마다 결과가 잘못 될 수 있습니다.
메모리 손상 오류에 대한 업데이트 된 정보 : 메모리 손상 참조