고쳐도 고쳐도 계속 나타나는 버그는 제 경험으로 보면 소프트웨어의 구조상 문제에 기인한다고 봅니다.
즉,,,, 버그의 원인이 구조적 불안정성으로 인해서 서로 얽혀있거나 개발자가 알아차리기 어렵게 숨어 있을 수 있다는 것이죠.
전체적인 구조를 한번 변경해 보시는 건 어떨까요? 큰 일거리가 될수도 있겠지만 경험상 불합리한 구조는 아무리 지지고 볶고 해도 계속 문제를 유발시키더군요..
구조를 단순화하고 구조를 계층적으로 재배치하면 코드간의 인터페이스도 분명해지고 유지보수도 매우 쉬워지던군요..
여기에서 구조를 계층적으로 재배치한다는 것은 상위 개념(또는 상위 구동 루틴)과 하위 개념(또는 하위 구동 루틴)을 구분해서 상위 개념 밑에 하위 개념을 쳬계적으로 둠으로써 인터페이스를 간략화하고 개발자가 파악하기 쉽게 하는 것을 말합니다.
전체적인 구조가 쉽게 파악되면 전체적인 문제도 그만큼 쉽게 찾아낼 수 있고 문제해결도 지역적인 문제해결(임시방편적 해결)이 아닌 전체적으로 문제 해결을 할 확률도 그만큼 높아지죠..
한번 환골탈태가 필요하실 듯...
그렇지만 소프트웨어 구조를 뜯어고치는 건 정말 손대기 어려운 일입니다... 그러나 그 결과는 분명 그만한 가치를 주고도 남습니다. ^^
홍환민.행복 님이 쓰신 글 :
: 안녕하세요? 환민입니다.
: 답글을 제외하면 오랫만에 글쓰네요.
:
: 지금 회사에서 한 제품의 개발을 책임지고 있습니다.
: 사실 제 위에 계신 대리님 (사실상 개발팀의 팀장)이 담당자고 저는 그 아래에서 개발하는 개발자인데,
: 실질적으로는 제가 담당자 겸 개발에, 외부에서 오는 기술문의를 처리하고 있습니다.
:
: 원래는 대리님과 제가 분담하여 개발 및 기술지원 등을 처리하려고 하였으나,
: 대리님이 다른 일들로 눈코뜰새 없이 바쁘시기 때문에, 어느순간부터 제품의 내부적인 구조나 소스에 대해서나
: 각 마이너 버전 업그레이드시 변화된 상세한 내용등은 신경을 못쓰시고 계신 상황이고요.
:
: 항상 외부 고객의 전화에 시달립니다.
: 제품의 결함에 대한 문의입니다. 항상 이럴때면, "다음 버전에서 해결해서 패치해 드리겠습니다.",
: "이런 문제가 발생한 적이 없는데, 그 문제가 발생하는 몇몇 PC가 문제가 있는 것 같습니다."
: 이런 식으로 말합니다.
:
: 결국은 제품의 결함인데...
: 딜레마 상황인 것은.
:
: 개발을 열심히 하고 보고되는 버그들을 그때그때 고쳐나가도 항상 제자리 걸음인 것 같다는 것입니다.
: 제가 정말 업무시간에 웹서핑, 메신저 하나도 안하고 빡세게 하고, 늦게까지 남아서 일을 하다면
: 좀 나아질지도 모르겠지만, 그것도 결국 한계가 있을 것 같다는 거고요.
:
: 회사 내부적으로 테스트할 환경이 전혀 되지 못하다는 것입니다.
: 엔터프라이즈 환경에서 몇천대를 수용해야 하는 네트웍 기반의 프로그램인데,
: 현재 제 PC와 놀고 있는 PC 3대 정도 놓고 테스트하고 있습니다.
:
: 테스트도 시간도 없고, 아시다시피 저 혼자 개발하므로, 제대로 된 테스트라기 보다는 그냥 돌아가는구나
: 테스트 하는 정도이고요. 어찌보면 고객들이 테스트를 해 준다고 봐도 무방할 정도입니다. ;;;;;
:
: 흠.. 이런 제품의 경우 어떠한 테스트 방법이 좋을까요?
: 다양한 PC와 운영체제를 커버해야 하고, 네트웍 상에서 몇천대가 붙어서 돌아야 하기 때문에,
: 그런 쪽에서의 안정성도 담보가 되어야 하는데...
: 다른 회사들도 기껏해야 회사에서 직원들이 사용하는 PC정도 밖에 테스트 해볼 방법이 없을텐데,
: 어떤 방법을 써서 테스트 하고 계신가요?
:
: 그리고 위에서 말했듯이, 열심히 개발해도 제품의 결함 문제가 해결되지 않는 것에 대해
: 회사 시스템적으로든, 제 개인적으로든 어떻게 해결해야 할지 좋은 의견 주시면 감사하겠어요.
: 단, 막 회사 시스템이 체계적으로 될 상황이 아니니 감안해서 말씀주셨으면 좋겠어요.
: (시스템 적인걸 말하지 말라는건 아니고요, 막 여러 서적에 나오는 체계적인 시스템을 도입하면 해결된다 식의
: 실현불가능한 말은 큰 도움이 안된다는 ;;;;)
:
: 행복하세요.
|