소프트웨어 문제를 피하는 방법
잡집 / / November 29, 2021
이 디지털 시대에 Facebook 및 Twitter와 같은 소셜 미디어 거물과 Alibaba 및 Amazon과 같은 전자 상거래 플랫폼에 대해 들어봤을 것입니다. 이러한 온라인 웹사이트는 운영을 위해 다양한 소프트웨어 패키지에 의존합니다. 이 프로그램은 우리가 일하고 생각하고 생활하는 방식을 솔직히 바꿔놓았습니다.
![소프트웨어가 우리를 망친 방법](/f/0f7a9bf696d466f9ec123df1e1c0a618.png)
게다가, 이전에는 본질적으로 기계적일 뿐이었던 많은 장치가 이제는 소프트웨어에 의해 제어됩니다. 예를 들어 온도 조절 장치는 한때 전기 기계 장치였습니다. 그러나 그들은 이제 운영을 위해 소프트웨어에 크게 의존합니다.
하지만, 소프트웨어 버그 특히 일상 활동에 대한 의존도가 높아짐에 따라 상당히 문제가 될 수 있습니다. 사실, 소프트웨어가 의도한 목적에 미치지 못하여 불쾌한 결과를 초래하는 경우가 실제로 꽤 많았습니다.
이 기사에서는 소프트웨어 성능이 크게 저하된 4가지 경우와 그러한 소프트웨어 문제를 피하는 방법에 대해 설명합니다.
1. 미국 다중 상태 911 정전
![긴급 서비스](/f/d54bb4c13d8759fef7bc0a17d98247be.jpg)
911은 개인이 필요할 때마다 응급 요원에게 연락할 수 있는 중요한 서비스입니다. 때때로 911을 통해 긴급 구조원에게 연락하는 것은 말 그대로 삶과 죽음을 가를 수 있습니다.
그래서 2014년 4월 9일, 911 호출 라우팅 실패 캘리포니아, 플로리다, 미네소타, 노스캐롤라이나, 펜실베니아, 사우스캐롤라이나, 워싱턴을 포함한 미국 7개 주에 있습니다.
이 중단은 Intrado가 소유한 콜로라도의 긴급 콜 관리 센터에서 발생한 예방 가능한 코딩 오류로 인해 발생했습니다.
2. 유나이티드 항공의 함대 접지
![유나이티드 항공사](/f/0808b947aa635e7e6b42e1797e3e7177.jpg)
2015년 7월 유나이티드 항공은 전체 함대를 접지 소프트웨어 결함으로 인한 항공기 이로 인해 전 세계적으로 4,900편 이상의 항공편이 영향을 받았으며 많은 승객이 공항에 발이 묶이고 상당히 좌절감을 느꼈습니다.
많은 승객들의 불편을 항공사가 배상해야 했기 때문에 경제적인 영향도 있었을 것이다. 또한 접지로 인해 여러 중요한 비즈니스 회의가 엉망이 된 것 같습니다.
3. Toyota Camry Accelerator 페달 오작동
![얽힌 엉망](/f/7d13843f69c8690504ba0c370b225cea.jpg)
2007년 9월 Jean Bookout은 승객인 Barbara Schwarz와 함께 오클라호마의 69번 주간 고속도로를 달리던 중 어려움에 부딪쳤습니다. 그녀의 Toyota Camry를 제어.
그녀는 스로틀에서 발을 떼려고 했지만 차는 계속 가속했습니다. 브레이크 페달이 차를 멈추게 하지 못했고 그녀는 비상 브레이크를 사용해야 했습니다.
불행히도, 이것은 차가 제방으로 돌진하게 했습니다. 결과적으로 Schwarz는 사망했고 Bookout은 치명적인 부상으로 인해 5개월 동안 입원했습니다.
![교통 사고](/f/8175775ac7aafbafd8abd8e944c70441.jpg)
사고는 Camry의 CPU에서 작업의 충돌로 이어진 여러 코딩 부적절로 인해 발생한 것으로 추측됩니다. 이 CPU는 점화, 스로틀 컨트롤 및 크루즈 컨트롤을 포함하여 엄청나게 많은 기능을 제어합니다.
Toyota의 코드는 몇 년 동안 오래된 코드에 새 코드가 쌓여 엉킨 엉망이 되었습니다. 이것을 보통 '스파게티 코드'라고 합니다.
그러나 Bookout의 사고는 이 문제를 조명하고 소프트웨어 프로세스에서 Toyota의 결함을 강조했습니다. 1000만 개 이상의 방법이 있는 것으로 밝혀졌습니다. 잠재적으로 발생할 수 있는 원치 않는 가속, Toyota의 코드가 구조화된 방식을 기반으로 합니다.
Nest 온도 조절기 오류
![Nest_온도 조절기_1](/f/11f4f07b8fa6e459de52cb78c8f7571e.jpg)
네스트는 기업입니다, 알파벳 소유, 스마트 온도 조절기를 만듭니다. 이 온도 조절 장치는 매우 훌륭하며 사용자가 스마트폰으로 집의 온도를 제어할 수 있습니다.
지난 겨울, Nest 온도 조절기 결함을 경험했다 결함이 있는 소프트웨어 업데이트의 형태로 배터리가 소모되었습니다. 불행히도 이 오류는 한겨울에 발생하여 여러 사용자에게 일시적으로 열이 발생하지 않았습니다. 이것은 확실히 당신이 올해의 이시기에 일어나기를 원하지 않는 것입니다.
소프트웨어 문제에 대한 간략한 분석
모델 기반 설계 및 TLA+와 같은 접근 방식을 통해 개발자는 소프트웨어 작동 방식에 대한 더 큰 그림 개요를 얻을 수 있습니다.
저명한 컴퓨터 연구원인 Brett Victor는 연결 끊기 프로그래머와 코드로 해결하려는 문제 사이.
이러한 연결 해제로 인해 프로그래머가 코드에 넣으려는 내용을 상상하기가 어려워집니다. Victor는 이것이 소프트웨어에 버그가 만연한 원인 중 하나라고 생각합니다.
그러나 희망이 있습니다. 다음과 같은 접근 방식 모델 기반 설계 및 TLA+ 개발자가 소프트웨어 작동 방식에 대한 더 큰 그림 개요를 얻을 수 있습니다.
![버그 테스트](/f/611d0faaae40d1b08f82dd02d70b5361.jpg)
모델 기반 디자인은 이름에서 알 수 있듯이 시각적 모델을 통해 소프트웨어를 개발할 수 있습니다. TLA+는 Temporal Logic of Actions의 약자로 컴퓨터 프로그램의 사양을 작성하기 위해 설계된 언어입니다. TLA+의 장점은 소프트웨어가 공개되기 전에 철저한 테스트와 검증이 가능하다는 것입니다.
모델 기반 디자인과 TLA+ 모두 이미 그 성능을 입증했습니다. 에스테렐 기술, 소프트웨어 개발 회사는 모델 기반 설계를 사용하여 안전에 중요한 소프트웨어를 구축하는 반면 TLA+는 Microsoft는 가능한 치명적인 Xbox 오류를 수정하고 유럽 우주국(European Space Agency)은 우주선에 착륙한 탐사선의 코드를 다시 작성합니다. 혜성.
코드를 작성하는 과정은 프로그래머들에게 높은 평가를 받습니다. 그들 중 많은 사람들이 단순히 코드를 작성하는 과정에 흥미를 느낍니다. 따라서 일부 프로그래머가 모델 기반 설계 및 TLA+와 같은 접근 방식을 받아들이도록 하는 것은 어려운 일입니다. 이러한 접근 방식은 실제 실행 가능성이 없는 엄격하게 학문적인 것으로 인식되는 경우가 많습니다. 그러나 관점의 변화는 가능한 한 빨리 이루어져야 합니다.
마지막 생각들
내장된 안전 예방 조치가 필요한 애플리케이션에서 소프트웨어가 점점 더 많이 사용되고 있습니다. 소프트웨어를 설계하는 더 나은 방법은 이러한 응용 프로그램이 우리 삶에서 매우 중요하기 때문에 전반적으로 도입되어야 합니다.
오늘날 자동화와 같은 프로세스는 소프트웨어에 크게 의존하지만 위의 예에서 볼 수 있듯이 한 줄의 코드에서 오류가 발생하면 큰 차질이 생길 수 있습니다.
![코딩](/f/0e40b94bd4b6479685cfa47758b960ac.jpg)
이제 이러한 응용 프로그램에 인공 지능(AI)과 같은 것을 통합한다고 상상해 보십시오. AI는 그 자체로도 충분히 무서운 소프트웨어 결함 없이. 믹스에 버그를 추가하면 무슨 일이 일어날지 알 수 없습니다.
그러나 여기에는 은색 안감이 있습니다. 약간의 작업과 몇 가지 새로운 도구를 사용하여 보다 건전하게 설계하고 스터드에 테스트하여 더 나은 소프트웨어와 AI를 만들 수 있습니다.
관계 당국에서 이 중요한 문제를 심각하게 받아들여 소프트웨어를 최대한 활용하되 더 안전하고 스마트한 미래를 건설하기를 바랍니다.