- 좋은 설계란? -

잘 설계된 프로그램이 갖추어야 할 미덕이라면 다음과 같은 사항을 들 수 있습니다.

첫째, 요구된 사항을 적절하고 충실하게 해결한다. (적절성)
예를 들면 속도가 충분히 빨라야 한다던가, 용도에 예정된 시스템에서 사용이 가능할 정도로 메모리가 충분해야 한다던가등의 애초 기대했던 목표를 충족해야 하며, 만들기로 했던 기능을 모두 포함하고 있어야 한다는 것입니다. 이것을 떠나서는 더 이상의 얘기는 의미가 없겠죠.

둘째, 앞으로의 바뀔 요구에 대비할 수 있는 구조여야 한다 (유연성)
처음에 요구했던 사항이외에도 얼마든지 더 많은 요구사항이 생기기 마련입니다. 업데이트를 해야 한다던가, 새로운 버전을 만들어야 한다던가 하는 요구는 늘 있습니다. 그렇기 위해서는 프로그램이 쉽게 고칠 수 있는 체제로 짜여져 있어야 합니다.
프로그램을 쉽게 고칠 수 있을려면 Simplicity, Generality, Clarity (단순성, 일반성, 명료성) 에 부합해야 합니다. 불필요한 군더더기가 없으면서, 일반적인 사항을 충분히 일반적인 개념으로 표현하고 다른 사람이 소스코드나 설계 문서를 읽었을때 쉽게 이해될 수 있는 프로그램이 좋은 프로그램입니다.
읽기 복잡한 프로그램은 절대 좋은 프로그램이 될 수 없습니다. 잘 짠 프로그램은 읽기 쉬운 프로그램입니다.
소프트웨어 공학의 기본 명제중 하나가, '코드는 한번 씌여지고 많이 읽힌다' 라는 점입니다.

잘 만들어진 프로그램은, 담당자가 바뀌어도 큰 문제를 일으키지 않고, 버그가 적으며, 업그레이드나 포팅이 용이하고, 고성능으로 확장이 용이합니다.

imcgames 의 김학규입니다