자동차만큼 소프트웨어가 신뢰할 수없는 이유는 무엇입니까? [닫은]


65

사용자 가이 질문을했습니다. 우리는 자동차가 고장났다는 것을 알고 있지만 소프트웨어가 관련되지 않은 한 물리적 인 문제 때문입니다 .

나는 소프트웨어가 훨씬 더 젊은 산업이라고 대답하려고 노력했지만 사용자는 "자동차 산업이 더 적은 사람들보다 훨씬 안정적이고 안정적이지 않습니까?"

또한 소프트웨어가 더 복잡하다고 대답했지만 사용자는 자동차를 구성하는 수천 개의 부품이 있다고 반박했습니다. 자동차를 설계하고 제작하는 사람들은 일반적으로 자신의 구성 요소를 매우 잘 알고 있지만 결국에는 결국 함께 일하게됩니다.

그렇다면 왜 자동차만큼 소프트웨어가 신뢰할 수 없습니까?


29
어느 차요? 일부는 다른 것보다 훨씬 안정적입니다.
Zoot

244
만약 상사가 와서 누군가가 자동차 조립을 거의 마치고 "오, 고객이 우리에게 제트 엔진을 부착하길 원한다면 며칠 안에 해줄 수 있을까요?" .
Adam Lear

28
소프트웨어는 신뢰할 수 있습니다. 그렇지 않은 대기업 소프트웨어 일뿐입니다. TV 충돌을 본 적이 있습니까? 나도 마찬가지야
zneak

19
자동차를 운전 하기 전에 운전을 배우 도록 강제하는 법이 있습니다 . 또한 학력이 부족한 학생들을 대상으로 운전을하는 방법에 대한 많은 코스가 있습니다. 컴퓨터를 사용하는 법을 배우는 데 필요한 그러한 프로그램은 없으며 , 따라서 교육 수준이 낮고 인구가 많을수록 규칙적으로 충돌하며 프로그래머에게 책임이 있습니다.
zzzzBov

14
소프트웨어와 자동차로 인한 부상 수를 비교하면 소프트웨어가 자동차보다 훨씬 안정적이라는 것을 알 수 있습니다.
mouviciel

답변:


183

귀하의 질문의 전제는 틀린 것입니다. 소프트웨어는 자동차보다 "신뢰할 수 없습니다". 있다 수십억에 따라 수십억 문제없이 끝 년 동안 거기 장치의 실행되는 임베디드 소프트웨어 연중 무휴은. 지옥, 그 중 일부는 에서 자동차 및 제어 / 엔진을 모니터링 할 수 있습니다. 그렇다면 자동차 자체가 소프트웨어에 의존하는 경우 어떻게 자동차보다 소프트웨어의 안정성이 떨어질 수 있습니까?


9
+1은 또한 소프트웨어가 될 수 있습니다 완벽 그것은 제공에 관한 것입니다 - 즉, 여기에 신뢰성의 개념이 다른 같은 기계 장치가 (결코 수 있지만, (수학적 의미에서) 신뢰할 수있는 실제적인 모든 일을하고 떨어져 휴식하지 않거나 것이라고 보장 언젠가 착용하십시오).
mlvljr

9
문제의 근본적인 결함을 지적한 +1
Gary Rowe

1
나는 우주에서 자동차를 본 적이 없다고
덧붙였다.

5
@Rei Miyasaka : 임베디드 소프트웨어의 복잡성을 과소 평가하지 마십시오. ;)
Mchl

3
@Matthieu M.-아폴로 루나 로버를 본 적이 없습니까?
JeffO

115

소프트웨어와 기계 부품을 디자인합니다.

복잡합니다.

현대 소프트웨어에는 수백만 개의 "부품"이 있기 때문입니다.

소프트웨어 부분은 매우 복잡하고 많은 상태가 있습니다. 기계식 비 이동 부품에는 상태가 없습니다.

기계적인 움직이는 부분은 그 위치를 가지고 있습니다 (하나의 변수).

실행 중이고 1Mb의 RAM을 사용하는 프로그램의 상태는 백만 바이트입니다. 그것은 일반적인 기계 시스템보다 훨씬 더 많은 상태입니다.

거의 발생하지 않으므로 테스트되지 않은 상태 조합이 있습니다. 자동차와 같은 기계 시스템에서는 작동 중에 기계 부품이 서로 부딪치지 않는지 쉽게 확인할 수 있습니다. 직장에서 사용하는 기계 CAD 소프트웨어가 자동으로 수행합니다.

보이지 않는 비접촉식 부품으로 기계를 제작하고 수백만 개의 움직이는 부품이 모두 빠진 경우 간단한 프로그램과 같습니다.

"hello world"조차도 운영 체제에서 실행됩니다. 구 8 비트 시스템과 미니 컴퓨터 운영 체제는 단순했기 때문에 매우 안정적이었습니다.

DLL 및 공유 라이브러리와 같은 것은 바이러스 업데이트 또는 소프트웨어 설치의 일부로 교체 된 후 관심있는 프로그램이 작동하지 않습니다. 자전거 타이어로 자동차 타이어를 교체하는 것과 비슷합니다. 라이브러리 함수의 일부 에지 상태가 방해합니다 (프로그램이 기대하는 방식으로 작동하지 않음).

Java와 같은 언어로 작성된 프로그램은 객체간에 설계되지 않은 많은 상호 작용 (포인터 재사용, 배열 범위 오버플로)을 허용하지 않는 프로그램은 일반적으로 일단 작동하게되면 상당히 안정적입니다.
정적 라이브러리와 함께 운영 체제를 사용하는 경우 프로그램이 작동하면 계속 작동하지만 상태 크기에 따라 여전히 많은 에지 조건이 있습니다.

Dave Parnas는 프로그램 상태를 더 작게 만들어 소프트웨어의 안정성을 얻는 것에 대해 씁니다. 엄격한 함수형 프로그래밍 담당자는 단일 정적 할당을 강제하여 동일한 작업을 수행합니다.


12
+1, 루프와 변수 대신 기어 등을 갖춘 "기계식 컴퓨터"를 상상해보십시오. 20-40 -... KLOC 프로그램을 "복사"하는 것이 얼마나 복잡하고 신뢰할 수 없습니까? 또한 작동하는 기계식 컴퓨터를 만드는 것이 거의 불가능한 이유를 기억하십시오.
mlvljr

3
내가 생각하는 바이러스 업데이트를 언급 한 + 1-그 이름을 가진 사람
Trinidad

1
그리고 소프트웨어 신뢰성과 관련하여 Parnas 씨를 언급하면 ​​아마도 그 자체로 찬성 투표를해야 할 것입니다.
mlvljr

