Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Lines of Code

Üblicherweise rechnet man mit einer Produktivität – inklusive aller Projekttätigkeiten – von 10 bis 50 Codezeilen je Mitarbeiter und Tag. Ein …

Inhalt4 Abschnitte
  1. 1. Bedeutung der Kennzahl
  2. 2. Arten der Zeilenzählung
  3. 3. Aussagekraft und Einsatz
  4. 4. Beispiele für Programmgrößen

Bedeutung der Kennzahl

Lines of Code (LOC; englisch für Code-Zeilen, auch source lines of code, SLOC) ist eine Softwaremetrik. Sie beschreibt die Größe einer Codebasis eines Computerprogramms oder deren Wachstum. Im einfachsten Fall werden alle Zeilen des Quelltextes gezählt.

LOC ist jedoch kein direktes Maß für die Effizienz von Programmierern. Die Zeilenzahl hängt unter anderem von Architektur, Erfahrung, gewählter Lösung, Formatierung und Programmiersprache ab. Nach der 80/20-Regel werden 80 % der Zeilen in 20 % der Zeit geschrieben; gründliches Testen kann dagegen viel Zeit beanspruchen, obwohl nur wenige Zeilen geändert oder ergänzt werden.

Als Produktivität einschließlich aller Projekttätigkeiten werden üblicherweise 10 bis 50 Codezeilen je Mitarbeiter und Tag angesetzt. Ein Projekt mit 1.000 Personentagen Aufwand, etwa 5 Personenjahre, sollte demnach 10.000 bis 50.000 LOC erzeugen.

Arten der Zeilenzählung

Die verschiedenen Zählweisen liefern für denselben Java-Quelltext unterschiedliche Werte:

  • LOC oder physische Lines of Code: alle Zeilen einschließlich Leerzeilen und Kommentare; im Beispiel 7.
  • SLOC: Codezeilen ohne Leerzeilen und Kommentare; im Beispiel 5.
  • CLOC: Kommentarzeilen. Ob Zeilen mit sowohl Code als auch Kommentar mitzählen, ist nicht festgelegt; im Beispiel daher 1 oder 2.
  • NCLOC, auch NCSL oder ELOC: Codezeilen ohne Leerzeilen, Kommentare sowie Header und Footer. Dazu zählen insbesondere äußere öffnende und schließende Klammern; auf Klassenebene außerdem Import-/Include-Statements, auf Methodenebene Methodendeklarationen. Das Beispiel hat 3 NCLOC auf Methodenebene und 5 auf Klassenebene.
  • LLOC, auch Number of Statements (NOS): Anzahl der Anweisungen. Diese Größe wird beispielsweise bei COCOMO verwendet. Das Beispiel enthält 2 LLOC; in C gelten die Instruktionen einer for-Schleife als eigene Anweisungen, daher wären es 4 LLOC.

Aussagekraft und Einsatz

LOC-Vergleiche betrachten meist nur Größenordnungen: Programme reichen von wenigen Dutzend bis zu hunderten Millionen Zeilen. Die Zeilenzahl erlaubt nicht zwingend Rückschlüsse auf Komplexität, Funktionalität oder investierte Arbeitszeit. Externe Frameworks und Programmbibliotheken, Programmiersprache und Formatierung beeinflussen sie stark.

Auch LLOC beseitigt dieses Problem nicht vollständig, weil sich Bedeutung und Komplexität einer Anweisung je nach Sprache unterscheiden. Ein mehrere Bildschirmseiten langer Assembler-Quelltext kann letztlich dasselbe Programm enthalten wie einige wenige Zeilen einer höheren Programmiersprache.

Das Java-Beispiel lässt sich bei gleicher Programmbedeutung auf 4 physische LOC und 3 SLOC zusammenziehen; es hat dann je nach Berechnung 1 oder 2 CLOC, 1 NCLOC auf Methodenebene und weiterhin 2 LLOC. Die Verringerung der Zeilen reduziert aber die Lesbarkeit, erhöht damit die Komplexität und kann die Produktivität negativ beeinflussen. Weniger Codezeilen können also höhere Aufwände verursachen.

