버그 뜻 - beogeu tteus

컴퓨터 기술 분야에서 "버그"란 컴퓨터 프로그램의 코딩 오류를 의미하는 용어이다. 프로그램 사용자가 이러한 버그를 발견하기 전에 찾아 수정하는 것을 "디버깅"(debugging)이라 하며, 디버깅은 프로그램의 개발 시작 단계부터 완료될 때까지 계속해서 이루어진다. 하지만 제품이 출시된 후나 베타 테스트 기간 중에도 버그는 여전히 남아있을 수 있다. 그러나 일반적으로 프로그램 개발 절차가 잘 확립되어 있고 프로그램의 설계를 잘하면, 그것이 비록 수천, 수만 개의 명령문이 조합된 대형 프로그램이라 해도, 버그를 최소한으로 줄일 수 있다.

버그의 어원은 1944년 하버드에서 MarkⅠ 컴퓨터로 프로그램을 개발했던 최초의 프로그래머인 그레이스 호퍼에 의해 비롯되었다. 젊은 해군장교였던 호퍼는 기술자들이 MarkⅡ 컴퓨터에서 오동작을 일으킨 벌레(모기)를 꺼낸 사건을 서술했다. 에릭 레이몬드는 그의 저서인 The New Hacker's Dictionary 에서 '그 벌레(모기)가 해군에 여러 해동안 전시되었고, 지금은 스미스쏘니언 박물관에 소장되어 있다'고 하였다. 이와 같이 버그라는 용어는, 현대의 컴퓨터 이전의 진공관 컴퓨터 시대부터 산업적 또는 전기적 오동작을 의미하는데 사용되었고, 때로는 컴퓨터 하드웨어 문제를 지칭하는 것으로 사용되기도 한다.

안녕하세요. 버그(Bug)라는 말을 많이 사용하시나요?
버그라는 말을 자주 사용한다면 무엇인가 문제가 자주 발생한다는 건데...ㅜ.ㅜ

사전적인 의미로는 우리말 '벌레', '곤충'이런 뜻일 텐데요.
소프트웨어나 전자제품을 사용할 때도 이런 말을 많이 사용을 합니다.
많이 사용하는 말이기 때문에 이미 알고 계신 분들이 꽤 있을 것으로 생각됩니다만
오늘은 버그의 뜻과 유래에 대해서 살펴보도록 하겠습니다.

버그 뜻 - beogeu tteus
버그란 무엇일까요

버그(Bug)란?

- 보통 버그는 소프트웨어나 하드웨어의 결함을 말합니다.
그런데 여기서 결함은 아주 치명적인 결함을 말하는 것은 아니고요. 예기치 못한 오류나 오동작을 말하는 것이지요.
예를 들면, 보통 어떤 프로그램이 기본적으로 수행되어야 할 기능은 되는데 경우에 따라 잘못된 동작을 수행하는 경우에 "버그가 있다. 버그를 발견했다."라고 말합니다.
실례로 이렇게 말하죠.
"어라? 이거 버그가 있잖아. 이봐! 도대체 테스트를 한 거야 안 한 거야?"
모든 프로그램은 출시 전에 요구사항을 만족하시키는 것은 기본이고 최대한 버그를 모두 잡으려고 하죠.
(흔히 말하는 베타 테스트라고 하는 것도 버그를 잡기 위한 과정입니다.)
밤에 잠을 자려고 하는데 방에 모기가 있으면 방 안에 남아있는 모기를 모두 잡아야겠다는 생각이 드는 것과 마찬가지로요. 그런데 다 잡았다고 생각을 해도 어디서 모기가 숨어있다가 나타나서 앵앵거립니다. ㅜ.ㅜ
마찬가지로 사실 모든 버그를 다 찾아서 고치는 것은 불가능에 가깝습니다.
완벽한 것이 아니라 완벽에 가까운 것을 추구하는 것입니다. 따라서 최대한의 경우의 테스트를 빠른 시간에 할 수 있도록 테스트 기법을 사용하곤 합니다.
테스트 기법에 대한 이야기는 나중에 다시 하겠습니다.

버그(Bug)의 유래

- 그럼 도대체 왜? 버그라는 말을 붙였을까요?

2020/08/20 - [SW교육/지식창고] - 세계 최초의 컴퓨터는 무엇일까요?