6
거의 모든 인스턴스에서 아포스트로피 사용법을 혼합했습니다. 기계적인 움직이는 부분은 위치를 가지고 있습니다 ( "그것이 아닙니다"). 그것은의 복잡성 (안 "의"). DLL 과 같은 것 ( "DLL"이 아님). 또한보십시오 : english.stackexchange.com
Ashe

2
mlvljr : Charles Babbage와 그의 분석 엔진을 찾아보십시오. en.wikipedia.org/wiki/Analytical_engine
Mchl

56

소비자 선택의 문제입니다.

소비자가 내 기존 포드 매버릭 (Hod Maverick)과 달리 내 혼다 시빅 (Honda Civic)만큼 신뢰할 수있는 소프트웨어를 요구했다면 그럴 것이다. 일부 조직은 신뢰할 수있는 소프트웨어를 요구하며 일반적으로 임베디드 소프트웨어, 때로는 우주 임무 및 항공 교통 관제와 같은 안전에 중요한 것들을 위해 소프트웨어를 얻습니다. 이 소프트웨어는 여전히 완벽하지는 않지만 자동차도 아닙니다.

그러나 고객은 소프트웨어의 다른 품질을 요구하며, 대부분 기능이 떨어지고 확실히 비싸며 나중에 신뢰성이 높아 나중에 배송되는 소프트웨어에 대해서는 비용을 지불하지 않습니다.


4
이 답변에 +1-다른 답변도 중요 하지 않습니다 . 사람들이 있다면 걱정 소프트웨어 (아무리 즉) 자동차로 신뢰할 수있는 것에 대해 심하게 충분히, 그것은 것입니다 . 그러나 프로그램이 충돌하면 컴퓨터가 재부팅됩니다-자동차가 충돌하면 OTOH ...
Cyclops

@Cyclops 나는 동의하지만 사람들이 왜 자동차와 소프트웨어에 대해 다른 의견을 가지고 왔는지 생각해 볼 가치가 있다고 생각합니다. 그리고 주된 대답은 프로그램이 보통의 인간에게 유용 하기 위해서는 보통 자동차와 같은 유용한 기계 장치보다 훨씬 더 복잡해야한다는 것입니다. 다른 답변들 중 다수가이 문제를 해결합니다. 또한 소프트웨어 결함 의 위험 은 일반적으로 낮습니다.
j_random_hacker

2
@j_random_hacker : 사람들은 다른 복잡성으로 인해 신뢰성에 대해 다른 의견을 가지고있는 것을 보지 못합니다. 대부분의 사람들은 자동차 나 프로그램이 얼마나 복잡한 지 잘 모릅니다. 소프트웨어는 요즘 자동차보다 더 많은 문제를 가지고 있기 때문에 기대치가 다릅니다. 그들은 결과에 관심을 갖습니다. 자동차 고장은 원하지 않는 곳, 어디든 갈 수없는 곳을 해칠 가능성이 있으며 구제 비용이 많이 듭니다. 항상 불편하고 생명을 위협 할 수 있습니다. 대부분의 사람들에게 소프트웨어 실패는 일부 작업 손실을 의미합니다.
David Thornley

25

자동차를 구성하는 수천 개의 부품이 있습니다.

컴퓨터 (및 관련 소프트웨어) 만 그렇게 간단하다면.

컴퓨터에는 기가 바이트의 메모리가 있습니까? 수십억 개의 플립 플롭? 테라 바이트 디스크? "움직이는"부품 수조?

이 소프트웨어는 수만 또는 수십만 개의 개별 코드 라인을 실행할 수 있습니다. 또한 단위 테스트 및 도구에서 많은 (또는 그 이상).

아닙니다. "차도 복잡합니다"라는 주장은 이기적입니다. 소프트웨어는 자동차보다 훨씬 더 복잡합니다.


6
소프트웨어는 업무에 매우 능숙하고 평신도에게 간단하게 보이기 때문에 단순 해 보입니다.
Martin York

3
실제로 자동차는 너무 복잡합니다.
Mauricio

9
@Mauricio : 결코 복잡하지 않다고 말한 적이 없습니다. 요점은 소프트웨어가 자동차보다 몇 배나 더 복잡 할 수 있다는 것입니다.
S.Lott

4
소프트웨어는 자동차보다 더 복잡하지 않습니다. 자동차와 소프트웨어는 모두 사람들이 관리 할 수있는 것의 외부 한계에 도달 할 때까지 자연스럽게 복잡해집니다. 컴퓨터에는 수십억 개의 요소가있을 수 있지만 대부분은 이상적인 요소로 취급 될 수 있으며 유사하게 작동합니다. 이러한 고유 한 단순성은 소프트웨어가 매우 복잡하게 성장하는 이유입니다. 관리하기 어려울 때까지 성장합니다. 차량 구성 요소에는 다른 복잡성 요소가있는 반면, 마모, 부식, 온도 변동 등을 처리해야합니다. 둘 다 크기가 매우 복잡합니다.
whatsisname

3
소프트웨어를 사용하면 더 많은 소프트웨어를 계속 추가하는 것이 더 쉬우 며 더 많은 기계 구성 요소를 추가하는 것입니다. 둘 다 "유기적으로"성장하지만 소프트웨어는 훨씬 빠르게 성장하고 있습니다.
Jim C

20

연소 엔진을 작동시키는 원리와 자동차를 구성하는 모든 구성 요소는 지난 세기에 크게 바뀌지 않았습니다. 물론 혁신적인 개선과 하이브리드 자동차가 있었지만 기본 구성 요소는 동일합니다. 당신은 엔진, 드라이브 트레인 등을 가지고 있습니다. 심지어 컨셉 카와 초고가의 매우 빠른 부가티 베이론은 같은 기본 구조로 만들어졌습니다. 요컨대, 자동차 설계는 잘 알려진 문제 입니다.

소프트웨어 개발과는 대조적입니다.

  • 고객은 시작할 때 원하는 것을 모릅니다. 그들은 고급 제트기에 대해 이야기하기 시작하지만, 비용을 인식하면 발 구동 스쿠터 비용으로 제작하기를 원합니다.
  • 자동차 디자인은 아이디어에서 컨셉트 자동차에 이르기까지 몇 년이 걸리고 거기에서 제조하기까지는 몇 년이 걸립니다. 소프트웨어를 사용하여 마지막으로 럭셔리 한 시간은 언제입니까?
  • 자동차 부품은 금속 주물이지만 소프트웨어 구성 요소는 모양과 인터페이스를 자주 변경할 수 있습니다.
  • 제조 공정은 완전히 다릅니다. 자동차의 경우 조각은 대량으로 제조되며 동일한 조각이 다른 차량에 사용됩니다. 소프트웨어를 사용하면 거의 모든 것이 수작업으로 만들어집니다. 그렇지 않으면 물건이 맞지 않기 때문입니다.

