Lines of Code

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Lines of Code (abgekürzt LOC oder auch LoC, im Englischen auch „SLOC - Source Lines of Code“) ist ein Begriff aus der Informationstechnik beziehungsweise der Programmier-Fachsprache. Er kommt aus dem Englischen und heißt übersetzt so viel wie „Anzahl an Programmzeilen“.

Die Messung der „Lines of Code“ kann als Softwaremetrik für die Größe oder für das Wachstum eines Programms verwendet werden.

Diese Metrik erlaubt keine direkten Aussagen über die Effizienz eines Programmierers, denn die Anzahl der Zeilen hängt von unterschiedlichsten Faktoren ab: gewählte Architektur, Erfahrung des Programmierers, gewählte Lösung, Formatierung des Quellcodes, verwendete Programmiersprache usw. Zudem besagt die 80/20-Regel, dass 80 % der Zeilen in 20 % der Zeit geschrieben werden. So kann das gründliche Testen eines Programms sehr viel Zeit in Anspruch nehmen, während die Anzahl geänderter oder ergänzter Programmzeilen nur gering ist.

Berechnungsarten[Bearbeiten]

Bei Lines of Code gibt es einige gängige Ausprägungen welche anhand folgenden Beispieles erläutert werden:

/* Wie viele Zeilen sind das? */
public void ausgabeEinsBisHundert() {
 
  for (int i = 1; i <= 100; i++) {
    System.out.print(" " + i); //hier die Ausgabe der Zahlen aus der Schleife
  }
}
Lines of Code (LOC)
Auch Physische Lines of Code genannt. Anzahl Zeilen inklusive Leerzeilen und Kommentare. In obigem Beispiel 7. Wird oft stellvertretend für eine der anderen Berechnungsarten genannt.
Source Lines of Code (SLOC)
Anzahl der Codezeilen ohne Leerzeilen und Kommentare. In obigem Beispiel 5.
Comment Lines of Code (CLOC)
Anzahl Kommentarzeilen, wobei nicht definiert ist, ob auch Zeilen mit Code und Kommentare eingerechnet werden. In obigem Beispiel somit 1 oder 2.
Non-Comment Lines of Code (NCLOC)
Auch Non-Comment Source Lines (NCSL) oder Effective Lines of Code (ELOC) genannt. Anzahl der Codezeilen ohne Leerzeilen und Kommentare ohne Header und Footer. Header und Footer sind insbesondere die äußeren öffnenden und schliessenden Klammern, sowie (auf Klassenebene) Import/Include Statements und (auf Methodenebene) Methodendeklarationen. Obiges Beispiel hat auf Methodenebene 3, auf Klassenebene 5 NCLOC.
Logical Lines of Code (LLOC)
Auch Number of Statements (NOS) genannt. Zählt die Anzahl der Anweisungen. Wird beispielsweise bei COCOMO verwendet. In obigem Beispiel 2. In der Programmiersprache C gelten allerdings die Instruktionen in for-Schleifen als eigenständige Anweisung. In C hätte obiges Beispiel also 4 LLOC.

Verwendung[Bearbeiten]

Die meisten Vergleiche von Programmen über die LOC betrachten nur die Größenordnungen der Anzahl Zeilen verschiedener Projekte. Computerprogramme können aus nur wenigen Dutzend bis zu hunderten von Millionen Programmzeilen bestehen. Der Umfang eines Programmes in Codezeilen muss nicht zwangsläufig Rückschlüsse auf die Komplexität oder Funktionalität des Programms erlauben, da die Verwendung externer Frameworks und Programmbibliotheken, die verwendete Programmiersprache und auch die Formatierung des Quelltextes großen Einfluss auf die Codezeilen haben. Insbesondere sind Rückschlüsse auf die investierte Arbeitszeit meistens sinnfrei.

Auch bei Verwendung von Logical Lines of Code (LLOC) hängt das Verständnis, was unter einer Anweisung zu verstehen ist und wie die Komplexität derselben zu beurteilen ist, von der verwendeten Programmiersprache ab. So kann etwa in einem mehrere Bildschirmseiten umfassenden Assembler-Quelltext letztlich das gleiche Programm formuliert sein, wie in einigen wenigen Zeilen einer höheren Programmiersprache.

