Tại sao phần mềm không đáng tin cậy như một chiếc xe hơi? [đóng cửa]


65

Tôi đã có một người dùng hỏi tôi câu hỏi này. Chúng tôi biết rằng ô tô bị hỏng, nhưng đó là vì một cái gì đó vật lý (trừ khi có liên quan đến phần mềm!).

Tôi đã cố gắng trả lời rằng phần mềm là một ngành công nghiệp trẻ hơn nhiều, nhưng người dùng phản bác lại "không phải ngành công nghiệp ô tô trở nên ổn định hơn nhiều và đáng tin cậy với ít người hơn sao?".

Tôi cũng đã cố gắng trả lời rằng phần mềm phức tạp hơn, nhưng người dùng phản bác rằng có hàng ngàn bộ phận tạo nên một chiếc xe hơi. Những người thiết kế và chế tạo ô tô nói chung chỉ biết (các) thành phần của họ rất tốt, nhưng cuối cùng họ vẫn làm việc cùng nhau như một kết quả cuối cùng.

Vậy tại sao phần mềm không đáng tin cậy như xe hơi?


29
Xe nào? Một số đáng tin cậy hơn nhiều so với những người khác.
Zoot

244
Nếu ai đó gần như đã hoàn thành việc lắp ráp một chiếc xe hơi khi ông chủ của họ đến và nói "ồ này, khách hàng muốn chúng tôi gắn động cơ phản lực vào nó, bạn có thể hoàn thành nó trong vài ngày không?", Những chiếc xe cũng sẽ không đáng tin .
Adam Lear

28
Phần mềm là đáng tin cậy. Nó chỉ là phần mềm enterprisey lớn mà không phải. Bạn đã bao giờ nhìn thấy một vụ tai nạn TV? Tôi cũng không.
zneak

19
Có luật để thực thi việc học lái xe trước khi được phép lái xe cơ giới. Ngoài ra, có nhiều khóa học về cách lái xe được nhắm mục tiêu vào trình độ học vấn thấp để họ không gặp sự cố. Không có các chương trình như vậy để học cách sử dụng máy tính và như vậy, các sự cố dân số được giáo dục dưới mức độ thường xuyên và đổ lỗi cho các lập trình viên.
zzzzBov

14
Chỉ cần so sánh số lượng thương tích gây ra bởi phần mềm và ô tô, và bạn sẽ thấy phần mềm đó đáng tin cậy hơn nhiều so với ô tô.
mouviciel

Câu trả lời:


183

Tiền đề của câu hỏi của bạn đơn giản là không chính xác: Phần mềm không "kém tin cậy" hơn xe hơi. Có hàng tỷ trên hàng tỷ thiết bị chạy phần mềm nhúng 24x7, trong nhiều năm liền, không có vấn đề gì. Heck, một số trong số đó là trong xe hơi, và điều khiển / giám sát động cơ. Vì vậy, làm thế nào phần mềm có thể kém tin cậy hơn một chiếc xe hơi, nếu xe hơi tự dựa vào phần mềm?


9
+1, phần mềm cũng có thể hoàn toàn đáng tin cậy (theo nghĩa toán học), trong khi một thiết bị cơ học không bao giờ có thể (vì khái niệm về độ tin cậy ở đây là khác nhau - tức là về việc đảm bảo thực tế rằng mọi thứ sẽ hoạt động và không bị phá vỡ hoặc mặc vào một lúc nào đó).
mlvljr

9
+1 để chỉ ra lỗ hổng cơ bản trong câu hỏi
Gary Rowe

1
Tôi sẽ nói thêm rằng tôi chưa bao giờ thấy một chiếc xe nào trong không gian, trong khi tôi đã thấy phần mềm trên đó ...
Matthieu M.

5
@Rei Miyasaka: Đừng đánh giá thấp mức độ phức tạp trong phần mềm nhúng. ;)
Mchl

3
@Matthieu M. - bạn chưa bao giờ thấy Apollo Lunar Rover?
JeffO

115

Tôi thiết kế phần mềm và các bộ phận cơ khí.

Đó là sự phức tạp.

Bởi vì có hàng triệu "bộ phận" trong phần mềm hiện đại.

Các bộ phận phần mềm rất phức tạp và có rất nhiều NHÀ NƯỚC. Một phần không chuyển động cơ học không có trạng thái.

Một bộ phận chuyển động cơ học có vị trí của nó (một biến).

Một chương trình đang chạy và sử dụng 1Mb RAM có một triệu byte trạng thái. Đó là trạng thái nhiều hơn bất kỳ hệ thống cơ học bình thường.

Sẽ có sự kết hợp của các trạng thái không bao giờ được kiểm tra vì chúng hiếm khi xảy ra. Trong một hệ thống cơ khí (như xe hơi), thật dễ dàng để kiểm tra các bộ phận cơ khí không va vào nhau trong quá trình vận hành. Phần mềm CAD cơ học tôi sử dụng tại nơi làm việc sẽ tự động.

Nếu bạn chế tạo máy từ những bộ phận vô hình, không thể chạm vào và có hàng triệu bộ phận chuyển động mà tất cả chỉ bỏ lỡ nhau, nó sẽ giống như một chương trình đơn giản.

Ngay cả "hello world" cũng chạy trên một hệ điều hành. Các hệ thống 8 bit và hệ điều hành máy tính mini cũ khá đáng tin cậy vì chúng đơn giản.

Những thứ như DLL và thư viện dùng chung được thay thế như một phần của bản cập nhật vi-rút hoặc cài đặt phần mềm và sau đó chương trình quan tâm không hoạt động. Bit giống như thay lốp trên xe của bạn để lấy lốp xe đạp. Một số trạng thái cạnh của chức năng thư viện can thiệp (không hành động theo cách chương trình mong đợi).

Các chương trình được viết bằng các ngôn ngữ như Java không cho phép nhiều tương tác không được thiết kế giữa các đối tượng (tái sử dụng con trỏ, giới hạn mảng tràn) thường khá đáng tin cậy khi bạn làm cho chúng hoạt động hoàn toàn.
Khi bạn sử dụng các hệ điều hành với các thư viện tĩnh, một khi chương trình hoạt động, nó sẽ tiếp tục hoạt động (nhưng vẫn sẽ có nhiều điều kiện cạnh, dựa trên kích thước trạng thái của nó).

Dave Parnas viết về việc có được độ tin cậy trong phần mềm bằng cách làm cho trạng thái của chương trình nhỏ hơn. Những kẻ lập trình chức năng nghiêm ngặt đang làm điều tương tự bằng cách buộc gán tĩnh đơn.


12
+1, chỉ cần tưởng tượng một "máy tính cơ học" với các bánh răng, v.v. thay vì các vòng lặp và các biến - nó phức tạp (và không đáng tin cậy) như thế nào chỉ để "sao chép" một chương trình KLOC 20-40? Và chúng ta hãy nhớ tại sao gần như không thể xây dựng các máy tính cơ học hoạt động;).
mlvljr

3
+1 để đề cập đến các bản cập nhật vi-rút mà tôi cho là một uyển ngữ cho hệ điều hành đó có tên là sẽ không được nói ra
Trinidad

1
Và đề cập đến ông Parnas trong bối cảnh độ tin cậy của phần mềm có lẽ sẽ tự mang lại một upvote.
mlvljr

6
Bạn đã trộn lẫn việc sử dụng dấu nháy đơn trong hầu hết các trường hợp. Một bộ phận chuyển động cơ học có vị trí của nó (không phải "nó"). Đó là sự phức tạp (không phải "của nó"). Những thứ như DLL (không phải "DLL"). Xem thêm: english.stackexchange.com
Ashe