간단히 말해서 자동차가 소프트웨어보다 "신뢰할 수있는"것으로 인식되는 데에는 여러 가지 이유가 있습니다. 방금 커플을 생각해 냈습니다.


6
제조시 수정 : 소프트웨어 제조는 사소합니다. 이것은 사람들이 프로그래밍의 일부 측면을 제조로 생각하는 반면 프로그래밍은 모두 디자인이라고 생각합니다. 모든 프로그램은 새로운 디자인입니다.
David Thornley

1
모든 프로그램은 새로운 (아직 입증되지 않은) 디자인이거나 신뢰할 수있는 디지털 라이브러리에서 기존의 입증 된 소프트웨어를 오류없이 다운로드합니다. 큰 이분법.
S.Lott

19

자동차는 신뢰할 수 있습니다. 대부분의 소프트웨어도 마찬가지입니다.

그러나 ... 맞춤형 자동차와 맞춤형 소프트웨어에는 모두 문제가 있습니다.

1970 년에 개조 한 머슬카, 땜장이, 개조를 해 본 적이 있고 고장이 났을 때, 그가 원래 그대로 두었을 때의 모든 종류의 어리석은 문제가있는 실제 자동차 애호가. 하지만 ... 그러면 과급기가 없을 것입니다 ...


3
nitpicking : 대부분의 (보이는) 소프트웨어는 맞춤형 소프트웨어입니다. 그러므로 인식 된 일반적인 불안정성 상태.
Javier

4
@Javier, 가장 눈에 띄는 소프트웨어는 사무용품 점에서 구입할 수 있거나 컴퓨터와 함께 제공되는 상용 제품이라고 생각합니다.
Marcie

1
@Javier : 사용자 정의 소프트웨어는 정의에 따르면 일반 대중이 아닌 특정 대상을 위해 설계 / 제작되었습니다.
Steven Evers

@Marcie : 창문, 사무실 및 포토샵이 어디에 있더라도 모든 비즈니스에는 고유 한 사용자 정의 회계 및 프로세스 시스템이 있습니다. 또한 워드 프레스가 아닌 경우 모든 웹 사이트를 생각하십시오.
Javier

3
@Javier, 모든 사업이 아닙니다. 많은 사람들이 기성품을 사용합니다.
Marcie

16

운전하는 자동차는 여러 번 제작되었으므로 시공 과정이 매우 정교 해 생산 라인에서 동일한 자동차를 반복해서 만들 수 있습니다.

예를 들어 처음부터 처음부터 제작 된 복잡한 복합 최첨단 자동차라면 믿을 수 없을 정도로 가까울 것입니다. 경주마다 한두 가지가 고장 나는 것이 일반적입니다.

새로운 소프트웨어는 항상 일회용입니다. 프로그래머의 코드는 이전에 코딩 된 적이 없습니다. 이 시나리오에서 실제로 높은 품질을 얻으려면 대부분의 제품에 대해 막대한 비용이 소요됩니다. 모든 사소한 새 소프트웨어는 사실상 프로토 타입입니다.

게다가, 이것은 전통적인 엔지니어링 기술을 소프트웨어 엔지니어링에 적용하는 것이 재난 인 주된 이유 중 하나입니다.


1
+1 자동차를 만드는 것은 소프트웨어 프로그램을 만드는 것과 다릅니다. 자동차를 만드는 것은 소프트웨어 프로그램 을 실행 하는 것과 같습니다 . 자동차를 설계하고 지정하는 것은 소프트웨어 프로그램을 만드는 것과 같습니다. 그리고 자동차 디자인 중에는 소프트웨어와 마찬가지로 문제가 많이 발생합니다.
RationalGeek

1
저는이 진술에 동의하지 않습니다. "제쳐두고, 이것이 전통적인 엔지니어링 기술을 소프트웨어 엔지니어링에 적용하는 것이 재앙이되는 주된 이유 중 하나입니다." 소프트웨어 개발에는 엔지니어링 원칙이 포함됩니다. 재사용 가능한 구성 요소, 구성, 스트레스 테스트, 빌딩 블록 등
Philluminati

13
  1. 자동차 제조업체는 "최종"제품을 생산하기 전에 전체 사양을 정리합니다.
  2. 자동차 사용자는 설계자가 기대하지 않은 어리석은 행동을하지 않습니다.
  3. 자동차는 1 년에 한 번 (일반적으로) "업데이트"되지만 대부분의 소프트웨어는 1 년에 여러 번 업데이트됩니다.

계속할 수는 있지만 브라우저가 충돌하는 느낌이 듭니다 ...


3
자동차 사용자는 디자이너가 기대하지 않은 것을 포함하여 많은 어리석은 일을합니다. 즉, 입력이 매우 제한되어 있으며 운전 중 신문을 읽는 것과는 다른 운전 중 아이 라이너를 착용 할 때 예상되는 특정 결과가 없습니다.
David Thornley

10
@David Thornley : 사람들이 자동차가 컴퓨터처럼 작동 할 것으로 예상한다면 ... "운전 중에 신문을 읽고 있는데 전조등이 더 이상 작동하지 않습니다. 안전 벨트는 저를 잘 보호했지만 헤드 라이트를 보호하지는 못했습니다 ... ";)
Guffa


1
@robertc 당신은 그런 수준의 어리 석음으로도 디자인 할 수 없습니다 ...
Glen Solsberry

10

실제로 매우 간단한 이유가 있습니다.

돈을 버는 소프트웨어는 시장 점유율을 높이는 소프트웨어입니다. 소프트웨어를 시장에 가장 먼저 제공하는 회사는 소프트웨어가 특정 시장에서 최고의 제품이 아니더라도 대부분의 시장 점유율을 차지하는 회사 일 것입니다.

결과적으로 소프트웨어는 나중에 완벽하지 않고보다 신속하고 불완전하게 릴리스하는 데 중점을 둡니다.


2
이것은 '최상의'사람이 그다지 나아지지 않은 경우에만 작동합니다. 그들이 훨씬 나아지면, 애플이 늦게 늦게 와서 구식 기술로오고, "그냥 제대로했기 때문에"여전히 필드를 깜짝 놀라게하는 상황에서 애플과 함께 무슨 일이 일어나고 있는지 알게된다.
Robert Massaioli

@ 로버트 : 애플은 완벽한 엔드-투-엔드 솔루션 (아이튠즈 스토어)이며, 그들의 기술이 구식이라고 동의하지 않습니다. 그것이 아니라면, 우리는 여전히 그 엉터리 슬라이더 폰을 사용하고있을 것입니다.
Robert Harvey

5

나는 지금까지 대부분의 답변을 좋아합니다. 여기 내 스핀이 있습니다.

실패 비용은 소프트웨어보다 자동차의 경우 더 심합니다

