it-swarm-tr.com

Yazılım neden bir araç kadar güvenilir değil?

Bir kullanıcı bana bu soruyu sordu. Arabaların bozulduğunu biliyoruz, ancak bu fiziksel bir şey yüzünden (yazılım dahil olmadıkça!).

Yazılımın çok daha genç bir endüstri olduğunu cevaplamaya çalıştım, ancak kullanıcı "otomobil endüstrisi daha az insanla çok daha istikrarlı ve güvenilir olmadı mı?".

Ayrıca yazılımın daha karmaşık olduğunu cevaplamaya çalıştım, ancak kullanıcı bir araba oluşturan binlerce parçanın olduğunu karşıladı. Otomobil tasarlayan ve üreten insanlar genellikle bileşen (ler) ini çok iyi biliyorlar, ancak sonuçta hep birlikte çalışıyorlar.

O zaman yazılım neden bir araba kadar güvenilir değil?

65
Alex Angas

Sorunuzun temeli basitçe yanlış: Yazılım bir arabadan "daha az güvenilir" değil. Milyarlarca milyarlarca orada yıllarca, 7 yıl boyunca gömülü yazılım çalıştıran sorunsuz bir cihaz var. Heck, bazıları in arabalar ve motoru kontrol ediyor/izliyor. Peki, eğer araçların kendisi yazılıma güveniyorsa, yazılım bir arabadan daha az güvenilir olabilir mi?

183
GrandmasterB

Yazılım ve mekanik parçalar tasarlıyorum.

Bu karmaşıklıktır.

Çünkü modern yazılımda milyonlarca "parça" var.

Yazılım parçaları çok karmaşıktır ve çok fazla DEVLET vardır. Mekanik hareket etmeyen parçanın durumu yoktur.

Mekanik hareketli bir parçanın konumu vardır (bir değişken).

Çalışan ve 1Mb kullanan bir program RAM bir milyon baytlık duruma sahiptir. Bu normal mekanik sistemlerden çok daha fazla durumdur.

Çok nadiren gerçekleştiği için hiçbir zaman test edilmeyen devletlerin birleşimi olacaktır. Mekanik bir sistemde (araba gibi), mekanik parçaların çalışma sırasında birbirlerine çarpmadığını kontrol etmek kolaydır. İş yerinde kullandığım mekanik CAD yazılım otomatik olarak yapar.

Görünmez, dokunulmaz parçalardan makineler inşa ettiyseniz ve hepsi birbirini özleyen milyonlarca hareketli parçaya sahip olsaydınız, bu basit bir program gibi olurdu.

"Merhaba dünya" bile bir işletim sisteminde çalışır. Eski 8 bit sistemler ve mini bilgisayar işletim sistemleri basit oldukları için oldukça güvenilirdi.

DLL'ler ve paylaşılan kitaplıklar gibi şeyler virüs güncelleştirmelerinin veya yazılım yüklemelerinin bir parçası olarak değiştirilir ve sonra ilgili program çalışmaz. Bir bisiklet lastiği için arabanızdaki lastiği değiştirmek gibi. Kitaplık işlevinin bazı Edge durumları karışır (programın beklediği şekilde davranmayın).

Java gibi nesneler arasında pek çok tasarlanmış olmayan etkileşime izin vermeyen (işaretçi yeniden kullanımı, dizi sınırları taşmaları) gibi dillerde yazılmış programlar, onları çalıştırmaya başladıktan sonra genellikle oldukça güvenilirdir.
Statik kütüphaneli işletim sistemlerini kullandığınızda, bir program çalıştıktan sonra çalışmaya devam eder (ancak durum büyüklüğüne göre hala birçok Edge koşulu olacaktır).

Dave Parnas, programın durumunu küçülterek yazılımda güvenilirlik elde etmeyi yazar. Sıkı fonksiyonel programlama adamları tek bir statik atamayı zorlayarak aynı şeyi yapıyorlar.

115
Tim Williscroft

Bu bir tüketici seçimi meselesi.

Tüketiciler yazılımın Honda Civic'im kadar güvenilir olmasını isterse (eski Ford Maverick'imin aksine), olurdu. Bazı kuruluşlar bu kadar güvenilir yazılımlar ister ve bunu genellikle gömülü yazılımlar için, bazen uzay görevleri ve hava trafik kontrolü gibi güvenlik açısından kritik şeyler için alırlar. Yazılım hala mükemmel değil, ama ikisi de araba değil.

Bununla birlikte, müşteriler yazılımlarında başka nitelikler talep ederler ve çoğunlukla daha az işlevsel, kesinlikle daha pahalı ve daha güvenilir olduğu için daha sonra gönderilen yazılımlar için ödeme yapmak istemezler.

56
David Thornley

araba oluşturan binlerce parça var.

Sadece bir bilgisayar (ve ilgili yazılım) bu kadar basit olsaydı.

Bilgisayarda ne gigabayt bellek var? Milyarlarca parmak arası terlik? Terabayt disk mi? Trilyonlarca "hareketli" parça?

Yazılımda 10 bin veya 100 bin binlerce ayrı kod satırı bulunabilir. Ayrıca birim testlerde ve araçlarda bu kadar çok (veya daha fazla).

Hayır. "Arabalar da karmaşık" iddiası ranza. Yazılım bir arabadan çok, çok, çok daha karmaşıktır.

25
S.Lott