LOC dient außerdem zur Berechnung der Fehlerdichte. Je nach Einsatzzweck darf eine bestimmte Zahl von Programmfehlern nicht überschritten werden, etwa maximal 0,5 Fehler je KLOC, wobei Kilo 1000 LOC bedeutet, in militärischen oder Krankenhaussystemen.

Beispiele für Programmgrößen

Die Tabelle zeigt SLOC in Millionen und macht große Unterschiede zwischen Systemen sichtbar. Beim Linux-Kernel stieg die Zahl von weniger als 0,2 Mio. für Linux-Kernel 1.0 (1994, nur i386) über 8,1 Mio. für Linux-Kernel 2.6.0 (2003) auf 25,3 Mio. für Linux-Kernel 4.15 (2018). Der Multics-Kernel hatte 1983 0,25 Mio. SLOC; XNU 792.x hatte 2005 2 Mio.

Bei kompletten Betriebssystemen werden beispielsweise FreeBSD mit 8,8 Mio. und OpenSolaris mit 9,7 Mio. genannt. Windows NT 3.1 hatte 1993 4–5 Mio., Windows XP 2001 40 Mio. und Windows Server 2003 50 Mio. SLOC. Debian GNU/Linux wuchs von 55–59 Mio. bei Version 2.2 (2000) auf 324 Mio. bei Version 5.0 (2009).

Andere genannte Programme sind Lotus 1-2-3 1.0 mit 0,02 Mio. SLOC (1983), SAP NetWeaver 2007 mit 238 Mio., Mozilla Firefox mit 22,3 Mio. (2020) und Chromium als Basis für Google Chrome mit 34,9 Mio. (2020).

Weiterlesen

Softwaretechnik ... Agile Softwareentwicklung. Die Softwaretechnik umfasst den gesamten Prozess von der Identifizierung des Bedarfs bis hin zur Inbetriebnahme einer konkreten … Quelltext Quelltext, auch Quellcode (englisch source code) oder unscharf Programmcode genannt, ist in der Informatik der für Menschen lesbare, in einer … Wirtschaftlichkeit Wirtschaftlichkeit. Wirtschaftssystem- und unternehmenszielindifferenter Ausdruck dafür, inwieweit eine Tätigkeit dem Wirtschaftlichkeitsprinzip genügt. Artikel … Softwaretest Ein Softwaretest prüft und bewertet Software auf Erfüllung der für ihren Einsatz definierten Anforderungen und misst ihre Qualität. Java (Programmiersprache) Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems, welches 2010 von Oracle übernommen wurde. Anweisung (Programmierung) Anweisungen sind üblicherweise Zuweisungen, Kontrollanweisungen (wie Sprünge, Schleifen und bedingte Anweisungen) und Prozeduraufrufe. Abhängig von der … Größenordnung Als Größenordnung einer physikalischen Größe bezeichnet man den Bereich einer Zehnerpotenz bezogen auf ihre Maßeinheit. Eine Größenordnungsdifferenz von 1 … Assemblersprache Eine Assemblersprache, kurz auch Assembler genannt (von englisch to assemble ‚zusammenfügen'), ist eine Programmiersprache, die auf den Befehlsvorrat eines … Höhere Programmiersprache Eine höhere Programmiersprache ist eine Programmiersprache zur Abfassung eines Computerprogramms, die in Abstraktion und Komplexität von der Ebene der … Betriebssystem Betriebssysteme bestehen in der Regel aus einem Kernel (deutsch: Kern), der die Hardware des Computers verwaltet, sowie speziellen Programmen, die beim Start … Kernel (Betriebssystem) Ein Kernel (englisch [ˈkɝːnəl], übersetzt Kern), auch Betriebssystemkern (oder verkürzt Systemkern), ist der zentrale Bestandteil eines Betriebssystems. Microsoft Windows Microsoft Windows (englische Aussprache [ˈmaɪ.kɹoʊ.sɒft ˈwɪn.doʊz]) bzw. Windows ist eine Reihe proprietärer grafischer Betriebssystemfamilien von Microsoft …