지금 만들고 있는 프로그램이 있는데, 윈도우용 프로그램으로 멀티 미디어 관련 프로그램이다. 개발 의뢰 받은 회사로부터 허락을 받지 못해 자세하게 어떤 프로그램인지 적지는 못하지만, 이번에 개발하면서 몇가지 느낀게 있어서 여기에 적어 볼까 한다
첫 번째로 배운 점은 시작할때 정말로 요구 사항을 잘 받아야 한다.
이번에 개발할때 제대로 요구 사항이 있는듯 해서 일을 시작했는데, 실제로는 거의 제대로된 요구 사항이 없었다. 중간에 전체적으로 디자인 한 부분이 정말 많이 바뀌어 버려서 힘들었다. 다음에 일을 하게 되면 가능한한 버튼들 까지 초기에 요구 사항을 받는게 정말 중요하다는 것을 알았다. 개발 프로그램의 기획의 중요성은 아무리 강조 해도 모자라지 않을것 같다.
두 번째로 다른 라이브러리나 소스 코드를 활용할때는 전체적으로 잘 판단해서 시작해야 한다는 점이다. 윈도우용 멀티미디어 개발에서 실제로 내가 맡은 일은 UI와 기존에 있는 라이브러리를 묶는 일인데, 문서화가 제대로 안되어 있고, 하나의 플랫폼만을 위한게 아니라서 코드 자체가 일단 보기가 그렇게 쉽게 되어 있지 않았다. 실제로 개발을 하다보니 여러 가지 문제가 생기기 시작했다. 멀티 미디어 관련 라이브러리가 실제로 플레이어의 코어인데, 이 코어와 같이 붙여서 개발할때는 무조건 Win32 즉 C만 사용해서 개발해야 한다는 단점이 있었다. 때문에 초기에 C++을 이용해서 초기 UI를 만들었는데, 그걸 순전히 C 구조로만 다시 만들어야 해서 개발을 새로 하는 것과 같은 상황이 벌어 진 것이다. 다른 라이브러리나 소스를 가져다 쓸때는 이런 점을 꼭 고려해야 한다는 교훈을 얻었다. 개발 환경부터 시작해서 그 라이브러리의 한계를 잘 결정해야 한다는 점이다.
세 번째로 여러 명이 같이 개발할때는 의사 소통을 할 수 있는 뭔가가 있어야 한다는 점이다. PDA쪽도 플레이어가 있고, 개발 의뢰한 회사에서 네트웍 부분에 꼭 사용하기를 원하는 라이브러리가 있었는데 이런 부분은 다른 개발자가 개발하고, 난 그 개발된 것 위에 연결해서 PC용 플레이어의 UI를 만드는 것이었다. 때문에 다른 개발자와의 의사 소통이 조금 문제가 되었었다. 다른 개발자가 만든 모듈을 이용해서 내가 개발하면 그쪽에서 받아서 필요하면 그 기능을 또 수정해 버리고 해서 내가 다시 고치면서 그쪽이 원하는 기능을 포함하는 것도 여러번 있었다. 때문에 다른 사람과 같이 개발할때는 뭔가 의사 소통하는 툴이 있어야 한다는 점이다.
네 번째로 개발할때 테스트 방식을 미리 지정하지 않은게 또 하나의 치명적인 문제점이었다. 새로운 기능을 추가하고 그 기능이 추가 되었는지 테스트하고 넘겨 주면 예전에 괜찮았던 부분이 문제가 생기고 했는데, 물론 내가 잘못한 부분도 있고 다른쪽에서 잘못해서 나온 것도 있었다. 하지만 PC용 플레이어의 개발은 나의 책임이므로 내가 잘못한것으로 생각된다. 그래서 미리 테스트 시나리오를 만들어서 다른 개발자들과 테스터와 함께 사용한다면 개발을 훨씬 효율적으로 할 수 있을 것이다.
다섯 번째로 이번에 개발 중간에 게시판을 만들었다. 일을 하다보면 중간 중간에 요구 사항이 바뀌거나 추가/삭제 되는 경우가 있다. 실제로 나는 일을 의뢰하는 회사하고는 직접적으로 얘기하는 경우가 거의 없다. 일종의 에이전시처럼 중간에서 이런 일을 해결해 주는 사람이 있는데, 회사와는 그 사람이 접촉해서 필요한 내용을 알려 주곤 한다. 근데 가끔 하다보면 그 전달이 서로간에 이상하게 될때가 있다. 나에게 전달을 했다는데, 나는 기억에 없고... 누구의 잘못을 따지는게 아니고 그런 놓치는 부분을 없게 하기 위해서 필요한 모든 내용을 한군데로 모으기 위해서 만들었다. 아직 게시판 형태가 좋을지 위키 시스템 형태가 좋을지는 좀 더 지켜봐야 할것 같다. 이번 개발에 게시판을 쓰고 있는데 일단 이번 개발을 끝내고 나서 게시판을 이용했을때의 장단점을 비교해봐야 겠다.
여섯 번째로 개발을 하면서 subversion을 이용하여 버전 관리를 하였다. 예전 회사에 있을때 프로젝트 하면서 subversion을 유용하게 잘 사용했는데, 이번에도 상당히 편하게 쓰고 있다. 좀 더 어드밴스한 기능을 쓰기 위해서는 공부를 하기도 해야 하지만, 아직까지는 그 기능까지는 쓸 필요는 없어서 생각만 하고 있는 중이다.
일곱 번째로 이번에 개발하면서 아쉬웠던 점은 지금 사용하고 있는 툴이 Visual Studio 2005 버전이다. 지금 다니고 있는 회사에서 정품을 사줘서 실제 정품을 사용하고 있는데, 이 툴의 사용법을 제대로 모르고 있다는게 많이 아쉬웠다. 툴을 예전에 VS 6.0 사용했던 것처럼 디버깅을 브레이크 포인트 걸고 하는 식으로만 썼는데, 훨씬 많은 기능이 있을듯 하다. 요번에 개발하면서 spy++ 라는 프로그램을 처음 써 봤는데, 생각보다 훨씬 유용한 프로그램이었다. 자신이 아니고 다른 프로그램을 선택하여서 그 프로그램에 posting되거나 sending 되는 모든 메시지를 보여 주는 프로그램으로 나중에 디버깅 하거나 멀티 미디어 라이브러리에서 UI로 보내는 메시지등을 테스트할때 정말 도움이 되었었다. 지금 생각해 보면 이 기능도 어느 정도 툴 안에 포함되어 있을것 같다. 1차 개발이 끝나면 툴에 대해서 좀 더 공부해야 할 필요성을 느꼈다.
지금은 1차 개발을 거의 끝나고 자체 테스트를 하고 있는 중이다. 프로그램이 장시간 플레이하면 문제가 생기는 경향이 있어서 약 2시간 짜리 동영상을 플레이 해서 문제가 없음을 알았고, 다른 PC에서는 4시간 짜리 동영상을 돌리고 있다. 2시간 이상되는 동영상을 찾기가 정말 힘들어서 동영상 두개를 붙여서 4시간 정도 되게 만들어서 사용하고 있다. 이 부분만 넘어 가면 1차 개발은 끝이 날것 같다.
이번 개발에서 윈도우의 리소스 부분에 대해서 정말 고생 많이 했다. 원체 윈도우쪽 프로그래밍을 많이 하지 않은 덕분에 이번에 개발하면서 정말 많이 배웠다. 특히나 리소스 부분은 단순히 책에 나와 있는 부분만 가지고는 실제 개발에서는 많은 문제점을 야기 시킬 수 있다는 점을 배운게 하나의 성과이다. 같이 개발하는 사람이 그쪽에 많은 경험이 있어서 마지막 테스팅등에는 정말 많은 도움이 됐다.
받은 트랙백이 없고,
댓글이 없습니다.


글
댓글을 달아 주세요
댓글 RSS 주소 : http://www.cipher.pe.kr/tt/cipher/rss/comment/8댓글 ATOM 주소 : http://www.cipher.pe.kr/tt/cipher/atom/comment/8