it-swarm-eu.dev

Warum ist Software nicht so zuverlässig wie ein Auto?

Ich habe mir diese Frage von einem Benutzer stellen lassen. Wir wissen, dass Autos kaputt gehen, aber das liegt an etwas Physischem (es sei denn, es handelt sich um Software!).

Ich habe versucht zu antworten, dass Software eine viel jüngere Branche ist, aber der Benutzer konterte mit "Ist die Automobilindustrie nicht viel stabiler und zuverlässiger mit weniger Menschen geworden?".

Ich habe auch versucht zu antworten, dass Software komplexer ist, aber der Benutzer konterte, dass es viele tausend Teile gibt, aus denen ein Auto besteht. Menschen, die Autos entwerfen und bauen, kennen ihre Komponenten im Allgemeinen nur sehr gut, aber am Ende arbeiten sie alle zusammen.

Also, warum ist Software nicht so zuverlässig wie ein Auto?

65
Alex Angas

Die Prämisse Ihrer Frage ist einfach falsch: Software ist nicht "weniger zuverlässig" als ein Auto. Es gibt Milliarden über Milliarden Geräte, auf denen jahrelang rund um die Uhr eingebettete Software ausgeführt wird, ohne Probleme. Heck, einige davon sind in Autos und steuern/überwachen den Motor. Wie kann Software weniger zuverlässig sein als ein Auto, wenn Autos selbst auf Software angewiesen sind?

183
GrandmasterB

Ich entwerfe Software und mechanische Teile.

Es ist Komplexität.

Weil moderne Software Millionen von "Teilen" enthält.

Softwareteile sind sehr kompliziert und haben viel STAAT. Ein mechanisches nicht bewegliches Teil hat keinen Zustand.

Ein mechanisch bewegliches Teil hat seine Position (eine Variable).

Ein Programm, das ausgeführt wird und 1 MB RAM) verwendet, hat eine Million Bytes Status. Das ist weitaus mehr Status als jedes normale mechanische System.

Es wird eine Kombination von Zuständen geben, die niemals getestet werden, weil sie so selten auftreten. In einem mechanischen System (wie einem Auto) kann leicht überprüft werden, ob mechanische Teile während des Betriebs nicht aufeinander treffen. Die mechanische CAD Software, die ich bei der Arbeit benutze, macht das automatisch.

Wenn Sie Maschinen aus unsichtbaren, nicht berührbaren Teilen bauen und Millionen beweglicher Teile hätten, die sich alle nur verfehlt hätten, wäre das wie ein einfaches Programm.

Sogar "Hallo Welt" läuft auf einem Betriebssystem. Die alten 8-Bit-Systeme und Minicomputer-Betriebssysteme waren ziemlich zuverlässig, weil sie einfach waren.

Dinge wie DLLs und gemeinsam genutzte Bibliotheken werden im Rahmen von Virenupdates oder Softwareinstallationen ersetzt, und dann funktioniert das gewünschte Programm nicht. Ein bisschen so, als würde man den Reifen Ihres Autos gegen einen Fahrradreifen austauschen. Einige der Edge-Zustände der Bibliotheksfunktion stören (verhalten sich nicht so, wie es das Programm erwartet).

Programme, die in Sprachen wie Java) geschrieben wurden und nicht viele nicht entworfene Interaktionen zwischen Objekten zulassen (Wiederverwendung von Zeigern, Überläufe von Array-Grenzen), sind im Allgemeinen ziemlich zuverlässig, sobald Sie sie überhaupt zum Laufen bringen.
Wenn Sie Betriebssysteme mit statischen Bibliotheken verwenden, funktioniert ein Programm, sobald es funktioniert, einfach weiter (hat jedoch immer noch viele Edge-Bedingungen, basierend auf seiner Statusgröße).

Dave Parnas schreibt über die Zuverlässigkeit von Software, indem er den Status des Programms verkleinert. Die Leute mit der strengen funktionalen Programmierung machen dasselbe, indem sie eine einzelne statische Zuweisung erzwingen.

115
Tim Williscroft

Es ist eine Frage der Wahl des Verbrauchers.

Wenn die Verbraucher verlangen würden, dass Software genauso zuverlässig ist wie mein Honda Civic (im Gegensatz zu meinem alten Ford Maverick), wäre dies der Fall. Einige Unternehmen fordern Software, die zuverlässig ist, und sie erhalten sie, normalerweise für eingebettete Software, manchmal für sicherheitskritische Dinge wie Weltraummissionen und Flugsicherung. Die Software ist immer noch nicht perfekt, aber Autos auch nicht.

Kunden fordern jedoch andere Eigenschaften ihrer Software und sind meist nicht bereit, für Software zu zahlen, die möglicherweise weniger funktionsfähig, sicherlich teurer ist und später ausgeliefert wird, nur weil sie zuverlässiger ist.

56
David Thornley

es gibt viele tausend Teile, aus denen ein Auto besteht.

Wenn nur ein Computer (und die dazugehörige Software) so einfach wäre.

Der Computer hat was für ein Gigabyte Speicher? Milliarden von Flip-Flops? Ein Terabyte Festplatte? Billionen "beweglicher" Teile?

In der Software werden möglicherweise Zehntausende oder Hunderttausende einzelner Codezeilen ausgeführt. Plus so viele (oder mehr) in Unit-Tests und Tools.

Nein. Das Argument "Autos sind auch komplex" ist eine Koje. Software ist viel, viel, viel komplexer als ein Auto.

25
S.Lott

