Antallet af linjer kode ( eng. Source Lines of Code-SLOC ) er en software-metrik , der bruges til at måle dens volumen ved at tælle antallet af linjer i kildekodens tekst . Som regel [1] [2] bruges denne indikator til at forudsige lønomkostningerne for at udvikle et specifikt program i et specifikt programmeringssprog eller til at vurdere arbejdsproduktiviteten efter programmet er skrevet.
Traditionelt anses det for at være fornuftigt kun at sammenligne størrelsen af projekter op til en størrelsesorden . Blandt hele rækken af metoder til beregning af denne metrik skelner de fleste kilder mellem to hovedmetoder: at tælle fysiske og logiske linjer [3] .
Fysiske linjer er alle ikke-tomme linjer i en tekstfil . Tomme linjer tages i betragtning, hvis antallet i nogle afsnit ikke overstiger 25 %. Ellers ignoreres tomme linjer, der overstiger grænsen på 25 %.
Ved at måle de logiske kodelinjer forsøger man at tælle antallet af faktiske udsagn i programmet, men deres definition afhænger selvfølgelig af det bestemte programmeringssprog. For eksempel er den enkleste måde at tælle antallet af logiske kodelinjer på i C- og Pascal -lignende sprog at tælle antallet af semikoloner , der afslutter udsagn.
Fysiske kodelinjer er mere intuitive og nemmere at læse. Resultaterne af beregningen afhænger dog i det væsentlige af reglerne for formatering og formatering af kildekoden, som logiske kodelinjer er underlagt i langt mindre omfang.
Overvej følgende C-eksempel:
for ( i = 0 ; i < 100 ; ++ i ) printf ( "hej" ); // Hvor mange linjer kode er der?I dette tilfælde har vi:
For en anden programmør kan det samme stykke kode skrives på flere linjer:
for ( i = 0 ; i < 100 ; ++ i ) { printf ( "hej" ); } // Hvor mange linjer kode er der?I dette eksempel vil vi have:
Det menes, at ideen om at bruge kodelinjer som en metrik for størrelsen af computerprogrammer går tilbage til 1950'erne , hvor Fortran , Assembler og Cobol var de mest brugte sprog . Hovedmekanismen til at indtaste programmer i en computer var hulkort og hulbånd , og en kodelinje blev kodet på ét kort (en ramme hulbånd). Da de var et objekt for den fysiske verden, var de (hullede kort / rammer af hulbånd og følgelig kodelinjer) nemme at tælle. Derudover havde pakken med hulkort, der udgjorde programmet, et meget synligt volumen, som ledere kunne bedømme programmørernes produktivitet efter .
Resultater baseret på antallet af kodelinjer er ofte inkonsistente, især når de bruges forkert. Derfor synes brugen af denne metrik i processen med at vurdere lønomkostninger berettiget. Sammenhængen med funktionalitet er dog ikke længere så klar. Erfarne programmører har en tendens til at skrive mindre kode, mens de opnår det samme resultat. Og hvis forskellen i klassen af udviklere kan udjævnes, når man evaluerer ydeevnen for et tilstrækkeligt stort team, så virker brugen af denne metrik til at evaluere en persons ydeevne utilstrækkelig.
Størrelsen af det samme program skrevet på forskellige programmeringssprog kan variere betydeligt (se KAELOC - assembler - ækvivalent strengkonverteringsteknik). Eksemplet nedenfor sammenligner programmet "Hello world" i C og Cobol (kendt for dets "omfattende indhold")
C | COBOL |
---|---|
#include <stdio.h> int main ( void ) { printf ( "Hej verden" ); returnere 0 ; } | 000100 IDENTIFIKATIONSDIVISION. 000200 PROGRAM-ID. HEJ VERDEN. 000300 000400* 000500 MILJØDIVISION. 000600 KONFIGURATIONS AFSNIT. 000700 KILDE-COMPUTER. RM-COBOL. 000800 OBJEKT-COMPUTER. RM-COBOL. 000900 001000 DATADIVISION. 001100 FILAFSNIT. 001200 100000 PROCEDURE OPDELING. 100100 100200 HOVEDLOGISK AFSNIT. 100300 START. 100400 DISPLAY " " LINJE 1 POSITION 1 SLETT EOS. 100500 DISPLAY "Hej verden!" LINJE 15 POSITION 10. 100600 STOP KØR. 100700 MAIN-LOGIC-EXIT. 100800 EXIT. |
Kodelinjer: 5 (ekskl. tomme) |
Kodelinjer: 17 (ekskl. tomme) |
Relativt for nylig er et andet aspekt af dette problem dukket op - forskellen mellem programkoden skrevet i hånden og automatisk genereret. Moderne udviklingsværktøjer giver ret ofte mulighed for automatisk at generere store mængder kode med blot et par museklik . Den mest fremtrædende repræsentant for disse systemer er værktøjerne til visuel udvikling af en grafisk brugergrænseflade . Mængden af arbejde involveret i at oprette en sådan kode er på ingen måde sammenlignelig med mængden af arbejde, for eksempel at skrive en enhedsdriver . På den anden side kan det vise sig, at det kan være meget mere tidskrævende at skrive en specialiseret brugergrænsefladekomponent med kompleks adfærd i hånden end at skrive en simpel driver.
Størrelsen af kildekoderne til operativsystemer i Microsoft Windows NT -familien er ikke nøjagtigt kendte, men ifølge kilden [4] er de:
År | Version | Kodelinjer, mio |
---|---|---|
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 |
Størrelsen af Linux-kernens kildekoder kan sammen med enhedsdriverne, der er inkluderet der, beregnes nøjagtigt:
År | Version | Kodelinjer |
---|---|---|
1991 | Linux-kerne 0.1 | 10 239 |
1994 | Linux-kerne 1.0.0 | 176 250 |
1995 | Linux-kerne 1.2.0 | 310 950 |
1996 | Linux-kerne 2.0.0 | 777 956 |
1999 | Linux-kerne 2.2.0 | 1 800 847 |
2001 | Linux-kerne 2.4.0 | 3 377 902 |
2003 | Linux-kerne 2.6.0 | 5 929 913 |
2009 | Linux-kerne 2.6.32 | 12 606 910 [5] |
2012 | Linux 3.6 kerne | 15 868 036 [6] |
2017 | Linux-kerne 4.11.7 | 18 373 471 [7] |
Dimensioner på andre systemer:
År | Version | Kodelinjer |
---|---|---|
— | PostgreSQL | 775.000 |
— | 1C | 3.000.000 |
2008 | 1C-Bitrix | 762 854 |