잡다한 글

[TIP] 필요조건, 충분조건, 필요충분 조건

친환경사과 2024. 9. 1. 14:43

🍎 해당 글을 정리하게 된 이유?

- 개발 시, 모델 A가 모델 B에게 영향을 주는 것을 더 선명하게 알기 위해 정리합니다.

- 위 개념을 확실히 이해하면, 논리적 사고와 문제 해결에 필수적인 도구로 작용하며 깊은 사고를 할 수 있게 도와줍니다.


🍏 필요조건이란?

- 어떤 일이 일어나기 위해 반드시 있어야 하지만 그것만으로는 충분하지 않은 조건

  • e.g) 비가 오기 위해서는 구름이 있어야 한다.

- 비가 오려면 구름이 꼭 필요하지만 구름이 있다고 해서 반드시 비가 오는 것은 아닙니다. 따라서 구름은 비가 내리기 위한 필요조건입니다.

🍏 충분조건이란?

- 어떤 일이 일어나게 하는데 충분하지만 그것이 필요하지 않은 조건

  • e.g) 비가 온다면 땅이 젖는다.

- 비가 오면 땅은 반드시 젖습니다. 그러나, 땅이 젖을 수 있는 방법은 비가 오는 것 이외에도 다른 방법이 있기 때문에 비가 오는 것이 땅이 젖기 위한 필요조건은 아닙니다.

🍏 필요충분 조건이란?

- 어떤 일이 일어나기 위해 반드시 있어야 하고, 그것만으로도 충분한 조건

  • e.g) 정수 X가 2의 배수이자 3의 배수일 필요충분 조건은 X가 6의 배수일 때이다.

- X가 6의 배수이면 X는 반드시 2의 배수이자 3의 배수입니다.(충분조건) 반대로 X가 2의 배수이자 3의 배수이면 X는 반드시 6의 배수입니다.(필요조건)

 

✓ 정리한 필요조건, 충분조건, 필요충분조건을 도구로 사용하여 개발에 어떤 방식으로 사용될 수 있는지 알아보겠습니다.


🍎 예시를 통한 필요조건, 충분조건, 필요충분 조건을 사용한 논리적 사고

- DB 트랜젝션 기능을 만드는 요구사항을 할당받았다고 가정하겠습니다.
- DB 트랜젝션은 성공적으로 완료되려면 "모든 쿼리가 성공적으로 실행되어야 한다"는 필요조건이 있습니다.

  • 특정 쿼리에서 오류가 발생하면 트랜젝션은 실패합니다. 그러나 모든 쿼리가 성공적으로 실행된다고 해서 반드시 트랜젝션이 커밋되는 것은 아닙니다. (구름과 비의 관계와 동일)

- "모든 쿼리가 성공적으로 실행되고, 커밋이 완료되는 것"는 트랜젝션이 성공적으로 완료되기 위한 충분조건입니다.

  • "비가 오면 땅은 반드시 젖습니다"와 같이 특정 조건이 충족되면 결과(성공적인 트랜젝션)가 발생함을 나타냄

- “모든 쿼리가 성공적으로 실행되고, 커밋이 완료된다”는 트랜잭션 성공의 필요충분조건입니다. 이 조건들이 모두 만족되면 트랜잭션이 성공적으로 완료되고, 그렇지 않으면 실패합니다.


❓ 필요, 충분, 필요충분 조건을 사용해 요구사항을 바라보는 것이 왜 중요할까요?

- 필요, 충분, 필요충분 조건을 사용해 문제를 바라본다면 주어진 기능이 반드시 갖추어야 할 최소한의 조건들을 명확하게 정의할 수 있습니다.

- 또한 의도적으로 시선을 바꿔가며 요구사항을 살펴 시스템 설계 시 불필요한 요소를 제거할 수 있고 결과적으로 오버 엔지니어링과 언더 엔지니어링 사이 최적의 엔지니어링을 구현할 수 있습니다.