Lines of Code

Begriff der Softwaretechnik Aus Wikipedia, der freien Enzyklopädie

Lines of Code (kurz LOC; englisch für Code-Zeilen i.S.v. Anzahl der Programmzeilen; engl. source lines of code, SLOC) ist ein Begriff aus der Softwaretechnik. Es handelt sich dabei um eine Softwaremetrik, d. h. eine Maßzahl, um die Größe einer Codebasis eines Computerprogramms oder seines Wachstums zu beschreiben. Die Lines of Code sind im einfachsten Fall die Anzahl der Zeilen des Quelltextes, aus denen das Programm besteht.

Diese Metrik erlaubt keine direkten Aussagen über die Effizienz der Programmierer, 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.

Üblicherweise rechnet man mit einer Produktivität – inklusive aller Projekttätigkeiten – von 10 bis 50 Codezeilen je Mitarbeiter und Tag. Ein Softwareentwicklungsprojekt mit einem gesamten Aufwand von 1.000 Personentagen (ca. 5 Personenjahre) sollte also zwischen 10.000 und 50.000 Lines of Code produziert haben.[1]

Berechnungsarten

Zusammenfassung
Kontext

Bei Lines of Code gibt es einige gängige Ausprägungen, die anhand des folgenden Beispiels in der Programmiersprache Java 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 schließenden 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 bspw. 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

Zusammenfassung
Kontext

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.

Die Größe Lines of Code wird u. a. auch zur Berechnung der Fehlerdichte eines Programms verwendet: Je nach Einsatzzweck sollte ein bestimmtes Maß an Programmfehlern nicht überschritten werden, z. B. max. 0,5 Fehler je KLOC (= Kilo = 1000 LOC) in militärischen oder Krankenhaussystemen.

Beispiele

Zusammenfassung
Kontext

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

Weitere Informationen Jahr, System ...
Anzahl der Zeilen Programmcode in verschiedenen Betriebssystemen und Programmen
Jahr System SLOC in Mio.
Betriebssystem-Kernel
1983 Multics-Kernel [2]0,25
1994 Linux-Kernel 1.0 (nur i386) < 0,2
1996 Linux-Kernel 2.0 (IA-32, Alpha, MIPS, SPARC) 0,72
1999 Linux-Kernel 2.2 1,7
2001 Linux-Kernel 2.4 3,2
2003 Linux-Kernel 2.6.0 8,1
2005 XNU 792.x (Darwin 8.x bzw. Mac OS X 10.4) [3]2
2011 Linux-Kernel 2.6.39 und 3.0 14,5
2012 Linux-Kernel 3.2 LTS [4]15
2012 Linux-Kernel 3.6 [5]15,9
2015 Linux-Kernel 4.2 [6]> 20
2018 Linux-Kernel 4.15 [7]25,3
Komplette Betriebssysteme
FreeBSD 8,8
OpenSolaris 9,7
1993 Windows NT 3.1 [8]4–5
1994 Windows NT 3.5 [8]7–8
1996 Windows NT 4.0 [8]11–12
2000 Debian GNU/Linux 2.2 [9][10]55–59
2000 Windows 2000 [8]> 29
2001 Windows XP [8]40
2002 Debian GNU/Linux 3.0 [10]104
2003 Windows Server 2003 [8]50
2005 Debian GNU/Linux 3.1 [10]215
2005 Mac OS X Tiger (10.4) [11]86
2007 Debian GNU/Linux 4.0 [10]283
2007 Windows Vista [12]50
2009 Debian GNU/Linux 5.0 [10]324
2009 Windows 7 [12]40
Andere Software
1983 Lotus 1-2-3 1.0 [13]0,02
1989 Lotus 1-2-3 3.0 [13]0,4
2007 SAP NetWeaver 2007 [14]238
2020 Mozilla Firefox [15]22,3
2020 Chromium (Basis für Google Chrome) [16]34,9
Schließen

Literatur

Einzelnachweise

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.