it-swarm-vi.com

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

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?

65
Alex Angas

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ị ngoài đó 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 đó là in ô tô 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?

183
GrandmasterB

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 thông thường nào.

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 cơ học CAD tôi sử dụng tại nơi làm việc 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 Edge 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 Edge, 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.

115
Tim Williscroft

Đó 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.

56
David Thornley

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.

25
S.Lott

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 cùng bạn có sự sang trọng đó 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.

20
Berin Loritsch

Ô 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 ...

19
CaffGeek

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 Edge cắt 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.

16
Alb
  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 ...

13
Glen Solsberry

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 thu hút 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 đầu 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.

10
Robert Harvey

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 đượ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: Ô tô 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ì.

5
Bernard Dy

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 để mọi người 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 thủ tục tạo ra nó.

4
dsimcha

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 được tối ưu hóa tối ưu của bạn có thể chạy trơn tru và không có 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à bạn 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.

4
Martin York

Đâ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ó, hơn 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ó còn mới xuất xưởng.

3
cbmeeks

Đầ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ó lẽ 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.

3
zneak
  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 ích 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 hầu hết các phần mềm hoạt động như thế nào; 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; 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ế xe có hàng nghìn năm tuổi; thiết kế xe 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 này sẽ lan rộng ra 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 đóng gói và chúng chỉ được mong đợi hoạt động 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
Michael

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ể được 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. Tập hợp-- 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.
3
Darknight

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 Valve 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.

2
Kyralessa

Ô 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
Brian Knoblauch

Đầu tiên tất nhiên một số sw là hoàn toàn đáng tin cậy, và xe hơi - đặ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
user15497

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 nha và 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 một chiếc xe, 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ê tốt nhất trong lĩnh vực này Tuy nhiên, vẫn còn có vấn đề về độ tin cậy đối với ô tô. Nếu bạn biết về điều đó, nhiều triệu xe đ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ế miễn phí cho tất cả các xe đã mua trong cùng một năm. Đây là một vấn đề nghiêm trọng và theo tôi cho thấy rằng ngay cả những chiếc xe cũng không đáng tin cậy như khách hàng của bạn nói.

  3. Lỗi trong phần mềm thường được người dùng yêu thích hơn so với ô 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.

1
Saleh Al-Abbas

Độ 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 mềm 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 đề 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ệ hơn nhiề. Đ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
Anthony

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. Những sửa đổi đó không chỉ phải hợp pháp trên đường phố mà còn phải đáp ứng các yêu cầu về thẩm quyền đồ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ộ.

Ô tô? Đ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
user15456

Ngành công nghiệp xe hơi 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 tài xế 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 cần có 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ư cho 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 được gì. ..) và đôi khi nhiều hơn nữa ..

1
lollancf37

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.

0
user15441

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
Matthew Whited

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 - họ đã phá vỡ một rất nhiề.

"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ừ rấ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 ta 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
Steven Evers

Có bao nhiêu nhà thiết kế xe hơi? 10.000 đầu? - họ tài năng và họ biết họ đang làm gì.

Có bao nhiêu lập trình viên phần mềm? 30 triệu? - và nhiều người trong số họ không biết họ đang làm gì, lấy ví dụ PHP lập trình viên, bạn có thể học PHP và viết chương trình đầu tiên của bạn ít hơn Một vài giờ.

Nếu phần mềm chỉ được viết bởi 10.000 lập trình viên giỏi nhất, thì nó sẽ đáng tin cậy như ô tô.

0
Czarek Tomczak

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 nào của một chiếc xe hiện đại có ECU trong đó mất bao lâu trước một thất bại đắt giá. Tôi sẽ bị choáng nếu bạn có 10 năm. Những chiếc xe hiện đại có đầy đủ thiết bị điện tử và cảm biến là tuyệt vời không đáng tin cậy.

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 động, 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, alpha khó chịu hạt chỉ là một đầu vào khác cho phần mềm.)

0
quickly_now

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 đánh lửa không cần chìa khóa.

0
Peter Turner

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)

0
user2528

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
jokoon