© 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 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 4 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 5 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 6 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 7 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 8 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 9 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 10 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