© Jiří Sochor, Jaroslav Ráček 1 Softwarová fyzika © Jiří Sochor, Jaroslav Ráček 2 Práce a délka programu 10 100 1000 10000 100000 1000000 1 10 100 1000 10000 log T [MM] log N [SLOC] N - délka programu (počet řádek, SLOC) T - spotřeba práce (člověkoměsíce, MM) P - produktivita P=N/T D - doba realizace programu S - průměrný počet řešitelů empirie © Jiří Sochor, Jaroslav Ráček 3 Práce na vytvoření programu log T = a + b log N Odhad práce: a,b - vhodné konstanty regresní analýza => b ≥ 9/8 T = c Nb Práce (pracnost) potřebná na vytvoření programu roste exponenciálně v závislosti na rozsahu (délce) programu. © Jiří Sochor, Jaroslav Ráček 4 Produktivita 6 7 8 9 10 11 12 8 9 10 log P [řádky/rok] log N S rostoucí délkou programu klesá produktivita programátorů. © Jiří Sochor, Jaroslav Ráček 5 Putnamova rovnice log P = a log (T/D2) + b P = d (T/D2)-2/3 = d T-2/3 D4/3 N = c T1/3 D4/3 a, b - vhodné konstanty, z empirie => a ≅ -2/3 Délka programu, práce, doba řešení © Jiří Sochor, Jaroslav Ráček 6 Důsledky Putnamovy rovnice Projekt A: NA, TA, DA Projekt B: NB, TB, DB Pro řešení programu zvažujeme 2 projekty: DA < DB ; např. DB = 1.2 DA => (empirie) NA > NB Programy psané ve spěchu jsou delší. tedy NA / NB > 1 NA / NB ≅ (TA / TB)1/3 . (DA / DB)4/3 > 1 odtud TA > TB . (DA / DB)4 Pro náš případ TA > TB . 2,07 . Při zkrácení termínu na 83% je pracnost je dvojnásobná. © Jiří Sochor, Jaroslav Ráček 7 Důsledky Putnamovy rovnice 500 1000 2000 3000 60 48 36 24 12 T [člověkoměsíc] nedosažitelná oblast D [měsíc] © Jiří Sochor, Jaroslav Ráček 8 Pracnost a doba řešení A N B CT D A - nedosažitelná oblast N - napjaté termíny B - oblast stability C - doba řešení je zbytečně dlouhá © Jiří Sochor, Jaroslav Ráček 9 Pracnost a využití HW stupeň využití T D 50% 1.00 1.00 60% 1.08 1.00 70% 1.21 1.00 80% 1.4 1.05 90% 2.25 1.18 25 50 75 100 % 1 2 3 4 relativní náklady využití © Jiří Sochor, Jaroslav Ráček 10 Rozložení řešitelské kapacity v čase ∫ ∞ = 0 )( dttsT 0 2 2 0 )( t t e t t Tts − = Model rozložení aproximován pomocí vlny s(t) (Rayleigh) t0 s t Celková spotřeba práce T: s(t) - počet řešitelů v čase t © Jiří Sochor, Jaroslav Ráček 11 Rozložení řešitelské kapacity v čase 2 0 2 0 2)/ln()/)(ln( BtAtttTtts +=−= Průběžné odhady A,B: Známe t, s(t) → ln(s(t)/t), t2 → A, B. s t © Jiří Sochor, Jaroslav Ráček 12 Rozložení řešitelské kapacity v čase ln(s(t)/t) t2 0 -0.5 -1 -2 -3 -4 36 144 324 Vrchol: ∫ ≈ 0 0 4.0)( t Tdtts Vrchol počtu pracovníků ≈ 40% prací dokončeno ln(T/t0) směrnice -1/2t0