위 글에서 적었듯이 최초의 컴퓨터 에니악은 18,000개의 진공관을 사용하였습니다.

버그 뜻 - beogeu tteus
진공관, 출처- 전자신문(2014.07.01)

위에서 보듯 진공관은 마치 전구처럼 생겼죠?
그렇습니다. 진공관은 에디슨이 발명한 백열전구에서 발전하여 생겼다고 합니다.
예전 에니악 컴퓨터의 진공관은 꽤 컸을 것이라고 추정되는데요. (뇌피셜)
하루는 에니악 컴퓨터가 고장이 났는데 원인을 찾아보니 18,000여 개의 진공관 기판 중 하나에 나방이 달라붙어 있는 것을 발견했다고 하네요.

초창기 컴퓨터 개발자 중 한명인 그레이스 하퍼(Grace Murray Hopper, 1906~1992)가 운용 중이던 ‘하버드 마크 II(Harvard Mark II)’ 컴퓨터의 고장 원인을 조사하던 중, 회로 사이에 나방 한 마리가 끼어있는 것을 발견했다.
- 출처 : 네이버 지식백과

아마도 전구에 달려드는 나방처럼 진공관을 향해 돌진한 듯합니다.


그래서 나방을 제거하여 그 결함을 제거했다고 하는데요.
그때부터 버그(Bug)라는 말과 버그를 제거한다는 디버그(Debug)라는 말을 사용하게 되었다고 합니다.

버그 뜻 - beogeu tteus
나방은 밝은 것을 좋아합니다.

디버깅(Debugging)이란?

- 진공관 기판에 달라붙은 나방을 떼내 듯 버그를 찾아내서 고치는 것을 말합니다.
프로그램의 결함 오동작이 있을 수 있는 사항을 찾아서 수정하는 것을 디버깅이라고 하는데 프로그램 문법에 안 맞으면 버그처럼 단순한 결함도 물론이거니와 기본적인 동작이 안 되는 치명적인 결함이 있을 수 있겠죠?
디버깅이란 보통 단순한 버그를 찾는 것뿐만 아니라 프로그램 코딩에서 논리적으로 문법적으로 잘못된 것을 찾는 또한 디버깅이라고 합니다. 즉, 프로그램을 개발하는 과정에서 잘못된 것을 찾는 행위를 통틀어서 말하죠.
이러한 디버깅도 조금 더 효과적으로 수행하기 위한 여러 가기 방법을 사용하여 프로그래머가 직접 수행하거나 기법을 탑재한 자동화된 솔루션 툴(Tool)을 이용하기도 합니다. - 이상 끝 -

버그란 무엇인가?

뭐, 대부분의 프로그래머는 아는 이야기다. 

하지만 우리가 말하는 '버그'란 정확히 무슨 뜻일까?

버그를 구성하는 정확한 정의는 다음과 같다.

1. 프로그램이 프로그래머의 의도에 따라 움직이지 않는다.

2. 프로그래머의 의도가 사용자의 평범하고 합리적인 기대를 충족시키지 않는다.

그래서 프로그램이 프로그래머가 의도한 작업을 하고 있는 한 프로그램이 제대로

작동한다고 보는 게 일반적이다. 때로 프로그래머가 의도한 작업이 사용자의 기대를 

크게 벗어나서 문제를 일으킬 때는 버그라고 본다.

버그는 왜 발생할까?

버그는 보통 복잡성을 줄이지 못할 때 발생한다. 또 그보다는 드물지만 간단한 대상을

잘못 이해했을 때도 발생한다.

프로그래밍 언어 혹은 그 언어에 대한 설명을 잘못 해석하고 이해가 안 되어있는 상태라면,

어떻게든 잘못 사용하게 될 것이다.

코드를 복잡하게 만들수록 누군가는 그 복잡한 코드를 잘못 사용할 가능성이 높아진다.

그리고 그 '누군가'가 심지어 개발자 본인이 될 수 있다.

프로그래머라면 프로그래밍과 해당 언어에 대한 기본적인 이해를 갖춘 상태에서 미래에

자신의 코드를 볼 다른 프로그래머가 쉽게 알아볼 수 있는 코드를 쓰겠다는 책임감을 지녀야 한다.

자신에게 단순한 것이 다른 사람에게는 복잡할 수도 있다.

버그 뜻 - beogeu tteus

인용 : -심플소프트웨어- 맥스카넷