평소에 관심이 많은 분야거든요 ~(-_-)~
1.
만들고 싶은 프로그램에 대해 제안서를 작성한다.
- 현재 시장 현황이 어떤데 앞으로 이런 프로그램을 만들면 잘 될것 같은데,
비용과 시간은 어느정도 들것이다.
2.
개발을 하려면 돈이 필요하니
물주로부터 제안서에 대한 승인을 받는다.
3.
명세서를 작성한다. 무엇을 만드는가에 대한 구체적인 목록이다.
고객이 있다면 요구사항 명세서를 작성한다.
명세서를 작성하기 위해서는
프로그래밍에 대한 지식 뿐 아니라
응용 분야에 대한 지식도 탁월해야한다네요
커뮤니케이션 능력도 좋고 말이죠;
명세서 담당자를 시스템 분석가(System Analyzer)라고 부른다는데
소위 엄마 친구 아들 정도(-_-)? 되는 것 같습니다.
문제는 우리나라 엄마 친구 아들 정도도 있을만한 포지션은
소프트웨어 회사가 아니라 법학쪽이나 의학쪽에 있을 가능성이 높다라는 건데...
-_-); ...
어쨌든
명세서 작성하는데
전체의 절반에 해당하는 비용과 시간을 투자해야한다는게
소프트웨어 공학의 핵심인것 같습니다.
그래서 수업이 끝난 후에 교수님께 질문했습니다!
본인:
시스템 분석가가 명세서를 만들고 있을 동안
나머지 프로그래머들은 뭐하고 있어야 합니까?
교수님:
...
흠...
... (-_-) 회사에서 뭔가를 시키지 않을까?
엄청 당황하시더군요;
그래서 다음은 제가 추론한 내용입니다.
소프트웨어 공학에서 말하는 내용이 제대로 성립하기 위해서는
진행단계간 완벽한 독립이 필요합니다.
즉...
- 명세서 작성 팀,
- 요구 사항 분석 팀,
- 설계 팀,
- 코딩 팀,
- 테스트 팀,
- 유지보수팀 등으로
깔끔하게 나누어져 있어야 한다는 것이죠.
각 팀간에는 계약외에는 어떠한 연관 관계도 없으며
완벽한 문서로 의사소통이 진행되어야 합니다.
즉; 명세서 작성팀이 일하고 있을때
코딩 팀은 또 다른 팀(혹은 업체)가 준 일을 하고 있으면 된다라는 겁니다.
"미국에서는 명세서만 만들고 인도는 개발한다" 라는 식이죠.
자-_- 이 방법에 대해 현실적인 예를 들어봅시다.
게임 개발로 따지면
어떤 대기업에서 게임 산업에 투자한다고 합시다-_-
1단계:
대기업 소속 기획자들이
열심히 미래 트렌드 게임에 대해 분석해서 제안서를 만들어서
결재 받아 승인이 떨어지면-_-)!
2단계:
게임을 한 10개정도 완성시켜본 게임 개발자와
최신 트렌드 게임을 총망라한 기자님들과 마케터분들을 모아
요구 사항 명세서를 만듭니다.
3단계:
명세서를 받은 개발팀은 요구사항대로 게임 설계를 마무리하고
나머지 프로그래머들은 설계대로 코딩해서 완성시킨 다음-_-
4단계:
게임 전문 테스터들에게 완벽하게 테스트시키고
품질 담당관은 게임을 출시할지 말지 결정합니다.
5단계:
게임이 런칭되면 유지 보수 외주팀에게 유지보수를 맡깁니다.
상당히 그럴듯해보입니다만...
위의 개발 과정이 제대로 작동하려면...
최소한 본전치기나 약간의 손해만 봐야한다는 것입니다.
100억을 투자했을때
최소 50억이라도 건질 수 있다면 할만한 방식입니다.
건축이라면 지어놓은 건물과 땅은 남아있게 되고,
상품이라면 독이 들어있지 않은 이상 최소한의 판매는 가능합니다.
이렇게 되면 각 단계별 책임이 가볍습니다.
하지만 소프트웨어 산업은
실패하면 남는게 거의 없습니다.
특히 게임 산업은 더욱 그렇습니다.
외부에서 구입한 엔진정도만 남을 뿐입니다.
최악의 경우 투자금액이 0이 되는 상태가 되기 때문에
상위 단계로 갈수록 무한 책임을 져야하는 상황이 옵니다.
(더군다나 게임은 최악의 단계로 가는일이 많습니다. )
현실적으로 무한 책임을 질 수 없으므로
하위 단계에 책임 전가 조항을 살짝 넣어둘 수 밖에 없는 상황이 되고...
(완성되야 돈을 준다는 둥, 문제가 없어야 돈을 준다는 둥)
이렇게 되면 아무도 다음 단계를 안하려고 하겠죠;
결국
게임을 만들고 싶은게 있으면 자기 돈들여서 직접 만들어라
라는 결과로 귀결이 되어버리게 되는 것 같습니다.
ps.
우리나라의 SI 산업은 매우 암울하다는 이야기를 들었는데
수업을 들어보니 소프트웨어 공학이 악의 축인 것 같습니다.
대기업이 아니라면 멋진 제안서는 쓰기 힘들고
중소 기업은 먹고 살기 위해 대기업으로 부터 외주를 따내야하고
대기업은 PT 만 잘 만든 것일뿐 실제 개발을 모르므로 명세서는 엉망일것이고
실패 위험을 갖지 않기 위해 외주 계약은 책임 전가 투성이일테고...;
기획자는 PT 만 잘 만들면 되고
개발자는 명세서 기준만 맞추면 되니
노하우에 대한 축적은 이루어지지 않고-_-
소프트웨어 질은 나아지지 않고... 뭐 이러는 것이 아닐까라고 생각됩니다.


python 을 좋아하는 게임 프로그래머