Počet řádků kódu

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 19. ledna 2020; kontroly vyžadují 2 úpravy .

Počet řádků kódu ( angl.  Source Lines of Code-SLOC ) je softwarová metrika používaná k měření jeho objemu počítáním počtu řádků v textu zdrojového kódu . Zpravidla [1] [2] se tento ukazatel používá k predikci mzdových nákladů na vývoj konkrétního programu v konkrétním programovacím jazyce nebo k posouzení produktivity práce po napsání programu.

Počítání počtu řádků kódu

Tradičně se má za to, že má smysl porovnávat velikosti projektů pouze do řádové velikosti . Mezi celou řadou metod pro výpočet této metriky většina zdrojů rozlišuje dvě hlavní: počítání fyzických a logických linií [3] .

Fyzické řádky jsou všechny neprázdné řádky textového souboru . Prázdné řádky se berou v úvahu, pokud v některém úseku jejich počet nepřesáhne 25 %. V opačném případě budou prázdné řádky, které překračují práh 25 %, ignorovány.

Měřením logických řádků kódu se pokusí spočítat počet skutečných příkazů v programu, ale jejich definice samozřejmě závisí na konkrétním programovacím jazyku. Například nejjednodušší způsob, jak spočítat počet logických řádků kódu v jazycích podobných C a Pascalu , je spočítat počet středníků , které ukončují příkazy.

Fyzické řádky kódu jsou intuitivnější a snadněji čitelné. Výsledky výpočtu však v podstatě závisí na pravidlech pro formátování a formátování zdrojového kódu, kterým logické řádky kódu podléhají v mnohem menší míře.

Zvažte následující příklad C:

for ( i = 0 ; i < 100 ; ++ i ) printf ( "ahoj" ); // Kolik je tam řádků kódu?

V tomto případě máme:

  • 1 fyzický řádek kódu
  • 2 logické řádky kódu ( pro příkaz smyčky a příkaz volání funkce printf )
  • 1 řádek komentáře

Pro jiného programátora může být stejný kus kódu napsán na několika řádcích:

pro ( i = 0 ; i < 100 ; ++ i ) { printf ( "ahoj" ); } // Kolik je tam řádků kódu?

V tomto příkladu budeme mít:

  • 5 fyzických řádků kódu
  • 2 logické řádky kódu
  • 1 řádek komentáře

Historie

Předpokládá se, že myšlenka použití řádků kódu jako metriky pro velikost počítačových programů pochází z 50. let 20. století , kdy byly nejčastěji používanými jazyky Fortran , Assembler a Cobol . Hlavním mechanismem pro zadávání programů do počítače byly děrné štítky a děrné pásky a na jedné kartě (jeden rámeček děrné pásky) byl zakódován jeden řádek kódu. Protože jsou objektem fyzického světa, bylo snadné je spočítat (děrné štítky / rámečky děrné pásky a následně řádky kódu). Balíček děrných štítků, který tvořil program, měl navíc velmi viditelný objem, podle kterého mohli manažeři posuzovat produktivitu programátorů .

Pomocí metriky

Výsledky založené na počtu řádků kódu jsou často nekonzistentní, zejména při nesprávném použití. Proto se použití této metriky v procesu hodnocení nákladů práce jeví jako oprávněné. Korelace s funkčností však již tak jednoznačná není. Zkušení programátoři mají tendenci psát méně kódu při dosažení stejného výsledku. A pokud lze rozdíl ve třídě vývojářů vyrovnat při hodnocení výkonu dostatečně velkého týmu, pak se použití této metriky pro hodnocení výkonu jednotlivce zdá neadekvátní.

Velikost stejného programu napsaného v různých programovacích jazycích se může výrazně lišit (viz KAELOC  - technika konverze řetězců ekvivalentní v assembleru ). Níže uvedený příklad porovnává program „Ahoj světe“ v jazyce C a Cobol (známý svou „upovídaností“)

