Lines of Code
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 Metrik für die Größe oder für das Wachstum eines Programms verwendet werden.
Die Metrik darf nicht dazu missbraucht werden, um die Effizienz eines Programmierers an der Anzahl von Programmzeilen zu messen. Da die Anzahl von unterschiedlichsten Faktoren abhängt (gewählte Architektur, Erfahrung des Programmierers, gewählte Lösung, Formatierung des Quellcodes, verwendete Programmiersprache, ...), besitzt diese Metrik keinerlei Aussagekraft im Bezug zur Leistung des Programmierers. Zudem besagt die 80/20-Regel, dass 80 % der Zeilen in 20 % der Zeit geschrieben werden. Das Testen eines Programms kann, sofern es seriös durchgeführt wird, sehr viel Zeit in Anspruch nehmen, während die Anzahl geänderter oder ergänzter Programmzeilen nur sehr gering ist.
Inhaltsverzeichnis |
[Bearbeiten] Verwendung
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 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. Je nach Zählweise sind insbesondere Rückschlüsse auf die investierte Arbeitszeit meistens sinnfrei.
Es gibt zwei gängige Varianten, LOC zu messen: physische Zeilen oder logische Zeilen. Bei der physischen Zählweise wird die Zahl der Zeilen im Quelltext, inklusive Kommentar- und Leerzeilen, gezählt. Bei der logischen Zählweise wird versucht, die Anzahl der Anweisungen zu zählen. Was wiederum unter einer Anweisung zu verstehen ist und wie die Komplexität derselben zu beurteilen ist, hängt 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.
Werden logische Zeilen gezählt, entfallen unter Umständen auch Unmengen an Dokumentation. So besteht beispielsweise die Haupt-Header-Datei der freien Graphikbibliothek Cairo zu knapp 60 % aus Doxygen-Kommentaren zur Dokumentation, die nicht minder wichtig sind.
Das folgende Beispiel zeigt den Unterschied der Bewertungsmethoden:
for (i=0; i<100; ++i) printf("hello"); /* Wieviele Zeilen Code sind das? */
Der Quelltext besteht aus:
- einer physischen Codezeile (LOC),
- zwei logischen Codezeilen (LLOC, for-Anweisung und printf-Anweisung) sowie
- einer Kommentarzeile.
Abhängig vom Programmierer und den verwendeten Formatierungsrichtlinien kann die obige Zeile in folgenden, programmtechnisch gesehen vollkommen gleichwertigen Quelltext umformuliert werden:
/* Wie viele Zeilen sind das? */ for (i = 0; i < 100; ++i) { printf("hello"); }
Nun besteht der Quelltext aus:
- fünf physischen Codezeilen: Was kostet das Platzieren einer Klammer?
- zwei logischen Programmzeilen und
- einer Kommentarzeile: Kommentare sind für den Betrachter des Quelltextes relevant; der Compiler überliest sie.
Selbst bei diesem simplen Beispiel kann man nun durchaus noch argumentieren, dass der Kopf der For-Schleife im Beispiel aus drei einzelnen Anweisungen besteht (Zuweisung, Vergleich und Inkrement). Dies zeigt, wie schwierig es selbst bei vorgegebener Programmiersprache ist, eine sinnvolle Definition für LOC zu finden.
[Bearbeiten] Beispiele
Hier sind einige Beispiele für die Anzahl der Zeilen von Programmcode in verschiedenen Betriebssystemen und Anwendungsprogrammen.
| Jahr | Betriebssystem | SLOC (in Millionen) |
|---|---|---|
| 1993 | Windows NT 3.1 | 4-5[1] |
| 1994 | Windows NT 3.5 | 7-8[1] |
| 1996 | Windows NT 4.0 | 11-12[1] |
| 2000 | Windows 2000 | mehr als 29[1] |
| 2001 | Windows XP | 40[1] |
| 2003 | Windows Server 2003 | 50[1] |
| System | SLOC (in Millionen) |
|---|---|
| Debian 2.2 | 55-59[2][3] |
| Debian 3.0 | 104[3] |
| Debian 3.1 | 215[3] |
| Debian 4.0 | 283[3] |
| OpenSolaris | 9.7 |
| FreeBSD | 8.8 |
| Mac OS X 10.4 | 86[4] |
| Linux Kernel 2.6.0 | 5.2 |
| Linux Kernel 2.6.29 | 11.0 |
| Linux Kernel 2.6.32 | 12.6[5] |
| SAP NetWeaver der SAP AG in 2007 | 238[6] |
[Bearbeiten] Zitate
| Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (bspw. Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Hilf bitte der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Näheres ist eventuell auf der Diskussionsseite oder in der Versionsgeschichte angegeben. Bitte entferne zuletzt diese Warnmarkierung. |
“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.”
„Den Programmierfortschritt durch die Anzahl der Programmzeilen zu messen, ist wie wenn man den Fortschritt beim Bau eines Flugzeugs an dessen Gewicht misst.“
[Bearbeiten] Literatur
- S. H. Kan. 2002. Metrics and Models in Software Quality Engineering. 2nd Edition. Addison-Wesley.
[Bearbeiten] Weblinks
[Bearbeiten] Quellen
- ↑ a b c d e f How Many Lines of Code in Windows?. Knowing.NET (Oktober 2010 – Scholar search). Abgerufen am 16. Oktober 2010.
- ↑ González-Barahona, Jesús M., Miguel A. Ortuño Pérez, Pedro de las Heras Quirós, José Centeno González, and Vicente Matellán Olivera: Counting potatoes: the size of Debian 2.2. debian.org. Abgerufen am 12. August 2003.
- ↑ a b c d Gregorio Robles: Debian Counting. Abgerufen am 16. Februar 2007.
- ↑ Steve Jobs (August 2006): Live from WWDC 2006: Steve Jobs Keynote. Abgerufen am 16. Februar 2007. „86 million lines of source code that was ported to run on an entirely new architecture with zero hiccups.“
- ↑ What's new in Linux 2.6.32. Abgerufen am 20. November 2011.
- ↑ What SAP says about ABAP's future. Abgerufen am 20. November 2011.