- 소프트웨어 개발의 단계 -

설계의 과정은 분석, 디자인, 구현, 테스트가 순환적으로 이루어지는 것이 보통입니다.

분석 -> 디자인 -> 코딩 -> 테스트 -> 재분석 -> 재디자인 -> 재코딩 -> 재테스트 -> 재재분석 -> ...

분석이 첫번째 시작단계입니다. 내가 다루고자 하는 대상이 무엇인가를 정확하게 인식하는 것이 작업의 첫 걸음입니다. 예를 들어서 전략시뮬레이션 게임을 만든다고 하면 이런 이런 유니트들이 등장할 것이고, 어떤 식으로 전투를 벌일 것이고, 이런 부분은 표현을 하지 않고 생략을 하기로 하고등등의 여러가지 사항을 결정해야 합니다. 어디까지가 다룰 대상인가, 어디까지가 다루지 않을 대상인가를 결정하는 것이 가장 중요합니다.

디자인은 분석단계에서 나타난 요소들을 구체적으로 정리하고 어떤 모델을 구성하는 것입니다. 맨 위에 나타난 3 가지 모델을 세워보는 것도 디자인하는 방법중의 하나입니다.

디자인이 되었다면 실제로 C++ 같은 언어를 이용해서 클래스와 함수들을 만들어나갈 수 있습니다.

그 후에는 테스팅을 해서 제대로 구현이 되었나 살펴보아야 합니다. 테스트는 2 가지로 나뉘어지는데, 유닛테스팅과, 합체테스팅으로 나누어 생각할 수 있습니다. 보통 프로그램을 만들 때에는 여러개의 덩어리로 나누어서 만들게 되는데, 각각의 덩어리가 제대로 동작하는가를 살펴보는 것이 있을 것이고, 그 덩어리가 과연 잘 합쳐졌는가도 별개로 테스트하여야 할 것입니다.

예를 들어서 여러분이 라디오를 조립한다고 하면, 각각의 트랜지스터나 부품들이 잘 동작하는가  검사기로 테스트를 해보는 단계와, 실제 부품들을 회로도에 맞춰서 조립한 후에 과연 소리가 잘 들리는가를 검사하는 것의 차이라고 생각하시면 됩니다.

이중에 유닛테스트는 코딩을 하는 중간중간에 반드시 끼워서 해 보아야 합니다. 이것을 무시하고 일단 다 만든 다음에 한번에 짠! 하고 돌아가기를 바라가는 것은 고생을 자초하는 일이라고 할 수 있으며 매우 나쁜 습관입니다.

imcgames 의 김학규입니다