소프트웨어를 개발하는데에는 여러가지 방법이 있다. (그리고 이건 예상 시험문제다.)

그래서, 소개해 보자.

우선, 폭포식 방법이 있다. 이건 밥을 짓는데
1. 몇인분을 지을 것이고, 쌀은 얼마나 넣어야 하고, 물은 얼마나 넣어야 할지 정한다. 쌀과 물의 양을 정확히 알기 위해서는 많은 경험이 필요하지만 실제로 그건 곤란하다.
2. 밥을 짓기 위한 요구사항을 정확히 분석한다. 밥에 어떤 성분들이 들어가야 하는지 고객의 요구에 맞춰서 분석해야 한다. 보리밥을 원하는지 현미밥을 원하는지 흰밥을 원하는지.
3. 밥을 어떻게 할 것인지를 생각한다. 우선, 전기밥솥으로 할건지 가스밥솥으로 할건지 가마솥으로 할건지 파악한다. 물은 생수를 쓸건지 수돗물을 쓸건지 정하자. 쌀을 얼마나 불릴 것인지도 정해야 하고, 밥솥에 사용할 메소드로 압력솥을 쓸건지 그냥 끓일건지 아니면 쪄낼건지 정해야 한다.
4. 밥을 한다.
5. 밥맛을 본다.
6. 준다.
이 방법은, 한번에 많이 할 때 써먹을만하다. 그리고 일단 해놓은걸 물리기 없이 그냥 내놓을 수 있을때 가능하다. 단점은, 밥맛에 대한 피드백이 불가능하기 때문에 맛 없어도 복불복.

이 방법을 조금 개선해서 V자형 방법이 있다. 이것은 폭포식 방법을 그대로 따라가는데, 여기에 추가적으로 밥맛을 보고 맛없으면 다시 하는 과정을 포함한다. 물의 양이 적절한지 계속해서 검증하고, 불린 시간이 적절한지 계속 검증하고, 밥짓는 방법이 적절했는지 계속 검증한다. 각 단계별로 검증해서 최종적으로는 맛있는 밥이 완성된다. 이것은 다른 조건보다 "맛있는 밥"이라는 절대적인 목표를 달성하기 위한 경우에 적절하다.

일정 중심의 모형도 있다. 이건 폭포식 방법을 따라서 밥을 짓는데 중간에 그냥 내놓는다. 밥을 하기 위해서 필요한 요소들 중에 우선순위가 높은 것들을 일단 만족하다가 밥때 되면 그냥 내놓는 것이다. 가령, 현미에 생수를 쓴 압력밥솥에 한 밥을 하고 싶다고 하자. 그리고 우선순위를 현미, 생수, 압력솥 순서대로 정해져 있다고 하자. 근데 현미랑 생수가 있는데 압력솥이 제작중이다. 당장 밥은 먹어야 하는데 압력솥이 올 때까지 기다리려면 그 전에 굶어죽을수도 있다. 따라서 일단 있는 걸 갖고 밥을 해서 내놓는다. 이것은 "밥때는 절대로 놓치면 안된다"는 목표를 달성할 때 적절하다. 우선순위가 높은것부터 해결하는 방법이다. 다만, 나중에 압력솥이 오더라도 이미 밥을 먹은 상태기 때문에 압력솥을 괜히 주문했다는 아쉬움은 남을 것이다.

프로토타이핑 모형을 쓸 수도 있다. 쌀을 적당히 불려서 하얗게 만들어 놓고 밥그릇에 담은 후 "이정도의 밥이면 됩니까?" 물어보는 것이다. 폭포수 방법과 다른 점은, 밥이 별로 맛이 없어 보이면 이것저것 바꿔볼 수 있다는 것이 장점이다. 다만, 밥먹을 사람이 "오오, 이정도면 이제 밥은 금방 나오는거지?"라고 착각하게 될 수 있다는 점이 문제다. 그리고 때깔만 좋은 밥을 보고 맛도 좋을 거라는 착각에 빠질 수 있다는 점이다. 밥이 맛있을지 없을지 불안할 때 사용한다.

점증적 모형은 밥을 조금씩 하는 방법이다. 일단 밥을 해서 내놓고, 점점 더 많은걸 추가한다. 쌀밥을 내놓고, 현미밥을 내놓고, 잡곡밥을 내놓는 방식이다. 일단은 밥을 먹일수 있다는 점에서 애자일하다고 할 수도 있다. 교재에서 나중에 나온다고 하는 익스트림 밥짓기 방법과 유사하다고 한다. 배고프다.

나선형 모형은 밥짓는 과정에 숨어있는 위험요소를 찾아내서 미연에 방지한다. 가령 압력솥이 밥짓다가 터질 수도 있는데, 그걸 방지하기 위해서 그냥 냄비에 밥을 할 수 있다. 이것은 밥짓기가 실패할 수 있는 위험을 사전에 막는 방법이다. 그리고 일단 밥을 해서 성공한 후, 압력솥을 써서 다시 성공시킨다.

진화적 밥짓기 모형은 일단 밥을 내놓은 후 밥먹는 사람의 반응에 따라 빠르게 밥을 새로 지어서 바꿔주는 것이다. 프로토타이핑이랑 비슷할 수 있는데, 프로토타이핑은 먹기 전에 일단 대충 겉보기에만 좋게 만들어 놓고 나중에 밥을 해주는 것이고, 진화적 밥짓기는 일단 먹여보고 반응을 살펴서 그 다음의 밥짓기에 반영한다는 점이 다르다.

자, 이제 당신도 맛있게 밥짓기를 할 수 있다.
by snowall 2010. 4. 24. 23:09