Head First Object-Oriented Analysis & Design 이라는 책을 읽다 보니 Programming By Contract와 Defensive Programming 방법을 비교한 부분이 있습니다. ((Head First 시리즈는 Head First Design Pattern 다음으로 두번째인데 너무 맘에 드는 시리즈입니다. Design Pattern이 뭔지 OOA&D가 뭔지 다 아시는 분들에게도 강추!!)) Programming By Contract는 Design By Contract(DBC) 라는 말로 더 잘 알려져 있죠. 간단히 비교하자면 DBC에서는 client가 service를 사용하기 전에 service를 제공하는 supplier와의 contract에 따라 precondition을 만족시키는 입력만을 제공해야 하고, Defensive Programming에서는 client가 어떤 입력을 주더라도 supplier는 안전하게 동작해야 한다 정도가 됩니다. 일반적으로는 입력이 올바르지 않을 경우 DBC나 Defensive Programming 모두 supplier가 이를 처리해야 하므로 DBC와 같이 확실히 contract을 가지는 것이 supplier 입장에서 구현이 쉬워집니다. 또한 DBC를 사용하는 쪽이 코드도 간결해지죠. 코드끼리 서로 믿지 않으면서 작업하려면 체크해야 할것들이 많아지니까요. 이 부분을 읽으면서 제가 지금 하고 있는 프로젝트에 대해 생각을 해봤습니다. 지금 작업하고 있는 소프트웨어는 덩치가 엄청 큽니다. 이 하나의 소프트웨어에 4~5개의 랩들이 포함되어 있으며 각 랩은 2~3개의 파트로 나누어져 있습니다. 각 파트의 개인들이 담당하고 있는 block도 모두 다르죠. 이런 상황에서 core dump 같은 문제가 발생하면 문제의 원인이 누구인지가 모두의 관심사가 됩니다. :-) 보통 pstack을 확인하면 나오는 부분은 supplier쪽 코드들이죠. 예를 들어 null pointer access로 에...