Abhängig vom Programmierer und den verwendeten Formatierungsrichtlinien kann das obige Beispiel in folgenden, programmtechnisch gesehen vollkommen gleichwertigen Quelltext umformuliert werden:

/* Wie viele Zeilen sind das? */
public void ausgabeEinsBisHundert() {
  for (int i = 1; i <= 100; i++) System.out.print(" " + i); //hier die Ausgabe der Zahlen aus der Schleife
}

Nun besteht der Quelltext aus vier physischen Codezeilen (LOC), drei SLOC, je nach Berechnung ein bis zwei Comment Lines of Code (CLOC), einem Non-Comment Line of Code (auf Methodenebene) und weiterhin zwei logischen Programmzeilen (LLOC).

Da die hier getätigte Reduktion der Codezeilen die Lesbarkeit reduziert hat, ist die Komplexität des Programmes erhöht worden, was wiederum auf die Produktivität einen negativen Einfluss hat. Weniger Zeilen Code kann somit durchaus höhere Aufwände verursachen.

Beispiele[Bearbeiten]

Hier sind einige Beispiele für die Anzahl der Zeilen von Programmcode in verschiedenen Betriebssystemen und Anwendungsprogrammen.

System SLOC
(in Mio.)[1]
Microsoft Windows
Windows NT 3.1 (1993) 4–5
Windows NT 3.5 (1994) 7–8
Windows NT 4.0 (1996) 11–12
Windows 2000 (2000) > 29
Windows XP (2001) 40
Windows Server 2003 (2003) 50
Debian
Debian 2.2 55-59[2][3]
Debian 3.0 104[3]
Debian 3.1 215[3]
Debian 4.0 283[3]
Andere Betriebssysteme
OpenSolaris 9,7
FreeBSD 8,8
Mac OS X 10.4 86[4]
Linux Kernel
Linux Kernel 2.6.0 5,2
Linux Kernel 2.6.29 11,0
Linux Kernel 2.6.32 12,6
Linux Kernel 3.2 15[5]
Linux Kernel 3.6 15.9[6]
Andere Software
SAP NetWeaver 2007 238[7]

Literatur[Bearbeiten]

  • S. H. Kan. 2002. Metrics and Models in Software Quality Engineering. 2nd Edition. Addison-Wesley.
  •  Harry Sneed, Richard Seidl, Manfred Baumgartner: Software in Zahlen - Die Vermessung von Applikationen. 1. Auflage. Carl Hanser Verlag, 2010, ISBN 978-3-446-42175-2.

Weblinks[Bearbeiten]

Quellen[Bearbeiten]

  1. How Many Lines of Code in Windows?. Knowing.NET. 6. Dezember 2005. Abgerufen am 16. Oktober 2010.
  2. Jesús M. González-Barahona, Miguel A. Ortuño Pérez, Pedro de las Heras Quirós, José Centeno González, Vicente Matellán Olivera: Counting potatoes: the size of Debian 2.2. Archiviert vom Original am 4. Juli 2008. Abgerufen am 2. Mai 2013.
  3. a b c d Gregorio Robles: Debian Counting. Abgerufen am 2. Mai 2013.
  4. Steve Jobs: Live from WWDC 2006: Steve Jobs Keynote. 7. August 2006. Abgerufen am 16. Februar 2007: „86 million lines of source code that was ported to run on an entirely new architecture with zero hiccups.“
  5. Greg Kroah-Hartman, Jonathan Corbet, Amanda McPherson: Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It (PDF; 0,6 MB) Linux Foundation. März 2012. Abgerufen am 8. Januar 2013.
  6. Thorsten Leemhuis: Die Neuerungen von Linux 3.6. heise online. 1. Oktober 2012. Abgerufen am 2. Mai 2013.
  7. What SAP says about ABAP's future. Abgerufen am 20. November 2011.