사실 소프트웨어를 개발하는 데 있어서 각각의 모듈을 만드는 작업은 그리 어렵지가 않다.
단순하게 입출력에 맞추어 책보면서 그대로 코딩하면 될 때도 많다.
낮은 수준의 코더 몇 명만 있으면 할 수 있다.
대학 2~3학년 수준이면 가능하다.
하지만 각 모듈들을 어떻게 잘 나누고, 다시 잘 통합하고
모두가 합쳐져서 문제 없이 돌아가게 할 지는 매우 어렵다.
어느 부분에 얼마나 로드를 줄지, 어느 곳에 복잡도나 트래픽을 떠 넘길지를 결정해야 한다.
Architecture를 잘 설계할 designer, architect가 필요하다.
기존의 공학들은 이미 역사가 오래 되었기 때문에 많은 정형화된 design pattern과 architecture, framework이
있으니 그 중에 좋은 걸 골라서 쓰고 주로 각각의 단위 모듈을 만드는 데 집중한다.
분업화와 규격화도 잘 되어 있어서 부품 업체들을 모아서 조립만 하면 된다.
하지만 소프트웨어 공학은 그리 오래된 분야가 아니라서 정형화된 방법이 아직은 부족하다.
점점 생겨나고 있긴 하지만 아직은 멀었다.
그렇기 때문에 단위 모듈을 만드는 데, 너무 조급해서는 그것들을 효과적으로 통합할 수가 없다.
설계없이 마구 만들면 다른 부분과 어울리지 않게 되서 다시 개발해야 하는 일이 빈번하게 일어난다.
그래서 디자인도 없이
"이제 다 만들었으니, 합치기만 하면 돼."
"각자 맡은 곳은 다 끝났으니, 서로 조율만 하면 돼."
라는 건 다른 분야라면 일이 60~90%는 진행된거지만
소프트웨어 공학에서는 20~50%밖에 진행 안된 것이다.
댓글 없음:
댓글 쓰기