Yanmalı motorları çalıştıran ilkeler ve araba oluşturan tüm bileşenler geçen yüzyılda çok fazla değişmedi. Elbette evrimsel gelişmeler ve hibrid otomobiller vardı, ancak temel bileşenler aynı. Bir motorunuz, bir aktarma organınız, vs. var. Konsept otomobiller ve süper pahalı son derece hızlı Bugatti Veyron aynı temel yapıya sahip. Kısacası, bir araba tasarlamak bir iyi bilinen sorun.

Bunu yazılım geliştirmeyle karşılaştırın.

  • Müşteriler başladıklarında ne istediklerini bilmiyorlar. Lüks bir jet hakkında konuşmaya başlarlar, ancak maliyetleri fark ettiklerinde, ayakla çalışan bir scooterın maliyeti için inşa etmenizi isterler.
  • Araba tasarımı, fikirden konsept otomobili almak için yıllar alır ve oradan üretilmesi daha fazla yıl alır. En son ne zaman yazılımla bu lüksü kazandınız?
  • Araba parçaları metal parçalardır, ancak yazılım bileşenleri şekli ve arayüzü sık sık değiştirebilir.
  • Üretim süreci tamamen farklıdır. Otomobillerde parçalar seri olarak üretilir ve aynı araçlar farklı araçlarda kullanılır. Yazılım ile hemen hemen her şey el yapımıdır, çünkü aksi takdirde işler tam olarak uymaz.

Kısacası, bir arabanın yazılımdan "daha güvenilir" olarak algılanmasının birkaç nedeni vardır. Az önce bir çift buldum.

20
Berin Loritsch

Arabalar güvenilirdir. Çoğu yazılım da öyle.

Ama ... özel arabaların ve özel yazılımın her ikisinin de sorunları var.

Modifiye 1970 kas arabası, tamircisi ve ince ayarları olan ve molaları olan herhangi bir gerçek araba tutkunu ve orijinal bırakmış olsaydı sahip olmadığı her türlü aptalca sorun. Ama ... o zaman süper şarj cihazına sahip olmazdı ...

19
CaffGeek

Kullandığınız araba birçok kez yapıldığı için, inşaat süreci o kadar rafine edilir ki aynı araba tekrar tekrar bir üretim hattında yapılabilir.

Eğer bu kadar güvenilir bir yere yakın olmayacaksa, sıfırdan inşa edilmiş bir tür karmaşık kesim Edge arabası olsaydı, örneğin formül 1 yarış arabalarında arıza oranının ne kadar daha yüksek olduğuna bakın. Yarış başına bir ya da iki kişinin ayrılması yaygındır.

Yeni yazılım her zaman bir seferliktir. Programcıların kodları daha önce hiç kodlanmadı. Bu senaryoda gerçekten yüksek kalite elde etmek, çoğu ürün için engelleyici bir maliyet içerir. Her önemsiz yeni yazılım etkili bir şekilde bir prototiptir.

Bir yana, geleneksel mühendislik tekniklerinin yazılım mühendisliğine uygulanmasının bir felaket olmasının temel nedenlerinden biri budur.

16
Alb
  1. Otomobil üreticileri "nihai" ürünü üretmeden önce tüm özellikleri çivileniyorlar.
  2. Otomobil kullanıcıları, tasarımcıların beklemediği aptalca şeyler yapma eğiliminde değiller.
  3. Otomobiller yılda bir kez (genellikle) "güncellenir", ancak çoğu yazılımın yılda birçok kez güncellenmesi beklenir.

Devam edebilirdim, ama tarayıcım çökmek üzere gibi geliyor ...

13
Glen Solsberry

Aslında çok basit bir sebep var.

Para kazandıran yazılım pazar payını kazanan yazılımdır. Çoğu zaman, piyasaya bir parça yazılım getiren şirket ilk, yazılımları kendi pazarlarındaki en iyi ürün olmasa bile, pazar payının çoğunu alan şirket olacaktır. .

Sonuç olarak, odak noktası yazılımın daha sonra ve mükemmel olmaktan ziyade daha erken ve kusursuz olarak yayınlanmasıdır.

10
Robert Harvey

Cevapların çoğunu beğendim. İşte benim dönüşüm.

Arıza maliyeti otomobiller için yazılımdan daha ciddidir

Araba arızası potansiyel olarak bir ömre mal olabilir. Hayatı tehdit etmeyen bir araç arızası bile kullanıcı için oldukça görünür bir rahatsızlığı temsil eder. Yazılım hatası, üretim desteğindeki bazı zayıf sapların fazla mesai yapmak zorunda kalacağı anlamına gelir. Ve eğer o kişi tam zamanlı muaf çalışansa, o zaman tanrım, o kadar pahalı değil. Aslında, ücretsiz fazla mesai aslında saat başına işgücü maliyetini düşürdüğü için düşük kalite ve kötü yönetim ödüllendirilmektedir!

Tabii ki, bu kullanılan yazılımın türüne bağlıdır (yazılım, silah sistemlerine, aviyoniklere veya tıbbi sistemlere de hayat üzerinde bir etki yaratabilir), ancak bir araba çok paraya mal olur ve güvenilirlikteki gecikmeleri yeterince düzenli olarak kullanır. oldukça somut ve acı verici. Yazılım arızaları genellikle geçici çözümlere sahiptir.

Başka bir düşünce: Arabalar güvenilir görünüyor, ancak araç iyi çalışıyor olsa bile devam eden kesin bakım maliyetleri var ve kültürel olarak, bu kabul ediliyor ve hatta araçlarını önemseyen insanlar tarafından gurur verici bir harcama. Öte yandan, yazılım yüklendiğinde genellikle kırılmış ve zamanla değişmek zorundadır, ancak kültürel olarak kimse bakım için ödeme yapmak istemez.

