소프트웨어를 설계하고 작성하는 수 많은 방법론이 존재한다. (아마 SW가 운영되는 환경, 조직, 분야의 수만큼이나 다양할 것이다.) 모든 방법론이 추구하고자 하는 목적은 '단단한 소프트웨어를 작성 하는것' 여기서 말하는 단단한 소프트웨어는 아마 견고하며 결함을 최소화하고 코드 스스로가 온전히 자명하도록 하는 소프트웨어 일 것이다. 이러한 목적을 달성하기 위해 패턴화되어 반복 사용되어온 여러 방법론들이 존재한다. DbC, Defensive Programming, SOLID 원칙 등이 패턴화된 방법론들이다. 이러한 방법론들은 최소한의 코드로 고성능의 SW를 작성하고, 체계적으로 DS를 설계하여 공간복잡도와 시간복잡도를 극한으로 줄여나가는 테크니컬 방법론과는 많이 차이가 나는 부분도 있다. (어쩌면 이러한 부..