2
mlvljr: tra cứu Charles Babbage và công cụ phân tích của anh ta: en.wikipedia.org/wiki/Analytical_engine
Mchl

56

Đó là vấn đề lựa chọn của người tiêu dùng.

Nếu người tiêu dùng yêu cầu phần mềm đáng tin cậy như chiếc Honda Civic của tôi (trái ngược với chiếc Ford Maverick cũ của tôi), thì nó sẽ như vậy. Một số tổ chức yêu cầu phần mềm đáng tin cậy và họ nhận được phần mềm, điển hình cho phần mềm nhúng, đôi khi cho những thứ quan trọng về an toàn như nhiệm vụ không gian và kiểm soát không lưu. Phần mềm vẫn không hoàn hảo, nhưng cũng không phải là ô tô.

Tuy nhiên, khách hàng yêu cầu những phẩm chất khác trong phần mềm của họ và hầu như không sẵn sàng trả tiền cho phần mềm có thể ít chức năng hơn, chắc chắn đắt hơn và giao hàng sau chỉ vì nó đáng tin cậy hơn.


4
+1 cho câu trả lời này - không có câu trả lời nào khác thậm chí quan trọng . Nếu mọi người quan tâm đủ đến việc phần mềm đáng tin cậy như ô tô (tuy nhiên đó là nhiều), thì nó sẽ như vậy . Nhưng khi một chương trình gặp sự cố, bạn khởi động lại máy tính của mình - khi một chiếc xe gặp sự cố, OTOH ...
Cyclops

@Cyclops Tôi đồng ý, nhưng tôi nghĩ thật đáng suy ngẫm tại sao mọi người lại có những ý kiến ​​khác nhau về xe hơi và phần mềm. Và tôi nghĩ câu trả lời chính là để một chương trình trở nên hữu ích với một người bình thường, nó thường phải là những đơn đặt hàng có độ lớn phức tạp hơn một thiết bị cơ khí hữu ích như xe hơi. Nhiều câu trả lời khác giải quyết điều này. Ngoài ra nguy cơ phần mềm bị lỗi thường thấp.
j_random_hacker

2
@j_random_hacker: Tôi không thấy rằng mọi người có ý kiến ​​khác nhau về độ tin cậy do độ phức tạp khác nhau, bởi vì hầu hết mọi người không biết chiếc xe hay chương trình phức tạp như thế nào. Họ có những kỳ vọng khác nhau, bởi vì phần mềm có nhiều vấn đề hơn xe hơi ngày nay. Họ quan tâm đến hậu quả. Một sự cố xe hơi có khả năng mắc kẹt một ai đó mà họ không muốn ở đó, không thể đi bất cứ nơi nào và có khả năng phải trả tiền nghiêm trọng để khắc phục. Nó luôn luôn bất tiện và có thể đe dọa tính mạng. Đối với hầu hết mọi người, một lỗi phần mềm có nghĩa là một số công việc bị mất.
David Thornley

25

có rất nhiều hàng ngàn bộ phận tạo nên một chiếc xe hơi.

Nếu chỉ có một máy tính (và phần mềm liên quan) thì đơn giản.

Máy tính có những gì một gigabyte của bộ nhớ? Hàng tỷ đôi dép xỏ ngón? Một terabyte của đĩa? Hàng nghìn tỷ bộ phận "di chuyển"?

Phần mềm có thể có 10 nghìn hoặc 100 nghìn dòng mã riêng lẻ đang chạy. Thêm vào đó là nhiều (hoặc nhiều hơn) trong các bài kiểm tra đơn vị và công cụ.

Không. Đối số "xe hơi cũng phức tạp". Phần mềm là rất nhiều, rất nhiều, phức tạp hơn nhiều so với một chiếc xe hơi.


6
Phần mềm trông đơn giản chỉ vì chúng tôi rất giỏi trong công việc của mình và làm cho nó trở nên đơn giản với giáo dân :-)
Martin York

3
Thực ra xe hơi quá phức tạp.
Mauricio

9
@Maurermo: Không bao giờ nói rằng họ không phức tạp. Vấn đề là phần mềm có thể phức tạp hơn một chiếc xe hơi.
S.Lott

4
Phần mềm không phức tạp hơn xe hơi. Cả xe hơi và phần mềm tự nhiên phát triển phức tạp cho đến khi chúng đạt đến giới hạn bên ngoài của những gì mọi người có thể quản lý. Máy tính có thể có hàng tỷ yếu tố, nhưng nhiều trong số chúng có thể được coi là yếu tố lý tưởng và chúng hoạt động tương tự nhau. Sự đơn giản vốn có đó là lý do tại sao phần mềm phát triển rất phức tạp: nó phát triển cho đến khi khó quản lý. Trong khi các thành phần xe có các yếu tố phức tạp khác: chúng phải đối phó với sự hao mòn, ăn mòn, biến động nhiệt độ, v.v ... Cả hai đều rất phức tạp, chỉ trong các kích thước khác nhau.
whatsisname

3
Với phần mềm, việc tiếp tục thêm nhiều phần mềm sẽ dễ dàng hơn, đó là thêm nhiều thành phần cơ khí. Trong khi cả hai đều được phát triển "hữu cơ", phần mềm đang phát triển nhanh hơn nhiều.
Jim C

20

Các nguyên tắc làm cho động cơ đốt cháy hoạt động, và tất cả các thành phần tạo nên một chiếc xe đã không thay đổi nhiều trong thế kỷ qua. Chắc chắn đã có những cải tiến tiến hóa và xe hơi lai, nhưng các thành phần cơ bản là như nhau. Bạn có một động cơ, một chiếc xe lửa, vv Ngay cả những chiếc xe ý tưởng và chiếc Bugatti Veyron siêu đắt tiền của bạn cũng được chế tạo với cùng cấu trúc cơ bản. Nói tóm lại, thiết kế một chiếc xe hơi là một vấn đề nổi tiếng .

Tương phản với việc phát triển phần mềm.

  • Khách hàng không biết họ muốn gì khi họ bắt đầu. Họ bắt đầu nói về một chiếc máy bay sang trọng, nhưng sau đó khi họ nhận ra chi phí họ muốn bạn chế tạo nó với chi phí của một chiếc xe tay ga chạy bằng chân.
  • Thiết kế xe hơi phải mất nhiều năm để có được từ ý tưởng đến ý tưởng xe hơi, và nhiều năm nữa để có được từ đó để sản xuất. Lần cuối bạn có sự xa xỉ đó với phần mềm là khi nào?
  • Các bộ phận xe hơi là các mảnh kim loại đúc, nhưng các thành phần phần mềm có thể thay đổi hình dạng và giao diện thường xuyên.
  • Quy trình sản xuất hoàn toàn khác nhau. Với ô tô, các mảnh được sản xuất với số lượng lớn và các mảnh giống nhau được sử dụng trên các phương tiện khác nhau. Với phần mềm, hầu hết mọi thứ đều được làm thủ công bởi vì nếu không thì mọi thứ sẽ không phù hợp.

Nói tóm lại, có một số lý do tại sao một chiếc xe hơi sẽ được coi là "đáng tin cậy" hơn phần mềm. Tôi vừa đến với một cặp vợ chồng.


6
Sửa chữa về sản xuất: sản xuất phần mềm là tầm thường. Điều này khiến mọi người nghĩ về một số khía cạnh của lập trình là sản xuất, trong khi lập trình là tất cả thiết kế. Mỗi chương trình là một thiết kế mới.
David Thornley