Die Prinzipien, nach denen Verbrennungsmotoren funktionieren, und alle Komponenten, aus denen ein Auto besteht, haben sich im letzten Jahrhundert nicht wesentlich geändert. Sicher, es gab evolutionäre Verbesserungen und Hybridautos, aber die Grundkomponenten sind die gleichen. Sie haben einen Motor, einen Antriebsstrang usw. Auch Konzeptautos und Ihr super teurer extrem schneller Bugatti Veyron sind mit der gleichen Grundstruktur gebaut. Kurz gesagt, das Entwerfen eines Autos ist ein bekanntes Problem.

Vergleichen Sie das mit der Entwicklung von Software.

  • Kunden wissen nicht, was sie wollen, wenn sie anfangen. Sie fangen an, über einen Luxusjet zu sprechen, aber wenn sie die Kosten erkennen, möchten sie, dass Sie ihn für die Kosten eines fußgetriebenen Rollers bauen.
  • Das Autodesign braucht Jahre, um von der Idee zum Konzeptauto zu gelangen, und weitere Jahre, um von dort zur Herstellung zu gelangen. Wann hatten Sie das letzte Mal diesen Luxus mit Software?
  • Autoteile sind Metallgussteile, aber Softwarekomponenten können häufig Form und Schnittstelle ändern.
  • Der Herstellungsprozess ist völlig anders. Bei Autos werden die Teile in Massenmengen hergestellt und die gleichen Teile werden für verschiedene Fahrzeuge verwendet. Mit Software wird fast alles von Hand gefertigt, weil sonst einfach nichts passt.

Kurz gesagt, es gibt eine Reihe von Gründen, warum ein Auto als "zuverlässiger" als Software wahrgenommen wird. Ich habe mir gerade ein paar ausgedacht.

20
Berin Loritsch

Autos sind zuverlässig. So ist die meiste Software.

Aber ... kundenspezifische Autos und kundenspezifische Software haben beide ihre Probleme.

Jeder echte Autoenthusiast, der sein modifiziertes Muscle-Car von 1970 hat, bastelt und optimiert und Pannen und alle möglichen dummen Probleme hat, die er nicht gehabt hätte, wenn er es original gelassen hätte. Aber ... dann hätte er den Kompressor nicht ...

19
CaffGeek

Da das Auto, das Sie fahren, schon oft hergestellt wurde, ist der Bauprozess so verfeinert, dass immer wieder dasselbe Auto auf einer Produktionslinie hergestellt werden kann.

Wenn es sich um ein einzigartiges, komplexes, hochmodernes Auto handeln würde, das von Grund auf neu gebaut wurde, wäre es bei weitem nicht so zuverlässig. Sehen Sie sich beispielsweise an, wie viel höher die Ausfallrate bei Formel-1-Rennwagen ist. Es ist üblich, dass ein oder zwei pro Rennen ausfallen.

Neue Software ist immer einmalig. Was der Programmierercode noch nie von ihnen codiert hat. Um in diesem Szenario eine wirklich hohe Qualität zu erzielen, sind die Kosten für die meisten Produkte unerschwinglich. Jede nicht triviale neue Software ist effektiv ein Prototyp.

Abgesehen davon ist dies einer der Hauptgründe dafür, dass die Anwendung traditioneller Engineering-Techniken auf das Software-Engineering eine Katastrophe darstellt.

16
Alb
  1. Autohersteller erhalten die gesamte Spezifikation festgenagelt, bevor sie das "Endprodukt" produzieren.
  2. Automobilbenutzer neigen nicht dazu, dumme Dinge zu tun, die die Designer nicht erwartet hatten.
  3. Autos werden (normalerweise) nur einmal pro Jahr "aktualisiert", während die meisten Softwareprogramme voraussichtlich mehrmals pro Jahr aktualisiert werden.

Ich könnte weitermachen, aber mein Browser scheint kurz vor dem Absturz zu stehen ...

13
Glen Solsberry

Es gibt eigentlich einen sehr einfachen Grund.

Software, die Geld verdient, ist Software, die Marktanteile gewinnt. Meistens wird das Unternehmen, das eine Software auf den Markt bringt zuerst - diejenige sein, die den größten Teil des Marktanteils erhält, auch wenn ihre Software nicht das beste Produkt in ihrem jeweiligen Markt ist .

Folglich liegt der Fokus darauf, Software eher früher und unvollkommen als später und perfekt zu veröffentlichen.

10
Robert Harvey

Ich mag die meisten Antworten bisher. Hier ist mein Dreh drauf.

Die Kosten für einen Ausfall sind für Autos höher als für Software

Ein Autounfall könnte möglicherweise ein Leben kosten. Selbst ein nicht lebensbedrohlicher Fahrzeugausfall stellt eine sehr sichtbare Unannehmlichkeit für den Benutzer dar. Ein Softwarefehler bedeutet nur, dass ein schlechter Produktionssupport Überstunden leisten muss. Und wenn diese Person ein vollzeitbeschäftigter Angestellter ist, dann ist es überhaupt nicht so teuer. In der Tat werden schlechte Qualität und schlechtes Management belohnt, weil kostenlose Überstunden tatsächlich die Arbeitskosten pro Stunde senken!

Dies hängt natürlich von der Art der verwendeten Software ab (Software, die Waffensysteme, Avionik oder medizinische Systeme antreibt, kann sich auch auf das Leben auswirken), aber ein Auto kostet viel Geld und wird regelmäßig genug verwendet, um die Zuverlässigkeit zu beeinträchtigen ganz greifbar und schmerzhaft. Softwarefehler haben häufig Problemumgehungen.

Ein anderer Gedanke: Autos scheinen zuverlässig zu sein, aber sie haben bestimmte Wartungskosten, die auch dann noch anfallen, wenn das Auto gut funktioniert, und kulturell wird dies akzeptiert und sogar eine stolze Ausgabe von Menschen, die sich um ihre Fahrzeuge kümmern. Software hingegen ist bei der Installation oft schon kaputt und muss sich oft im Laufe der Zeit ändern, aber kulturell will niemand für die Wartung bezahlen.

5
Bernard Dy

Nun, Autos waren für den größten Teil ihrer Geschichte ziemlich unzuverlässig, und es gibt definitiv eine Lernkurve. Autos werden seit etwa 60 Jahren in großem Maßstab hergestellt, während Software nur etwa 20 bis 25 Jahre lang in großem Maßstab hergestellt wird. Mit "groß" meine ich im Grunde genommen groß genug, dass die Massen es kaufen/verwenden, und es gibt wirklich einen großen Anreiz, herauszufinden, wie das Verfahren zur Erstellung perfektioniert werden kann.

4
dsimcha

Ich stelle mir das Auto gerne als Anwendung vor. Während das Betriebssystem die Straße ist, auf der die Anwendung ausgeführt wird.

Die Schnittstelle zwischen Straße und Auto ist gut definiert. Gut getestet und wird ausführlich auf Abwärtskompatibilität überprüft (was einfach ist, da die Schnittstelle einfach ist). Trotzdem haben Sie einige Probleme mit der Abwärtskompatibilität. Autos vom Typ "Farrie" haben es schwer, auf Straßen vom Typ "Schlammstraßen" zu fahren.

Trotzdem muss Ihr Betriebssystem wie Straßen ständig gewartet werden. Brücken raus. Autos legen Schneeketten an und reißen die Straßen wie beschädigte Anwendungen auf und beschädigen die vom Betriebssystem verwendeten Festplatten und Dateien.

Anwendungen werden auf einem Betriebssystem geschrieben. Im Allgemeinen müssen sie jedoch verschiedene Versionen des Betriebssystems ausführen (verschiedene Straßentypen). So kann Ihre für das Abendessen optimierte App reibungslos und ohne Probleme ausgeführt werden, solange sie auf dem richtigen Betriebssystem (Autobahnen) ausgeführt wird, während anderer allgemeiner (einfacher) Code auf allen Straßentypen einwandfrei funktioniert.

Die Schnittstelle zwischen Anwendung und Betriebssystem ist definiert, aber äußerst komplex und schwankt immer leicht. Zumal wir dem Benutzer erlauben, sein eigenes Betriebssystem mit Erweiterungen zu ändern. Wenn die Regierung den Nutzern erlauben würde, die Straßen zu modifizieren, würde es viel mehr Unfälle geben.

Wenn Sie anfangen, die Fähigkeit des Benutzers einzuschränken, das Betriebssystem zu ändern, kann die Zuverlässigkeit der Anwendungen nahezu stabil werden. Schauen Sie sich all diese eingebetteten Geräte an. Wir lassen Benutzer nicht in der Nähe ihres Betriebssystems und Ihres Betriebssystems ohne Unterbrechung rund um die Uhr einwandfrei laufen.

Ich würde also sagen, dass Software nicht unzuverlässig ist. Es ist eher so, als würde man sagen, dass die Benutzer für die Anwendungen Löcher in die Autobahn graben. Hey, deine Bewerbung ist gerade in das Loch gestürzt, das ich letztes Jahr gegraben und vergessen habe.

4
Martin York

Dies ist eine dumme Frage (nicht von Ihnen, sondern von der ursprünglichen Person).

Das klingt wie mein Vater (ein Mechaniker), der Computer hasst und dennoch den ganzen Tag bei eBay verbringt.

Es ist wie die Frage "Warum ist ein Baum zuverlässiger als eine Motte?".

Zuallererst besitze ich 30 (ja, 30+) Computer und keiner von ihnen war im Laden. Ich habe gerade 1400 Dollar für mein Auto für Reparaturen ausgegeben. Zählen Sie die Anzahl der Autowerkstätten im Vergleich zur Computerreparatur. Noch einmal dumme Analogie.

Autos sind aus Stahl, Computer aus Kunststoff. Autos arbeiten bei allen Wetterbedingungen, Computer für den Innenbereich.

Mein Commodore 64 (26 Jahre alt) funktioniert einwandfrei und wurde nicht repariert. Meine beiden Fahrzeuge (weniger als 10 Jahre alt) wurden sehr umfangreich repariert. Zeigen Sie mir ein Auto mit Tausenden und Abertausenden von Betriebsstunden, das 26 Jahre alt ist und immer noch 100% so läuft wie damals, als es fabrikneu war.

3
cbmeeks

Erstens muss Ihr Benutzer wissen, dass es auf dieser Welt Software gibt, die so zuverlässig ist, dass er nicht einmal weiß, dass sie existiert. Hast du jemals einen TV-Absturz gesehen? Ich auch nicht.

Ich denke, der Hauptgrund ist, dass Software unerheblich ist. Immateriell zu sein bedeutet, dass Nicht-Entwickler den Fortschritt nicht sehen. Wenn ich zum Beispiel ein Auto bauen würde, könnte man sehen, wie ich die verschiedenen Teile zusammenbaue, und es würde immer mehr wie ein Auto aussehen. Wenn Sie sich jedoch die Programmierung ansehen, werde ich vielleicht Stunden damit verbringen, auf einem schwarzen Bildschirm mit grünem Text seltsame Muster zu fluchen, und dann plötzlich, wenn sich das Muster nur ein wenig ändert, werde ich überfordert sein.

Aus diesem Grund erkennen normale Menschen die Komplexität von Software nicht. Wenn sie ein Fenster sehen, denken sie, dass sie das Programm als Ganzes sehen, was ach so falsch ist.

Außerdem wird Software viel, viel häufiger stark angepasst als Autos. Wenn Sie ein Auto anpassen, werden Sie nicht gegen sein Design verstoßen, weil das sichtlich dumm wäre. Wenn sich mein Motor vorne im Auto befindet, ist es höchstwahrscheinlich eine große Katastrophe, ihn nach hinten zu bewegen. Da Software jedoch unerheblich ist, erhält der Client, wenn er Sie auffordert, etwas vollständig gegen das Design zu unternehmen, keinen Hinweis (außer Ihnen, aber er hört nicht zu), dass das, was er tut, dumm ist, und dann ' Ich werde alle überrascht sein, dass es nicht wie erwartet funktioniert.

3
zneak
  1. Mangel an Informationsaustausch (Programmierer fliegen alleine oder in kleinen Gruppen - Autodesigner arbeiten mit miteinander verbundenen Teams in einem großen Unternehmen zusammen und sie alle teilen ihr Wissen. Wenn wir alle für große Unternehmen arbeiten würden, wären wir alle aufgrund des Lernens bessere Programmierer Dies ist auch der Grund, warum Dinge wie Open-Source-Programme und Online-Ressourcen sehr wichtig sind.
  2. Erwartungen von Feldteilnehmern (es ist in Ordnung, wenn ein Autodesigner in den ersten 5-10 Jahren nur unwesentlich nützlich ist, aber wenn ein Programmierer in ein Interview geht und sagt, dass er/sie in 5-10 Jahren nicht viel nützen wird, ist das Interview ist vorbei)
  3. Fehlende Penetrationstests (aufgrund fehlender Mittel, rechtlicher Probleme usw .; Autohersteller schlagen jedoch Auto für Auto gegen eine Mauer, haben Windkanäle, haben relativ einfache Leistungsanforderungen usw.)
  4. Informationstransparenz (Sie wissen nicht, wie die meiste Software funktioniert; Sie raten oder Sie treffen Annahmen, die auf Interviews, Pressemitteilungen, Werbung usw. basieren. Bei Autos ist der Großteil der Dinge jedoch genau dort, wo Sie sie sich ansehen können.)
  5. Inhärente Verkapselung von Wissen (der Typ/Roboter, der den Rahmen zusammenschweißt, muss die Mathematik hinter dem Stabilitätskontrollsystem nicht kennen; Programmierer müssen über Tausende oder Zehntausende von Dingen Bescheid wissen, die der Durchschnittsperson unbekannt sind, während Autodesigner nur müssen Hunderte oder Tausende kennen)
  6. Greifbarkeit (es hilft, wenn Sie es sehen können)
  7. Age of Field (Fahrzeugdesign ist Tausende von Jahren alt; motorisiertes Fahrzeugdesign ist über 250 Jahre alt [Dampfmaschinen usw.])
  8. Kritikalität von Subsystemen (Autos "funktionieren" auch dann noch, wenn viele ihrer Teile nicht mehr funktionieren - elektrische Schlösser, elektrische Fensterheber, Klimaanlage, Scheibenwischer, kaputte Fenster, verlorene Radkappen, platte Reifen [neue aufsetzen], Radio, ein oder zwei Lichter, ein Fernzugriff usw.; wenn etwas auf einem Computer kaputt geht, handelt es sich häufig um ein SHTF-Szenario.
  9. Interdependenz (wenn ein Computer kaputt geht, ist es nicht selten, dass Hunderte oder Tausende anderer Computer betroffen sind; wenn ein Auto kaputt geht, ist es eher selten, dass andere Autos betroffen sind - wenn andere Autos betroffen sind, ist es fast immer nur 1 -3)
  10. Pauschalschuld (wenn ein Teil eines Computers oder ein Computer von Tausenden ein System kaputt macht und verletzt, erstreckt sich die Schuld auf den gesamten Computer oder im letzteren Fall auf das gesamte Computernetzwerk, wenn Ihr Auto von einem Auto angefahren wird ausgefallene Bremsen oder wenn ein Auto stehen bleibt und auf der Autobahn nicht neu startet, wird nur das einzelne Autoteil beschuldigt)
  11. Finite vs. Infinite-Systeme (Autos können nur so viel einpacken, und es wird erwartet, dass sie nur unter begrenzten Bedingungen funktionieren - z. B. fahren Sie keinen BMW über Gelände, das nur ein Jeep-ähnliches Fahrzeug kann; mit Computern, Die Möglichkeiten sind jedoch de facto unendlich - es gibt ständig neue Dinge, neue APIs, neue Betriebssysteme, neue Sicherheitslücken, iPads, Handysoftware, neues Dies, Neues Das usw.)
  12. Umfang des erforderlichen Wissensbestands (eine Person mit einem IQ von 130-140 könnte fast alles über Autos lernen, aber nur einen Bruchteil dessen, was über Computer und Programmierung zu wissen ist)
3
Michael

Der einfache Grund, warum die gesamte Logik fehlerhaft ist:

Mechanische Geräte können einfach auf Input/Output reduziert werden; Durch Erhöhen der Anzahl der Teile, um diese E/A-Operation zu erreichen, wird die E/A-Operation nicht geändert. Somit kann das System vollständig verstanden werden.

Software hingegen hat Eingabe -> Prozess -> Ausgabe. Aufgrund dieser Natur kann das System nicht vollständig vorhergesagt oder verstanden werden.

Donald Rumsfeld sagte es am besten :

„Es sind bekannte bekannt; Es gibt Dinge, von denen wir wissen, dass wir sie wissen. Wir wissen auch, dass es unbekannte Unbekannte gibt; Das heißt, wir wissen, dass es einige Dinge gibt, die wir nicht wissen. Es gibt aber auch unbekannte Unbekannte - diejenigen, die wir nicht kennen, die wir nicht kennen. ”—S-Verteidigungsminister Donald Rumsfeld

Zusammenfassend :

  • Ein mechanisches Gerät ist ein System, das bekannte und bekannte Unbekannte hat.
  • Software hat die oben genannten aber auch Unbekannte-Unbekannte.
3
Darknight

Software basiert auf Bits: 0 und 1. Autos basieren (meistens) auf mechanischen Teilen.

Ein mechanisches Teil kann sich abnutzen oder versagen und trotzdem arbeiten. Ihre Bremsen sind abgenutzt oder ein Ventil ist undicht, aber das Auto funktioniert meistens noch, bis Sie es reparieren können.

Software hat größtenteils keinen allmählichen Ausfall. Es funktioniert entweder oder es bricht. Das Teilen durch Null ist nicht "fast richtig"; Es ist nur ein Fehler. Wenn Sie versuchen, auf einem Laufwerk ohne ausreichenden Speicherplatz zu speichern, können Sie nicht hart drücken, um alle Daten zu erzwingen. es wird einfach nicht gehen.

Ich denke nicht, dass Software notwendigerweise weniger zuverlässig ist als ein Auto, aber wenn Software ausfällt, fällt sie sofort aus, nicht allmählich.

2
Kyralessa

Autos sind nicht so zuverlässig wie Sie denken. Es ist nur so, dass Fehler lange Zeit verborgen bleiben (oder ignoriert) werden können, ohne dass das Ganze fehlschlägt. Ihr Auto leckt Öl und/oder Kühlmittel? Nein? Bist du sicher? Sie liegen wahrscheinlich falsch ... Es ist wahrscheinlich, dass irgendwo nur eine sehr kleine Menge austritt, die Sie noch nicht bemerkt haben ... Erweitern Sie das jetzt auf die Federung, die Karosserieteile, den Innenraum usw. Ich glaube nicht, dass ich es jemals getan habe dennoch stieß ich auf ein Auto, mit dem ich nichts falsch machen konnte. Die überwiegende Mehrheit der Teile ist jedoch für die Transportmission überflüssig. Nicht so bei einem Computer. Fast jeder Teil eines Computers ist kritisch.

Es ist die alte analoge vs. digitale Debatte, nur neu verpackt. Digitales Fernsehen ist großartig, solange alles perfekt ist. In dem Moment, in dem etwas schief geht, ruckelt das Audio und das Video wird ausgeblendet, wodurch es unbrauchbar wird. Vergleichen Sie dies mit analogem Fernsehen, bei dem Sie nur ein wenig Zischen oder statische Aufladung hören, die leicht ignoriert werden kann.

1
Brian Knoblauch

Erstens ist natürlich ein Teil des SW absolut zuverlässig, und Autos - insbesondere britische und italienische - sind nicht unbedingt so zuverlässig.

Meine Erfahrung mit der Arbeit mit Automobilsoftware ist jedoch, dass es auf zwei Dinge ankommt:

  • Garantiekosten. Wenn Ihr SW ausfällt, starten Sie ihn neu. Vielleicht werden Sie einen Fehlerbericht einreichen. Oder nutzen Sie den teuren Supportvertrag. Wenn Ihr Auto ausfällt, bringen Sie es mit und verlangen, dass es im Rahmen der Garantie repariert wird. Dies kostet den Hersteller 100 US-Dollar und mehr. Wenn jeder SW-Fehler den Hersteller 2 US-Dollar kosten würde, wäre SW mit ziemlicher Sicherheit zuverlässiger.

  • JD Powers (und andere Qualitätsrankings). JD Powers befragt ThingsGoneWrong (was alles sein könnte). Und wenn dieses Ranking wirklich schlecht ist, werden die Leute Ihr Auto einfach nicht kaufen, zumindest nicht für genug Geld, um Gewinn zu machen. Wenn wir einen JD Powers für sw hätten und die Leute sich wirklich darum kümmern würden, wäre sw mit ziemlicher Sicherheit zuverlässiger.

Wenn Sie also unzuverlässige Autos herstellen, verschlingen die Garantiekosten schnell Ihren gesamten Gewinn und in ein paar Jahren bedeutet eine schlechte Qualität, dass Sie überhaupt keine Autos verkaufen. Wenn Sie unzuverlässige SW machen, werden sich die Benutzer beschweren und Sie können teure Supportverträge verkaufen.

1
user15497

Ich glaube nicht, dass Autos weniger komplex sind. Aber selbst wenn dies der Fall ist, denke ich nicht, dass Software weniger zuverlässig ist. Ich glaube jedoch, dass es wichtigere Faktoren gibt, die zu Diskrepanzen bei der Zuverlässigkeit von Software führen:

  1. Abstraktion in Software involviert. Dies führt dazu, dass Softwareentwickler falsch verstehen, wie die Dinge wirklich funktionieren. Mit der Zeit wird immer mehr Abstraktion hinzugefügt. Mit der Assemblersprache können Sie beispielsweise die Maschine direkt steuern. C ist abstrakter, aber immer noch nah an der Maschine. Java, C # und das, was als nächstes kommt, abstrahieren stark, was in der Maschine passiert. Ein anderes Beispiel ist, wenn Sie ein Programmierer sind, der verstehen möchte, wie Netzwerke auf Softwareebene ablaufen, sollten Sie wissen, wie man mit C programmiert, da die Infrastruktur (als Software) in C geschrieben ist.

  2. nterschiedliche Erfahrungen und Wissen der Macher führt zu unterschiedlichen Ergebnissen. Verschiedene Entwickler erstellen Software mit unterschiedlicher Zuverlässigkeit. Gleiches gilt für Autohersteller. Der Unterschied besteht jedoch darin, dass jeder, der einen Editor und einen Compiler verwenden oder einfach nur eine IDE (Integrierte Entwicklungsumgebung)) installieren kann, Software erstellen kann und dies kostenlos. Um ein Auto zu bauen, benötigen Sie Eine enorme Investition, eine Fabrik (einige können ein Auto bauen, ohne eines zu benutzen, aber Sie werden es nicht überall in Ihrer Nähe finden). Die Tatsache, dass Sie eine enorme Investition tätigen, bedeutet, dass Sie versuchen, die Besten auf dem Gebiet zu mieten Es gibt jedoch immer noch Zuverlässigkeitsprobleme bei Autos. Wenn Sie sich dessen bewusst sind, werden viele Millionen Autos wegen schwerwiegender [Fehler] vom Markt genommen. In meinem Auto wird der Hersteller die Bremsschere für alle gekauften Autos kostenlos ersetzen im selben Jahr. Dies ist ein ernstes Problem und zeigt meiner Meinung nach, dass selbst Autos nicht so zuverlässig sind, wie Ihr Kunde sagt.

  3. Fehler in der Software treten für Benutzer normalerweise häufiger auf als für Autos. Dies ist das Ergebnis von Interaktivität und Reaktion zwischen dem Benutzer und der Software. In einem Auto achten wir auf weniger Details wie "Das Auto beschleunigt, wenn wir auf das Gaspedal treten", Brechen, Drehen, Lichter, Spiegel usw. In der Software gibt es normalerweise bei jedem Benutzer Klick/Eingabe eine Antwort. Es gibt also viele Punkte, an denen die Software fehlerhaft sein kann und der Benutzer dies sofort bemerkt. Dies lässt einen Benutzer glauben, dass es weniger zuverlässig ist als Autos.

  4. Hacking und Angriffe. Je häufiger eine Software verwendet wird, desto höher ist der Prozentsatz, unter dem sie Hacking-Angriffen ausgesetzt ist. Sie können dies mit Autodiebstahl vergleichen. Für mich ist auch die Zuverlässigkeit eines Autos beeinträchtigt, wenn es von einer anderen Person als seinem Besitzer oder Schlüssel geöffnet werden kann. Es ist jedoch einfacher, Software anzugreifen als ein Auto, da der Angreifer nicht sichtbar ist. Wenn eine Software kompromittiert wird, wird davon ausgegangen, dass sie nicht zuverlässig ist, obwohl sie in dem, wofür sie entwickelt wurde, zuverlässig ist.

1
Saleh Al-Abbas

Zuverlässigkeit und Sicherheit von Kraftfahrzeugen sind vorgeschrieben. In vielen (den meisten?) Ländern ist es gesetzlich vorgeschrieben, dass sie ein Mindestmaß an Zuverlässigkeit und Sicherheit haben und auf das Worst-Case-Szenario (was auch immer das ist) getestet werden. Kommerzielle Software ist zum größten Teil nicht.

Obwohl es andere rechtliche Auswirkungen auf Software gibt, ist es wichtig zu beachten, dass wenn die Software jedes Mal abstürzt, wenn Sie auf die Schaltfläche "Speichern" klicken, dies einfach eine Frage eines Patches/Fixes ist und Sie dann weitermachen. Wenn ein Auto jedes Mal abstürzt, wenn Sie die Anzeige einschalten, ist dies eine viel schlimmere Sache. Es ist einfach nicht so wichtig, dass Microsoft Outlook ohne unerwarteten Absturz ausgeführt wird, wie dass ein SUV ohne unerwarteten Absturz ausgeführt wird.

Davon abgesehen gibt es andere Software-Teile, die genauso viel oder mehr Verantwortung tragen als die Mechanik eines Autos. Flugzeuge und Raketenleitsysteme müssen zuverlässig sein. Es geht um Leben! Man würde hoffen, dass diese strenger getestet werden als das durchschnittliche Auto.

1
Anthony

Ich denke, ich habe eine viel bessere Analogie. Nehmen Sie ein Unternehmen, das Krankenwagen nach Kundenspezifikation baut. Die Basisplattform (z. B. ein voll funktionsfähiges und straßenzulässiges RV-Cutaway-Chassis) erfordert Änderungen an mehreren Stellen: Rahmen, Ladesystem, Einfüllstutzen, Aufhängung usw. Diese Änderungen müssen nicht nur straßenzulässig sein, sondern auch die gesetzlichen Anforderungen erfüllen bei gleichzeitiger Befriedigung der Kundenwünsche.

Dann müssen Sie die Ambulanz selbst bauen, die auch mit regulatorischen Anforderungen von mehreren Regierungsebenen und anderen Stellen behaftet ist. Während der Kundenwunsch nach einer funky Sitzanordnung oder einem Aufbewahrungssystem immer noch befriedigt wird. Und vergessen Sie nicht, dass Sie hundert verschiedene Kunden aus der ganzen Welt haben, die alle unterschiedliche Einkaufs- und Bereitstellungspläne haben. Keiner von ihnen sagt jemals "Ich nehme ein Dutzend mehr wie der letzte", ohne auch Seiten mit Ausnahmen einzureichen erfordern häufig eine vollständige Überarbeitung des Ganzen.

Autos? Das ist trivial. Sie kaufen, was gebaut wurde, und Sie haben keinen direkten Einfluss auf irgendeinen Aspekt des Designs. Sogar Ihre Farbwahl ist künstlich, da Sie nicht angeben können, was noch nicht entwickelt und getestet wurde. In gewissem Sinne gibt es nur einen "Markt", keinen "Kunden". Ich würde argumentieren, dass für einen bestimmten Markt hergestellte Standardsoftware im Allgemeinen genauso zuverlässig ist wie das Auto, das Sie beim örtlichen Händler abholen.

1
user15456

Die Autoindustrie gibt kein "Beta" -Auto zum Testen für die Öffentlichkeit frei, die Autoindustrie muss sich auch nicht um die Umgebung kümmern, in der sie ihre Produkte liefert, aber ich muss mich um viele andere Dinge kümmern sagen wir, dass die Softwareindustrie zunächst grundlegend anders ist (wie wir alle wissen), so dass Zuverlässigkeit und Komplexität wirklich suggestiv sind. Meiner Meinung nach ist ein Auto so komplex wie eine Software, aber es ist einfacher zu sehen, was seitdem funktioniert oder nicht

  • Am Ende sind Autos nicht virtuell, es ist sicher einfacher zu testen (aber teurer)
  • Sie begannen viel früher als die Softwareindustrie, selbst wenn sie weniger Leute waren, können Sie die gesammelten Praktiken und Kenntnisse nicht minimieren. Die Softwareindustrie ist immer noch ein Baby im Vergleich dazu.
  • Die gesamte Autoindustrie ist gesetzlich und ethisch verpflichtet, keine Autos herzustellen, die ihren Fahrer töten, insbesondere in den letzten Jahrzehnten.

Die Aussage, dass Software weniger zuverlässig ist als Autos, kann für viele Arten von Software zutreffen und für andere Bereiche (Sicherheit, Luftfahrt ...) völlig falsch sein. Sie können sicher sein, dass eine Software zumindest am zuverlässigsten als am zuverlässigsten ist von Autos in diesem Bereich. Einfach, weil diese Bereiche kritisch sind und von dem, was ich nur in diesen Bereichen weiß, Software mit der Autoindustrie verglichen werden kann.

Was uns dazu führt : Die meisten Softwareprogramme werden in ihrem Bereich nicht als kritisch angesehen. Wenn es als solches betrachtet wird, haben Sie zuverlässige Software. Das einzige Problem, das Sie dabei finden, sind Probleme, die mit der Umgebung zusammenhängen (wenn Sie es also steuern können, haben Sie praktisch kein Problem), nicht die Software selbst. Die meisten Software-Editoren arbeiten jedoch nicht in diesem kritischen Bereich. Natürlich müssen sie ein bestimmtes Qualitätsniveau bieten, aber sie sind (meiner Meinung nach) eher verpflichtet, die Software so schnell wie möglich bereitzustellen. Gute Software erfordert jedoch: gutes Projektmanagement, solide Spezifikationen, gutes Design und gute Fähigkeiten der Mitarbeiter (um sie wieder aufzunehmen). Das ist nur um es zu schaffen, wir reden nicht einmal darüber, es zu verkaufen ...

All dies braucht Zeit und erfordert Geld. Ich sage nicht, dass Sie bekommen, was Sie für das bezahlen, was ich sage, die meiste Zeit produzieren Sie wofür Sie investieren nie weniger (außer wenn Sie geschraubt wurden, aber dann produzieren Sie nichts so. ..) und manchmal mehr ..

1
lollancf37

Software ist viel komplexer als ein Auto, selbst wenn das Auto aus Tausenden von Komponenten besteht.

Wenn ein Auto so komplex wie Software wäre, würden alle Komponenten des Autos von allen anderen Komponenten des Autos abhängen, und viele Autokomponenten würden direkt mit vielen anderen Autokomponenten verbunden sein.

Alle Autos der Welt sind in ihrer Komplexität kaum mit der ursprünglichen Unix-Software vergleichbar.

0
user15441

Es ist wie alles andere ... wenn es funktioniert, ist es dir egal ... wenn es kaputt ist (oder nicht so funktioniert, wie du es willst/erwartest), ist es dir wichtig.

Denken Sie an Flugzeuge. Unzählige Menschen machen sich Sorgen um Menschen, die versuchen, sie zu entführen oder in die Luft zu jagen. Aber wirklich ist die Anzahl der negativen Ereignisse im Vergleich zur Anzahl der täglichen Flüge winzig. (Es gibt mehr Flüge an einem Tag als jemals zuvor entführt oder bombardiert wurden. Zum Teufel wurde sogar versucht, entführt oder bombardiert zu werden.)

Es hängt alles davon ab, wo Sie aussehen und wie Sie messen.

0
Matthew Whited

Es ist eigentlich ganz einfach. Autos sind alte Technik. Sicher, es gibt heutzutage Schnickschnack (diese Pause), aber wenn man sich frühe Autos ansieht - sie haben ein viel gebrochen.

Die "Technologie" hinter den mechanischen Teilen von Autos gibt es schon seit Hunderten von Jahren, und der Verbrennungsmotor gibt es auch schon seit langer Zeit, und als sie eingeführt wurden, gab es viele Probleme.

Bedenken Sie, dass Speicherprobleme bei einigen unserer verwalteten Plattformen fast der Vergangenheit angehören. Geben Sie der Software ein paar hundert Jahre Zeit und wir werden sie auch festnageln. Angesichts der Komplexität der Software denke ich, dass wir der Kurve voraus sind.

0
Steven Evers

Wie viele gibt es Autodesigner? 10.000 top? - Sie sind talentiert und wissen, was sie tun.

Wie viele Softwareprogrammierer gibt es? 30 Millionen? - und viele von ihnen haben keine Ahnung, was sie tun, zum Beispiel PHP Programmierer, Sie können lernen PHP und schreiben Sie Ihr erstes Programm in weniger als ein paar Stunden.

Wenn Software nur von 10.000 der besten Programmierer geschrieben werden sollte, wäre sie genauso zuverlässig wie Autos.

0
Czarek Tomczak

Moderne Autos setzen auf s/w. Wenn moderne Autos ausfallen, zum Beispiel der Motorcomputer, fällt normalerweise (wenn auch nicht immer, aber normalerweise) die Elektronik aus, die ihn auslöst, nicht das S/W.

Fragen Sie jeden Besitzer eines modernen Autos mit einem ECU darin, wie lange es bis zu einem teuren Ausfall läuft. Ich bin fassungslos, wenn Sie 10 Jahre alt werden. Moderne Autos voller Elektronik und Sensoren sind erstaunlich unzuverlässig.

Wenn Sie die Zuverlässigkeitstheorie studieren, wird die Antwort offensichtlich. Alles Mechanische (Software erwarten) hat eine stationäre Zuverlässigkeit, die die Ausfallrate außerhalb der Kindersterblichkeits- und Verschleißbereiche darstellt. Die Ausfallrate des Endelements ist die Summe der Ausfallraten der Teile. Weitere Teile hinzufügen: Die Gesamtfehlerrate wird höher. Die Herausforderung besteht dann darin, die Ausfallraten all dieser Komponenten wirklich niedrig zu halten.

Wenn es um Dinge wie Zahnriemen und Zylinderverschleiß geht und Sauerstoffsensoren mit Mist voll werden, Anschlüsse ohmsch werden und Drähte aufgrund von Vibrationen brechen, gibt es Techniken, mit denen die Ausfallrate verringert werden kann. Die Kosten steigen auch, wenn Sie dies tun.

Software hingegen weist eine konstante Ausfallrate auf. Trotz der Schwierigkeit, manchmal Fehler zu finden, ist letztendlich jede Software eine Wurstmaschine. Eingänge -> Dinge erledigen -> Ausgänge. Manchmal führt die BESTELLUNG von Eingängen und die Kombinationen von Eingängen zu Fehlern bei erkennbaren Modi. Wenn dies passiert, haben Sie Ihren Defekt gefunden, beheben ihn und fahren fort.

Software, die keine (bekannten) Fehler aufweist, weist effektiv eine Fehlerrate von 0 auf. Sie wird für immer ohne Fehler ausgeführt. (Mittlere Zeit zwischen Ausfällen = 1/Ausfallrate). Die Hardwareplattform schlägt zuerst fehl.

Software mit Fehlern wird möglicherweise nur ausgeführt, bis die richtige Kombination von Eingabebedingungen im Laufe der Zeit dazu führt, dass sich der Fehler manifestiert.

Die FALLACY bei all dem besteht darin, zu versuchen, die Ausfallraten physikalischer Dinge (verursacht durch Verschleiß, Metallmigration in ICs, Eindringen von Wasser, Vibration usw.) mit einer Ausfallrate einer im Wesentlichen endlichen Maschine zu vergleichen, die einfach genau das tut was seine Befehlssequenz ihm sagt, zu tun.

(Sogar Dinge wie Alpha-Partikel, die Bits in RAM) umdrehen, sind ein physikalisches Phänomen, kein Softwarefehler. Die Art und Weise, wie mit einem solchen Eveny umgegangen wird, kann jedoch ein Softwarefehler sein, aber denken Sie daran, dass es sich um ein böses Alpha handelt Partikel war nur eine weitere Eingabe in die Software.)

0
quickly_now

Der Unterschied zwischen Software und Autos besteht darin, dass Softwareentwickler genaue Duplikate von Software von allen Benutzern der Software steuern müssen, damit die Automobilhersteller die Vernunft aufrechterhalten können, damit alle ihre Benutzer fahren können Deutlich unterschiedliche Autos, weil die Art und Weise, wie Sie ein Auto fahren, das Auto verändert, aber die Art und Weise, wie Sie Software verwenden, ändert nicht unbedingt die Software.

Auf der anderen Seite,

Wenn Sie eine Möglichkeit hätten, das Öl in Ihrer Software zu überprüfen, würden Sie wissen, wann es fehlschlagen würde.

Wenn Sie eine Möglichkeit hätten, das Öl in Ihrer Software zu wechseln, könnten Sie wahrscheinlich die Lebensdauer um einige Monate verlängern.

Und um die Analogie sinnlos zu erweitern:

Patches wechseln das Öl nicht, sie ersetzen eine undichte Dichtung.

Updates wechseln nicht das Öl, sie reparieren die Bremsen.

Auslösungen ändern das Öl nicht, sondern fügen eher eine schlüssellose Zündung hinzu.

0
Peter Turner

Pannenautos sind nicht erträglich. Auch kann es Leben gefährden. Software, die ausfällt, wird toleriert, und Benutzer umgehen sie oder akzeptieren sie einfach. Es gibt keine große Nachfrage nach fehlerfreier Software.

