Antal kodrader

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 19 januari 2020; kontroller kräver 2 redigeringar .

Antalet rader kod ( eng.  Source Lines of Code-SLOC ) är ett programvarumått som används för att mäta dess volym genom att räkna antalet rader i källkodens text . Som regel [1] [2] används denna indikator för att förutsäga arbetskostnaderna för att utveckla ett specifikt program på ett specifikt programmeringsspråk, eller för att bedöma arbetsproduktiviteten efter att programmet har skrivits.

Räknar antalet kodrader

Traditionellt anses det vara vettigt att jämföra projektstorlekar endast upp till en storleksordning . Bland alla olika metoder för att beräkna detta mått, skiljer de flesta källor två huvudsakliga: att räkna fysiska och logiska linjer [3] .

Fysiska rader är alla icke-tomma rader i en textfil . Tomma rader tas med i beräkningen om deras antal i något avsnitt inte överstiger 25 %. Annars ignoreras tomma rader som överskrider 25 %-gränsen.

Genom att mäta de logiska kodraderna görs ett försök att räkna antalet faktiska påståenden i programmet, men naturligtvis beror deras definition på det specifika programmeringsspråket. Till exempel, det enklaste sättet att räkna antalet logiska rader kod i C- och Pascal -liknande språk är att räkna antalet semikolon som avslutar uttalanden.

Fysiska kodrader är mer intuitiva och lättare att läsa. Resultaten av beräkningen beror dock i huvudsak på reglerna för formatering och formatering av källkoden, för vilka logiska kodrader är föremål för i mycket mindre utsträckning.

Tänk på följande C-exempel:

för ( i = 0 ; i < 100 ; ++ i ) printf ( "hej" ); // Hur många rader kod finns det?

I det här fallet har vi:

För en annan programmerare kan samma kodbit skrivas på flera rader:

för ( i = 0 ; i < 100 ; ++ i ) { printf ( "hej" ); } // Hur många rader kod finns det?

I det här exemplet kommer vi att ha:

  • 5 fysiska rader kod
  • 2 logiska rader kod
  • 1 kommentarsrad

Historik

Man tror att idén med att använda kodrader som ett mått för storleken på datorprogram går tillbaka till 1950 -talet , då Fortran , Assembler och Cobol var de mest använda språken . Huvudmekanismen för att lägga in program i en dator var hålkort och håltejp , och en kodrad kodades på ett kort (en ram med håltejp). Eftersom de är föremål för den fysiska världen, var de (hålkort/ramar av håltejp, och följaktligen kodrader) lätta att räkna. Dessutom hade paketet med hålkort som utgjorde programmet en mycket synlig volym, med vilken chefer kunde bedöma programmerares produktivitet .

Använda måttet

Resultat baserade på antalet rader kod är ofta inkonsekventa, särskilt när de används felaktigt. Därför verkar det motiverat att använda detta mått i processen för att bedöma arbetskostnader. Korrelationen med funktionalitet är dock inte längre så tydlig. Erfarna programmerare tenderar att skriva mindre kod samtidigt som de uppnår samma resultat. Och om skillnaden i klassen av utvecklare kan utjämnas när man utvärderar prestandan för ett tillräckligt stort team, så verkar användningen av detta mått för att utvärdera en individs prestanda vara otillräcklig.

Storleken på samma program skrivet på olika programmeringsspråk kan variera avsevärt (se KAELOC  - assembler - ekvivalent strängkonverteringsteknik). I exemplet nedan jämförs programmet "Hello world" i C och Cobol (känd för sin "omfattning")

C COBOL
#include <stdio.h> int main ( void ) { printf ( "Hej världen" ); returnera 0 ; } 000100 IDENTIFIKATIONSDIVISION. 000200 PROGRAM-ID. HEJ VÄRLDEN. 000300 000400* 000500 MILJÖDIVISION. 000600 KONFIGURATIONSAVSNITT. 000700 KÄLLA-DATOR. RM-COBOL. 000800 OBJEKT-DATOR. RM-COBOL. 000900 001000 DATA DIVISION. 001100 FILAVSNITT. 001200 100000 PROCEDURDIVISION. 100100 100200 HUVUDLOGISK AVSNITT. 100300 BÖRJA. 100400 DISPLAY " " LINE 1 POSITION 1 RADERA EOS. 100500 DISPLAY "Hej världen!" LINE 15 POSITION 10. 100600 STOPP KÖR. 100700 MAIN-LOGIC-EXIT. 100800 AVSLUTA.
Kodrader: 5
(exklusive tomma)
Kodrader: 17
(exklusive tomma)

Relativt nyligen har en annan aspekt av detta problem dykt upp - skillnaden mellan programkoden skriven för hand och automatiskt genererad. Moderna utvecklingsverktyg ger ofta möjligheten att automatiskt generera stora mängder kod med bara några musklick . Den mest framträdande representanten för dessa system är verktygen för visuell utveckling av ett grafiskt användargränssnitt . Mängden arbete som är involverat i att skapa sådan kod är inte på något sätt jämförbar med mängden arbete, till exempel att skriva en enhetsdrivrutin . Å andra sidan kan det visa sig att det kan vara mycket mer tidskrävande att skriva en specialiserad användargränssnittskomponent med komplext beteende för hand än att skriva en enkel drivrutin .

Exempel

Storleken på källkoderna för operativsystemen i Microsoft Windows NT- familjen är inte exakt kända, men enligt källan [4] är de:

År Version Kodrader, miljoner
1993 Windows NT 3.1 4-5
1994 Windows NT 3.5 7-8
1996 Windows NT 4.0 11-12
2000 Windows 2000 >29
2001 Windows XP 45

Storleken på Linux-kärnans källkoder , tillsammans med de enhetsdrivrutiner som ingår där, kan beräknas exakt:

År Version Kodrader
1991 Linuxkärna 0.1 10 239
1994 Linuxkärna 1.0.0 176 250
1995 Linuxkärna 1.2.0 310 950
1996 Linuxkärna 2.0.0 777 956
1999 Linuxkärna 2.2.0 1 800 847
2001 Linuxkärna 2.4.0 3 377 902
2003 Linuxkärna 2.6.0 5 929 913
2009 Linuxkärna 2.6.32 12 606 910 [5]
2012 Linux 3.6 kärna 15 868 036 [6]
2017 Linuxkärna 4.11.7 18 373 471 [7]

Mått på andra system:

År Version Kodrader
PostgreSQL 775 000
1C 3 000 000
2008 1C-Bitrix 762 854

Se även

Anteckningar

  1. Översikt över COCOMO-modellen . Hämtad 8 juni 2010. Arkiverad från originalet 27 februari 2010.
  2. Kodlinjer på C2 wiki . Hämtad 8 juni 2010. Arkiverad från originalet 5 februari 2010.
  3. Kodmetrik och deras praktiska genomförande i omstörtande och klarsynta fall. Del 1 - Mätvärden (inte tillgänglig länk) . Hämtad 19 februari 2009. Arkiverad från originalet 13 september 2011. 
  4. Räkna källkoder (SLOC) . Hämtad 21 februari 2009. Arkiverad från originalet 11 februari 2009.
  5. Vad är nytt i Linux 2.6.32 (nedlänk) . Tillträdesdatum: 23 maj 2011. Arkiverad från originalet 19 december 2013. 
  6. Vad är nytt i Linux 3.6
  7. Kodrader för Linux-kärnversionerna . Hämtad 29 juni 2017. Arkiverad från originalet 17 april 2017.