1
Mọi chương trình đều mới - chưa được chứng minh - thiết kế hoặc tải xuống không lỗi các phần mềm đã được chứng minh hiện có từ một thư viện kỹ thuật số đáng tin cậy. Một sự phân đôi lớn ở đó.
S.Lott

19

Ô tô là đáng tin cậy. Phần mềm cũng vậy.

Nhưng ... xe hơi tùy chỉnh và phần mềm tùy chỉnh, cả hai đều có vấn đề.

Bất kỳ người đam mê xe hơi thực sự nào, người đã sửa đổi chiếc xe cơ bắp, sửa chữa và chỉnh sửa năm 1970 của mình, và đã bị hỏng, và tất cả các loại vấn đề ngu ngốc mà anh ta sẽ không có nếu anh ta để nó nguyên bản. Nhưng ... sau đó anh ta sẽ không có bộ siêu nạp ...


3
nitpicking: hầu hết (có thể nhìn thấy) phần mềm là phần mềm tùy chỉnh. do đó trạng thái cảm nhận của sự không đáng tin cậy nói chung.
Javier

4
@Javier, tôi sẽ nghĩ rằng phần mềm dễ thấy nhất là những thứ sẵn có mà bạn có thể mua tại cửa hàng cung cấp văn phòng, hoặc đi kèm với máy tính của bạn.
Marcie

1
@Javier: Phần mềm tùy chỉnh, theo định nghĩa tôi nghĩ, được thiết kế / sản xuất cho một đối tượng cụ thể - không phải công chúng nói chung.
Steven Evers

@Marcie: ngay cả khi cửa sổ, văn phòng và photoshop ở khắp mọi nơi, mỗi doanh nghiệp đều có hệ thống kế toán và quy trình tùy chỉnh riêng. Ngoài ra, hãy nghĩ về mọi trang web ngoài đó, nếu không phải là wordpress thì đó là tùy chỉnh.
Javier

3
@Javier, không phải mọi doanh nghiệp. Nhiều người chỉ sử dụng các sản phẩm ngoài kệ.
Marcie

16

Bởi vì chiếc xe bạn lái đã được thực hiện nhiều lần, quá trình xây dựng được tinh chỉnh đến mức cùng một chiếc xe có thể được thực hiện trên một dây chuyền sản xuất nhiều lần.

Nếu đó là một chiếc xe tiên tiến phức tạp có một không hai được chế tạo từ đầu thì nó sẽ không còn đáng tin cậy, ví dụ như nhìn vào tỷ lệ thất bại trong xe đua công thức 1 cao hơn bao nhiêu. Nó là phổ biến cho một hoặc hai để phá vỡ mỗi cuộc đua.

Phần mềm mới luôn luôn là một lần. Những gì các lập trình viên mã chưa bao giờ được mã hóa bởi họ trước đây. Để có được chất lượng thực sự cao trong kịch bản này liên quan đến một chi phí bị cấm đối với hầu hết các sản phẩm. Mỗi phần mềm mới không tầm thường thực sự là một nguyên mẫu.

Bên cạnh đó, đây là một trong những lý do chính khiến việc áp dụng các kỹ thuật kỹ thuật truyền thống vào công nghệ phần mềm là một thảm họa.


1
+1 Xây dựng một chiếc xe hơi không tương đương với việc xây dựng một chương trình phần mềm. Xây dựng một chiếc xe hơi tương đương với việc chạy một chương trình phần mềm. Thiết kế và mô tả một chiếc xe hơi tương đương với việc xây dựng một chương trình phần mềm. Và có hàng tấn vấn đề trong quá trình thiết kế xe hơi được giải quyết trên đường đi, giống như với phần mềm.
RationalGeek

1
Tôi không đồng ý với tuyên bố này: "Bên cạnh đó, đây là một trong những lý do chính khiến việc áp dụng các kỹ thuật kỹ thuật truyền thống vào công nghệ phần mềm là một thảm họa." Phát triển phần mềm chắc chắn liên quan đến các nguyên tắc kỹ thuật: Các thành phần có thể tái sử dụng, thành phần, kiểm tra căng thẳng, các khối xây dựng, v.v.
Philluminati

13
  1. Các nhà sản xuất ô tô nhận được toàn bộ thông số kỹ thuật đóng đinh trước khi họ sản xuất sản phẩm "cuối cùng".
  2. Người dùng ô tô không có xu hướng làm những điều ngu ngốc mà các nhà thiết kế không mong đợi.
  3. Ô tô chỉ được "cập nhật" một lần mỗi năm (thông thường), trong khi hầu hết các phần mềm dự kiến ​​sẽ được cập nhật nhiều lần mỗi năm.

Tôi có thể tiếp tục, nhưng trình duyệt của tôi cảm thấy như sắp hỏng ...


3
Người dùng ô tô làm rất nhiều điều ngu ngốc, bao gồm cả những điều mà các nhà thiết kế không mong đợi. Điều đáng nói là, chỉ có đầu vào rất hạn chế và không có kết quả dự kiến ​​cụ thể nào cho việc kẻ mắt khi lái xe khác với đọc báo khi lái xe.
David Thornley

10
@David Thornley: Hãy tưởng tượng nếu mọi người mong đợi một chiếc xe hơi hoạt động như một chiếc máy tính ... "Tôi đang đọc báo khi lái xe, và bây giờ đèn pha không còn hoạt động nữa. Có lẽ nó liên quan đến vô lăng mà tôi đã tháo ra nhường chỗ cho tờ báo, vì vậy tôi chạy vào một bức tường. Đai an toàn bảo vệ tôi tốt, nhưng nó không bảo vệ đèn pha ... ";)
Guffa


1
@robertc Bạn không thể thiết kế cho mức độ ngu ngốc đó ...
Glen Solsberry

10

Thực sự có một lý do rất đơn giản.

Phần mềm kiếm tiền là phần mềm chiếm thị phần. Thường xuyên hơn không, công ty đưa một phần mềm ra thị trường trước tiên sẽ là công ty chiếm phần lớn thị phần, ngay cả khi phần mềm của họ không phải là sản phẩm tốt nhất trong thị trường cụ thể của họ.

Do đó, trọng tâm là làm cho phần mềm được phát hành sớm hơn và không hoàn hảo, thay vì muộn hơn và hoàn hảo.


2
Điều này chỉ hoạt động nếu người 'tốt nhất' kết thúc không tốt hơn nhiều. Nếu họ tốt hơn nhiều thì bạn sẽ có được những gì đang xảy ra với Apple khi họ đến muộn, với công nghệ lạc hậu và vẫn làm nổ tung lĩnh vực này vì họ "đã làm đúng".
Robert Massaioli

@Robert: Apple là một giải pháp đầu cuối hoàn chỉnh (cửa hàng ITunes) và tôi không chắc chắn rằng tôi đồng ý rằng công nghệ của họ đã lỗi thời. Nếu nó không dành cho họ, tất cả chúng ta có thể vẫn đang sử dụng những chiếc điện thoại nắp trượt xảo quyệt đó.
Robert Harvey

5

Tôi thích hầu hết các câu trả lời cho đến nay. Đây là spin của tôi trên đó.

Chi phí cho sự thất bại là nghiêm trọng hơn cho xe hơi so với phần mềm

Thất bại xe có khả năng chi phí một cuộc sống. Ngay cả một sự cố xe không đe dọa đến tính mạng cũng thể hiện sự bất tiện rất rõ ràng đối với người dùng. Lỗi phần mềm chỉ có nghĩa là một số nhựa kém trong hỗ trợ sản xuất sẽ phải làm thêm giờ. Và nếu người đó là một nhân viên được miễn toàn thời gian, thì trời ạ, nó không đắt lắm đâu. Trên thực tế, chất lượng kém và quản lý kém được khen thưởng vì làm thêm giờ miễn phí thực sự làm giảm chi phí lao động mỗi giờ!

