21.01.2015 Views

Team Se@Msi: Meranie v softvérovom inžinierstve. - FIIT STU ...

Team Se@Msi: Meranie v softvérovom inžinierstve. - FIIT STU ...

Team Se@Msi: Meranie v softvérovom inžinierstve. - FIIT STU ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Meranie</strong> v etape implementácie 113<br />

operandy patria premenné a konštanty. V praxi je niekedy rozlišovanie<br />

medzi operátormi a operandami netriviálne. Názov funkcie sa počíta<br />

medzi operandy tam, kde sa funkcia definuje, ale medzi operátory tam,<br />

kde sa volá. Ďalšie charakteristiky (napr. vetvenie v programe, obtiažnosť<br />

riešeného problému) sa neberú do úvahy.<br />

Počet rôznych operátorov označme n1 a počet rôznych operandov n2.<br />

Potom veľkosť programového slovníka (angl. vocabulary) n definujeme<br />

ako súčet rôznych operátorov a operandov, teda n = n1 + n2.<br />

Ďalší parameter, ktorý môžeme podľa Halsteada vypočítať, je dĺžka<br />

programu. Definujeme ju ako súčet počtu operátorov a operandov N = N1<br />

+ N2, kde N1 predstavuje celkový počet operátorov a N2 celkový počet<br />

operandov.<br />

Halstead považuje programovanie za nedeterministický proces, počas<br />

ktorého vyberáme operátory a operandy z vopred daného zoznamu.<br />

Predpokladáme, že všetky operátory vyberáme s rovnakou<br />

pravdepodobnosťou. Ďalej predpokladáme, že rozhodovanie<br />

programátora opisuje binárny rozhodovací strom a operátor sa vyberá<br />

pomocou upresňujúcich rozhodnutí. Pre výber n1 operátorov<br />

potrebujeme log2n1 takýchto rozhodnutí. Napr. výber jedného operátora<br />

zo štyroch realizujeme pomocou log24 = 2 odpovedí typu áno/nie.<br />

Ak sa v programe nachádza n1 operátorov, tak vykonáme celkovo<br />

n1log2n1 rozhodnutí. Analogická situácia nastáva pri výbere operandov.<br />

Hodnotu N´ = n1log2n1 + n2log2n2 označujeme ako odhad dĺžky<br />

programu.<br />

Zatiaľ čo dĺžka programu N je metrika, ktorú môžeme priamo zmerať<br />

z dokončeného programu, odhad dĺžky programu N’ je metrika, ktorú<br />

môžeme vypočítať z aktuálnych alebo odhadovaných hodnôt n1 a n2.<br />

Ďalšia metrika, ktorú navrhol Halstead, je objem programu.<br />

Zodpovedá celkovému počtu rozhodnutí, ktoré potrebujeme vykonať pri<br />

voľbe každého z operátorov a operandov, ktoré sme použili v programe.<br />

Rozhodnutie medzi dvomi možnosťami môžeme zakódovať pomocou<br />

jedného bitu. Počet bitov potrebných na rozlíšenie medzi n operátormi a<br />

operandmi je log2n. Objem programu V = Nlog2n predstavuje minimálny<br />

počet bitov, pomocou ktorých môžeme zakódovať sekvenciu N<br />

operátorov a operandov.<br />

Príklad [Churcher98]<br />

procedure BubbleSort(var a : IntArray; N : Positive);<br />

var j, t : integer;<br />

begin<br />

repeat<br />

t := a[1];<br />

for j := 2 to N do<br />

if a[j - 1] > a[j] then<br />

begin

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!