5
Bernard Dy

Arabalar, tarihlerinin çoğu için oldukça güvenilmezdi ve kesinlikle bir öğrenme eğrisi var. Otomobiller yaklaşık 60 yıldır büyük ölçekte üretilirken, yazılımlar sadece 20-25 civarında büyük ölçekte üretilmektedir. Büyük ölçekli olarak, kitlelerin satın alması/kullanması için yeterince büyük demek istiyorum ve onu oluşturmak için prosedürü nasıl mükemmelleştireceklerini anlamak için gerçekten büyük bir teşvik var.

4
dsimcha

Arabayı bir uygulama olarak düşünmeyi seviyorum. İşletim sistemi uygulamanın çalıştığı yoldur.

Yol ve araba arasındaki arayüz iyi tanımlanmıştır. İyi test edilmiş ve geriye dönük uyumluluk için kapsamlı bir şekilde kontrol edilmiştir (arayüz basit olduğu için kolaydır). Ancak buna rağmen bazı geriye dönük uyumluluk sorunlarınız var. "Farrie" tipi arabalar "çamur yolları" tipi yollarda koşmakta zorlanıyor.

Buna rağmen, OS gibi yollar sürekli bakıma ihtiyaç duyar. Köprüler tükendi. Arabalar kar zincirlerini takıyor ve uygulama bozukluğu gibi yolları yırtıyor ve işletim sistemi tarafından kullanılan disklere ve dosyalara zarar veriyor.

Başvurular bir işletim sistemine yazılacaktır. Ancak genel olarak işletim sisteminin farklı sürümlerini (farklı yol türleri) çalıştırmalıdırlar. Bu nedenle, akşam yemeği için optimize edilmiş uygulamanız, doğru işletim sisteminde (Karayolları) çalıştırıldığı sürece sorunsuz ve sorunsuz bir şekilde çalışabilirken, diğer genel amaçlı (daha basit) kodlar her türlü yol üzerinde iyi çalışır.

Uygulama ve İşletim Sistemi arasındaki Arayüz tanımlanmıştır, ancak aşırı derecede karmaşıktır ve her zaman biraz dalgalanır. Özellikle kullanıcının kendi işletim sistemlerini uzantılarla değiştirmesine izin verdiğimiz için. Hükümet kullanıcıların yolları değiştirmesine izin verirse çok daha fazla çökme yaşanır.

Kullanıcının işletim sistemini değiştirme yeteneğini sınırlamaya başladığınızda, uygulamaların güvenilirliği neredeyse kaya gibi sağlamlaşabilir. Tüm bu gömülü cihazlara bakın. İşletim sistemlerine yakın ve kullanıcılarınızın kesintisiz ve 7/24 kesintisiz çalışmasına izin vermiyoruz.

Yani bu yazılımın güvenilir olmadığını söyleyebilirim. Daha çok, kullanıcıların uygulamalar için karayolu üzerinde delik kazmak olduğunu söylemek gibi. Hey, başvurunuz geçen sene açtığım deliğe düştü ve unuttum.

4
Martin York

Bu aptalca bir soru (sizden değil, orijinal kişiden).

Bu kulağa bilgisayardan nefret eden ama bütün gün eBay'de harcayan babam (tamirci) gibi geliyor.

"Bir ağaç neden bir güveden daha güvenilirdir?".

Her şeyden önce, 30 (evet, 30+) bilgisayarım var ve bunlardan biri dükkanda değil. Tamirlerde arabama 1400 dolar harcadım. Bilgisayar tamirine karşı oto tamir atölyelerinin sayısını sayın. Bir kez daha aptalca benzetme.

Arabalar çelikten, bilgisayarlar plastikten yapılmıştır. Otomobiller her türlü hava koşulunda, iç mekanda kullanım için tasarlanmış bilgisayarlarda çalışır.

Benim Commodore 64 (26 yaşında) mükemmel çalışıyor ve hiçbir onarım yapmadı. Her iki aracım da (10 yaşından küçük) çok kapsamlı bir onarım yaptı. Bana fabrikada yeni olduğu zamanki% 100'ünü çalıştıran, 26 yaşında olan binlerce ve binlerce saatlik bir araba gösterin.

3
cbmeeks

İlk olarak, kullanıcı bu dünyada o kadar güvenilir bir yazılım olduğunu bilmelidir ki, var olduğunu bile bilmiyor. Hiç bir TV kazası gördünüz mü? Ben de değil.

Bence asıl sebep yazılımın önemsiz olmasıdır. Önemsiz olmak, geliştirici olmayanların ilerlemeyi görmediği anlamına gelir. Örneğin, bir araba üretiyor olsaydım, farklı parçaları birleştirdiğimi görebiliyordunuz ve daha çok bir araba gibi görünüyordu; Ancak, programlama bana bakarsanız, belki yeşil bir metinle siyah bir ekranda küfür ederek garip desenler yaparak saatler geçireceğim ve sonra desen biraz değiştiğinde aniden aşırı heyecanlandıracağım.

Bu nedenle, normal insanlar yazılımın karmaşıklığını fark etmez. Bir pencere gördüklerinde, programı bir bütün olarak gördüklerini düşünüyorlar, ki bu çok yanlış.