Tất nhiên, điều này phụ thuộc vào loại phần mềm đang được sử dụng (hệ thống vũ khí cung cấp năng lượng, hệ thống điện tử hàng không hoặc hệ thống y tế cũng có thể có ảnh hưởng đến cuộc sống), nhưng một chiếc xe hơi tốn rất nhiều tiền và được sử dụng thường xuyên, đủ để mất độ tin cậy khá hữu hình và đau đớn. Lỗi phần mềm thường có cách giải quyết.

Một suy nghĩ khác: Xe hơi có vẻ đáng tin cậy nhưng chúng có chi phí bảo trì nhất định đang diễn ra ngay cả khi xe hoạt động tốt, và về mặt văn hóa, điều này được chấp nhận và thậm chí là một khoản chi tiêu đáng tự hào của những người quan tâm đến phương tiện của chúng. Mặt khác, phần mềm thường bị hỏng khi cài đặt và thường phải thay đổi theo thời gian, nhưng về mặt văn hóa, không ai muốn trả tiền bảo trì.


4

Chà, những chiếc xe hơi không đáng tin cậy trong hầu hết lịch sử của chúng, và chắc chắn có một đường cong học tập. Ô tô đã được sản xuất trên quy mô lớn trong khoảng 60 năm, trong khi phần mềm chỉ được sản xuất trên quy mô lớn trong khoảng 20-25. Theo quy mô lớn, về cơ bản, tôi có nghĩa là đủ lớn để quần chúng mua / sử dụng nó và thực sự có động lực rất lớn để tìm ra cách hoàn thiện quy trình tạo ra nó.


4

Tôi thích nghĩ về Xe như một ứng dụng. Trong khi HĐH là con đường mà ứng dụng chạy.

Giao diện giữa đường và xe được xác định rõ. Được kiểm tra tốt và được kiểm tra rộng rãi về khả năng tương thích ngược (điều này dễ dàng vì giao diện đơn giản). Nhưng ngay cả như vậy bạn có một số vấn đề tương thích ngược. Những chiếc xe loại "Farrie" gặp khó khăn khi chạy trên những con đường thuộc loại "đường bùn".

Mặc dù vậy, hệ điều hành của bạn giống như đường cần bảo trì liên tục. Cầu kho ra. Ô tô đeo dây xích tuyết và xé nát những con đường như ứng dụng bị hỏng và làm hỏng các đĩa và tệp được HĐH sử dụng.

Các ứng dụng sẽ được viết trên một HĐH. Nhưng nói chung, họ phải chạy các phiên bản khác nhau của HĐH (các loại đường khác nhau). Vì vậy, ứng dụng tối ưu hóa siêu cấp của bạn có thể chạy trơn tru và không gặp vấn đề gì, miễn là nó chạy đúng hệ điều hành (Đường cao tốc), trong khi mã mục đích chung khác (đơn giản hơn) sẽ chạy tốt trên mọi loại đường.

Giao diện giữa Ứng dụng và HĐH được xác định nhưng cực kỳ phức tạp và luôn dao động nhẹ. Đặc biệt là vì chúng tôi cho phép người dùng sửa đổi hệ điều hành của riêng họ với các tiện ích mở rộng. Nếu chính phủ cho phép người dùng sửa đổi các con đường, sẽ có nhiều sự cố hơn.

Khi bạn bắt đầu giới hạn khả năng của người dùng để sửa đổi HĐH, độ tin cậy của các ứng dụng có thể trở nên gần như vững chắc. Nhìn vào tất cả những thiết bị nhúng. Chúng tôi không cho phép người dùng ở gần hệ điều hành của họ và họ chạy tốt và liên tục 24/7 mà không bị gián đoạn.

Vì vậy, tôi sẽ nói rằng nó không phải là phần mềm không đáng tin cậy. Nó giống như nói rằng người dùng đang đào hố trên đường cao tốc cho các ứng dụng. Này ứng dụng của bạn vừa bị rơi vào lỗ tôi đào năm ngoái và quên mất .


+1 Tương tự rất hay và hoàn toàn nằm trong những dòng tôi muốn viết (nhưng không phải sau khi đọc nó)
Joris Meys

3

Đầu tiên, người dùng của bạn cần biết rằng có một phần mềm đáng tin cậy trong thế giới này đến nỗi anh ta thậm chí không nhận ra nó tồn tại. Bạn đã bao giờ nhìn thấy một vụ tai nạn TV? Tôi cũng không.

Tôi nghĩ lý do chính là phần mềm là không quan trọng. Không quan trọng có nghĩa là những người không phải là nhà phát triển không thấy tiến trình đang diễn ra. Ví dụ, nếu tôi đang chế tạo một chiếc ô tô, bạn có thể thấy tôi lắp ráp các bộ phận khác nhau và nó sẽ trông giống một chiếc xe hơi hơn; tuy nhiên, nếu bạn nhìn vào lập trình của tôi, có thể tôi sẽ dành hàng giờ chửi rủa màn hình đen với văn bản màu xanh lá cây làm những mẫu lạ và rồi đột nhiên khi mô hình thay đổi chỉ một chút tôi sẽ quá mức.

Do đó, người bình thường không nhận ra sự phức tạp của phần mềm. Khi họ nhìn thấy một cửa sổ, họ nghĩ rằng họ nhìn thấy toàn bộ chương trình, điều đó thật sai lầm.

Ngoài ra, phần mềm rất nhiều, thường được tùy biến rất nhiều so với ô tô. Khi bạn tùy chỉnh một chiếc xe, bạn sẽ không đi ngược lại thiết kế của nó bởi vì điều đó rõ ràng là ngu ngốc. Nếu động cơ của tôi ở phía trước xe, việc di chuyển nó ra phía sau rất có thể sẽ là một thảm họa rất lớn. Tuy nhiên, vì phần mềm là không quan trọng, nếu khách hàng yêu cầu bạn làm điều gì đó hoàn toàn trái với thiết kế, họ sẽ không nhận được dấu hiệu nào (ngoại trừ bạn, nhưng họ sẽ không lắng nghe) rằng những gì họ đang làm là ngu ngốc, và sau đó họ ' Sẽ ngạc nhiên khi nó không hoạt động như mong đợi.


tv của tôi bị hỏng tất cả các thời gian. (Các công cụ kỹ thuật số đã khiến điều đó xảy ra)
tp1

