hyperskill - What are bugs 영어 원문

소프트웨어 버그는 프로그램을 부숴 버리거나 유효하지 않은 결과를 낳는 문제입니다.

소프트웨어 버그는 많은 이유가 있습니다.

가장 흔한 문제는 소프트웨어 디자인, 코딩 및 피룡사항에 대한 이해사항에 있어서 인간의 실수입니다.


프로그램은 분명한 버그들을 많이 가지고 있지 않다면, stable (안정적) 이라고 부릅니다.

만약 프로그램이 기능성과 알맞지 않는 결과를 일으키는 버그를 많은 수 보유하고 있다면,

프로그램은 buggy (버그가 많은) 혹은 unstable (불안정) 이라고 부릅니다.

유저들은 위와 같은 이러한 프로그램과 성공적으로 상호작용 할 수 없습니다.

당신의 프로그램에서 유저들이 상호작용을 시작하기 전에 버그를 찾는 것은 중요합니다.


Bug etymology - 버그의 어원


버그의 단어는 어디서 기원했는가?

당신은 아마 이미 "bug" (버그) 에 대한 용어를 들어 봤을 것이며, 그것이 의미하는 바를 상상할 수 있습니다.

여기에 이에 대한 이야기가 있습니다.


첫번째 컴퓨터 버그는 1947년에 Grace Murray at Harvard University 에 의해 발견되었습니다.

해당 이슈에 대한 조사를 하는 동안, 실제 나방이 릴레이의 접점에서 발견되었습니다.

나방은 제거되었고, logbook(기록 책)에 추가되었습니다.

해당 기록 책은 현재 워싱턴 D.C 의 스미소니언 국립 박물관에 위치해 있습니다.


따라서, 컴퓨터 에러는 종종 버그라고 부릅니다.

이 용어는 상세하게 자연스런 에러가 결정될 때 까지는 어떠한 올바르지 않은 프로그램 행동을 묘사하는 데 사용됩니다.


Why do programs have bugs? - 프로그램은 왜 버그를 가지고 있을까?


개발자들은 버그 없는 프로그램은 존재하지 않는다고 자주 이야기합니다.

소프트웨어 내부의 버그에 대해서 몇몇 공통적인 이유들이 있습니다.

  • 팀 내부에서 커뮤니케이션 문제
  • 필요사항을 이해하지 못함
  • 소프트웨어 복잡성
  • 프로그래밍 에러 (프로그래머, 혹은 비슷한 사람이 실수를 만들 수 있으므로.)
  • 시간에 대한 압박
  • 친숙하지 않은 기술을 사용
  • 서드 파티 라이브러리 에서의 에러

이 코스를 수행하는 동안, 당신은 주로 버그를 맞닥들일 것인데,

이는 주어진 필요사항에 대한 이해도 부족이거나, 프로그래밍 에러입니다.


Avoiding bugs - 버그 피하기


큰 프로그램에서 모든 버그를 회피하는 것은 대부분 불가능합니다.

하지만, 이러한 버그의 숫자를 줄이는 것은 가능합니다.

여기에 우리는 교육적인 코스 그리고 산업 프로그램에서 버그를 줄이는 데 도움이 될 수 있는 5 단계를 주겠습니다.

1. 해야 할 것을 확실히 알아라

프로그래머로서, 당신은 당신이 작업해야 하는 프로그램의 필요사항에 대한 이해가 필요합니다.

만약 당신이 염려를 가지고 있다면, 언제나 인터넷이나 숙련된 개발자들 사이에서 도움을 찾을 수 있습니다.


2. 프로그램 분해하기

프로그램을 작은 단위로, 쉽게 보고, 이해할 수 있도록 분해합니다.

좋은 구조는 소프트웨어 복잡성을 줄입니다.

그리고, 결과적으로 에러의 수가 줄어듭니다.


3. 읽기에 쉬운 코드를 작성하기

코드를 읽기 쉽게 작성하고, 언어의 모든 표준을 따르세요.

더 적은 에러를 만들게 해 줍니다.


4. 예상 입력 값을 이용해서 프로그램을 실행하기

테스트 입력 값을 이용해서 프로그램을 구동하세요.

서로 다른 케이스들을 넣는 것도 잊지 마세요 :

0 또는 아주 큰 숫자를 입력 값으로 쓰거나, 0 혹은 하나의 구성 요소를 입력 순서로서 쓰세요.

이러한 케이스들은 종종 버그를 드러냅니다.


5. 자동화 테스트를 작성하기

프로그램의 빌드 시간에 에러를 체크하는 자동화 테스트를 작성하세요.


이 주제에서는 자동화 테스트에 대해서 다루지 않을 겁니다.

하지만, 이에 대해서 나중에 다룰 겁니다.

이 순간, 당신은 간단히 입력 값의 집합을 만들 수 있으며, 프로그램을 정석대로 실행 할 수 있습니다.


Debugging - 디버깅


당신이 몇몇 입력 값들에 대해 프로그램이 올바르게 작동하지 않는다는 것을 알았다고 가정하겠습니다.

이 버그를 고치기 위해서, 코드 내부의 버그를 찾거나, 변화를 만들어야 할 필요가 있습니다.


버그가 일어나는 곳을 찾기 위해서, 당신은 밑의 리스트를 할 수 있습니다 :

  • 코드를 읽고 입력 값에 대해 무엇이 수행되는지 이해하세요.
  • 디버깅을 시작하고 프로그램 컨트롤 흐름에 있어 현재 변수 값들을 보세요.
  • 프로그램에 있어 코드의 치명적인 부분의 현재 상태를 출력하세요. 그리고 분석하세요. (로깅 : logging)

위에 있는 접근들의 조합은 당신의 프로그램에서 대부분의 버그를 찾을 수 있게 해 줍니다.


Conclusion - 결론


이 주제를 요약 해 봅시다.

버그는 프로그램의 올바르지 않은 행동입니다.

하지만, 버그의 숫자를 줄일 수 있는 방법들이 있습니다.

예를 들어,

  • 프로그램의 필요사항에 대해 이해하거나
  • 언어의 표준을 따르거나
  • 프로그램의 구조를 명확히 건설하고
  • 예상 값들을 통해 프로그램을 체크하고
  • 자동 테스트들을 사용하세요

여전히 버그를 가지고 있는 경우, 첫 번째로 코드 내부에 버그를 찾을 필요가 있습니다.

이를 위해, 당신은 디버거 혹은 로깅을 사용 할 수 있습니다.

혹은, 읽으면서 입력 값들에 대해 코드가 무엇을 수행하는지 이해하려고 수행하세요.

이러한 팁을 사용하세요.

그리고 대부분 그렇듯이, 버그가 많은 프로그램 작성을 피할 수 있으며, 이를 디버깅하는 데 시간을 줄입니다.



words to remember


obvious : 분명한

investigation : 조사, 수사

decompose : 분해하다, < -- > compose : 구성하다

as a consequence : 결과적으로

to locate : (to 단어가 ~위해서 라고 쓰인 경우) 찾기 위해서

clear-cut : 명확한