본문 바로가기
IT 와 Social 이야기

소프트웨어 버그 Software Bug는 왜 생기는 걸까요?

by manga0713 2011. 4. 15.



소프트웨어가 목적된 기능대로 동작되지 않거나 그러한 상황을 만드는 원인을 제공하는 것을 통칭해서 에러 Error 또는 버그 Bug라고 하는데요. (Bug라는 말이 더 적절합니다. ^^)

이 늠(ㅋㅋ)이 나타날때마다 개발자나 관계된 많은 사람들이 얼굴을 붉히게 되는데요, 왜 또는 어떤 경우에 이 징그러운 Bug가 생기는 것인지 Software QA and Testing 사이트를 통해서 알아보겠습니다. ^^

1. Miscommunication or Nocommunication 커뮤니케이션이 없거나 잘못된 경우

마치 이런 것이지요. '배'를 만들어 달라는 줄 알고 '배'를 만들었는데, 이걸 어떻게 먹냐!라는 말이 돌아 온 경우가 되겠지요.

"배 Ship 또는 Boat"를 만들어(Build, Make) 주세요. 와
"배 Pear)를 구해(Bring) 주세요. 는 완전히 다르지요.

Nocommunication은 말 할 필요도 없겠지요. ^^

이런 경우는 Bug뿐만 아니라 개발 프로젝트 자체도 산으로 가게됩니다.

2. Software Complexity 소프트웨어의 복잡성

목적과 결과물의 모습이 단순명료하다면 아무래도 Bug의 출현이 적을 수 밖에는 없을 것입니다. 그러나 요즘의 소프트웨어 개발은 신경써야 할 것이 무지 많습니다.

요즘 뉴스에 많이 나오는 것과 같이, 보안은 어떻게 해야하는지, 보안에 이용된 제품은 무엇인지, 그것과 우리는 여하이 어떻게 묶어야 하는지...

암호화를 한다는데 어떤 방식으로 암호화하고 어떤 방식으로 풀어야 하며, 어떨 때 암호화하고 어떨 때 풀어야 하고, 누구는 봐도 되고 누구는 보면 안되고...

저 서버는 OS가 어떻고 이 서버는 OS가 어떻고...

복잡하지요?
고려야 할 사항, 신경써야 할 사항들이 아주 많이 존재하기 때문에, 아무리 치밀하게 분석하고 설계를 해도 사람인 이상 부족한 부분이 있게 마련입니다. ^^

3. Programming errors 프로그래밍 에러

이건 정말 말 그대로 에러 입니다.
야구를 생각하시면 됩니다. 수비수들이 굴러오는 공을 잡지 못하고 그냥 알을 까버리는 경우가 있잖아요. 그런 경우를 이야기 하는 것입니다.

단순 실수인 것도 있고 논리적인 부분도 있고 기법상의 문제도 있습니다.

4. Changing Requirements(Whether documented or undocumented) 요구 사항의 변경

와~ 이건 개발자들과 PM과 영업을 시쳇말로 꼭지돌고 하는 것이지요. ㅋㅋㅋ
나폴레옹처럼 가자~ 그래놓고 아닌가 봐~~ 이러면 어쩌자는 것 입니다.

1,000명의 고객을 실어나를 수 있는 쿠르즈를 만들라고 해 놓고선, 회장님이 요트래~~ 이래버리면....

5. Time Pressures 부족한 시간

널널하게 개발 프로젝트를 진행하는 경우가 없지요. 시간에 쫓기다 보면 정도를 벗어나 꼼수를 쓰기도 하고 내실에 신경쓰지 못하고 외형(화면)에 치중하게 되지요.

이쯤에서 숨을 한 번 돌리시지요. ^^


소프트웨어 QA의 라이프 사이클 입니다. 에러나 버그가 발생했을 때 QA 조직과 개발 조직간의 해결 프로세스를 설명한 그림입니다.

고객이 만족할 때까지 계속 반복하는 것이지요. ^^


6. Egos 고집 ㅋㅋ

이건 개발자뿐만 아니라 요청자(고객)도 마찬가지입니다. 괜히 똥고집을 부리면...프로젝트는 산으로 갑니다.
Software QA and Testing 사이트에 나와 있는 예가 아주 재미있어서 그대로 옮깁니다. ^^

마치 프로그램 코딩을 하듯이 이야기를 적었네요. ^^
'no problem' 
  'piece of cake'
  'I can whip that out in a few hours'
  'it should be easy to update that old code'

 instead of:
  'that adds a lot of complexity and we could end up
     making a lot of mistakes'
  'we have no idea if we can do that; we'll wing it'
  'I can't estimate how long it will take, until I
     take a close look at it'
  'we can't figure out what that old spaghetti code
     did in the first place'

 If there are too many unrealistic 'no problem's', the
 result is bugs.

이외에도 원인이라고 할 수 있는 것들이 더 있을 수 있는데요, 개인적으로 가장 크게 작용하는 것들이라는 생각이 들어서 이렇게 옮겨 보았습니다.

어떻습니까? 재미 있으신가요?

오늘은 이상입니다. ^^