3
  1. Thiếu chia sẻ thông tin (lập trình viên bay một mình hoặc trong các nhóm nhỏ - các nhà thiết kế xe hơi làm việc với các nhóm liên kết trong một tập đoàn lớn và tất cả họ đều chia sẻ kiến ​​thức của mình; nếu tất cả chúng ta làm việc cho các tập đoàn lớn, tất cả chúng ta sẽ là những lập trình viên tốt hơn nhờ học hỏi từ những người khác, đây cũng là lý do tại sao những thứ như chương trình nguồn mở và tài nguyên trực tuyến rất quan trọng)
  2. Kỳ vọng của những người tham gia thực địa (không sao nếu một nhà thiết kế xe hơi chỉ hữu dụng trong 5-10 năm đầu, nhưng nếu một lập trình viên đi vào một cuộc phỏng vấn và nói rằng anh ta / cô ta sẽ không được sử dụng nhiều trong 5-10 năm, phỏng vấn kết thúc)
  3. Thiếu kiểm tra thâm nhập (do thiếu kinh phí, vấn đề pháp lý, v.v ... nhà sản xuất xe hơi, tuy nhiên, đâm xe sau khi vào xe vào tường gạch, có hầm gió, có yêu cầu hiệu suất tương đối đơn giản, v.v.)
  4. Tính minh bạch thông tin (bạn không biết phần lớn hoạt động của phần mềm; bạn đoán hoặc bạn đưa ra các giả định dựa trên các cuộc phỏng vấn, thông cáo báo chí, quảng cáo, v.v. Với ô tô, tuy nhiên, phần lớn các công cụ đều ở ngay đó để bạn xem xét)
  5. Sự đóng gói kiến ​​thức cố hữu (anh chàng / robot hàn khung không cần biết toán học đằng sau hệ thống kiểm soát ổn định; các lập trình viên phải hiểu biết về hàng ngàn hoặc hàng chục ngàn điều mà người bình thường không biết, trong khi chỉ những người thiết kế xe hơi cần biết hàng trăm hoặc hàng ngàn)
  6. Tính hữu hình (nó giúp khi bạn có thể nhìn thấy nó)
  7. Age of Field (thiết kế phương tiện hàng nghìn năm tuổi; thiết kế phương tiện cơ giới đã hơn 250 năm tuổi [động cơ hơi nước, v.v.))
  8. Tính quan trọng của các hệ thống con (ô tô vẫn sẽ "hoạt động" ngay cả khi nhiều bộ phận của chúng ngừng hoạt động - khóa điện, cửa sổ điện, HVAC, cần gạt nước, cửa sổ bị hỏng, hubcaps bị mất, lốp phẳng [đặt trên một cái mới], radio, một hoặc hai ánh sáng, nhập từ xa, v.v .; khi một cái gì đó trên máy tính bị hỏng, nó thường là một kịch bản SHTF)
  9. Sự phụ thuộc lẫn nhau (khi một máy tính bị hỏng, không hiếm khi nó ảnh hưởng đến hàng trăm hoặc hàng nghìn máy tính khác; khi một chiếc xe bị hỏng, hơi hiếm khi những chiếc xe khác bị ảnh hưởng - nếu những chiếc xe khác bị ảnh hưởng, thì hầu như chỉ có 1 -3)
  10. Blame Blame (nếu một phần của máy tính hoặc một máy tính trong số hàng ngàn bị hỏng và làm hỏng hệ thống, thì lỗi sẽ kéo dài đến toàn bộ máy tính, hoặc trong trường hợp sau, toàn bộ mạng máy tính; nếu xe của bạn bị xe đâm. phanh không thành công hoặc nếu xe bị kẹt và không khởi động lại trên đường cao tốc, chỉ có phần xe riêng lẻ bị đổ lỗi)
  11. Hệ thống hữu hạn so với hệ thống vô hạn (ô tô chỉ có thể có rất nhiều và họ chỉ mong đợi làm việc trong điều kiện hạn chế - ví dụ: bạn không lái BMW trên địa hình mà chỉ có phương tiện giống xe jeep mới có thể làm được; với máy tính, tuy nhiên, khả năng là vô hạn - luôn có những thứ mới, API mới, hệ điều hành mới, lỗ hổng bảo mật mới, iPad, phần mềm điện thoại di động, mới này, mới, v.v.)
  12. Phạm vi kiến ​​thức cần thiết (một người có IQ 130-140 có thể học gần như tất cả những gì cần biết về ô tô, nhưng chỉ có thể tìm hiểu một phần những điều cần biết về máy tính & lập trình)

3

Lý do đơn giản tại sao toàn bộ logic bị thiếu sót:

Các thiết bị cơ khí có thể được giảm đơn giản thành Đầu vào / Đầu ra ; tăng số lượng bộ phận để đạt được thao tác I / O này không làm thay đổi thao tác I / O. Do đó hệ thống có thể được hiểu đầy đủ.

Mặt khác, phần mềm có Đầu vào -> Quá trình -> Đầu ra . Do tính chất này, hệ thống không thể dự đoán hoặc hiểu đầy đủ.

Donald Rumsfeld nói điều đó tốt nhất:

Có những điều đã biết; Có những điều chúng ta biết chúng ta biết. Chúng tôi cũng biết có những ẩn số đã biết; điều đó có nghĩa là chúng ta biết có một số điều chúng ta không biết. Nhưng cũng có những ẩn số chưa biết - những điều chúng ta không biết chúng ta không biết. Nghiêm - Bộ trưởng Quốc phòng Hoa Kỳ Donald Rumsfeld

Tóm tắt:

  • Một thiết bị cơ khí là một hệ thống đã biết và chưa biết
  • Phần mềm có những điều trên nhưng cũng chưa biết.

1
+1 để trích dẫn D. Rumsfeld. Các phương tiện truyền thông không bao giờ thích anh ta, nhưng người đàn ông đó là một thiên tài.
oosterwal

3

Đây là một câu hỏi ngu ngốc (không phải từ bạn, mà từ người ban đầu).

Điều này nghe có vẻ như cha tôi (một thợ cơ khí) ghét máy tính đã dành cả ngày trên eBay.

Nó giống như hỏi "Tại sao một cây đáng tin cậy hơn một con sâu bướm?".

Trước hết, tôi sở hữu 30 máy tính (có, 30+) và không một trong số chúng đã ở trong cửa hàng. Tôi chỉ cần chi $ 1400 cho chiếc xe của tôi để sửa chữa. Đi đếm số cửa hàng sửa chữa ô tô vs sửa chữa máy tính. Một lần nữa, tương tự ngu ngốc.

Xe được làm bằng thép, nhựa máy tính. Ô tô làm việc trong mọi điều kiện thời tiết, máy tính được thiết kế để sử dụng trong nhà.

My Commodore 64 (26 tuổi) hoạt động hoàn hảo và không có sửa chữa. Cả hai chiếc xe của tôi (dưới 10 tuổi) đã được sửa chữa rất rộng. Chỉ cho tôi một chiếc xe với hàng ngàn và hàng ngàn giờ sử dụng đã 26 tuổi mà vẫn chạy 100% giống như khi nó mới xuất xưởng.


2

Phần mềm dựa trên bit: 0 và 1. Ô tô dựa (phần lớn) vào các bộ phận cơ khí.

Một bộ phận cơ học có thể bị hao mòn hoặc trục trặc và vẫn là loại công việc. Phanh của bạn bị mòn, hoặc van bị rò rỉ, nhưng chiếc xe vẫn chủ yếu hoạt động cho đến khi bạn có thể sửa chữa nó.

Phần lớn, phần lớn, không có thứ gọi là thất bại dần dần. Nó hoặc hoạt động, hoặc nó phá vỡ. Chia cho số 0 không "gần như đúng"; đó chỉ là một lỗi. Khi bạn cố lưu vào ổ đĩa mà không có đủ dung lượng, bạn không thể ép mạnh để buộc tất cả dữ liệu vào; nó sẽ không đi đâu

Tôi không nghĩ rằng phần mềm nhất thiết phải kém tin cậy hơn xe hơi, nhưng khi phần mềm bị lỗi, nó sẽ bị hỏng ngay lập tức, không dần dần.


1

Tôi nghĩ rằng tôi đã có một sự tương tự tốt hơn nhiều. Đưa một công ty xây dựng xe cứu thương đến đặc điểm kỹ thuật của khách hàng. Nền tảng cơ sở (giả sử, khung gầm RV-cutaway hoạt động đầy đủ và hợp pháp trên đường phố) yêu cầu sửa đổi tại một số điểm: khung, hệ thống sạc, vòi phụ, hệ thống treo, v.v. đồng thời thỏa mãn mong muốn của khách hàng.