자동차 고장은 잠재적으로 생명을 소비 할 수 있습니다. 생명을 위협하는 차량 고장조차도 사용자에게는 매우 눈에 띄는 불편 함을 나타냅니다. 소프트웨어 실패는 생산 지원의 부족한 수액이 초과 근무를해야한다는 것을 의미합니다. 그리고 그 사람이 정규직 면제 직원이라면, 그다지 비싸지 않습니다. 실제로, 초과 근무가 시간당 인건비를 실제로 낮추기 때문에 품질이 낮고 관리 수준이 낮 으면 보상을받습니다!

물론 이것은 사용되는 소프트웨어의 종류에 달려 있지만 (소프트웨어 구동 무기 시스템, 항공 전자 공학 또는 의료 시스템은 생명에 영향을 줄 수 있음), 자동차에는 많은 돈이 들며 정기적으로 사용되어 신뢰성이 떨어집니다. 상당히 유형적이고 고통 스럽습니다. 소프트웨어 오류에는 종종 해결 방법이 있습니다.

또 다른 생각 : 자동차는 신뢰할 수있는 것처럼 보이지만, 자동차가 제대로 기능하고 있어도 문화적으로는 유지 보수 비용이 계속 발생하고 있으며, 이는 차량에 관심이있는 사람들이 받아들이고 심지어 자부심있는 지출이기도합니다. 반면에 소프트웨어는 설치시 이미 고장이 났으며 시간이 지남에 따라 변경되어야하는 경우도 있지만 문화적으로는 유지 보수 비용을 지불하기를 원하지 않습니다.


4

글쎄, 자동차는 대부분의 역사에서 신뢰할 수 없었으며 학습 곡선이 분명히 있습니다. 자동차는 약 60 년 동안 대규모로 생산 된 반면 소프트웨어는 약 20-25 년 동안 대규모로만 생산되었습니다. 대규모로, 나는 기본적으로 대중이 그것을 사거나 사용하기에 충분히 큰 것을 의미하며 그것을 만드는 절차를 완벽하게하는 방법을 알아내는 것은 정말로 큰 동기가 있습니다.


4

저는 자동차를 응용 프로그램으로 생각하고 싶습니다. OS는 응용 프로그램이 실행되는 길입니다.

도로와 자동차 사이의 인터페이스가 잘 정의되어 있습니다. 잘 테스트되었으며 이전 버전과의 호환성을 광범위하게 검사합니다 (인터페이스가 간단하기 때문에 쉬움). 그러나 심지어 이전 버전과의 호환성 문제가 있습니다. "Farrie"유형의 차량은 "mud road"유형의 도로에서 운행하기가 어렵습니다.

도로와 마찬가지로 OS도 지속적인 유지 보수가 필요합니다. 교량은 사라져 버립니다. 자동차는 스노우 체인을 착용하고 응용 프로그램이 손상되어 OS가 사용하는 디스크와 파일을 손상시키는 등의 길을 찢습니다.

하나의 OS에서 응용 프로그램이 작성됩니다. 그러나 일반적으로 서로 다른 버전의 OS (다른 유형의 도로)를 실행해야합니다. 따라서 저녁 식사에 최적화 된 앱은 올바른 OS (고속도로)에서 실행되는 한 문제없이 원활하게 실행될 수 있지만 다른 범용 코드는 모든 유형의 도로에서 잘 작동합니다.

응용 프로그램과 OS 사이의 인터페이스는 정의되어 있지만 지나치게 복잡하며 항상 약간 변동합니다. 특히 사용자가 확장 기능을 사용하여 자신의 OS를 수정할 수 있기 때문에. 정부가 사용자가 도로를 수정하도록 허용하면 더 많은 충돌이 발생합니다.

사용자가 OS를 수정하는 기능을 제한하기 시작하면 응용 프로그램의 안정성이 거의 확실해집니다. 모든 내장 장치를보십시오. 우리는 자신의 OS 근처에있는 사용자가 중단없이 24 시간 지속적으로 잘 실행되도록 허용하지 않습니다.

그래서 나는 그것이 신뢰할 수없는 소프트웨어가 아니라고 말할 것입니다. 사용자가 애플리케이션을 위해 고속도로에서 구멍을 파고 있다고 말하는 것과 더 비슷합니다. 작년에 내가 파낸 구멍에 응용 프로그램이 충돌하여 잊어 버렸습니다 .


+1 아주 좋은 비유와 내가 쓰고 싶었던 줄에 완전히 (그러나 이것을 읽은 후에는 안 됨)
Joris Meys

3

첫째, 사용자는이 세상에 소프트웨어가 존재한다는 사실조차 알지 못할 정도로 신뢰할 수있는 소프트웨어가 있다는 것을 알아야합니다. TV 충돌을 본 적이 있습니까? 나도

소프트웨어가 중요하지 않다는 것이 주된 이유라고 생각합니다. 중요하지 않다는 것은 비 개발자가 진행 상황을 볼 수 없다는 것을 의미합니다. 예를 들어, 내가 차를 만들고 있다면, 다른 부분을 조립하는 것을 볼 수 있으며 점점 더 차처럼 보일 것입니다. 그러나 프로그래밍을 살펴보면 녹색 텍스트가 이상한 패턴으로 검은 화면에서 저주를 보내고 갑자기 패턴이 조금 변경되면 과도하게 흥분 할 것입니다.

그로 인해 일반 사람들은 소프트웨어의 복잡성을 깨닫지 못합니다. 그들은 창을 볼 때 프로그램 전체를 본다고 생각합니다.

또한 소프트웨어는 자동차보다 훨씬 더 자주 맞춤화됩니다. 자동차를 커스터마이즈 할 때, 그 디자인은 눈에 띄게 어리석기 때문에 디자인에 반대하지 않을 것입니다. 내 엔진이 차 앞쪽에 있으면 뒤쪽으로 옮기면 큰 재앙이 될 것입니다. 그러나 소프트웨어는 중요하지 않기 때문에 클라이언트가 디자인에 대해 완전히 무언가를 요구하면 소프트웨어는 그들이하는 일이 어리 석다는 것을 알 수 없습니다 (귀하를 제외하고는 듣지 않을 것입니다). 모든 것이 예상대로 작동하지 않는다는 것에 놀랐습니다.


내 TV가 항상 충돌합니다. (디지털 일이 일어났다)
tp1

