Architecture 2

[SW Design] - Defensive Programming

Defensive Programming, 말 그대로 방어적으로 프로그래밍하는 설계 방식이다. 사실 해당 설계 방식은 다른 산업군에서 활용하고 있는 Defensive design을 소프트웨어 버전으로 차용해서 가져온 것이다. 여기서 말하는 defesnsive design을 통해 설계된 제품들은 기대하지 않은 이슈 또는 외부 환경으로 부터 장치나 사용자를 보호하기 위해 나름의 '안전장치'를 설계하여 탑재하고 있다. 그러면 해당 디자인을 차용한 Defensive Programming에서의 안전장치는 어떤 것이고 또 해당 안전장치의 설계를 위해 수행하는 방어적 프로그래밍은 어떤 것을 의미하는 것일까? 먼저 방어적 프로그래밍이 뭔지부터 알아보자 방어적 프로그래밍은 함수 또는 메서드의 모든 부분을 유효하지 않은 모..

Architecture 2023.02.10

[SW Design] - Design by Contract

CS 를 오래 접한 사람이라면 한 번쯤 들어봤을 법한 SW Design 패턴 중에 하나인 Design by Contract. 처음 이 이론이 나온 시점은 대략 1986년, EIffel 이라는 프로그래밍 언어가 개발될 때 컨셉이 제안 됐고, 이후 여러 번의 개선이 있고 나서 대략 2004년쯤 널리 널리 쓰이게 된 이론이다. 해당 이론의 요점은 생각보다 단순한다. 단어 그대로 SW 컴포넌트 단위의 호출을 일련의 '계약'으로 정의하여 관리하는 것. 우리는 일상생활에서 수많은 계약을 접하게 된다. 근로계약서, 부동산계약서, 납품계약서 기타 등등.. 이러한 계약서들을 우리는 왜 작성할까? 아마 계약 당사자간의 계약 내용에 대해서 강제하고 제한하고 명시하기 위해 사용할 것이다. 이 컨셉을 그대로 SW로 가져오면 된..

Architecture 2023.02.08