Sau đó, bạn phải tự xây dựng cơ quan cứu thương, điều này cũng đầy những yêu cầu pháp lý từ một số lớp của chính phủ và các cơ quan khác. Trong khi vẫn đáp ứng mong muốn của khách hàng về một số sắp xếp chỗ ngồi hoặc hệ thống lưu trữ thú vị. Và đừng quên rằng bạn có hàng trăm khách hàng khác nhau từ khắp nơi trên thế giới theo lịch trình mua và triển khai khác nhau, không ai trong số họ từng nói "Tôi sẽ nhận thêm hàng tá như người cuối cùng" mà không gửi các trang ngoại lệ thường xuyên yêu cầu tái thiết hoàn toàn toàn bộ.

Nhung chiec xe hơi? Điều đó thật tầm thường. Bạn sẽ mua những gì được xây dựng và bạn không có tác động trực tiếp đến bất kỳ khía cạnh nào của thiết kế. Ngay cả sự lựa chọn màu sắc của bạn là nhân tạo vì bạn thực sự không thể chỉ định thứ gì đó chưa được thiết kế và thử nghiệm. Ở một khía cạnh nào đó chỉ có một "thị trường" không phải là "khách hàng". Tôi sẽ lập luận rằng phần mềm bán sẵn được sản xuất cho một số thị trường nói chung là đáng tin cậy như chiếc xe bạn nhận tại đại lý địa phương.


1

Ô tô không thực sự đáng tin cậy như bạn nghĩ. Chỉ là lỗi có thể bị ẩn trong một thời gian dài (hoặc bị bỏ qua) mà không khiến toàn bộ sự việc bị lỗi. Xe của bạn bị rò rỉ dầu và / hoặc chất làm mát? Không? Bạn có chắc không? Có lẽ bạn đã nhầm ... Có lẽ nó chỉ rò rỉ một lượng rất nhỏ ở đâu đó mà bạn chưa nhận thấy ... Bây giờ hãy mở rộng nó sang hệ thống treo, tấm ốp thân, nội thất, v.v. Tôi không nghĩ tôi đã từng chưa gặp một chiếc xe mà tôi không thể tìm thấy một cái gì đó sai. Tuy nhiên, phần lớn các bộ phận là thừa đối với nhiệm vụ vận chuyển. Không phải như vậy với một máy tính. Gần như mọi bộ phận trong máy tính đều quan trọng.

Đó là cuộc tranh luận tương tự cũ và kỹ thuật số, vừa được đóng gói lại. TV kỹ thuật số là tuyệt vời, miễn là mọi thứ là hoàn hảo. Ngay lập tức có sự cố xảy ra, âm thanh bị tắt và video bị chặn khiến nó trở nên vô dụng. So sánh với TV analog nơi bạn chỉ cần một chút tiếng rít hoặc tĩnh mà dễ bị bỏ qua.


1

Đầu tiên tất nhiên một số sw là hoàn toàn đáng tin cậy, và xe ô tô - đặc biệt là người Anh và Ý - không nhất thiết phải đáng tin cậy.

Điều đó nói rằng kinh nghiệm của tôi khi làm việc với phần mềm ô tô là có hai điều:

  • Chi phí bảo hành. Khi sw của bạn thất bại, bạn khởi động lại nó. Có lẽ bạn sẽ nộp báo cáo lỗi. Hoặc sử dụng hợp đồng hỗ trợ đắt tiền. Khi xe của bạn bị hỏng, bạn sẽ mang nó vào và yêu cầu nó được sửa chữa theo bảo hành. Điều này sẽ chi phí nhà sản xuất $ 100 trở lên. Nếu mỗi lần thất bại với chi phí của nhà sản xuất $ 2, tôi khá chắc chắn rằng sw sẽ đáng tin cậy hơn.

  • JD Powers (và các bảng xếp hạng chất lượng khác). JD Powers khảo sát ThingsGoneWrong (có thể là bất cứ điều gì). Và nếu thứ hạng đó thực sự tồi tệ, mọi người sẽ không mua xe của bạn, ít nhất là không đủ tiền để kiếm lợi nhuận. Nếu chúng ta có một JD Powers cho sw và mọi người thực sự quan tâm đến nó, thì tôi chắc chắn rằng sw sẽ đáng tin cậy hơn.

Vì vậy, nếu bạn tạo ra những chiếc xe không đáng tin cậy, chi phí bảo hành sẽ nhanh chóng ăn hết tất cả lợi nhuận của bạn và trong một vài năm, thứ hạng chất lượng kém có nghĩa là bạn sẽ không bán bất kỳ chiếc xe nào cả. Nếu bạn thực hiện sw không đáng tin cậy thì người dùng sẽ phàn nàn và bạn có thể bán các hợp đồng hỗ trợ đắt tiền.


1

Độ tin cậy và an toàn của xe cơ giới là bắt buộc. Ở nhiều quốc gia (hầu hết?), Theo luật pháp yêu cầu họ phải có mức độ tin cậy và an toàn tối thiểu và họ được kiểm tra cho trường hợp xấu nhất (bất kể đó là gì). Phần lớn thương mại không phải là phần lớn.

Mặc dù có những ý nghĩa pháp lý khác đối với phần mềm, nhưng điều quan trọng cần lưu ý là nếu phần mềm gặp sự cố mỗi khi bạn nhấn nút "Lưu", thì đây đơn giản chỉ là vấn đề của một bản vá / sửa lỗi và sau đó bạn tiếp tục. Nếu một chiếc xe gặp sự cố mỗi khi bạn bật đèn báo, thì đây là một điều tồi tệ hơn nhiều . Điều này chỉ đơn giản là không quá quan trọng đối với Microsoft Outlook để chạy mà không gặp sự cố bất ngờ vì nó là một chiếc SUV chạy mà không gặp sự cố bất ngờ.

Điều đó đang được nói, có những phần mềm khác có trách nhiệm nhiều hơn hoặc nhiều hơn các cơ chế của một chiếc xe hơi. Hệ thống máy bay và hướng dẫn tên lửa phải đáng tin cậy; có cuộc sống bị đe dọa! Người ta sẽ hy vọng rằng những điều này được kiểm tra nghiêm ngặt hơn so với xe ô tô trung bình.


1

Ngành công nghiệp ô tô không phát hành xe "beta" ra công chúng để thử nghiệm, ngành công nghiệp xe hơi không phải lo lắng về môi trường mà họ cung cấp sản phẩm của họ, tuy nhiên họ phải lo lắng về nhiều thứ khác. nói rằng ngành công nghiệp phần mềm trước hết khác nhau về cơ bản (như chúng ta đều biết) nên độ tin cậy và độ phức tạp thực sự mang tính gợi ý. Theo tôi một chiếc xe phức tạp hơn một phần mềm nhưng dễ dàng hơn để xem những gì hoạt động hay không kể từ khi

  • Ở dưới cùng của chiếc xe không phải là ảo, chắc chắn sẽ dễ kiểm tra hơn (nhưng đắt hơn)
  • Họ bắt đầu sớm hơn nhiều so với ngành công nghiệp phần mềm, ngay cả khi họ ít người hơn, bạn không thể giảm thiểu thực hành và kiến ​​thức họ thu thập được. Công nghiệp phần mềm vẫn còn là một đứa trẻ so với nó.
  • Tất cả các ngành công nghiệp xe hơi bị ràng buộc bởi luật pháp và đạo đức không được tạo ra chiếc xe giết chết người lái xe của họ, đặc biệt là những thập kỷ qua.