3
  1. 정보 공유 부족 (프로그래머는 혼자 또는 소규모 그룹으로 비행-자동차 설계자는 대기업 내부의 상호 연결된 팀과 협력하고 모두 지식을 공유합니다. 우리 모두가 대기업을 위해 일했다면 학습으로 인해 더 나은 프로그래머가 될 것입니다 오픈 소스 프로그램 및 온라인 리소스와 같은 것들이 매우 중요한 이유이기도합니다.)
  2. 현장 참가자의 기대 (자동차 디자이너가 처음 5-10 년 동안 소용이 없지만 프로그래머가 인터뷰에 참여하여 5-10 년 동안 많이 사용하지 않을 것이라고 말하면 괜찮습니다. 인터뷰가 끝났습니다)
  3. 침투 테스트 부족 (자금 부족, 합법성 문제 등으로 인해; 자동차 제조업 자, 그러나 벽돌 벽에 차를 탄 후 슬램 카는 풍동, 비교적 간단한 성능 요구 사항 등)
  4. 정보 투명성 (대부분의 소프트웨어 작동 방식을 모르는 경우, 인터뷰, 보도 자료, 광고 등을 기반으로 추측하거나 추측하지만 자동차를 사용하면 대부분의 항목을 볼 수 있습니다)
  5. 고유 한 지식 캡슐화 (프레임을 함께 용접하는 사람 / 로봇은 안정성 제어 시스템 뒤의 수학을 알 필요가 없습니다. 프로그래머는 보통 사람에게 알려지지 않은 수천 또는 수만 가지에 대한 지식이 있어야하지만 자동차 설계자 만 수백 또는 수천을 알아야 함)
  6. 유형 성 (볼 때 도움이 됨)
  7. Age of Field (차량 설계는 수천 년이되었으며, 차량 설계는 250 년 이상 (스팀 엔진 등) 이상)
  8. 서브 시스템의 중요도 (파워 록, 파워 윈도우, HVAC, 윈드 실드 와이퍼, 깨진 창문, 분실 된 허브 캡, 플랫 타이어 (새 타이어에 장착), 라디오, 표시등이 두 개, 원격 입력 등 컴퓨터의 무언가가 고장 나면 종종 SHTF 시나리오)
  9. 상호 의존성 (한 대의 컴퓨터가 고장 나더라도 수백 또는 수천 대의 다른 컴퓨터에 영향을주는 경우는 드물지 않습니다. 하나의 차가 고장 났을 때 다른 차가 영향을받는 경우는 거의 없습니다. 다른 차가 영향을받는 경우 거의 항상 1 -삼)
  10. 담요 비난 (컴퓨터의 한 부분 또는 수천 대 중 한 대의 컴퓨터가 고장 나거나 시스템을 손상시키는 경우, 비난은 전체 컴퓨터 또는 후자의 경우 전체 컴퓨터 네트워크로 확장됩니다. 브레이크가 고장 나거나 자동차가 멈추고 고속도로에서 다시 시작하지 않으면 개별 자동차 부품 만 비난받습니다.)
  11. 유한 시스템 대 무한 시스템 (자동차는 너무 많이 포장 할 수 있으며 제한된 조건에서만 작동 할 것으로 예상됩니다. 예를 들어 지프와 같은 차량 만 할 수있는 지형에서 BMW를 운전하지 않습니다. 그러나 가능성은 사실상 무한합니다. 항상 새로운 것들, 새로운 API, 새로운 OS, 새로운 보안 허점, iPad, 휴대 전화 소프트웨어, 새로운 것, 새로운 것 등)
  12. 필요한 지식의 범위 (130-140 IQ를 가진 사람은 자동차에 대해 알아야 할 거의 모든 것을 배울 수 있지만 컴퓨터와 프로그래밍에 대해 알아야 할 것의 일부만 배울 수 있음)

3

전체 논리에 결함이있는 간단한 이유는 다음과 같습니다.

기계 장치를 간단히 입 / 출력으로 줄일 수 있습니다 . 이 I / O 작업을 수행하기 위해 부품 수를 늘리더라도 I / O 작업은 변경되지 않습니다. 따라서 시스템을 완전히 이해할 수 있습니다.

반면에 소프트웨어에는 입력-> 프로세스-> 출력이 있습니다. 이러한 특성으로 인해 시스템을 완전히 예측하거나 이해할 수 없습니다.

도널드 럼스펠트가 가장 잘 말했습니다.

“알려진 것이있다. 우리가 아는 것이 있습니다. 우리는 또한 알려진 미지가 있다는 것을 알고있다. 즉, 우리가 모르는 것이 있다는 것을 알고 있습니다. 그러나 우리가 모르는 미지의 미지도 있습니다. — 도널드 럼즈펠드 미국 국방 장관

요약하자면:

  • 기계 장치는 알려져 있고 알려지지 않은
  • 소프트웨어에는 위의 사항도 있지만 알려지지 않은 사항이 있습니다.

1
D. Rumsfeld를 인용하면 +1입니다. 언론은 그를 좋아하지 않았지만 그 사람은 천재입니다.
oosterwal

3

이것은 바보 같은 질문입니다 (당신이 아니라 원래 사람의).

이것은 컴퓨터를 미워하면서도 하루 종일 eBay를 쓰는 아버지 (기계공)처럼 들립니다.

"왜 나무가 나방보다 더 신뢰할 수 있는가?"라고 묻는 것과 같습니다.

우선, 나는 30 대 (예, 30 대 이상)의 컴퓨터를 소유하고 있으며 그 중 하나는 상점에 없었습니다. 방금 수리를 위해 차에 1400 달러를 썼습니다. 컴퓨터 수리 대 자동차 수리점의 수를 세십시오. 다시 한번, 어리석은 비유입니다.

자동차는 강철, 컴퓨터 플라스틱으로 만들어집니다. 자동차는 모든 기상 조건, 실 내용으로 설계된 컴퓨터에서 작동합니다.

Commodore 64 (26 세)는 완벽하게 작동하며 수리가 없었습니다. 내 차량 (10 세 미만) 모두 매우 광범위한 수리를 받았습니다. 26 세인 수천, 수천 시간의 사용 시간을 가진 자동차를 공장에서 새로 구입했을 때와 동일한 수준으로 100 % 가동하는 것을 보여주십시오.


2

소프트웨어는 비트 0과 1을 기반으로합니다. 자동차는 대부분 기계 부품을 기반으로합니다.

기계 부품은 마모되거나 오작동 할 수 있으며 여전히 일종의 작업 일 수 있습니다. 브레이크가 마모되거나 밸브가 새는 경우가 있지만 자동차를 수리 할 때까지 자동차는 여전히 대부분 작동합니다.

소프트웨어에는 대부분 점진적인 실패와 같은 것이 없습니다. 작동하거나 작동하지 않습니다. 0으로 나누는 것은 "거의"정확하지 않습니다. 오류 일뿐입니다. 충분한 공간이없는 드라이브에 저장하려고하면 모든 데이터를 강제로 넣을 수 없습니다. 그냥 가지 않을 것입니다.

소프트웨어가 자동차보다 신뢰성이 떨어지는 것은 아니라고 생각하지만 소프트웨어가 실패하면 점차적으로 실패하지는 않습니다.


1

