Koodirivien määrä ( eng. Source Lines of Code-SLOC ) on ohjelmistomittari , jolla mitataan sen volyymi laskemalla lähdekoodin tekstin rivien määrä . Pääsääntöisesti [1] [2] tätä indikaattoria käytetään ennustamaan työvoimakustannuksia tietyn ohjelman kehittämisessä tietyllä ohjelmointikielellä tai arvioimaan työn tuottavuutta ohjelman kirjoittamisen jälkeen.
Perinteisesti katsotaan, että projektien kokoa on järkevää verrata vain suuruusluokkaan asti . Tämän metriikan laskentamenetelmien joukosta useimmat lähteet erottavat kaksi päämenetelmää: fyysisten ja loogisten viivojen laskeminen [3] .
Fyysiset rivit ovat kaikki ei-tyhjiä tekstitiedoston rivejä . Tyhjät rivit huomioidaan, jos jossain osiossa niiden määrä ei ylitä 25 %. Muussa tapauksessa tyhjät rivit, jotka ylittävät 25 %:n kynnyksen, ohitetaan.
Koodin loogisia rivejä mittaamalla yritetään laskea ohjelman todellisten lauseiden määrä, mutta niiden määrittely riippuu tietysti tietystä ohjelmointikielestä. Esimerkiksi yksinkertaisin tapa laskea loogisten koodirivien määrä C- ja Pascal -kaltaisilla kielillä on laskea lausekkeita päättävien puolipisteiden määrä .
Fyysiset koodirivit ovat intuitiivisempia ja helpompia lukea. Laskennan tulokset ovat kuitenkin olennaisesti riippuvaisia lähdekoodin muotoilun ja muotoilun säännöistä , joihin loogiset koodirivit ovat paljon vähäisemmässä määrin alaisia.
Harkitse seuraavaa C-esimerkkiä:
for ( i = 0 ; i < 100 ; ++ i ) printf ( "hei" ); // Montako riviä koodia on?Tässä tapauksessa meillä on:
Toiselle ohjelmoijalle sama koodinpätkä voidaan kirjoittaa useille riveille:
for ( i = 0 ; i < 100 ; ++ i ) { printf ( "hei" ); } // Montako riviä koodia on?Tässä esimerkissä meillä on:
Uskotaan, että ajatus koodirivien käyttämisestä tietokoneohjelmien koon mittarina juontaa juurensa 1950 -luvulta , jolloin Fortran , Assembler ja Cobol olivat yleisimmin käytettyjä kieliä . Päämekanismi ohjelmien syöttämiseksi tietokoneeseen oli rei'ityskortit ja rei'iteippi , ja yhdelle kortille koodattiin yksi koodirivi (yksi rei'itysteippikehys). Fyysisen maailman kohteena ne (reikäkortit / rei'iteipin kehykset ja siten koodirivit) oli helppo laskea. Lisäksi ohjelman muodostaneessa reikäkorttipakkauksessa oli hyvin näkyvä volyymi, jonka perusteella johtajat saattoivat arvioida ohjelmoijien tuottavuutta .
Koodirivien määrään perustuvat tulokset ovat usein epäjohdonmukaisia, varsinkin jos niitä käytetään väärin. Siksi tämän mittarin käyttö työvoimakustannusten arvioinnissa vaikuttaa perustellulta. Korrelaatio toiminnallisuuden kanssa ei kuitenkaan ole enää niin selvä. Kokeneet ohjelmoijat kirjoittavat yleensä vähemmän koodia ja saavuttavat saman tuloksen. Ja jos kehittäjien luokan eroa voidaan tasoittaa arvioitaessa riittävän suuren tiimin suorituskykyä, niin tämän mittarin käyttö yksittäisen henkilön suorituskyvyn arvioinnissa näyttää riittämättömältä.
Saman eri ohjelmointikielillä kirjoitetun ohjelman koko voi vaihdella merkittävästi (katso KAELOC - assembler vastaava merkkijonomuunnostekniikka). Alla olevassa esimerkissä verrataan "Hello world" -ohjelmaa C - kielillä ja Cobolilla (tunnetaan "sanallisuudestaan")
C | COBOL |
---|---|
#include <stdio.h> int main ( void ) { printf ( "Hei maailma" ); paluu 0 ; } | 000100 TUNNISTUSJAKSO. 000200 OHJELMA-ID. HEI MAAILMA. 000300 000400* 000500 YMPÄRISTÖRYHMÄ. 000600 ASETUSOSA. 000700 LÄHDE-TIETOKONE. RM-COBOL. 000800 OBJEKTI-TIETOKONE. RM-COBOL. 000900 001000 TIETOJAKSO. 001100 TIEDOSTOOSIO. 001200 100 000 MENETTELYJAKO. 100100 100200 PÄÄLOGIIKKAOSA. 100300 ALOITUS. 100400 NÄYTTÖ " " RIVI 1 SIJO 1 POISTA EOS. 100500 NÄYTTÖ "Hei maailma!" RIVI 15 SIJAINTI 10. 100600 STOP RUN. 100700 MAIN-LOGIC-EXIT. 100800 POISTU. |
Koodirivejä: 5 (ei sisällä tyhjiä) |
Koodirivejä: 17 (ei sisällä tyhjiä) |
Suhteellisen äskettäin tästä ongelmasta on ilmaantunut toinen puoli - käsin kirjoitetun ja automaattisesti luodun ohjelmakoodin välinen ero. Nykyaikaiset kehitystyökalut tarjoavat melko usein mahdollisuuden luoda suuria määriä koodia automaattisesti muutamalla hiiren napsautuksella . Näistä järjestelmistä merkittävin edustaja ovat graafisen käyttöliittymän visuaalisen kehittämisen työkalut . Tällaisen koodin luomiseen liittyvä työmäärä ei ole millään tavalla verrattavissa työn määrään, esimerkiksi laiteohjaimen kirjoittamiseen . Toisaalta voi käydä ilmi, että monimutkaisesti käyttäytyvän erikoiskäyttöliittymäkomponentin kirjoittaminen käsin voi olla paljon aikaa vievämpää kuin yksinkertaisen ohjaimen kirjoittaminen .
Microsoft Windows NT -perheen käyttöjärjestelmien lähdekoodien koot eivät ole tarkasti tiedossa, mutta lähteen [4] mukaan ne ovat:
vuosi | Versio | Koodirivejä, miljoonia |
---|---|---|
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 |
Linux-ytimen lähdekoodien koot ja niihin sisältyvät laiteohjaimet voidaan laskea tarkasti:
vuosi | Versio | Koodirivit |
---|---|---|
1991 | Linux-ydin 0.1 | 10 239 |
1994 | Linux-ydin 1.0.0 | 176 250 |
1995 | Linux-ydin 1.2.0 | 310 950 |
1996 | Linux-ydin 2.0.0 | 777 956 |
1999 | Linux-ydin 2.2.0 | 1 800 847 |
2001 | Linux-ydin 2.4.0 | 3 377 902 |
2003 | Linux-ydin 2.6.0 | 5 929 913 |
2009 | Linux-ydin 2.6.32 | 12 606 910 [5] |
2012 | Linux 3.6 ydin | 15 868 036 [6] |
2017 | Linux-ydin 4.11.7 | 18 373 471 [7] |
Muiden järjestelmien mitat:
vuosi | Versio | Koodirivit |
---|---|---|
— | PostgreSQL | 775 000 |
— | 1C | 3 000 000 |
2008 | 1C-Bitrix | 762 854 |