MCP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ тЖТ

рдЧрдгрдирд╛ рджрд░реНрдЬ рдХрд░реЗрдВ

рд╕реВрддреНрд░ (рдлреЙрд░реНрдореВрд▓рд╛)

рд╡рд┐рдЬреНрдЮрд╛рдкрди

рдкрд░рд┐рдгрд╛рдо

рдмрдЧ рдбреЗрдВрд╕рд┐рдЯреА (рдкреНрд░рддрд┐ KLOC)
2.5
рдмрдЧ/KLOC
рдЯреЗрд╕реНрдЯ рдбреЗрдВрд╕рд┐рдЯреА (рдкреНрд░рддрд┐ LOC) 0.05 tests/LOC
рдЯреЗрд╕реНрдЯ рдбреЗрдВрд╕рд┐рдЯреА (рдкреНрд░рддрд┐ KLOC) 50 tests/KLOC
рдмрдЧ рдбреЗрдВрд╕рд┐рдЯреА (рдкреНрд░рддрд┐ LOC) 0.0025 bugs/LOC
рдмрдЧ рдбреЗрдВрд╕рд┐рдЯреА (рдкреНрд░рддрд┐ KLOC) 2.5 bugs/KLOC
рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝реНрдб рдХреЛрдб рд╕рд╛рдЗрдЬрд╝ 10,000 LOC

рдпрд╣ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ

рдпрд╣ рдЯреВрд▓ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рджреЛ рдХреНрд╡рд╛рд▓рд┐рдЯреА рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ: рдЯреЗрд╕реНрдЯ рдбреЗрдВрд╕рд┐рдЯреА (рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд┐рддрдиреЗ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рд╣реИрдВ) рдФрд░ рдмрдЧ рдбреЗрдВрд╕рд┐рдЯреА (рдХреЛрдбрдмреЗрд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд┐рддрдиреЗ рдбрд┐рдлреЗрдХреНрдЯ рдорд┐рд▓реЗ)ред рджреЛрдиреЛрдВ рдорд╛рди рдкреНрд░рддрд┐ LOC (Lines Of Code рдпрд╛рдиреА рдХреЛрдб рдХреА рд▓рд╛рдЗрдиреЗрдВ) рдФрд░ рдкреНрд░рддрд┐ KLOC (рд╣рдЬрд╝рд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ) рджрд┐рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдбрд╕реНрдЯреНрд░реА рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП KLOC рд╣реА рдорд╛рдирдХ рдЗрдХрд╛рдИ рд╣реИред рдпрд╣ рдПрдХ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдореЗрдЯреНрд░рд┐рдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рджреЗрд╢ рдпрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрд▓рдЧ рдирд┐рдпрдо рдирд╣реАрдВ рд╣реЛрддреЗред

рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреИрд╕реЗ рдХрд░реЗрдВ

рдЪрд▓рд╛рдП рдЧрдП рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛, рдорд┐рд▓реЗ рд╣реБрдП рдмрдЧ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЕрдкрдиреЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХрд╛ рдЖрдХрд╛рд░ рджрд░реНрдЬ рдХрд░реЗрдВред рдпрд╣ рдЪреБрдиреЗрдВ рдХрд┐ рдХреЛрдб рд╕рд╛рдЗрдЬрд╝ рдХрд╛ рдЖрдБрдХрдбрд╝рд╛ рд╕реАрдзреЗ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ (LOC) рд╣реИ рдпрд╛ рд╣рдЬрд╝рд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ (KLOC) тАФ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЧрдгрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдХрдЪреНрдЪреА LOC рдореЗрдВ рдмрджрд▓ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рд╕рд╛рд░реА рдбреЗрдВрд╕рд┐рдЯреА рдЕрдкрдиреЗ-рдЖрдк рдирд┐рдХрд▓ рдЖрддреА рд╣реИрдВред

рдлрд╝реЙрд░реНрдореВрд▓рд╛ рд╕рдордЭреЗрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рд╕рд╛рдЗрдЬрд╝ рдХреЛ рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: \( \text{locLines} = \text{loc} \times \text{factor} \), рдЬрд╣рд╛рдБ LOC рдХреЗ рд▓рд┐рдП factor 1 рдФрд░ KLOC рдХреЗ рд▓рд┐рдП 1000 рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░ рдкреНрд░рддрд┐ LOC рдЯреЗрд╕реНрдЯ рдбреЗрдВрд╕рд┐рдЯреА = рдЯреЗрд╕реНрдЯ рд╕рдВрдЦреНрдпрд╛ / locLines, рдФрд░ рдкреНрд░рддрд┐ LOC рдмрдЧ рдбреЗрдВрд╕рд┐рдЯреА = рдмрдЧ рд╕рдВрдЦреНрдпрд╛ / locLinesред рдкреНрд░рддрд┐ KLOC рд╡рд╛рд▓реЗ рдорд╛рди рдмрд╕ рдкреНрд░рддрд┐ LOC рд╡рд╛рд▓реЗ рдорд╛рди рдХреЛ 1000 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ рдорд┐рд▓рддреЗ рд╣реИрдВред рдЯреЗрд╕реНрдЯ рдФрд░ рдмрдЧ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рд╛рджреА рдкреВрд░реНрдгрд╛рдВрдХ рдЧрд┐рдирддреА рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрдиреНрд╣реЗрдВ рдХрднреА рд╕реНрдХреЗрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ред