나는 훨씬 더 나은 비유를 가지고 있다고 생각합니다. 구급차를 만드는 회사를 고객 사양에 따라 가져 가십시오. 기본 플랫폼 (예 : 완전 작동 및 거리 법적 RV 컷 어웨이 섀시)은 프레임, 충전 시스템, 필러 스파우트, 서스펜션 등 여러 지점에서 수정이 필요합니다. 이러한 수정은 거리 법적 일뿐 아니라 관할 요건을 충족해야합니다. 고객의 요구를 만족시키는 동시에

그런 다음 구급차 기관 자체를 구축해야하며, 정부 및 기타 기관의 여러 계층의 규제 요구 사항도 있습니다. 여전히 펑키 한 좌석 배치 또는 보관 시스템에 대한 고객의 요구를 만족시키면서. 또한 전 세계에서 수백 명의 다른 고객이 각기 다른 구매 및 배포 일정을 가지고 있다는 사실을 잊지 마십시오. 종종 전체를 완전히 재 설계해야합니다.

차? 사소한 일입니다. 당신은 내장 된 것을 구매할 것이며 디자인의 어떤 측면에도 직접적인 영향을 미치지 않습니다. 실제로 엔지니어링 및 테스트되지 않은 것을 실제로 지정할 수 없기 때문에 선택한 색상조차 인공적인 것입니다. 어떤 의미에서는 '고객'이 아닌 '시장'만 있습니다. 일부 시장에서 생산 된 상용 소프트웨어는 일반적으로 현지 대리점에서 픽업 한 자동차만큼 신뢰할 만하다고 주장합니다.


1

자동차는 실제로 생각만큼 신뢰할 수 없습니다. 단지 모든 것이 실패하지 않고 결함이 오랫동안 숨겨져 있거나 무시 될 수 있습니다. 자동차 누유 나 냉각수? 아니? 확실합니까? 당신은 아마 틀렸을 것입니다. 아마 당신이 아직 눈치 채지 못했던 아주 적은 양의 누출 일 것입니다 ... 이제 서스펜션, 바디 패널, 인테리어 등으로 확장하십시오. 그러나 내가 잘못 찾을 수없는 차를 만났다. 그러나 대부분의 부품은 운송 임무에 불필요합니다. 컴퓨터에서는 그렇지 않습니다. 컴퓨터의 거의 모든 부분이 중요합니다.

그것은 오래된 아날로그 대 디지털 토론이며 방금 재 포장되었습니다. 모든 것이 완벽하다면 디지털 TV는 훌륭합니다. 즉시 문제가 발생하면 오디오가 끊기고 비디오가 차단되어 쓸모가 없게됩니다. 쉽게 무시할 수있는 약간의 히스 또는 정적을 얻는 아날로그 TV와 비교하십시오.


1

물론 일부 sw는 완벽하게 신뢰할 수 있으며 자동차, 특히 영국 및 이탈리아 자동차는 반드시 그렇게 신뢰할 만하지는 않습니다.

그것은 자동차 소프트웨어 작업에 대한 나의 경험은 두 가지로 귀결된다는 것입니다.

  • 보증 비용. sw가 실패하면 다시 시작하십시오. 아마도 당신은 버그 보고서를 제출할 것입니다. 또는 고가의 지원 계약을 사용하십시오. 차가 고장 나면 차를 가져와 보증에 따라 수리하도록 요구합니다. 이로 인해 제조업체는 $ 100 이상을 지불해야합니다. 각 sw 실패가 제조업체에 2 달러의 비용을 지불하면 sw가 더 안정적 일 것이라고 확신합니다.

  • JD Powers (및 기타 품질 순위). JD Powers는 ThingsGoneWrong을 조사합니다. 그리고 그 순위가 실제로 나쁘면 사람들은 단순히 차를 사지 않을 것입니다. 적어도 돈을 벌어서 수익을 내지 못할 것입니다. 우리가 sw를위한 JD Powers를 가지고 있고 사람들이 그것을 정말로 염려한다면, sw가 더 신뢰할 수있을 것이라고 확신합니다.

따라서 신뢰할 수없는 자동차를 만들면 보증 비용이 빨리 모든 이익을 먹어 버릴 것이며 몇 년 안에 나쁜 품질 순위로 인해 자동차를 전혀 팔지 않을 것입니다. 신뢰할 수없는 소프트웨어를 만들면 사용자가 불만을 제기하고 비싼 지원 계약을 판매하게됩니다.


1

자동차의 신뢰성과 안전이 요구됩니다. 많은 (대부분의) 국가에서는 법에 따라 최소한의 안정성과 안전성을 요구하며 최악의 시나리오 (무엇이든)에 대해 테스트를받습니다. 상용 소프트웨어는 대부분 그렇지 않습니다.

소프트웨어에 대한 다른 법적 영향이 있지만 "저장"버튼을 누를 때마다 소프트웨어가 충돌하는 경우 이는 단순히 패치 / 수정의 문제이므로 계속 진행해야합니다. 표시기를 켤 때마다 자동차가 고장 나면 훨씬 더 나쁩니다 . SUV가 예기치 않게 중단되지 않고 실행되는 것처럼 Microsoft Outlook이 예기치 않게 중단되지 않고 실행되는 것은 그리 중요하지 않습니다.

즉, 자동차의 역학보다 더 많은 책임을 가진 다른 소프트웨어가 있습니다. 비행기와 미사일 유도 시스템은 신뢰할 수 있어야합니다. 위기에 처한 삶이 있습니다! 이것들은 일반 자동차보다 더 엄격하게 테스트되기를 바랍니다.


1

자동차 산업은 테스트를 위해 "베타"자동차를 대중에게 공개하지 않고 자동차 산업은 제품을 제공하는 환경에 대해 걱정할 필요가 없지만 다른 많은 것에 대해 걱정할 필요가 있습니다. 소프트웨어 산업은 처음부터 근본적으로 다르기 때문에 (우리 모두 알고 있듯이) 신뢰성과 복잡성은 실제로 암시합니다. 제 생각에는 소프트웨어보다 복잡한 자동차이지만 그 이후로 무엇이 작동하는지 쉽게 볼 수 있습니다

  • 자동차의 바닥에는 가상이 아니지만 테스트하기가 쉽지만 더 비쌉니다.
  • 그들은 소프트웨어 산업보다 훨씬 일찍 시작했습니다. 비록 적은 수의 사람들이더라도 모은 연습과 지식을 최소화 할 수는 없습니다. 소프트웨어 산업은 여전히 ​​비교적입니다.
  • 모든 자동차 산업은 법률과 윤리에 구속되어 있으며 특히 지난 수십 년간 운전자를 죽이는 자동차를 만들지 않아야합니다.