Ayrıca, yazılım arabalardan çok, çok daha sık özelleştirilir. Bir arabayı özelleştirdiğinizde, tasarımına karşı gitmeyeceksiniz, çünkü bu gözle görülür derecede aptalca olacaktır. Motorum arabanın önündeyse, arkaya taşımak büyük olasılıkla büyük bir felaket olacaktır. Bununla birlikte, yazılım önemsiz olduğundan, müşteri tasarıma karşı tamamen bir şey yapmanızı isterse, yaptıkları şeyin aptal olduğuna dair hiçbir belirti almazlar (ancak siz dinlemezler) ve sonra ' Beklendiği gibi çalışmadığına şaşıracaksınız.

3
zneak
  1. Bilgi Paylaşımı eksikliği (programcılar solo veya küçük gruplar halinde uçarlar - araba tasarımcıları büyük bir şirket içindeki birbirine bağlı ekiplerle çalışırlar ve hepsi bilgilerini paylaşır; Hepimiz büyük şirketler için çalışsaydık, öğrenme nedeniyle hepimiz daha iyi programcılar oluruz açık kaynaklı programlar ve çevrimiçi kaynaklar gibi şeyler de çok önemlidir)
  2. Alan Katılımcılarının Beklentileri (bir araba tasarımcısı ilk 5-10 yıl için sadece marjinal olarak faydalıysa, ancak bir programcı röportaja girerse ve 5-10 yıl boyunca çok fazla kullanmayacağını söylüyorsa, röportaj bitti)
  3. Sızma Testi Eksikliği (fon eksikliği, yasallık sorunları vb. Nedeniyle; araba üreticileri, ancak arabadan sonra bir tuğla duvara çarptı, rüzgar tünellerine sahip, nispeten basit performans gereksinimlerine sahip, vb.)
  4. Bilgi Şeffaflığı (çoğu yazılımın nasıl çalıştığını bilmiyorsunuz; tahminler veya röportajlar, basın bültenleri, reklamcılık vb.
  5. Doğasında Bilgi Kapsülleme (çerçeveyi bir araya getiren adam/robotun stabilite kontrol sisteminin arkasındaki matematiği bilmesine gerek yoktur; programcılar, ortalama bir kişi tarafından bilinmeyen binlerce veya on binlerce şey hakkında bilgi sahibi olmalı, sadece araba tasarımcıları yüzlerce veya binlerce bilmeniz gerekir)
  6. Somutluk (gördüğünüzde yardımcı olur)
  7. Tarla Yaşı (araç tasarımı binlerce yaşında; motorlu araç tasarımı 250 yaşın üzerindedir [Buhar motorları, vb.)
  8. Alt Sistemlerin Kritikliği (parçaları çok fazla dursa bile arabalar hala "çalışacaktır" - güç kilitleri, elektrikli camlar, HVAC, cam silecekleri, kırık camlar, kayıp jant kapakları, düz lastikler [yenisini takın], radyo, bir veya iki ışık, uzak giriş, vb .; bilgisayardaki bir şey bozulduğunda, genellikle bir SHTF senaryosudur)
  9. Karşılıklı bağımlılık (bir bilgisayar bozulduğunda, yüzlerce veya binlerce diğer bilgisayarı etkilemesi nadir değildir; bir araba bozulduğunda, diğer arabaların etkilenmesi biraz nadirdir - diğer arabalar etkilenirse, neredeyse her zaman sadece 1'dir. -3)
  10. Battaniye Suçu (bir bilgisayarın bir kısmı veya binlerce bilgisayardan biri bir sistemi bozar ve bir sistemi incitirse, suçlama tüm bilgisayara veya ikinci durumda, tüm bilgisayar ağına uzanır; arabanıza bir araba çarptıysa başarısız frenler veya bir araba durursa ve otoyolda yeniden başlamazsa, yalnızca tek araba parçası suçlanır)
  11. Sonlu ve Sonsuz sistemler (arabalar sadece çok fazla paketlenmiş olabilir ve sadece sınırlı koşullarda çalışması beklenir - örneğin, sadece Jeep benzeri bir aracın yapabileceği arazi üzerinde bir BMW kullanmazsınız; bilgisayarlarla, ancak, olasılıklar fiilen sonsuzdur - her zaman yeni şeyler, yeni API'ler, yeni işletim sistemleri, yeni güvenlik açıkları, iPad'ler, cep telefonu yazılımı, yeni, yeni, vb.)
  12. Gerekli Bilgi Topluluğunun Kapsamı (130-140 IQ'lu bir kişi otomobiller hakkında neredeyse her şeyi öğrenebilir, ancak bilgisayarlar ve programlama hakkında bildiklerinin sadece bir kısmını öğrenebilir)
3
Michael

Tüm mantığın kusurlu olmasının basit nedeni:

Mekanik cihazlar basitçe Giriş/Çıkış; bu G/Ç çalışmasını gerçekleştirmek için parça sayısını artırmak G/Ç çalışmasını değiştirmez. Böylece sistem tam olarak anlaşılabilir.

Yazılım ise Girdi -> Süreç -> Çıktı. Bu yapı nedeniyle sistem tam olarak tahmin edilemez veya anlaşılamaz.

Donald Rumsfeld en iyisini söyledi:

“Bilinen bilinenler var; bildiğimiz bildiğimiz şeyler var. Bilinen bilinmeyenler olduğunu da biliyoruz; yani bilmediğimiz bazı şeyler olduğunu biliyoruz. Ama bilinmeyen bilinmeyenler de var - bilmediğimizi bilmediklerimiz. ”—ABD Savunma Bakanı Donald Rumsfeld

Özetle:

  • Mekanik bir cihaz, bilinen ve bilinmeyen bir sistemdir,
  • Yazılım yukarıdakilere değil aynı zamanda bilinmeyenlere de sahiptir.
3
Darknight

Yazılım bitlere dayanmaktadır: 0 ve 1. Otomobiller (çoğunlukla) mekanik parçalara dayanmaktadır.

Mekanik bir parça yıpranabilir veya arızalanabilir ve yine de bir tür iş yapabilir. Frenleriniz aşınmış veya Valf sızdırıyor, ancak tamir edene kadar araç çoğunlukla çalışıyor.

Yazılım, çoğunlukla, kademeli başarısızlık gibi bir şeye sahip değildir. Ya çalışıyor ya da kırılıyor. Sıfıra bölmek "neredeyse doğru" değildir; bu sadece bir hata. Yeterli alan bulunmayan bir sürücüye kaydetmeye çalıştığınızda, tüm verileri zorlamak için zorlayamazsınız; sadece gitmeyecek.

Yazılımın bir arabadan daha az güvenilir olduğunu düşünmüyorum, ancak yazılım başarısız olduğunda, yavaş yavaş değil, hemen başarısız oluyor.

2
Kyralessa

Arabalar aslında düşündüğünüz kadar güvenilir değil. Sadece hatalar, her şeyin başarısız olmasına neden olmadan uzun süre gizli kalabilir (veya yok sayılabilir). Aracınız sızıntı yağı ve/veya soğutma suyu? Hayır? Emin misiniz? Muhtemelen yanılıyorsun ... Muhtemelen henüz fark etmediğin bir yere çok küçük bir miktar sızdırıyor ... Şimdi bunu süspansiyona, gövde panellerine, iç mekanlara vb. yine de yanlış bir şey bulamadığım bir araba ile karşılaştım. Bununla birlikte, parçaların büyük çoğunluğu ulaşım misyonu için gereksizdir. Bir bilgisayar için öyle değil. Bilgisayardaki hemen hemen her bölüm kritik öneme sahiptir.

Bu, yeniden paketlenmiş eski analog ve dijital tartışma. Her şey mükemmel olduğu sürece dijital TV harika. Anında bir şeyler ters giderse, ses kekeleri ve video onu işe yaramaz hale getirir. Kolayca göz ardı edilen küçük bir tıslama veya statik alacağınız analog TV ile karşılaştırın.

1
Brian Knoblauch

Öncelikle bazı sw'ler mükemmel derecede güvenilirdir ve otomobiller - özellikle İngiliz ve İtalyan olanlar - mutlaka bu kadar güvenilir değildir.

Bu, otomotiv yazılımı ile çalışma deneyimimin iki şeye düştüğünü söyledi:

  • Garanti maliyetleri. SW'niz başarısız olduğunda, yeniden başlatın. Belki bir hata raporu hazırlayacaksınız. Veya pahalı destek sözleşmesini kullanın. Aracınız arızalandığında, onu getirecek ve garanti kapsamında sabitlenmesini talep edeceksiniz. Bu, üreticiye 100 $ ve üstü mal olacak. Her sw hatası üreticiye 2 $ mal olursa sw'nin daha güvenilir olacağından eminim.

  • JD Powers (ve diğer kalite sıralamaları). JD Powers ThingsGoneWrong'u araştırır (ki bu her şey olabilir). Ve eğer bu sıralama gerçekten kötü ise, insanlar en azından kar elde etmek için yeterli para için arabanızı satın almazlar. SW için bir JD Powers'ımız olsaydı ve insanlar gerçekten umursadıysa, sw'nin daha güvenilir olacağından eminim.

Güvenilmez arabalar yaparsanız, garanti masrafları hızlı bir şekilde tüm kârınızı tüketir ve birkaç yıl içinde kötü kalite sıralamaları hiç araba satmayacağınız anlamına gelir. Güvenilmez sw yaparsanız, kullanıcılar şikayet edecek ve pahalı destek sözleşmeleri satacaksınız.

1
user15497

Arabaların daha az karmaşık olduğuna inanmıyorum. Ancak durum böyle olsa bile, yazılımın daha az güvenilir olduğunu düşünmüyorum. Ancak, yazılımın güvenilirliğinde tutarsızlıklara yol açan daha önemli faktörlerin olduğuna inanıyorum:

  1. Soyutlama yazılıma dahil. Bu, yazılım yaratıcılarının işlerin gerçekte nasıl çalıştığını yanlış anlamalarına neden olur. Zaman geçtikçe daha fazla soyutlama eklenir. Örneğin, Montaj dili makineye doğrudan kontrol sağlar. C daha soyutlanmış ancak yine de makineye yakın. Java, C # ve bundan sonra ne gelecek makinede olanları büyük ölçüde soyutlamaktadır. Başka bir örnek, ağın yazılım düzeyinde nasıl gerçekleştiğini anlamak isteyen bir programcıysanız, altyapı (yazılım olarak) C dilinde yazıldığı için C ile programlamayı bilmeniz gerekir.

  2. Farklı Deneyimler ve üreticilerin bilgisi Farklı sonuçlara yol açar. Farklı Geliştiriciler farklı güvenilirliğe sahip yazılımlar oluşturur. Aynı şey Araba üreticileri için de söylenebilir. Bununla birlikte, fark, bir editör ve derleyici kullanabilen veya sadece bir IDE (Entegre Geliştirme Ortamı)) kurabilen ve yazılım oluşturabilen ve ücretsiz olarak kullanabilmenizdir. büyük bir yatırım, bir fabrika (bazıları araba kullanmadan araba yapabilir, ancak etrafınızda her yerde bulamayacaksınız) Büyük bir yatırım yapacağınız, bu alanda en iyisini işe almaya çalışacağınız anlamına gelir Yine de, arabalarda güvenilirlik sorunları var.Bunun farkındaysanız, milyonlarca araba ciddi [hatalar] için piyasalardan çekiliyor.Otomobilimde, üretici, satın alınan tüm arabalar için fren makaslarını ücretsiz olarak değiştirecek Bu ciddi bir konudur ve bence arabaların bile müşterinizin söylediği kadar güvenilir olmadığını göstermektedir.

  3. Yazılımdaki hatalar genellikle kullanıcılar için arabalardan daha belirgindir. Bu, kullanıcı ile yazılım arasındaki etkileşimin ve yanıtın sonucudur. Bir arabada, "Gaz pedalına bastığımızda araba hızlanıyor", kırma, dönüş, ışıklar, aynalar, vb. Gibi daha az ayrıntıya dikkat ediyoruz. Yazılımda, her kullanıcı tıklaması/girişi genellikle cevap. Bu nedenle, yazılımın buggy olabileceği birçok nokta vardır ve kullanıcı bunu hemen fark edecektir. Bu, kullanıcıyı otomobillerden daha az güvenilir olduğuna inandırır.

  4. Saldırı ve Saldırılar. Bir yazılım ne kadar yaygın kullanılırsa, saldırı saldırıları altında o kadar yüksek olur. Bunu araba hırsızlığıyla karşılaştırabilirsiniz. Benim için bir araç güvenilirliği, sahibi veya anahtarı dışında biri tarafından açılabileceğinden ödün veriyor. Ancak, saldırgan görünmediği için yazılıma saldırmaya çalışmak arabadan daha kolaydır. Bu nedenle, bir yazılım tehlikeye girdiğinde, insanlar, ne için yapıldıklarında güvenilir olsa da, güvenilir olmadığını ilişkilendirir.

1
Saleh Al-Abbas

Motorlu Taşıt güvenilirliği ve güvenliği zorunludur. Birçok ülkede (en çok?) Yasalarca asgari düzeyde güvenilirlik ve emniyete sahip olmaları ve en kötü senaryo (ne olursa olsun) için test edilmeleri gerekmektedir. Ticari yazılım çoğunlukla değildir.

Yazılım için başka yasal etkiler olsa da, yazılım "Kaydet" düğmesine her basışınızda çökerse, bu sadece bir yama/düzeltme meselesidir ve devam edersiniz. Göstergeyi her açtığınızda bir araba çökerse, bu bir çok daha kötü şeydir. Bir SUV'nin beklenmedik bir şekilde çökmeden çalışması için Microsoft Outlook'un beklenmedik bir şekilde çökmeden çalışması çok önemli değildir.

Bununla birlikte, bir arabanın mekaniğinden daha fazla veya daha fazla sorumluluğu olan başka yazılım parçaları da vardır. Uçaklar ve Füze Rehberlik sistemleri güvenilir olmak zorundadır; tehlikede olan hayatlar var! Bunların ortalama motorlu araçtan daha sıkı bir şekilde test edileceği umulmaktadır.

1
Anthony

Bence çok daha iyi bir benzetim var. Müşteri şartnamesine göre ambulanslar yapan bir şirket alın. Taban platformu (örneğin, tamamen işlevsel ve sokak yasal RV kesitli bir şasi) çeşitli noktalarda değişiklikler gerektirir: çerçeve, şarj sistemi, dolgu musluğu, süspansiyon, vb. müşteri isteklerini tatmin ederken.

O zaman ambulans organını kendiniz inşa etmelisiniz, bu da hükümet ve diğer organların çeşitli katmanlarından gelen düzenleyici gerekliliklerle doludur. Yine de bazı korkak oturma düzeni veya depolama sistemi için müşteri arzusunu tatmin ederken. Ayrıca, farklı satın alma ve dağıtım programlarında dünyanın dört bir yanından yüz farklı müşterinizin olduğunu unutmayın, bunların hiçbiri "sonuncusu gibi bir düzine daha alacağım" demez. genellikle her şeyin tam olarak yeniden yapılandırılmasını gerektirir.

Arabalar? Bu önemsiz. Yapılmış olanı satın alacaksınız ve tasarımın herhangi bir yönü üzerinde doğrudan bir etkiniz yok. Renk seçiminiz bile yapaydır, çünkü henüz tasarlanmamış ve test edilmemiş bir şeyi gerçekten belirleyemezsiniz. Bir anlamda bir 'müşteri' değil sadece bir 'pazar' vardır. Bazı pazarlar için üretilen hazır yazılımın genellikle yerel bayilikte aldığınız araç kadar güvenilir olduğunu iddia ediyorum.

1
user15456

Otomobil endüstrisi test için halka "beta" bir araba bırakmıyor, otomobil endüstrisi de ürünlerini teslim ettikleri ortam hakkında endişelenmek zorunda değiller, ancak başka birçok şey için endişelenmem gerekiyor. yazılım endüstrisinin temelde farklı olduğunu (hepimizin bildiği gibi), bu nedenle güvenilirlik ve karmaşıklığın gerçekten düşündürücü olduğunu söyleyin. Bence bir araba bir yazılımdan daha karmaşık ama o zamandan beri neyin işe yarayıp yaramadığını görmek daha kolay

  • Arabaların altında sanal değil, test edilmesi daha kolay (ancak daha pahalı)
  • Yazılım endüstrisinden çok daha önce başladılar, daha az insan olsalar bile, topladıkları uygulamayı ve bilgiyi en aza indiremezsiniz. Yazılım endüstrisi hala bir bebek.
  • Tüm otomobil endüstrisi, özellikle son on yıllarda şoförlerini öldüren araba yapmamak için yasa ve etik kurallara tabidir.

Bu nedenle, yazılımın otomobillerden daha az güvenilir olduğunu, birçok tür yazılım için doğru olabileceğini ve diğer alan (güvenlik, havacılık ...) için tamamen yanlış olabileceğini belirten bir yazılım, bir yazılımın en güvenilirden en güvenilir olduğundan emin olabilirsiniz. o bölgedeki arabaların. Çünkü bu alan kritik ve sadece o alandaki yazılımlardan bildiğim kadarıyla otomobil endüstrisi ile karşılaştırılabilir.

Bu da bizi buna yönlendirir: Çoğu yazılım, kendi alanlarında kritik sayılmaz. Bu şekilde düşünüldüğünde, güvenilir bir yazılımınız var, bunlar üzerinde bulacağınız tek sorun, çevre ile ilgili problemlerdir (bu yüzden kontrol edebiliyorsanız, neredeyse hiç probleminiz olmaz), yazılımın kendisi değil. Bununla birlikte, çoğu yazılım editörü bu kritik alanda çalışmaz, elbette belirli bir kalite seviyesi sağlamakla yükümlüdürler, ancak yazılımı en kısa zamanda sunmak için daha bağlı (bence). Bununla birlikte, iyi bir yazılım gerektirir: iyi proje yönetimi, sağlam özellikler, iyi tasarım ve içinde çalışanlardan iyi düzeyde beceri (devam ettirmek için). Bunu yapmak için, satmaktan bile söz etmiyoruz ...

Bütün bunlar zaman alır ve para gerektirir. Çoğu zaman ürettiğim şey için ne ödediğinizi aldığınızdan bahsetmiyorum ne için yatırım yaptığınız asla daha az (vidalı olmanız dışında ancak hiçbir şey üretmemeniz hariç). ..) ve bazen daha fazlası ..

1
lollancf37

Araç binlerce bileşenden oluşsa bile, yazılım bir arabadan çok daha karmaşıktır.

Bir araba yazılım kadar karmaşık olsaydı, o zaman arabanın tüm bileşenleri arabanın diğer tüm bileşenlerine bağlı olurdu ve birçok araba bileşeni doğrudan diğer birçok araba bileşeniyle bağlantılı olurdu.

Tüm dünyadaki otomobiller orijinal Unix yazılımını karmaşıklık bakımından neredeyse hiç eşit değil.

0
user15441

Diğer her şey gibi ... işe yaradığında, umursamazsınız ... kırıldığında (veya istediğiniz/beklediğiniz şekilde çalışmadığında) umursuyorsunuz.

Uçakları düşünün. Tonlarca insan kaçırmaya veya havaya uçurmaya çalışan insanlar için endişeleniyor. Ancak, negatif uçuşların sayısı günlük uçuş sayısına kıyasla çok az. (Bir gün içinde daha sonra kaçmış veya bombalanmış daha fazla uçuş var .. heck bile kaçırılmaya veya bombalanmaya çalıştı.)

Her şey bakıyordunuz ve nasıl ölçtünüz.

0
Matthew Whited

Aslında oldukça basit. Arabalar eski teknoloji. Tabii bu günlerde çan ve ıslık var (o mola) ama erken arabalara bakarsanız - lot kırdılar.

Otomobillerin mekanik parçalarının arkasındaki 'teknoloji' yüzlerce yıldır var ve içten yanmalı motor da uzun zamandır var ve tanıtıldıklarında çok fazla sorun vardı.

Bazı yönetilen platformlarımızda bellek sorunlarının neredeyse geçmişte kaldığını düşünün. Yazılımı birkaç yüz yıl verin ve biz de çivileyin. Aslında, yazılımın karmaşıklığı göz önüne alındığında, sanırım eğrinin önündeyiz.

0
Steven Evers

Kaç araba tasarımcısı var? 10.000 en iyi mi? - yetenekliler ve ne yaptıklarını biliyorlar.

Kaç tane yazılım programcısı var? 30 milyon mu? - ve birçoğunun ne yaptıkları hakkında hiçbir fikri yok, örneğin PHP programcılar, PHP ve ilk programınızı daha az yazabilirsiniz) birkaç saat.

Yazılım sadece en iyi 10.000 programcı tarafından yazılsaydı, o zaman arabalar kadar güvenilir olurdu.

0
Czarek Tomczak

Modern arabalar s/w'ye güveniyor. Modern arabalar arızalandığında, örneğin motor bilgisayarı arızalanır, genellikle (her zaman değil, ancak genellikle) elektronikler bunu s/w değil, işaretledi.

Modern bir otomobilin sahiplerinden birine ECU içinde pahalı bir arızadan önce ne kadar süre çalıştığını sorun. 10 yıl alırsanız hayrete düşeceğim. Elektronik ve sensörlerle dolu modern arabalar çarpıcı bir şekilde güvenilmez.

Güvenilirlik teorisini incelerseniz, cevap körü körüne belli olur. Mekanik olan her şey (yazılım beklemek), bebek ölüm ve yıpranma bölgelerinin dışındayken başarısızlık oranı olan kararlı durum güvenilirliğine sahiptir. Son öğenin arıza oranı, parçaların arıza oranlarının toplamıdır. Daha fazla parça ekleyin: toplam arıza oranı daha yüksek bir sayı olur. O zaman zorluk, tüm bu bileşenlerin arıza oranlarını gerçekten düşük tutmaktır.

Zamanlama kayışları ve silindir aşınması ve oksijen sensörleri bokla dolu ve konektörlerin omik hale gelmesi ve titreşim nedeniyle kopan teller söz konusu olduğunda - arıza oranını azaltmak için kullanılabilecek teknikler vardır. Bunu yaparken maliyet de artar.

Yazılım ise sabit bir arıza oranına sahiptir. Zaman zaman kusur bulma zorluğuna rağmen, sonunda tüm yazılım bir sosis makinesidir. Girişler -> Yapılacaklar -> Çıkışlar. Bazen girişlerin SİPARİŞİ ve giriş kombinasyonları algılanabilir modlarda hataya yol açar. Bu olduğunda kusurunuzu buldunuz, düzelttiniz ve devam ediyorsunuz.

(Bilinen) hatası olmayan yazılımların etkin bir şekilde 0 hata oranı vardır. Sonsuza kadar kesintisiz çalışır. (Arızalar Arası Ortalama Süre = 1/arıza oranı). Önce donanım platformu başarısız olur.

Kusurlu yazılımlar, zamanla, giriş koşullarının doğru kombinasyonu, hatanın ortaya çıkmasına neden olana kadar çalışabilir.

Tüm bu FALLACY, fiziksel şeylerin (aşınma, IC'lerde metal göçü, su girişi, titreşim, vb. Neden olduğu) başarısızlık oranlarını, esasen tam olarak yapan sonlu durum makinesinin başarısızlık oranı ile karşılaştırmaktır. talimat dizisinin yapmasını söylediği şey.

(Alfa parçacıkları gibi bitler RAM bir yazılım hatası değil, fiziksel bir fenomendir. Ancak böyle bir düzgün işlemek için bir yazılım hatası olabilir, ancak unutmayın, bu kötü alfa parçacık, yazılıma başka bir girdiydi.)

0
quickly_now

Yazılım ve otomobiller arasındaki fark, yazılım geliştiricilerin akıl sağlığını sürdürmeleri için, yazılımın tüm kopyaları için yazılımın tam kopyalarının sürülmesi ve otomobil üreticilerinin akıl sağlığını sürdürmeleri için tüm kullanıcılarının süreceğini kabul etmeleri gerektiğidir. araba kullanma şekliniz arabayı değiştirdiğinden, ancak yazılımı kullanma şekliniz mutlaka yazılımı değiştirmez.

Diğer yandan,

Yazılımınızdaki yağı kontrol etmenin bir yolu olsaydı, ne zaman başarısız olacağını bilirsiniz.

Yazılımınızdaki yağı değiştirmek için bir yolunuz olsaydı, muhtemelen ömrünü birkaç ay uzatabilirsiniz.

Ve benzetmeyi anlamsızca genişletmek için:

Yamalar yağı değiştirmiyor, sızdıran bir contanın yerini alıyor.

Güncellemeler yağı değiştirmiyor, frenleri tamir ediyorlar.

Bültenler yağı değiştirmiyor, daha çok anahtarsız bir ateşleme eklemek gibi.

0
Peter Turner

Bozulan arabalar tolere edilemez. Ayrıca yaşamı tehlikeye atabilir. Arızalanan yazılımlar tolere edilir ve kullanıcılar onun etrafında çalışır veya yalnızca kabul eder. Hata özgür yazılım için çok fazla talep yok.

Ayrıca yazılım özelleştirilebilir, 10000000 farklı model arabaya sahip değilsiniz. Wikimedia'nın güvenilir olduğunu söyleyebilirim ve tonlarca ppl bu yazılımı kullanıyor. Yani birçok insanın bugfree veya güvenilir yazılım kullandığını söyleyebilirsiniz. (wordpress, çeşitli kaynak kontrolü, mysql ve sqlite oldukça güvenilir, vb.)

0
user2528

Yazılımlar matematiksel ve mantıksal nesneler, arabalar ise gerçek nesnelerdir.

Ayrıca, bir yazılımın ne zaman bir problemi olduğunu ve sorunun ne olduğunu kolayca bilebilirsiniz, ancak yazılımlarla çok daha zor olabilir: birinin bilgisayarla sorunu olan birinin ve araba ile problemi olan birinin hayal edin; bu kişi neyin yanlış olduğunu daha iyi bilebilir çünkü arabalar bilgisayarlardan daha az soyuttur.

Bilgisayarların anlaşılmasının daha zor olduğunu söylemiyorum: arabalar ayrıca termodinamik, elektronik, kimya gibi birçok fiziksel yasa içeriyor.

Bu karşılaştırmayı, "neden bir çekiç sekreterden daha güvenilir?" Diyerek de tahmin edebilirsiniz.

Sorunun gerçekten alakalı olduğunu düşünmüyorum, ancak bence iyi bir matematik eğitimi eksikliğinin belirli bir sistem anlayışını nasıl etkileyebileceğini çok iyi gösteriyor.

0
jokoon