C COBOL
#include <stdio.h> int main ( void ) { printf ( "Ahoj světe" ); návrat 0 ; } 000100 IDENTIFIKAČNÍ DIVIZE. 000200 ID PROGRAMU. AHOJ SVĚTE. 000300 000400* 000500 DIVIZE ŽIVOTNÍHO PROSTŘEDÍ. 000600 SEKCE KONFIGURACE. 000700 ZDROJ-POČÍTAČ. RM-COBOL. 000800 OBJEKTOVÝ POČÍTAČ. RM-COBOL. 000900 001000 DIVIZE DAT. 001100 SEKCE SOUBORU. 001200 DIVIZE 100000 POSTUPŮ. 100100 100200 HLAVNÍ LOGICKÁ SEKCE. 100300 ZAČÁTEK. 100400 DISPLEJ " " ŘÁDEK 1 POLOHA 1 VYMAZÁNÍ EOS. 100500 DISPLEJ "Ahoj světe!" POLOHA ŘÁDKU 15 10. 100600 STOP RUN. 100700 HLAVNÍ LOGICKÝ VÝSTUP. 100800 VÝSTUP.
Řádky kódu: 5
(kromě prázdných)
Řádky kódu: 17
(kromě prázdných)

Relativně nedávno se objevil další aspekt tohoto problému – rozdíl mezi programovým kódem psaným ručně a automaticky generovaným. Moderní vývojové nástroje často poskytují schopnost automaticky generovat velké množství kódu pomocí několika kliknutí myší . Nejvýraznějším představitelem těchto systémů jsou nástroje pro vizuální vývoj grafického uživatelského rozhraní . Množství práce spojené s vytvořením takového kódu není v žádném případě srovnatelné s množstvím práce, například psaním ovladače zařízení . Na druhou stranu se může ukázat, že ruční psaní specializované komponenty uživatelského rozhraní s komplexním chováním může být časově mnohem náročnější než psaní jednoduchého ovladače.

Příklady

Velikosti zdrojových kódů operačních systémů řady Microsoft Windows NT nejsou přesně známy, ale podle zdroje [4] se jedná o:

Rok Verze Řádky kódu, miliony
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

Velikosti zdrojových kódů jádra Linuxu spolu s ovladači zařízení, které jsou v nich obsaženy, lze přesně vypočítat:

Rok Verze Řádky kódu
1991 Linuxové jádro 0.1 10 239
1994 Linuxové jádro 1.0.0 176 250
1995 Linuxové jádro 1.2.0 310 950
1996 Linuxové jádro 2.0.0 777 956
1999 Linuxové jádro 2.2.0 1 800 847
2001 Linuxové jádro 2.4.0 3 377 902
2003 Linuxové jádro 2.6.0 5 929 913
2009 Linuxové jádro 2.6.32 12 606 910 [5]
2012 Linux 3.6 jádro 15 868 036 [6]
2017 Linuxové jádro 4.11.7 18 373 471 [7]

Rozměry ostatních systémů:

Rok Verze Řádky kódu
PostgreSQL 775 000
1C 3 000 000
2008 1C-Bitrix 762 854

Viz také

Poznámky

  1. Přehled modelu COCOMO . Získáno 8. června 2010. Archivováno z originálu 27. února 2010.
  2. Řádky kódu na wiki C2 . Získáno 8. června 2010. Archivováno z originálu 5. února 2010.
  3. Metriky kódu a jejich praktická implementace v Subversion a Clearcase. Část 1 - Metriky (nedostupný odkaz) . Získáno 19. února 2009. Archivováno z originálu 13. září 2011. 
  4. Počítání zdrojových řádků kódu (SLOC) . Získáno 21. února 2009. Archivováno z originálu 11. února 2009.
  5. Co je nového v Linuxu 2.6.32 (downlink) . Datum přístupu: 23. května 2011. Archivováno z originálu 19. prosince 2013. 
  6. Co je nového v Linuxu 3.6
  7. Řádky kódu verzí linuxového jádra . Získáno 29. června 2017. Archivováno z originálu 17. dubna 2017.