Vì vậy, tuyên bố nói rằng phần mềm kém tin cậy hơn ô tô, có thể đúng với nhiều loại phần mềm và hoàn toàn sai đối với khu vực khác (bảo mật, hàng không ...) bạn có thể chắc chắn rằng một phần mềm đáng tin cậy nhất ít nhất là đáng tin cậy nhất của những chiếc xe trong khu vực đó. Đơn giản là vì những khu vực đó rất quan trọng và từ những gì tôi chỉ biết trong những phần mềm đó có thể so sánh với ngành công nghiệp xe hơi.

Điều này dẫn chúng ta đến điều này: hầu hết các phần mềm không được coi là quan trọng trong miền của họ. Khi được coi là như vậy, bạn có phần mềm đáng tin cậy, vấn đề duy nhất bạn sẽ gặp phải là những vấn đề liên quan đến môi trường (vì vậy nếu bạn có thể kiểm soát nó, thì hầu như bạn sẽ không gặp vấn đề gì), không phải là phần mềm. Tuy nhiên, hầu hết các trình soạn thảo phần mềm không hoạt động trong các lĩnh vực quan trọng này, tất nhiên họ buộc phải cung cấp một mức chất lượng nhất định nhưng chúng bị ràng buộc nhiều hơn (theo tôi) để cung cấp phần mềm càng sớm càng tốt. Tuy nhiên phần mềm tốt đòi hỏi: quản lý dự án tốt, thông số kỹ thuật vững chắc, thiết kế tốt và trình độ kỹ năng tốt từ những người làm việc trong đó (để tiếp tục nó). Đó chỉ là để làm cho nó, chúng tôi thậm chí không nói về việc bán nó ...

Tất cả điều này cần có thời gian và vì vậy đòi hỏi tiền. Tôi không nói rằng bạn nhận được những gì bạn đang trả cho những gì tôi nói hầu hết thời gian bạn sản xuất những gì bạn đầu tư không bao giờ ít hơn (trừ khi bạn bị lừa nhưng sau đó bạn không sản xuất gì cả ...) và đôi khi nhiều hơn. .


1

Tôi không tin rằng xe hơi ít phức tạp hơn. Nhưng ngay cả khi đó là trường hợp, tôi không nghĩ rằng phần mềm là ít đáng tin cậy. Tuy nhiên, tôi tin rằng có nhiều yếu tố quan trọng hơn dẫn đến sự khác biệt về độ tin cậy của phần mềm:

  1. Trừu tượng liên quan đến Phần mềm. Điều này khiến những người sáng tạo phần mềm hiểu sai về cách mọi thứ đang thực sự hoạt động. Thời gian trôi qua, sự trừu tượng ngày càng được thêm vào. Ví dụ, ngôn ngữ hội cho phép bạn điều khiển trực tiếp vào máy. C trừu tượng hơn nhưng vẫn gần với máy. Java, C # và những gì sẽ đến tiếp theo đang trừu tượng hóa mạnh mẽ những gì xảy ra trong máy. Một ví dụ khác là nếu bạn là một lập trình viên muốn hiểu cách thức kết nối mạng ở cấp độ phần mềm, thì bạn nên biết lập trình với C vì cơ sở hạ tầng (dưới dạng phần mềm) được viết bằng C.

  2. Kinh nghiệm khác nhauvà Kiến thức của các nhà sản xuất dẫn đến kết quả khác nhau. Các nhà phát triển khác nhau tạo ra phần mềm với độ tin cậy khác nhau. Điều tương tự cũng có thể nói về các nhà sản xuất xe hơi. Tuy nhiên, điểm khác biệt là bất kỳ ai có thể sử dụng trình soạn thảo và trình biên dịch hoặc thậm chí chỉ cần cài đặt IDE (Môi trường phát triển tích hợp) đều có thể tạo phần mềm Và miễn phí. Để tạo ra một chiếc xe hơi, bạn cần một khoản đầu tư lớn, một nhà máy (một số có thể tạo ra một chiếc xe mà không cần sử dụng nhưng bạn sẽ không tìm thấy nó ở khắp mọi nơi). Thực tế là bạn sẽ đầu tư rất lớn, có nghĩa là bạn sẽ cố gắng thuê người giỏi nhất trong lĩnh vực này. Tuy nhiên, vẫn còn vấn đề độ tin cậy với xe hơi. Nếu bạn biết về nó, nhiều triệu xe ô tô đang bị rút khỏi thị trường vì [lỗi] nghiêm trọng. Trong xe của tôi, nhà sản xuất sẽ thay thế phanh miễn phí cho tất cả các xe mua trong cùng một năm.

  3. Lỗi trong phần mềm thường hấp dẫn người dùng hơn ô tô. Đây là kết quả của sự tương tác và phản hồi giữa người dùng và phần mềm. Trong xe hơi, chúng tôi chú ý đến ít chi tiết hơn như "Chiếc xe đang tăng tốc khi chúng tôi đạp chân ga", phá vỡ, rẽ, đèn, gương, ... vv Trong phần mềm, với mỗi lần nhấp / nhập của người dùng thường có một phản ứng. Vì vậy, có nhiều điểm mà phần mềm có thể bị lỗi và người dùng sẽ nhận thấy nó ngay lập tức. Điều này khiến người dùng tin rằng nó kém tin cậy hơn ô tô.

  4. Hack và tấn công . Phần mềm được sử dụng càng rộng rãi thì tỷ lệ phần trăm sẽ bị tấn công càng cao. Bạn có thể so sánh điều này với trộm xe. Đối với tôi cũng vậy, độ tin cậy của xe hơi bị tổn hại khi nó có thể được mở bởi người khác không phải chủ sở hữu hoặc chìa khóa. Tuy nhiên, việc tấn công phần mềm dễ dàng hơn so với ô tô vì kẻ tấn công không nhìn thấy được. Vì vậy, khi một phần mềm bị xâm phạm, mọi người liên kết rằng nó không đáng tin cậy mặc dù nó đáng tin cậy trong những gì nó được tạo ra.


0

Nó giống như mọi thứ khác ... khi nó hoạt động bạn không quan tâm ... khi nó bị hỏng (hoặc không hoạt động theo cách bạn muốn / mong đợi) bạn quan tâm.

Hãy nghĩ về máy bay. Hàng tấn người lo lắng về việc mọi người cố gắng cướp hoặc thổi bay họ. Nhưng thực sự số lượng các sự kiện tiêu cực là rất nhỏ so với số lượng các chuyến bay hàng ngày. (Có nhiều chuyến bay hơn trong một ngày sau đó đã từng bị tấn công hoặc đánh bom .. quái vật thậm chí đã cố gắng để bị tấn công hoặc ném bom.)

Đó là tất cả trong bạn nhìn và cách bạn đo lường.


0

Nó thực sự khá đơn giản. Ô tô là công nghệ cũ. Chắc chắn có tiếng chuông và còi trong những ngày này (giờ nghỉ) nhưng nếu bạn nhìn vào những chiếc xe sớm - chúng đã phá vỡ rất nhiều .

"Công nghệ" đằng sau các bộ phận cơ khí của ô tô đã tồn tại hàng trăm năm và động cơ đốt trong cũng đã có từ lâu và khi chúng được giới thiệu, có rất nhiều vấn đề.

Hãy xem xét rằng các vấn đề về bộ nhớ gần như là một điều của quá khứ với một số nền tảng được quản lý của chúng tôi. Cung cấp cho phần mềm một vài trăm năm và chúng tôi cũng sẽ đóng nó xuống. Trong thực tế, xem xét sự phức tạp của phần mềm, tôi nghĩ rằng chúng ta đang đi trước đường cong.