$$\text{Test Density} = \frac{\text{Test Count}}{L} \times 1000, \qquad \text{Bug Density} = \frac{\text{Bug Count}}{L} \times 1000$$

рдЬрд╣рд╛рдБ \( L = \text{Source Lines of Code} \times 1\ (\text{LOC}) \) рдпрд╛ \( L = \text{Source Lines of Code} \times 1000\ (\text{KLOC}) \)ред

рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рднрд┐рдиреНрди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдЧ рдШрдирддреНрд╡ рдФрд░ рдЯреЗрд╕реНрдЯ рдШрдирддреНрд╡ рдХрд╛ рдЖрд░реЗрдЦ
рджреЛрдиреЛрдВ рдореЗрдЯреНрд░рд┐рдХ рдПрдХ рдЧрд┐рдирддреА (рдмрдЧ рдпрд╛ рдЯреЗрд╕реНрдЯ) рдХреЛ рдХреЛрдб рдЖрдХрд╛рд░ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддрд┐-KLOC рдореЗрдВ рдорд╛рдкрд╛ рдЧрдпрд╛ред

рд╣рд▓ рдХрд┐рдпрд╛ рд╣реБрдЖ рдЙрджрд╛рд╣рд░рдг

рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдкрдиреЗ 500 рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдП, 25 рдмрдЧ рдкрд╛рдП, рдФрд░ рдЖрдкрдХрд╛ рдХреЛрдбрдмреЗрд╕ 10 KLOC рдХрд╛ рд╣реИред рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝реНрдб рд╕рд╛рдЗрдЬрд╝ = \( 10 \times 1000 = 10{,}000 \) LOCред

$$\text{Test Density} = \frac{500}{10{,}000} = 0.05\ \text{рдЯреЗрд╕реНрдЯ/LOC} = 50\ \text{рдЯреЗрд╕реНрдЯ/KLOC}$$$$\text{Bug Density} = \frac{25}{10{,}000} = 0.0025\ \text{рдмрдЧ/LOC} = 2.5\ \text{рдмрдЧ/KLOC}$$

рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╡рд╛рд▓

рдкреНрд░рддрд┐ LOC рдФрд░ рдкреНрд░рддрд┐ KLOC рджреЛрдиреЛрдВ рдХреНрдпреЛрдВ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ? рдкреНрд░рддрд┐ LOC рдорд╛рди рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓, рдЗрд╕рд▓рд┐рдП рдЗрдВрдбрд╕реНрдЯреНрд░реА рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддрд┐ KLOC рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХ рд╣реА рд╣реЛрддреА рд╣реИ тАФ рдПрдХ рдмрд╕ рджреВрд╕рд░реЗ рдХрд╛ 1000 рдЧреБрдирд╛ рд╣реИред

рдирддреАрдЬрд╛ рдЦрд╛рд▓реА рдпрд╛ рдПрд░рд░ рдХреНрдпреЛрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ? рдЕрдЧрд░ LOC рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдбреЗрдВрд╕рд┐рдЯреА рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрддреА рд╣реИ (рд╢реВрдиреНрдп рд╕реЗ рднрд╛рдЧ), рдЗрд╕рд▓рд┐рдП рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЕрдирдВрдд рдорд╛рди рджрд┐рдЦрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрд░рд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдореИрдВ рдЗрди рдЖрдБрдХрдбрд╝реЛрдВ рдХреА рддреБрд▓рдирд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмреАрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ? рд╕рд┐рд░реНрдлрд╝ рддрднреА, рдЬрдм LOC рдЧрд┐рдирдиреЗ рдХреЗ рдирд┐рдпрдо рдПрдХ рдЬреИрд╕реЗ рд╣реЛрдВред рдпрд╣ рддрдп рдХрд░ рд▓реЗрдВ рдХрд┐ рдХрдореЗрдВрдЯ рд▓рд╛рдЗрдиреЗрдВ рдФрд░ рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдЧрд┐рдиреА рдЬрд╛рдПрдБрдЧреА рдпрд╛ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЪреБрдирд╛рд╡ рдбреЗрдВрд╕рд┐рдЯреА рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдХрд╛рдлрд╝реА рд╣рдж рддрдХ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

рдЕрдВрддрд┐рдо рдЕрдкрдбреЗрдЯ: