Codezeilenanzahl von Programmen

Hallo Wissende,

es gibt so Aussagen wie „alle 100 Codezeilen ist ein Fehler“
Ist dem so?

Mit dem Hintergrund frage ich mal ob es jmd. hier annähernd einschätzen kann z.B. Windows 7 oder Windows XP wieviele Codezeilen die haben.
Die programmiersprache da kenne ich gar nicht aber glaub die ist irrelevant wenn die erste Aussagezitierung von mir zutreffen sollte.

Vor langer Zeit las ich mal was von 1 Mio Codezeilen (Win 3.1? *gg*), vor kurzem von 87 Mio Codezeilen.
Was kommt da inzwischen eher hin?

Und wenn ich schon mal am fragen bin, in welchen utopischen Größenordnungen bewegen sich denn die Speicherkapazitäten von CIA, Youtube, Google o.ä.?
Da sind ja wohl Terabytes nur ein Bit wert *schätz*

Danke ^ Gruß
Reinhard

Hallo Reinhard,

es gibt so Aussagen wie „alle 100 Codezeilen ist ein Fehler“
Ist dem so?

Laut INTEL: 80-90 Bugs in Pentium
Normale Software: 25 Fehler pro 1000 Programmzeilen.
Gute Software: 2-3 Fehler pro 1000 Zeilen.
Space Shuttle Software: weniger als 0.1 Fehler pro 1000
Zeilen (laut NASA)
Handy: 200 000 Zeilen Programm ca. 500 Fehler
Windows 2000: 27 Mio. Zeilen ca. 50 000 Fehler
Beispiel SDI (Raketenabwehr USA): 25-100 Mio. Zeilen,
voraussichtlich 10 000 Fehler.
Quelle: Thomas Huckle (TUM), Kleine Bugs, große GAUs, http://www5.in.tum.de/~huckle/

Falls Dich das Thema näher interessiert, hier noch der Link zum kompletten Foliensatz http://ddi.in.tum.de/fileadmin/material/Lehrveransta…

Mit dem Hintergrund frage ich mal ob es jmd. hier annähernd
einschätzen kann z.B. Windows 7 oder Windows XP wieviele
Codezeilen die haben.
Die programmiersprache da kenne ich gar nicht aber glaub die
ist irrelevant wenn die erste Aussagezitierung von mir
zutreffen sollte.

Der Umfang eines Programmes muss nicht zwangsläufig Rückschlüsse auf die Komplexität des Programms erlauben, da die Zählweise der Zeilen nicht einheitlich ist und das Ergebnis außerdem von der Formatierung des Quelltextes, der Programmiersprache und anderen Faktoren abhängt.
Quelle: http://de.wikipedia.org/wiki/Lines_of_Code

Vor langer Zeit las ich mal was von 1 Mio Codezeilen (Win 3.1?
*gg*), vor kurzem von 87 Mio Codezeilen.
Was kommt da inzwischen eher hin?

NT 4.0 16 Mio Codezeilen
Win 2000 27 Mio Codezeilen
XP Home 45 Mio Codezeilen
Server 2003 50 Mio Codezeilen

Die Software des Space-Shuttels 3 Mio Codezeilen

Und wenn ich schon mal am fragen bin, in welchen utopischen
Größenordnungen bewegen sich denn die Speicherkapazitäten von
CIA, Youtube, Google o.ä.?
Da sind ja wohl Terabytes nur ein Bit wert *schätz*

Zu Google wurde in diesem PDF erwähnt:

  • mehr als 1000 linuxbasierte Rechner in 6 DatenCentern
    über 15 TFlops
    über 100o TB Speicherkapazität
  • über 200 Mio Suchanfragen pro Tag
  • über 3,3 Billionen Dokumente im Index

Gruss
Petra

Ich bedanke mich :smile:
Hallo Petra,

du hast dir viel Mühe gegeben, nochmal danke dafür.

Gruß
Reinhard

Moin, Reinhard,

Petras Zahlen sind ja nicht zu überbieten, aber eine Anmerkung am Rande:

in welchen utopischen
Größenordnungen bewegen sich denn die Speicherkapazitäten von
CIA, Youtube, Google o.ä.?

Der Code , um Google oder Youtube zu betreiben, dürfte bei 5 - 50 MB liegen. Deine Terabyte (wenn’s langt) werden für die Speicherung von Daten benötigt.

Gruß Ralf

Ugh.

Petra hat ja schon sehr qualifiziert geantwortet, ich kann noch was Grundlegendes beisteuern.

es gibt so Aussagen wie „alle 100 Codezeilen ist ein Fehler“

Sowohl der Begriff „Codezeile“ als auch der Begriff „Fehler“ sind zu schwammig, um hier wasserdichte Angaben machen zu können. Bugs, die regelmäßig zum Komplettausfall führen, werden mit halbwegs modernen Test- und Analysetools sicherlich so gut wie vollständig vor der Auslieferung eliminiert (nicht geschlossene Schleifen, falsch geschriebene reserved words usw.). So was wird man tendenziell nicht finden.

Eins darunter fängt der Graubereich an. Angenommen, ein Programm soll eine Division ausführen und der Divisor kann nicht Null werden (weil er bspw. aus einer Routine kommt, die nur von Null verschiedene Werte liefern kann) - muss man dann die Prüfung auf division by zero durchführen? Wenn man das unterlässt, ist das dann ein Fehler? Wenn es einer ist, wie soll man ihn entdecken? (Antwort: Es ist ein Fehler, und sogar ein ziemlich gemeiner, auch wenn er in der vorhandenen Konfiguration nicht auftreten kann). Anderes Beispiel wäre ein Kommentar, der überhaupt nicht zum Code passt und völlig in die Irre führt - das Programm wird mit diesem fehlerhaften Kommentar fehlerlos laufen; der arme Hund, der den Code warten muss, wird das trotzdem als gravierenden Fehler empfinden - viel schlimmer, als Iv statt If zu schreiben …

Der „Y2K- Bug“ war in diesem Sinne nie ein Bug, sondern ein Mangel in der Konfiguration - wäre der Computer 500 Jahre vorher erfunden worden, hätten alle davon betroffenen Programme mehr als 500 Jahre lang anstandslos funktioniert.

Je nach Zählweise wirst du also ganz unterschiedliche Angaben zur Fehlerhäufigkeit finden. Und dass die Entwickler nicht die größtmögliche Zahl veröffentlichen werden, dürfte auch klar sein - abgesehen davon, dass sie die „genaue Zahl“ auch nicht kennen, weil es diese eben nicht gibt.

Noch ein Beispiel aus der Systemanalyse: Ein Programm benötigt die Berechnung von Fakultäten, für was auch immer. Mathematisch ist die Fakultät rekursiv definiert mit

0!=1 ∧ n! = n\*(n-1)!

Ein Programm, das die Fakultät rekursiv berechnet, ist mathematisch völlig richtig, informationstechnisch aber fehlerhaft, weil die Lösung ohne Rekursion viel effizienter ist. Fehler?

Gar so einfach ist es eben nicht.

Aga,
CBB

Auch in Posts gibt es je 30 Zeilen einen Bug :smile:

Der „Y2K- Bug“ war in diesem Sinne nie ein Bug, sondern ein
Mangel in der Konfiguration - wäre der Computer 500 Jahre
vorher erfunden worden, hätten alle davon betroffenen
Programme mehr als 500 Jahre lang anstandslos funktioniert.

Der Rest ist aber korrekt. Vielleicht hättest Du noch zwei „Standard-Bugs“ erwähnen sollen:
* Code ohne Wirkung - Ergebnisse werden gar nicht verwendet oder mehrfach ermittelt
* Code, der nie durchlaufen wird

Ciao, Allesquatsch