Auch Software wird in der Regel angepasst, Sie haben nicht 10000000 verschiedene Modelle von Autos. Ich würde sagen, Wikimedia ist zuverlässig und Tonnen von Menschen verwenden diese Software. Man könnte also sagen, dass viele Leute fehlerfreie oder zuverlässige Software verwenden. (WordPress, verschiedene Quellcodeverwaltung, MySQL und SQLite sind ziemlich zuverlässig usw.)

0
user2528

Software sind mathematische und logische Objekte, während Autos reale Objekte sind.

Darüber hinaus können Sie leicht erkennen, wann ein Auto ein Problem hat und was das Problem ist, während es mit Software viel schwieriger sein kann: Stellen Sie sich vor, jemand hat ein Problem mit einem Computer und jemand hat ein Problem mit einem Auto; Diese Person kann besser wissen, was falsch ist, weil Autos weniger abstrakt sind als Computer.

Ich sage nicht, dass Computer schwerer zu verstehen sind: Autos beinhalten auch viele physikalische Gesetze wie Thermodynamik, Elektronik, Chemie.

Sie könnten diesen Vergleich auch extrapolieren und sagen: "Warum ist ein Hammer zuverlässiger als eine Sekretärin?".

Ich denke nicht, dass die Frage wirklich relevant ist, aber ich denke, sie zeigt sehr gut, wie sich ein Mangel an guter mathematischer Ausbildung auf das Verständnis einer bestimmten Art von System auswirken kann.

0
jokoon