소프트웨어 버그

위키百科, 우리 모두의 百科事典.

소프트웨어 開發 프로세스
活動과 段階
要求事項 分析   · 機能 明細
救助   · 設計
具現   · 테스팅
配置   · 維持補修
開發 模型
애자일 소프트웨어 開發   · 클린룸
DSDM   · 循次漸增的 開發   · 反復型 開發
RAD   · RUP   · 나선 模型
瀑布水 모델   · 익스트림 프로그래밍
스크럼   · V 모델   · TDD
支援 活動
構成 管理   · 文書化
品質保證   · 프로젝트 管理
使用者 經驗 設計
道具
컴파일러   · 디버거   · 프로파일러
GUI 디자이너   · 統合 開發 環境
最初의 버그: 하버드 大學校 가 만든 마크 II 컴퓨터의 繼電器에서 發見된 나방

소프트웨어 버그 ( 英語 : software bug ) 또는 줄여서 버그 ( bug )는 소프트웨어 가 豫想하지 못한 잘못된 結果를 내거나, 誤謬가 發生하거나, 錯誤나 誤作動이 發生하는 等의 問題를 뜻한다. 버그는 프로그램 소스 코드 나 設計 過程에서의 缺點, 缺陷 및 誤謬 때문에 發生한다.

버그의 結果로 다양한 問題가 發生할 수 있다. 몇몇 버그는 프로그램의 動作에 조그마한 影響을 줄 뿐이며, 오랜 時間 동안 發見되지 않고 남아 있을 수 있다. 이보다 더 深刻한 버그는 프로그램의 實行이 中斷되거나 强制 終了되는 問題를 일으킬 수 있고, 어떠한 버그는 保安 問題를 發生시킬 수도 있다. 例를 들어, 惡意的인 使用者는 자주 發生하는 버그인 버퍼 오버플로 를 使用해서 元來는 許諾되지 않은 일을 할 수 있다.

버그는 다양한 形態로, 또 다양한 程度로 프로그램의 使用者들에게 不便함 等의 影響을 미칠 수 있다. 몇몇 버그들은 프로그램의 機能에 微微한 影響만 미치는데, 이 때문에 오랫동안 使用者들이 이들을 發見하지 못하는 境遇도 있다. 하지만 深刻한 버그들은 프로그램이 全혀 作動하지 못하는 狀態가 되게 하여 使用者들에게 큰 不便을 주기도 한다. 한便, 保安 버그들은 나쁜 意圖를 가진 使用者들에 依하여 惡用되어 시스템의 不法的인 權限을 獲得할 수 있는 手段이 되기도 한다.

歷史와 事例 [ 編輯 ]

說明할 수 없는 問題點들을 가리키기 위해 使用되는 "버그"라는 單語는 이미 오랫동안 엔지니어들의 專門 用語였으며, 컴퓨터와 컴퓨터 소프트웨어가 만들어지기 以前부터 使用되었다. 最初에는 버그가 하드웨어의 機械的인 吳動作을 說明하기 위해 使用된 것으로 보인다.

버그의 弊害는 매우 深刻하다. 1980年代 Therac-25 放射線 治療 機械의 制御 코드에 있었던 버그 때문에 몇몇 患者들이 목숨을 잃었다. 1996年, 유럽 스페이스 에이전시의 美貨 10億 弗짜리 프로토타입 아리안 5號 로켓이 發射 後 1分도 채 못 되어 暴發하고 말았는데, 이 亦是 컴퓨터 프로그램의 버그 때문이었다. 1994年 6月, 로얄 에어 포스 치누크 스코틀랜드 에서 墜落하여 29名의 搭乘者가 死亡하였다. 처음에는 파일럿의 失手로 事故原因이 결론지어졌으나, 컴퓨터 위클리誌의 調査에 依하여 航空機의 엔진 制御 컴퓨터에 들어 있는 소프트웨어의 버그 때문에 發生했었을 수도 있다는 主張이 提起되었다.

一般的인 컴퓨터 버그 [ 編輯 ]

디버깅 [ 編輯 ]

버그를 찾아서 고치는 過程은 디버깅( 英語 : debugging )은 컴퓨터 프로그래밍 의 주된 部分이다. 初期 컴퓨팅 先驅者 모리스 윌크스 는 1940年代 말에 自身의 프로그램에 남겨놓은 失手를 찾는데 自身의 남은 人生을 보내겠다는 意味로 그가 깨달은 바를 記述하였다. [1]

같이 보기 [ 編輯 ]

各州 [ 編輯 ]