Lines of Code

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

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.

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]

Zitate

“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.“

Bill Gates

Literatur

  • S. H. Kan. 2002. Metrics and Models in Software Quality Engineering. 2nd Edition. Addison-Wesley.

Weblinks

Quellen

  1. a b c d e f How Many Lines of Code in Windows?. Knowing.NET (Oktober 2010 – Scholar search). Abgerufen am 16. Oktober 2010.
  2. 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.
  3. a b c d Gregorio Robles: Debian Counting. Abgerufen am 16. Februar 2007.
  4. 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.“
  5. Vorlage:Internequelle
  6. Vorlage:Internequelle

Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Source lines of code — (SLOC) is a software metric used to measure the size of a software program by counting the number of lines in the text of the program s source code. SLOC is typically used to predict the amount of effort that will be required to develop a program …   Wikipedia

  • Lines of Code (LOC) — 1. Begriff: In der Datenverarbeitung Anzahl der Zeilen eines ⇡ Programms (bzw. eines ⇡ Softwaresystems). 2. Verwendung: (1) Aussagen über die Größe von Programmen oder Softwaresystemen; (2) Basis für ⇡ Kostenschätzungsmodelle (problematisch); (3) …   Lexikon der Economics

  • code — [kəʊd ǁ koʊd] noun 1. [countable] LAW a complete set of written rules or laws: • Each state in the US has a different criminal and civil code. ˈbuilding code [countable] LAW a set of rules that states what features a new building, bridge etc… …   Financial and business terms

  • Code review — is systematic examination (often as peer review) of computer source code. It is intended to find and fix mistakes overlooked in the initial development phase, improving both the overall quality of software and the developers skills. Reviews are… …   Wikipedia

  • Code bloat — is the production of code that is perceived as unnecessarily long, slow, or otherwise wasteful of resources. Code bloat can be caused by inadequacies in the language in which the code is written, inadequacies in the compiler used to compile the… …   Wikipedia

  • Code coverage — is a measure used in software testing. It describes the degree to which the source code of a program has been tested. It is a form of testing that inspects the code directly and is therefore a form of white box testing.[1] Code coverage was among …   Wikipedia

  • Code Metrics — is a code analysis tool included in Visual Studio 2008 (Team Edition and Team Suite only) that allows code and projects to be analysed and gathers statistics such as inheritance depth, lines of code, number of classes etc. and computes a… …   Wikipedia

  • code — coder, n. codeless, adj. /kohd/, n., v., coded, coding. n. 1. a system for communication by telegraph, heliograph, etc., in which long and short sounds, light flashes, etc., are used to symbolize the content of a message: Morse code. 2. a system… …   Universalium

  • code — 01. Local building [codes] were ignored at the stadium, resulting in a tragic accident which killed over 250 spectators. 02. I tried to phone you, but I dialed the wrong area [code], and got someone living in Louisiana instead. 03. I can t… …   Grammatical examples in English

  • Code injection — is the exploitation of a computer bug that is caused by processing invalid data. Code injection can be used by an attacker to introduce (or inject ) code into a computer program to change the course of execution. The results of a code injection… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”