현재 소프트웨어 개발 모델을 대표하는 모델을 선택한다면 Waterfall과 Agile을 들 수 있습니다. Agile은 일부에서는 점진적-반복적 개발모델이라고도 하죠. 저는 이 두 모델을 조금은 다른 시각에서 바라보도록 하겠습니다. Push 개발 방식과 Pull 개방 방식입니다. Push 개발 방식은 일방적인 전달을 특징으로 합니다. Waterfall 이 대표적인 Push 개발방식이라고 볼 수 있습니다. Push는 미국의 포드에서 시작된 경영방식입니다. 그래서 미국식이라고 불립니다. Push 방식에서 추구하는 것은 효율입니다. 각 부분의 효율을 얼마나 끌어올리는가에 초점을 맞춰서 최적화를 진행합니다. 이 방식은 각 부분 부분이 비슷한 능력치를 가질 때 최대한의 성과를 낼 수 있습니다. 만약 전체 중 특정 부분의 능력이 떨어진다면 그 부분에서 지연이 발생하고 이것은 많은 손실을 내게 됩니다. 아래 그림에서 보면 A의 경우에는 Push 방식으로 작업을 진행해도 아무런 문제가 되지 않습니다. 하지만 두번째 단계의 효율은 50%이기 때문에 두번째 단계의 효율을 100%로 끌어올리게 됩니다. 그렇게 되면 그림 B와 같이 마지막 공정에서 전 공정에서 밀려온 일을 모두 처리할 수 없기 때문에 재고가 쌓이게 되고 이것은 일정의 지연이나 금액의 손해 등을 불러 일으키게 됩니다. 각 부분의 효율은 100%가 되었지만 생산 효율의 불균형으로 인해 열심히 일은 하고 있지만 계속해서 손해가 발생하는 상황이 되었습니다. 전체를 바라보지 못한 부분 최적화의 폐혜입니다. 위의 경우를 소프트웨어 개발로 생각해 보면 마지막이 테스팅 팀이 될 것입니다. 일반적으로 테스팅 팀은 요구사항 단계에서 배제되는 경우가 많습니다. 이러다 보니 요구사항에 대응하기 위한 자원 등의 배정등에서 우선순위가 밀리게 됩니다. 때문에 나중에 문제가 발생하여도 대처하기가 힘듭니다. Pull 개발 방식은 후공정에서 필요한 만큼 전공정에서 요구하는 방식으로 낭비(재고)를 줄이는 것을 목적으로 합니다. 대표적인 곳이 도요타로...