0

Xe hơi hiện đại dựa vào s / w. Khi những chiếc xe hiện đại bị hỏng, ví dụ máy tính động cơ bị hỏng, nó thường (mặc dù không phải luôn luôn, nhưng thông thường) các thiết bị điện tử đã chế tạo nó, không phải là s / w.

Hỏi bất kỳ chủ sở hữu của một chiếc xe hiện đại với một ECU trong đó bao lâu nó chạy trước một thất bại đắt tiền. Tôi sẽ choáng váng nếu bạn nhận được 10 năm. Những chiếc xe hiện đại với đầy đủ các thiết bị điện tử và cảm biến là không đáng tin cậy đáng kinh ngạc.

Nếu bạn nghiên cứu lý thuyết độ tin cậy, câu trả lời trở nên rõ ràng. Mọi thứ cơ học (phần mềm mong đợi) đều có độ tin cậy ở trạng thái ổn định, đó là tỷ lệ thất bại khi nằm ngoài vùng tử vong và hao mòn ở trẻ sơ sinh. Tỷ lệ thất bại của mục cuối là SUM của tỷ lệ thất bại của các bộ phận. Thêm nhiều phần: tỷ lệ thất bại tổng hợp trở thành một con số cao hơn. Thách thức sau đó là để có được tỷ lệ thất bại của tất cả các thành phần thực sự thấp.

Khi nói đến những thứ như vành đai thời gian và hao mòn xi lanh và cảm biến oxy đầy rác, và các đầu nối trở nên ồ ạt, và dây bị đứt do rung - có những kỹ thuật có thể được sử dụng để giảm tỷ lệ thất bại. Chi phí cũng tăng lên khi bạn làm điều này.

Phần mềm, mặt khác, có tỷ lệ thất bại liên tục. Mặc dù khó khăn trong việc tìm kiếm khiếm khuyết đôi khi, cuối cùng tất cả phần mềm là một máy xúc xích. Đầu vào -> Làm công cụ -> Đầu ra. Đôi khi, thứ tự đầu vào và sự kết hợp của đầu vào dẫn đến thất bại với các chế độ có thể phát hiện được. Khi điều đó xảy ra, bạn đã tìm thấy khuyết điểm của mình, bạn sửa nó và tiếp tục.

Phần mềm không có lỗi (đã biết) có tỷ lệ thất bại là 0. Nó sẽ chạy mãi mãi mà không bị lỗi. (Thời gian trung bình giữa các lần thất bại = 1 / tỷ lệ thất bại). Nền tảng phần cứng sẽ thất bại đầu tiên.

Phần mềm có lỗi chỉ có thể chạy cho đến khi kết hợp đúng các điều kiện đầu vào, theo thời gian, làm cho lỗi bị lỗi.

FALLACY trong tất cả những điều này là để thử và so sánh tỷ lệ thất bại của vật chất (do hao mòn, di chuyển kim loại trong IC, xâm nhập của nước, rung, v.v.) với tỷ lệ thất bại của máy cơ bản là hữu hạn, đơn giản là chính xác trình tự chỉ dẫn của nó bảo nó làm gì.

(Ngay cả những thứ như các hạt alpha lật bit trong RAM là một hiện tượng vật lý, không phải là lỗi phần mềm. Cách xử lý một sự đồng đều như vậy có thể là một khiếm khuyết phần mềm, nhưng hãy nhớ rằng, hạt alpha khó chịu chỉ là một đầu vào khác của phần mềm. )


0

Sự khác biệt giữa phần mềm và ô tô là để các nhà phát triển phần mềm duy trì sự tỉnh táo, các bản sao chính xác của phần mềm phải được điều khiển bởi tất cả người dùng phần mềm và để các nhà sản xuất ô tô duy trì sự tỉnh táo, họ phải chấp nhận rằng tất cả người dùng của họ sẽ lái xe Những chiếc xe khác nhau đáng kể bởi vì cách bạn lái xe thay đổi chiếc xe, nhưng cách bạn sử dụng phần mềm không nhất thiết phải thay đổi phần mềm.

Mặt khác,

Nếu bạn có một số cách để kiểm tra dầu trong phần mềm của mình, bạn sẽ biết khi nào nó sẽ thất bại.

Nếu bạn có một số cách để thay dầu trong phần mềm của mình, có lẽ bạn sẽ có thể kéo dài tuổi thọ thêm vài tháng.

Và để mở rộng tương tự vô nghĩa:

Các bản vá không thay đổi dầu, chúng thay thế một miếng đệm bị rò rỉ.

Cập nhật không thay đổi dầu, họ đang sửa chữa phanh.

Phát hành không thay đổi dầu, chúng giống như thêm một bộ phận đánh lửa không cần chìa khóa.


0

Xe bị hỏng không thể chịu được. Ngoài ra nó có thể gây nguy hiểm đến tính mạng. Phần mềm phân tích được chấp nhận và người dùng làm việc xung quanh nó hoặc chỉ chấp nhận nó. Không có nhiều nhu cầu về phần mềm không có lỗi.

Ngoài ra phần mềm có xu hướng được tùy chỉnh, bạn không có 10000000 mẫu xe khác nhau. Tôi muốn nói wikidia đáng tin cậy và hàng tấn ppl sử dụng phần mềm đó. Vì vậy, bạn có thể nói rất nhiều người sử dụng phần mềm bugfree hoặc đáng tin cậy. (wordpress, kiểm soát nguồn khác nhau, mysql và sqlite là khá đáng tin cậy, vv)


1
Có rất nhiều phần mềm ngoài kia có thể gây nguy hiểm đến tính mạng nếu thất bại.
Adam Lear

@Anna Lear: Vâng, nhưng anh ấy đang nói về 'phần mềm nói chung'. Tất cả các xe ô tô gây nguy hiểm cho hầu hết các phần mềm không. Cũng từ những gì tôi biết, loại phần mềm đó thường đáng tin cậy

0

Phần mềm là các đối tượng toán học và logic, trong khi ô tô là đối tượng thực sự.

Hơn nữa, bạn có thể dễ dàng biết khi nào xe có vấn đề và vấn đề là gì, trong khi nó có thể khó khăn hơn nhiều với phần mềm: hãy tưởng tượng ai đó gặp vấn đề với máy tính và ai đó gặp vấn đề với xe; người này có thể biết rõ hơn những gì sai vì xe hơi ít trừu tượng hơn máy tính.

Tôi không nói rằng máy tính khó hiểu hơn: ô tô cũng liên quan đến rất nhiều định luật vật lý như nhiệt động lực học, điện tử, hóa học.

Bạn cũng có thể ngoại suy so sánh này, nói rằng: "tại sao một cái búa đáng tin cậy hơn một thư ký?".

Tôi không nghĩ rằng câu hỏi này thực sự có liên quan, nhưng tôi nghĩ nó cho thấy thực sự rõ việc thiếu một nền giáo dục toán học tốt có thể ảnh hưởng đến sự hiểu biết về một loại hệ thống nhất định.


0

Phần mềm phức tạp hơn nhiều so với một chiếc xe hơi, ngay cả khi chiếc xe gồm hàng ngàn linh kiện.

Nếu một chiếc xe phức tạp như phần mềm, thì tất cả các bộ phận của xe sẽ phụ thuộc vào tất cả các bộ phận khác của xe, và nhiều bộ phận của xe sẽ được liên kết trực tiếp với nhiều bộ phận khác của xe.

Tất cả các xe ô tô trên thế giới hầu như không bằng phần mềm Unix gốc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.