따라서 소프트웨어는 자동차보다 신뢰성이 낮으며 많은 종류의 소프트웨어에는 사실이며 다른 영역 (보안, 항공 ...)에는 완전히 잘못 될 수 있다는 진술은 소프트웨어가 가장 신뢰할 수있는 것보다 적어도 가장 신뢰할 수 있음을 확신 할 수 있습니다 그 지역의 자동차. 그 분야가 중요하기 때문에 내가 그 분야에서만 알고있는 것만으로 자동차 산업과 비교할 수 있습니다.

이것은 우리를 이끈다 : 대부분의 소프트웨어는 그들의 도메인에서 중요하지 않은 것으로 간주된다. 그러한 것으로 간주 될 때 신뢰할 수있는 소프트웨어가있는 것입니다. 소프트웨어에서가 아니라 환경과 관련된 문제 (따라서 제어 할 수 있다면 사실상 아무런 문제가 없을 것입니다)만이 문제입니다. 그러나 대부분의 소프트웨어 편집기는 이러한 중요한 영역에서 작동하지 않습니다. 물론 특정 수준의 품질을 제공해야하지만 가능한 한 빨리 소프트웨어를 제공해야합니다. 그러나 좋은 소프트웨어를 위해서는 좋은 프로젝트 관리, 견고한 사양, 좋은 디자인 및 숙련 된 기술 수준이 필요합니다 (다시 시작해야 함). 그것은 단지 그것을 만들기위한 것일뿐입니다.

이 모든 것은 시간이 걸리므로 돈이 필요합니다. 나는 당신이 당신이 적은 것을 위해 투자 하는 것을 생산 하는 대부분의 시간에 대해 당신이 지불하는 것을 얻는다는 것을 말하는 것이 아닙니다 . .


1

나는 차가 덜 복잡하다고 생각하지 않습니다. 그러나 그러한 경우에도 소프트웨어의 안정성이 떨어질 것이라고 생각하지 않습니다. 그러나 소프트웨어의 신뢰성에 불일치가 발생하는 더 중요한 요소가 있다고 생각합니다.

  1. 소프트웨어와 관련된 추상화 . 이로 인해 소프트웨어 제작자는 실제로 작동하는 방식을 오해하게됩니다. 시간이 지남에 따라 점점 더 많은 추상화가 추가됩니다. 예를 들어, 어셈블리 언어를 사용하면 기계를 직접 제어 할 수 있습니다. C는 더 추상화되었지만 여전히 기계에 가깝습니다. Java, C # 및 다음에 올 내용은 머신에서 발생하는 상황을 크게 추상화하고 있습니다. 또 다른 예는 소프트웨어 레벨에서 네트워킹이 발생하는 방식을 이해하려는 프로그래머 인 경우 인프라 (소프트웨어)가 C로 작성되므로 C로 프로그래밍해야합니다.

  2. 다른 경험제조업체에 대한 지식은 다른 결과로 이어집니다. 다른 개발자는 다른 안정성을 가진 소프트웨어를 만듭니다. 자동차 제조업체에 대해서도 마찬가지입니다. 그러나 차이점은 편집기와 컴파일러를 사용하거나 IDE (Integrated Development Environment)를 간단히 설치할 수있는 사람이라면 누구나 소프트웨어를 무료로 만들 수 있다는 것입니다. 자동차를 만들려면 거대한 투자, 공장이 필요합니다 (일부는 자동차를 사용하지 않고 자동차를 만들 수는 있지만 어디에서나 찾을 수는 없습니다). 막대한 투자를해야한다는 사실은 현장에서 최고를 고용하려한다는 것을 의미합니다. 그러나 자동차에는 여전히 신뢰성 문제가 있습니다. 당신이 그것을 알고 있다면, 수백만의 자동차가 심각한 버그에 대한 시장에서 철수되고 있습니다. 내 차에서 제조업체는 같은 해에 구입 한 모든 자동차에 대해 브레이크 클리퍼를 무료로 교체합니다.

  3. 소프트웨어의 버그는 일반적으로 자동차보다 사용자에게 더 많이 나타납니다. 이는 사용자와 소프트웨어 간의 상호 작용 및 응답의 결과입니다. 자동차에서는 "가스 페달을 밟을 때 자동차가 가속하고 있습니다", 브레이크, 터닝, 라이트, 미러 등과 같은 세부 사항에주의를 기울이지 않습니다. 소프트웨어에서는 모든 사용자 클릭 / 입력에 일반적으로 응답. 따라서 소프트웨어에 버그가있을 수있는 많은 지점이 있으며 사용자는이를 즉시 알 수 있습니다. 이를 통해 사용자는 자동차보다 신뢰성이 떨어진다고 생각합니다.

  4. 해킹 및 공격 . 소프트웨어가 더 널리 사용 될수록 해킹 공격의 비율이 높아집니다. 이것을 자동차 도난과 비교할 수 있습니다. 나에게도 자동차 소유자가 아닌 다른 사람이 자동차를 열 수있을 때 자동차의 신뢰성이 떨어집니다. 그러나 공격자가 보이지 않기 때문에 자동차보다 소프트웨어를 공격하는 것이 더 쉽습니다. 따라서 소프트웨어가 손상되면 사람들은 소프트웨어의 용도가 신뢰할 만하더라도 신뢰할 수 없다고 생각합니다.


0

그것은 다른 모든 것과 같습니다 ... 그것이 작동 할 때 걱정하지 마십시오 ... 그것이 파산했을 때 (또는 원하는 / 예상대로 작동하지 않을 때) 당신이 돌보는 것입니다.

비행기를 생각하십시오. 많은 사람들이 납치 또는 폭파하려는 사람들에 대해 걱정하고 있습니다. 그러나 실제로 부정적인 사건의 수는 매일 비행 횟수에 비해 적습니다. (하루에 더 많은 비행기가 도용 당하거나 폭격 당했다. 도대체 도용 당하거나 폭격을 시도했다.)

모든 것이 당신의 모습과 측정 방법에 있습니다.


0

실제로는 매우 간단합니다. 자동차는 오래된 기술입니다. 요즘에는 종소리와 휘파람 소리가 있지만 (초보자) 초기 자동차를 보면 많이 파산했습니다 .

자동차의 기계 부품 뒤에있는 '기술'은 수백 년 동안 사용되어 왔으며 내연 기관도 오랫동안 사용되어 왔으며, 도입되었을 때 많은 문제가있었습니다.

일부 관리 플랫폼에서는 메모리 문제가 거의 과거의 일이라고 생각하십시오. 몇 백 년 동안 소프트웨어를 제공하면 우리는 그것을 무너 뜨릴 것입니다. 사실, 소프트웨어의 복잡성을 고려할 때, 우리가 앞서고 있다고 생각합니다.


0

현대 자동차는 소프트웨어에 의존합니다. 예를 들어 엔진 컴퓨터 고장과 같은 현대 자동차가 고장 나면 일반적으로 (항상 그런 것은 아니지만 일반적으로) 전자 장치가 아닌 S / W가 아닙니다.

고가의 고장이 발생하기 전에 ECU가 장착 된 현대 자동차 소유자에게 문의하십시오. 당신이 10 년을 얻는다면 나는 기절 할 것입니다. 전자 장치와 센서로 가득 찬 현대 자동차는 놀라 울 정도로 신뢰할 수 없습니다.

신뢰성 이론을 연구하면 그 답은 맹목적으로 명백해진다. 모든 기계식 (예상 소프트웨어)은 정상 상태 신뢰성을 가지고 있으며 이는 영아 사망률 및 마모 영역 외부의 고장률입니다. 최종 품목의 고장률은 부품 고장률의 합입니다. 더 많은 부품 추가 : 총 고장률이 더 높아집니다. 문제는 모든 구성 요소의 고장률을 실제로 낮추는 것입니다.

타이밍 벨트 및 실린더 마모 및 산소 센서가 쓰레기로 가득 차고 커넥터가 옴으로 이동하고 진동으로 인해 와이어가 파손되는 경우 고장률을 줄이는 데 사용할 수있는 기술이 있습니다. 이렇게하면 비용도 올라갑니다.

반면에 소프트웨어는 일정한 실패율을 가지고 있습니다. 때때로 결함을 찾기가 어렵지만 결국 모든 소프트웨어는 소시지 기계입니다. 입력-> 작업 수행-> 출력. 때때로 입력 순서와 입력 조합으로 인해 감지 가능한 모드가 실패합니다. 그런 일이 발생하면 결함을 발견하고 수정 한 다음 계속 진행합니다.

(알려진) 결함이없는 소프트웨어는 사실상 실패율이 0입니다. 실패없이 영원히 실행될 것입니다. (실패 사이의 평균 시간 = 1 / 실패 비율). 하드웨어 플랫폼이 먼저 실패합니다.

결함이있는 소프트웨어는 시간이 지남에 따라 올바른 입력 조건 조합으로 결함이 나타날 때까지만 실행될 수 있습니다.

이 모든 것의 결점은 물리적 인 것 (마모, IC의 금속 이동, 물의 유입, 진동 등으로 인한)의 고장률을 본질적으로 유한 상태 기계의 고장률과 정확하게 비교하려고 시도하고 비교하는 것입니다. 명령 순서에 따라 수행 할 작업

(RAM에서 비트를 뒤집는 알파-입자와 같은 것들은 소프트웨어 결함이 아니라 물리적 현상이다. 그러나 이러한 균등 한 처리 방법은 소프트웨어 결함 일 수도 있지만, 불쾌한 알파 입자는 소프트웨어에 대한 또 다른 입력일 뿐이라는 것을 기억하십시오. )


0

소프트웨어와 자동차의 차이점은 소프트웨어 개발자가 온전함을 유지하려면 소프트웨어의 모든 사용자가 소프트웨어의 정확한 복제본을 구동해야하며 자동차 제조업체가 온전함을 유지하려면 모든 사용자가 운전한다는 사실을 수용해야한다는 것입니다 자동차를 운전하는 방식이 자동차를 변화시키기 때문에 크게 다른 차가 있지만 소프트웨어를 사용하는 방식이 소프트웨어를 반드시 변경하는 것은 아닙니다.

반면에

소프트웨어에서 오일을 점검 할 수있는 방법이 있다면 언제 실패 할 것인지 알 것입니다.

소프트웨어에서 오일을 교환 할 수있는 방법이 있다면 아마도 수명을 몇 개월 연장 할 수있을 것입니다.

그리고 무의미하게 비유를 확장하려면 :

패치는 오일을 바꾸지 않고 새는 개스킷을 교체합니다.

업데이트는 오일을 바꾸지 않고 브레이크를 고정시킵니다.

릴리스는 오일을 바꾸지 않고 열쇠가없는 점화 장치를 추가하는 것과 같습니다.


0

고장난 자동차는 견딜 수 없습니다. 또한 생명을 위험에 빠뜨릴 수 있습니다. 고장이 발생한 소프트웨어는 허용되며 사용자는이 문제를 해결하거나 수락합니다. 버그가없는 소프트웨어에 대한 수요는 많지 않습니다.

또한 소프트웨어는 사용자 정의되는 경향이 있으며, 자동차의 10000000 가지 모델이 없습니다. 나는 wikimedia가 신뢰할 수 있고 많은 ppl이 그 소프트웨어를 사용한다고 말합니다. 따라서 많은 사람들이 버그가 없거나 안정적인 소프트웨어를 사용한다고 말할 수 있습니다. (워드 프레스, 다양한 소스 제어, mysql 및 sqlite는 매우 안정적입니다.)


1
실패하면 생명을 위험에 빠뜨리는 소프트웨어가 많이 있습니다.
Adam Lear

@Anna Lear : 네,하지만 그는 '일반적인 소프트웨어'에 대해 이야기하고 있습니다. 모든 자동차는 대부분의 소프트웨어가 위험에 처하지 않습니다. 또한 내가 아는 바에 따르면 이러한 종류의 소프트웨어는 종종 신뢰할 수 있습니다

0

소프트웨어는 수학 및 논리 객체이며 자동차는 실제 객체입니다.

또한, 자동차에 문제가있을 때와 문제가 무엇인지 쉽게 알 수있는 반면, 소프트웨어로는 훨씬 더 어려울 수 있습니다. 컴퓨터에 문제가있는 사람과 자동차에 문제가있는 사람을 상상해보십시오. 이 사람은 자동차가 컴퓨터보다 덜 추상적이기 때문에 무엇이 잘못되었는지 더 잘 알 수 있습니다.

컴퓨터가 이해하기 어렵다고 말하는 것은 아닙니다. 자동차에는 열역학, 전자 공학, 화학과 같은 많은 물리 법칙이 포함됩니다.

"비서보다 망치가 왜 더 안정적인가?"라고 말하면서이 비교를 추정 할 수도 있습니다.

나는 그 질문이 실제로 관련이 있다고 생각하지는 않지만, 좋은 수학 교육의 부족이 특정 종류의 시스템에 대한 이해에 어떻게 영향을 미치는지 잘 보여줍니다.


0

자동차가 수천 개의 부품으로 구성되어 있어도 소프트웨어는 자동차보다 훨씬 더 복잡합니다.

자동차가 소프트웨어만큼 복잡한 경우, 자동차의 모든 구성 요소는 자동차의 다른 모든 구성 요소에 의존하며 많은 자동차 구성 요소는 다른 많은 자동차 구성 요소와 직접 연결됩니다.

전 세계 모든 자동차는 원래의 Unix 소프트웨어와 거의 동일합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.