SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Līva Šteinberga
2012. gada 29. oktobrī
Lekcija LU Datorikas fakultātes kursa
“Kvalifikācijas darbs I” ietvaros
Šis darbs izstrādāts ar Eiropas Sociālā fonda atbalstu projektā
«Atbalsts doktora studijām Latvijas Universitātē».
Kvalifikācijas darbam jāsatur paskaidrojošs
teksts, kurā atspoguļota konkrētā
programmatūras projekta organizācija,
kvalitātes nodrošināšana, konfigurāciju
pārvaldība un dots darbietilpības novērtējums
saskaņā ar izplatītām metodēm.
Kvalifikācijas darba ietvaros izstrādātā
programmatūras produkta apjomam jāatbilst
vismaz 3 personmēnešu darbietilpībai.
}  Kas ir darbietilpība?
}  Kāpēc tā jāprognozē?
}  Kādas prognozēšanas metodes eksistē?
}  Piemēri
}  Darbietilpības novērtēšana ir process, kurā
prognozē programmatūras produkta izstrādei
nepieciešamo darba apjomu.
}  Novērtējumi ir vajadzīgi visā izstrādes laikā
◦  Pirms projekta uzsākšanas, lai izvērtētu vai iecere ir
realizējama, piedalītos piedāvājumu konkursos un plānotu
budžetu
◦  Periodiski pārvērtējumi vajadzīgi, lai nepieciešamības
gadījumā projekta realizācijas laikā pārdalītu resursus
Piegādāt:
}  Vajadzīgo
funkcionalitāti
}  Norunātajā laikā
}  Par norunāto cenu
}  Prasītajā kvalitātē
Posmi:
•  Nospraust mērķus
•  Censties sasniegt
mērķus
Ko darīt, ja mērķi nav sasniedzami?
}  Programmatūra nav taustāma
}  Programmatūru izstrādā cilvēki
}  Programmatūras izstrāde ir radošs process
nevis tikai mehāniska darbība
}  Katrs projekts ir unikāls
}  Tehnoloģijas strauji mainās
}  Maz informācijas par līdzīgu projektu
pieredzi
}  Parkinsona likums: “Lai cik maz darba būtu, tas
aizņems visu tam atvēlēto laiku.”
Work expands to fill the time available [Parkinson]
}  Brūka likums: “Ja aizkavēta darba izpildē piesaista
vairāk (papildus) cilvēku, tad darbs aizkavēsies vēl
ilgāk.”
Putting more people on a late job makes it later. [Brook]
}  “Price to win”: Pietiekami zema cena, lai uzvarētu
piedāvājumu konkursā
Price to win : figure sufficiently low to win contract
Darbietilpības novērtējumi bieži ir neprecīzi vai
nemaz netiek veikti.
Statistikas dati:
}  Vidēji projektiem paredzētais budžets tika
pārtērēts par 90%, bet paredzētais laiks par
120% [Standish Group pētījums par 8380
projektiem 1994. gadā]
}  International Software Benchmarking Standards
Group repozitorijos glabāto vairāk kā 400 projektu
datu analīzes rezultāti 2005. gadā:
◦  Darbietilpība precīzi aprēķināta ~25% no visiem
projektiem. Vidēji reālā darbietilpība bijusi 2 reizes lielāka
par sākotnēji prognozēto.
◦  Apmēram 60% projektu darbietilpība novērtēta vismaz
par 10% mazāka nekā reālā darbietilpība.
◦  Novērotas nopietnas kļūdas, piemēram, reālā
darbietilpība bijusi 20 reizes lielāka par prognozēto.
Paredzot nākotni ir daudz nezināmā
◦  Prasības – ir neprecīzas un mainīgas
◦  Projektējums – var tikt mainīts laika gaitā
◦  Izstrāde – atkarība no programmēšanas valodas un
izstrādes vides
◦  Testēšana – nepieciešamais apjoms dažādām sistēmām
var būtiski atšķirties (piem., dzīvībai kritiskas sistēmas,
elementāras spēles)
◦  Ieviešana – dažādi lietotāja akcepta kritēriji
◦  Personāls – pieredze un kompetence
◦  Tehnoloģijas – viena vai vairākas platformas u.c.
Lai uzlabotu novērtējumu precizitāti,
vajadzīga sistēmātiska pieeja darbietilpības
prognozēšanas procesam!
}  Bottom-up (Dekompozīcija)
◦  Darbu sadala nelielās aktivitātēs (uzdevumos)
◦  Veic darbietilpības novērtējumu katrai aktivitātei
◦  Sasummē iegūtos novērtējumus
◦  Lieto, kad nav pieejami dati par agrāk izstrādātiem
projektiem
}  Top-down
◦  Novērtē visu produkta izstrādei nepieciešamo darbu
◦  Zemāka līmeņa uzdevumu veikšanai nepieciešamo darbu
aprēķina kā daļu no kopējās darbietilpības
1. Jāaprēķina produktivitāte jeb darba ražīgums
(darbiniekam vai komandai)
2. Ja zināms programmatūras apjoms/ izmērs
un darbinieku produktivitāte, var izrēķināt cik
darba cilvēk-stundu / dienu / mēnešu vajadzēs,
lai darbu paveiktu jeb kāda ir projekta
darbietilpība.
Iedomāto produktivitāti aprēķina pēc
vienādojuma
izmantojot datus par līdzīgiem agrāk
izstrādātiem projektiem savā uzņēmumā vai
citos uzņēmumos (benchmark productivity data)
Biežāk lietotās mērvienības programmatūras
apjoma / izmēra noteikšanai:
}  pirmkoda rindiņu skaits (LOC jeb SLOC)
source lines of code
}  funkcijpunkti
function points
Raksturojums
}  Tradicionāla metode programmatūras fiziskā
izmēra / apjoma prognozēšanai
}  Apraksta programmatūras apjomu no
programmētāja skatu punkta
}  Koda kvalitāte netiek ņemta vērā
}  Tiek lietots daudzās darbietilpības novērtēšanas
metodēs
}  Priekšrocības
◦  Vienkārši un automātiski mērāms lielums
◦  Tieša saistība ar gala produktu
◦  Tieša saistība ar programmēšanai patērēto laiku
}  Trūkumi
◦  Vāji definēts mērs (Piemēram, vai jāskaita arī komentāru
rindas?)
◦  Atkarīgs no programmēšanas valodas
◦  Atkarīgs no izstrādātāja prasmēm
◦  Nav zināms plānošanas fāzē
Nav ieteicams lietot darbietilpības
noteikšanai
“Measuring programming progress by
lines of code is like measuring aircraft
building progress by weight” [Bill Gates]
Raksturojums
}  Apraksta programmatūras nodrošinātās
funkcionalitātes apjomu
}  Aprēķināms pēc programmatūras prasību
specifikācijā iekļautajām prasībām
}  Apraksta programmatūras apjomu no lietotāja
skatu punkta
}  Neatkarīgi no programmēšanas valodas
}  Skaita plānotās sistēmas atribūtus, piem.,
lietojot IFPUG metodi jāskaita:
◦  Ievadi
◦  Izvadi
◦  Vaicājumi
◦  Izmantotie “iekšējie” jeb “loģikas” faili
◦  Ārējo saskarņu faili
Nepieciešamo darba apjomu var ietekmēt
dažādi izmaksu faktori:
}  cilvēku skaits komandā
}  programmēšanas valoda
}  organizācijas tips
}  uzņēmējdarbības sfēra
}  lietotnes tips
}  izstrādes platforma u.c.
}  Algoritmiski modeļi
◦  Aprēķinos izmanto formulas
◦  Izmanto citu līdzīgu un pabeigtu projektu datus
◦  COSMIC, IFPUG, MARK II, NESMA, FISMA, COCOMO,
COCOMO II
}  Ekspertu vērtējums
◦  DELPHI, PERT, Plānošanas pokers, Vienas personas
vērtējums
}  Analoģiju bāzēti vērtējumi
◦  Vērtējumus veic balstoties uz ļoti līdzīgu projektu datiem
Algoritmiski modeļi Ekspertu vērtējumi Analoģiju bāzēti
vērtējumi
Pieeja Būvē statistisku modeli Atkarība no
ekspertu viedokļa
Mēra līdzības un
pielāgo
Vajadzība pēc
datiem
Ir Nav Ir
Priekšrocības Objektīvi, atkārtojami,
analizējamas formulas
Relatīvi lēti

Precīzi, ja
ekspertiem ir
pieredze ar
līdzīgiem
projektiem
Bāzēta uz reālu
projektu pieredzi
Trūkumi Nepiemērota
speciālgadījumiem

Kalibrēta uz pagātnes
datiem nevis nākotnes
datiem
Rezultāti stipri
akgarīgi no
vērtētājiem
Nepieciešama
detalizēta
informācija par
daudziem
projektiem
}  Atbilst starptautiski atzītam standartam
ISO/IEC 19761: 2003
}  1999. gadā to publicēja Common Software
Measurement International Consortium
(COSMIC), pēdējā versija 3.0.1 publicēta 2009.
gadā
Derīga, lai prognozētu funkcionālos izmērus:
}  Darījumlietotnēm (bussiness applications)
(piem., banku sistēmas, internetveikali)
}  Reāla-laika programmatūrai (real-time
software) (piem., automašīnas motora
vadības sistēma, telekomunikāciju sistēmas)
}  Hibrīdām lietotnēm (piemēram, reāla-laika
lidmašīnas biļešu rezervācijas sistēmai)
Nederīga:
}  Programmatūrai, kas ietver sarežģītas
loģiskās izteiksmes,sarežģītu matemātiskus
aprēķinu veikšanu, attēlu un skaņas apstrādi
utml. (piem., ekspertu sistēmas, simulāciju
programmatūru, laika prognožu sistēmas,
datorspēles)
[Cigdem Gencel, 2010]
}  1 CFP (COSMIC funkcijpunkts) ir definēts kā
viena datu plūsma
}  Katra datu plūsmas instance (Ievads, Izvads,
Lasīšana, Rakstīšana), kad dati tiek pievienoti,
mainīti vai izdzēsti ir 1 CFP izmērā
}  Lietotājs - jebkas, kas darbojas ar ar mērāmo
programmatūru
}  Funkcionālais lietotājs - lietotāja tips, kas
funkcionālajās lietotāja prasībās, var sūtīt un var
saņemt datus no programmatūras
◦  Darījumlietotnēs – cilvēki un citas lietotnes, ar kurām tās
sadarbojas
◦  Reāla laika lietotnēs – ierīces vai cita programmatūra
}  Funkcionālās lietotāju prasības sastāv no
funkcionāliem procesiem
}  Funkcionālais process tiek izsaukts, kad
programmatūras lietotājs atpazīst notikumu
(trigeri) un sūta ziņu, lai sāktu procesu
}  Process ir pabeigts, kad programmatūra ir
paveikusi visu kas prasīts
Trigeri un tiem atbilstošie funkcionālie procesi
}  Darījumlietotnēs:
◦  Ir saņemts pasūtījums – Ievadīt pasūtījumu sistēmā
◦  Darbinieks ir apprēcējies – Atjaunināt viņa personas
datus
◦  Ir mēneša beigas – Aprēķināt algas
}  Reāla laika lietotnēs
◦  Pilota komanda – Pievilkt lidmašīnas ratus un
pacelties gaisā
◦  Ziņa par sastādītu telefona numuru – Izveidot
savienojumu
}  4 tipu datu plūsmu tipi:
◦  Ievads (Entry) – kontroles vai biznesa informācija, kas nāk no
lietotāja un šķērso lietotnes robežu (lietotāja ievaddati,
sensoru informācija)
◦  Izvads (Exit) – apstrādāti dati, kas tiek virzīti ārā no lietotnes
(grafiki, atskaites) lietotājam, kas tos pieprasījis
◦  Lasīšana (Read) – pārvieto datus no atmiņas procesam, kas
tos pieprasījis
◦  Rakstīšana (Write) – pārvieto datus no procesa uz atmiņu
[Cigdem Gencel, 2010]
Izmērs CFP (funkcionālais processi) =
Σ izmērs(Ievadsi) + Σ izmērs(Izvadsi) + Σ size
(Lasīšanai) + Σ size(Rakstīšanai)
}  Pasūtījumu apstrādes lietotne glabā datus par
klientiem – klienta ID, vārds, uzvārds, adrese,
telefona numurs, kredīta limits, klienta tipa kods
}  Ar klientu informāciju darbojas pasūtījumu
apstrādes operatori
}  Process “Jauna klienta izveide sistēmā” ietver
◦  1 Ievads (saistīts ar klienta objektu)
◦  1 Rakstīšana (saistīts ar klienta objektu)
◦  1 Izvads (apstiprinājums vai kļūdas paziņojums)
}  Procesa izmērs: 3 CFP (COSMIC Function Point)
Functional
Process
User Exch.
rate
Financia
l trans.
User
prof.
Sys.
config.
Entry Exit Read Write CFP
Login
validation
R 1 1 1 0 3
User
profile
loading
R 1 1 1 0 3
Exchange
rates
loading
R/W 1 1 1 1 4
Buying or
Selling
currencies
R/W R R 1 1 3 1 6
Detailed
exchange
rate
information
loading
R 1 1 1 0 3
……….. ……
TOTAL 37
}  The International Software Benchmarking
Standards Group uztur divus repozitorijus ar
vēsturiskiem projektu datiem
}  Pašlaik pieejama informācija par ~5600
projektiem
}  Projektu dati pieejami par maksu
CFP Planning (h) Analysis (h) Building (h) Testing (h) Deploying (h)
44 9 7 88 50 52
CFP Planning (h) Analysis (h) Building (h) Testing (h) Deploying(h)
37 7 6 74 42 44
Benchmarking jeb industrijas dati par projektu ar
līdzīgu CFP skaitu:
Aprēķina darbietilpību savam projektam:
Tālāk, ņemot vērā projekta unikālitāti un “izmaksu
faktorus”, precizē darbietilpību. Piemēram, par 20%
palielina izstrādes (building) darbu, jo darbinieki ir
iesācēji darbā ar konkrēto programmēšanas valodu.
}  The COSMIC Functional Size Measurement
Method Version 3.0.1 Measurement Manual
(The COSMIC Implementation Guide for ISO/
IEC 19761: 2003), May 2009
VAI
}  The COSMIC Functional Size Measurement
Method Version 3.0 Method Overview,
September 2007
}  Spēja (agile) pieeja darbietilpības plānošanai
}  Darbietilpības novērtējuma mērvienība –
sarežģītības punkts
}  Izmanto kārtis uz kurām rakstīts punktu
skaits
}  Biežāk lietotās skalas:
◦  Fibonači skaitļi - 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
◦  0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100
}  Komandas biedri sapulcējas un balso par
katras funkcionālās prasības izteiktas
lietotāju stāsta (user story) formā relatīvo
sarežģītības pakāpi, izmantojot kārtis
}  Katrs balso individuāli (izvēlas kārti), bet
visi balso vienlaicīgi (atklāj kārti). Ja
vērtējumi atšķiras, tad diskutē un vienojas
vai pārbalso
Ātrums	
  (velocity)	
  =	
  vienā	
  iterācijā	
  realizēto	
  punktu	
  skaits	
  	
  
Darbietilpība	
  lietotāju	
  stāstam	
  =	
  vidējā	
  sarežgītības	
  punkta	
  
darbietilpība	
  *	
  punktu	
  skaits	
  
Paldies par uzmanību!
[Cigdem Gencel, 2010]
Darbietilpiibas prognozeeshana   liva steinberga - 29 10 2012

Mais conteúdo relacionado

Mais procurados

Staff training & certification
Staff training & certificationStaff training & certification
Staff training & certificationJulia Carolina
 
Software cost estimation
Software cost estimationSoftware cost estimation
Software cost estimationdjview
 
Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)MuhammadTalha436
 
Introduction to Ostinato , network packet crafting and generator.
Introduction to Ostinato, network packet crafting and generator.Introduction to Ostinato, network packet crafting and generator.
Introduction to Ostinato , network packet crafting and generator.Kentaro Ebisawa
 
15CS664- Python Application Programming VTU syllabus
15CS664- Python Application Programming  VTU syllabus15CS664- Python Application Programming  VTU syllabus
15CS664- Python Application Programming VTU syllabusSyed Mustafa
 
Software Quality assurance.pptx
Software Quality assurance.pptxSoftware Quality assurance.pptx
Software Quality assurance.pptxKarthigaiSelviS3
 
Steps for c program execution
Steps for c program executionSteps for c program execution
Steps for c program executionRumman Ansari
 
Cost of software quality ( software quality assurance )
Cost of software quality ( software quality assurance )Cost of software quality ( software quality assurance )
Cost of software quality ( software quality assurance )Kiran Hanjar
 
Ch24-Software Engineering 9
Ch24-Software Engineering 9Ch24-Software Engineering 9
Ch24-Software Engineering 9Ian Sommerville
 
Quality management in software engineering
Quality management in software engineeringQuality management in software engineering
Quality management in software engineeringZain ul Abideen
 
9. Software Implementation
9. Software Implementation9. Software Implementation
9. Software Implementationghayour abbas
 
Advanced procedures in assembly language Full chapter ppt
Advanced procedures in assembly language Full chapter pptAdvanced procedures in assembly language Full chapter ppt
Advanced procedures in assembly language Full chapter pptMuhammad Sikandar Mustafa
 
Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assuranceEr. Nancy
 
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudyスローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudyYusuke Yamamoto
 

Mais procurados (20)

Arduino程式除錯
Arduino程式除錯Arduino程式除錯
Arduino程式除錯
 
Staff training & certification
Staff training & certificationStaff training & certification
Staff training & certification
 
Software cost estimation
Software cost estimationSoftware cost estimation
Software cost estimation
 
Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)Software Engineering (Short & Long Questions)
Software Engineering (Short & Long Questions)
 
Introduction to Ostinato , network packet crafting and generator.
Introduction to Ostinato, network packet crafting and generator.Introduction to Ostinato, network packet crafting and generator.
Introduction to Ostinato , network packet crafting and generator.
 
Ch 5 contract review
Ch 5 contract reviewCh 5 contract review
Ch 5 contract review
 
15CS664- Python Application Programming VTU syllabus
15CS664- Python Application Programming  VTU syllabus15CS664- Python Application Programming  VTU syllabus
15CS664- Python Application Programming VTU syllabus
 
Loaders
LoadersLoaders
Loaders
 
DSA
DSADSA
DSA
 
Software Quality assurance.pptx
Software Quality assurance.pptxSoftware Quality assurance.pptx
Software Quality assurance.pptx
 
Steps for c program execution
Steps for c program executionSteps for c program execution
Steps for c program execution
 
Cost of software quality ( software quality assurance )
Cost of software quality ( software quality assurance )Cost of software quality ( software quality assurance )
Cost of software quality ( software quality assurance )
 
Ch24-Software Engineering 9
Ch24-Software Engineering 9Ch24-Software Engineering 9
Ch24-Software Engineering 9
 
Quality management in software engineering
Quality management in software engineeringQuality management in software engineering
Quality management in software engineering
 
System software-loaders
System software-loadersSystem software-loaders
System software-loaders
 
9. Software Implementation
9. Software Implementation9. Software Implementation
9. Software Implementation
 
Advanced procedures in assembly language Full chapter ppt
Advanced procedures in assembly language Full chapter pptAdvanced procedures in assembly language Full chapter ppt
Advanced procedures in assembly language Full chapter ppt
 
Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
Software quality assurance
Software quality assuranceSoftware quality assurance
Software quality assurance
 
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudyスローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
 

Semelhante a Darbietilpiibas prognozeeshana liva steinberga - 29 10 2012

Kvalitāte kā pakalpojums
Kvalitāte kā pakalpojumsKvalitāte kā pakalpojums
Kvalitāte kā pakalpojumsebuc
 
Klasiskā un iteratīvā projektu vadīšanas metode - atšķirības un kopīgais
Klasiskā un iteratīvā projektu vadīšanas metode - atšķirības un kopīgaisKlasiskā un iteratīvā projektu vadīšanas metode - atšķirības un kopīgais
Klasiskā un iteratīvā projektu vadīšanas metode - atšķirības un kopīgaisWhiteflo
 
CaaS Industry Day 2016
CaaS Industry Day 2016CaaS Industry Day 2016
CaaS Industry Day 2016Jānis Grabis
 
CaaS Industry Day 2016
CaaS Industry Day 2016CaaS Industry Day 2016
CaaS Industry Day 2016Jānis Grabis
 
Agile lu-01.03.2011 linda-vituma-public
Agile lu-01.03.2011 linda-vituma-publicAgile lu-01.03.2011 linda-vituma-public
Agile lu-01.03.2011 linda-vituma-publicLinda Vituma
 
Smart engineering presentation introduction_lv_xov
Smart engineering presentation introduction_lv_xovSmart engineering presentation introduction_lv_xov
Smart engineering presentation introduction_lv_xovDmitry Ivanov
 
Scrum
ScrumScrum
Scrumebuc
 
Scrum. Gunta Strode
Scrum. Gunta StrodeScrum. Gunta Strode
Scrum. Gunta Strodeebuc
 
Atbalsts procesu digitalizācijai un to pilnveidošanai
Atbalsts procesu digitalizācijai un to pilnveidošanaiAtbalsts procesu digitalizācijai un to pilnveidošanai
Atbalsts procesu digitalizācijai un to pilnveidošanaiEkonomikas ministrija
 
Būvkonstrukciju projektētāju eksaminācija Anglijā
Būvkonstrukciju projektētāju eksaminācija AnglijāBūvkonstrukciju projektētāju eksaminācija Anglijā
Būvkonstrukciju projektētāju eksaminācija AnglijāJuris Orlovs
 
Par KleinTech Services
Par KleinTech ServicesPar KleinTech Services
Par KleinTech Serviceskleintech
 
RTU maģistra profesionālo studiju programma "Informācijas tehnoloģija"
RTU maģistra profesionālo studiju programma "Informācijas tehnoloģija"RTU maģistra profesionālo studiju programma "Informācijas tehnoloģija"
RTU maģistra profesionālo studiju programma "Informācijas tehnoloģija"Jānis Grabis
 

Semelhante a Darbietilpiibas prognozeeshana liva steinberga - 29 10 2012 (20)

Kvalitāte kā pakalpojums
Kvalitāte kā pakalpojumsKvalitāte kā pakalpojums
Kvalitāte kā pakalpojums
 
LDP lecture 1
LDP lecture 1LDP lecture 1
LDP lecture 1
 
Programmatūras testēšanas pamati
Programmatūras testēšanas pamatiProgrammatūras testēšanas pamati
Programmatūras testēšanas pamati
 
Klasiskā un iteratīvā projektu vadīšanas metode - atšķirības un kopīgais
Klasiskā un iteratīvā projektu vadīšanas metode - atšķirības un kopīgaisKlasiskā un iteratīvā projektu vadīšanas metode - atšķirības un kopīgais
Klasiskā un iteratīvā projektu vadīšanas metode - atšķirības un kopīgais
 
Projektu vadība
Projektu vadībaProjektu vadība
Projektu vadība
 
CaaS Industry Day 2016
CaaS Industry Day 2016CaaS Industry Day 2016
CaaS Industry Day 2016
 
CaaS Industry Day 2016
CaaS Industry Day 2016CaaS Industry Day 2016
CaaS Industry Day 2016
 
Agile lu-01.03.2011 linda-vituma-public
Agile lu-01.03.2011 linda-vituma-publicAgile lu-01.03.2011 linda-vituma-public
Agile lu-01.03.2011 linda-vituma-public
 
LDP lecture 2
LDP lecture 2LDP lecture 2
LDP lecture 2
 
Smart engineering presentation introduction_lv_xov
Smart engineering presentation introduction_lv_xovSmart engineering presentation introduction_lv_xov
Smart engineering presentation introduction_lv_xov
 
Scrum
ScrumScrum
Scrum
 
Scrum. Gunta Strode
Scrum. Gunta StrodeScrum. Gunta Strode
Scrum. Gunta Strode
 
Atbalsts procesu digitalizācijai un to pilnveidošanai
Atbalsts procesu digitalizācijai un to pilnveidošanaiAtbalsts procesu digitalizācijai un to pilnveidošanai
Atbalsts procesu digitalizācijai un to pilnveidošanai
 
Tapis.likta.fin
Tapis.likta.finTapis.likta.fin
Tapis.likta.fin
 
Būvkonstrukciju projektētāju eksaminācija Anglijā
Būvkonstrukciju projektētāju eksaminācija AnglijāBūvkonstrukciju projektētāju eksaminācija Anglijā
Būvkonstrukciju projektētāju eksaminācija Anglijā
 
LDP lecture 3
LDP lecture 3LDP lecture 3
LDP lecture 3
 
Par KleinTech Services
Par KleinTech ServicesPar KleinTech Services
Par KleinTech Services
 
Universālas metodes twitter datu analīzei
Universālas metodes twitter datu analīzeiUniversālas metodes twitter datu analīzei
Universālas metodes twitter datu analīzei
 
LDP lecture 4
LDP lecture 4LDP lecture 4
LDP lecture 4
 
RTU maģistra profesionālo studiju programma "Informācijas tehnoloģija"
RTU maģistra profesionālo studiju programma "Informācijas tehnoloģija"RTU maģistra profesionālo studiju programma "Informācijas tehnoloģija"
RTU maģistra profesionālo studiju programma "Informācijas tehnoloģija"
 

Darbietilpiibas prognozeeshana liva steinberga - 29 10 2012

  • 1. Līva Šteinberga 2012. gada 29. oktobrī Lekcija LU Datorikas fakultātes kursa “Kvalifikācijas darbs I” ietvaros Šis darbs izstrādāts ar Eiropas Sociālā fonda atbalstu projektā «Atbalsts doktora studijām Latvijas Universitātē».
  • 2. Kvalifikācijas darbam jāsatur paskaidrojošs teksts, kurā atspoguļota konkrētā programmatūras projekta organizācija, kvalitātes nodrošināšana, konfigurāciju pārvaldība un dots darbietilpības novērtējums saskaņā ar izplatītām metodēm.
  • 3. Kvalifikācijas darba ietvaros izstrādātā programmatūras produkta apjomam jāatbilst vismaz 3 personmēnešu darbietilpībai.
  • 4. }  Kas ir darbietilpība? }  Kāpēc tā jāprognozē? }  Kādas prognozēšanas metodes eksistē? }  Piemēri
  • 5.
  • 6. }  Darbietilpības novērtēšana ir process, kurā prognozē programmatūras produkta izstrādei nepieciešamo darba apjomu. }  Novērtējumi ir vajadzīgi visā izstrādes laikā ◦  Pirms projekta uzsākšanas, lai izvērtētu vai iecere ir realizējama, piedalītos piedāvājumu konkursos un plānotu budžetu ◦  Periodiski pārvērtējumi vajadzīgi, lai nepieciešamības gadījumā projekta realizācijas laikā pārdalītu resursus
  • 7. Piegādāt: }  Vajadzīgo funkcionalitāti }  Norunātajā laikā }  Par norunāto cenu }  Prasītajā kvalitātē Posmi: •  Nospraust mērķus •  Censties sasniegt mērķus Ko darīt, ja mērķi nav sasniedzami?
  • 8. }  Programmatūra nav taustāma }  Programmatūru izstrādā cilvēki }  Programmatūras izstrāde ir radošs process nevis tikai mehāniska darbība }  Katrs projekts ir unikāls }  Tehnoloģijas strauji mainās }  Maz informācijas par līdzīgu projektu pieredzi
  • 9. }  Parkinsona likums: “Lai cik maz darba būtu, tas aizņems visu tam atvēlēto laiku.” Work expands to fill the time available [Parkinson] }  Brūka likums: “Ja aizkavēta darba izpildē piesaista vairāk (papildus) cilvēku, tad darbs aizkavēsies vēl ilgāk.” Putting more people on a late job makes it later. [Brook] }  “Price to win”: Pietiekami zema cena, lai uzvarētu piedāvājumu konkursā Price to win : figure sufficiently low to win contract
  • 10. Darbietilpības novērtējumi bieži ir neprecīzi vai nemaz netiek veikti. Statistikas dati: }  Vidēji projektiem paredzētais budžets tika pārtērēts par 90%, bet paredzētais laiks par 120% [Standish Group pētījums par 8380 projektiem 1994. gadā]
  • 11. }  International Software Benchmarking Standards Group repozitorijos glabāto vairāk kā 400 projektu datu analīzes rezultāti 2005. gadā: ◦  Darbietilpība precīzi aprēķināta ~25% no visiem projektiem. Vidēji reālā darbietilpība bijusi 2 reizes lielāka par sākotnēji prognozēto. ◦  Apmēram 60% projektu darbietilpība novērtēta vismaz par 10% mazāka nekā reālā darbietilpība. ◦  Novērotas nopietnas kļūdas, piemēram, reālā darbietilpība bijusi 20 reizes lielāka par prognozēto.
  • 12. Paredzot nākotni ir daudz nezināmā ◦  Prasības – ir neprecīzas un mainīgas ◦  Projektējums – var tikt mainīts laika gaitā ◦  Izstrāde – atkarība no programmēšanas valodas un izstrādes vides ◦  Testēšana – nepieciešamais apjoms dažādām sistēmām var būtiski atšķirties (piem., dzīvībai kritiskas sistēmas, elementāras spēles) ◦  Ieviešana – dažādi lietotāja akcepta kritēriji ◦  Personāls – pieredze un kompetence ◦  Tehnoloģijas – viena vai vairākas platformas u.c.
  • 13. Lai uzlabotu novērtējumu precizitāti, vajadzīga sistēmātiska pieeja darbietilpības prognozēšanas procesam!
  • 14. }  Bottom-up (Dekompozīcija) ◦  Darbu sadala nelielās aktivitātēs (uzdevumos) ◦  Veic darbietilpības novērtējumu katrai aktivitātei ◦  Sasummē iegūtos novērtējumus ◦  Lieto, kad nav pieejami dati par agrāk izstrādātiem projektiem }  Top-down ◦  Novērtē visu produkta izstrādei nepieciešamo darbu ◦  Zemāka līmeņa uzdevumu veikšanai nepieciešamo darbu aprēķina kā daļu no kopējās darbietilpības
  • 15.
  • 16. 1. Jāaprēķina produktivitāte jeb darba ražīgums (darbiniekam vai komandai)
  • 17. 2. Ja zināms programmatūras apjoms/ izmērs un darbinieku produktivitāte, var izrēķināt cik darba cilvēk-stundu / dienu / mēnešu vajadzēs, lai darbu paveiktu jeb kāda ir projekta darbietilpība.
  • 18. Iedomāto produktivitāti aprēķina pēc vienādojuma izmantojot datus par līdzīgiem agrāk izstrādātiem projektiem savā uzņēmumā vai citos uzņēmumos (benchmark productivity data)
  • 19. Biežāk lietotās mērvienības programmatūras apjoma / izmēra noteikšanai: }  pirmkoda rindiņu skaits (LOC jeb SLOC) source lines of code }  funkcijpunkti function points
  • 20. Raksturojums }  Tradicionāla metode programmatūras fiziskā izmēra / apjoma prognozēšanai }  Apraksta programmatūras apjomu no programmētāja skatu punkta }  Koda kvalitāte netiek ņemta vērā }  Tiek lietots daudzās darbietilpības novērtēšanas metodēs
  • 21. }  Priekšrocības ◦  Vienkārši un automātiski mērāms lielums ◦  Tieša saistība ar gala produktu ◦  Tieša saistība ar programmēšanai patērēto laiku }  Trūkumi ◦  Vāji definēts mērs (Piemēram, vai jāskaita arī komentāru rindas?) ◦  Atkarīgs no programmēšanas valodas ◦  Atkarīgs no izstrādātāja prasmēm ◦  Nav zināms plānošanas fāzē
  • 22. Nav ieteicams lietot darbietilpības noteikšanai “Measuring programming progress by lines of code is like measuring aircraft building progress by weight” [Bill Gates]
  • 23. Raksturojums }  Apraksta programmatūras nodrošinātās funkcionalitātes apjomu }  Aprēķināms pēc programmatūras prasību specifikācijā iekļautajām prasībām }  Apraksta programmatūras apjomu no lietotāja skatu punkta }  Neatkarīgi no programmēšanas valodas
  • 24. }  Skaita plānotās sistēmas atribūtus, piem., lietojot IFPUG metodi jāskaita: ◦  Ievadi ◦  Izvadi ◦  Vaicājumi ◦  Izmantotie “iekšējie” jeb “loģikas” faili ◦  Ārējo saskarņu faili
  • 25. Nepieciešamo darba apjomu var ietekmēt dažādi izmaksu faktori: }  cilvēku skaits komandā }  programmēšanas valoda }  organizācijas tips }  uzņēmējdarbības sfēra }  lietotnes tips }  izstrādes platforma u.c.
  • 26.
  • 27.
  • 28. }  Algoritmiski modeļi ◦  Aprēķinos izmanto formulas ◦  Izmanto citu līdzīgu un pabeigtu projektu datus ◦  COSMIC, IFPUG, MARK II, NESMA, FISMA, COCOMO, COCOMO II }  Ekspertu vērtējums ◦  DELPHI, PERT, Plānošanas pokers, Vienas personas vērtējums }  Analoģiju bāzēti vērtējumi ◦  Vērtējumus veic balstoties uz ļoti līdzīgu projektu datiem
  • 29. Algoritmiski modeļi Ekspertu vērtējumi Analoģiju bāzēti vērtējumi Pieeja Būvē statistisku modeli Atkarība no ekspertu viedokļa Mēra līdzības un pielāgo Vajadzība pēc datiem Ir Nav Ir Priekšrocības Objektīvi, atkārtojami, analizējamas formulas Relatīvi lēti
 Precīzi, ja ekspertiem ir pieredze ar līdzīgiem projektiem Bāzēta uz reālu projektu pieredzi Trūkumi Nepiemērota speciālgadījumiem
 Kalibrēta uz pagātnes datiem nevis nākotnes datiem Rezultāti stipri akgarīgi no vērtētājiem Nepieciešama detalizēta informācija par daudziem projektiem
  • 30.
  • 31. }  Atbilst starptautiski atzītam standartam ISO/IEC 19761: 2003 }  1999. gadā to publicēja Common Software Measurement International Consortium (COSMIC), pēdējā versija 3.0.1 publicēta 2009. gadā
  • 32. Derīga, lai prognozētu funkcionālos izmērus: }  Darījumlietotnēm (bussiness applications) (piem., banku sistēmas, internetveikali) }  Reāla-laika programmatūrai (real-time software) (piem., automašīnas motora vadības sistēma, telekomunikāciju sistēmas) }  Hibrīdām lietotnēm (piemēram, reāla-laika lidmašīnas biļešu rezervācijas sistēmai)
  • 33. Nederīga: }  Programmatūrai, kas ietver sarežģītas loģiskās izteiksmes,sarežģītu matemātiskus aprēķinu veikšanu, attēlu un skaņas apstrādi utml. (piem., ekspertu sistēmas, simulāciju programmatūru, laika prognožu sistēmas, datorspēles)
  • 35. }  1 CFP (COSMIC funkcijpunkts) ir definēts kā viena datu plūsma }  Katra datu plūsmas instance (Ievads, Izvads, Lasīšana, Rakstīšana), kad dati tiek pievienoti, mainīti vai izdzēsti ir 1 CFP izmērā
  • 36. }  Lietotājs - jebkas, kas darbojas ar ar mērāmo programmatūru }  Funkcionālais lietotājs - lietotāja tips, kas funkcionālajās lietotāja prasībās, var sūtīt un var saņemt datus no programmatūras ◦  Darījumlietotnēs – cilvēki un citas lietotnes, ar kurām tās sadarbojas ◦  Reāla laika lietotnēs – ierīces vai cita programmatūra
  • 37. }  Funkcionālās lietotāju prasības sastāv no funkcionāliem procesiem }  Funkcionālais process tiek izsaukts, kad programmatūras lietotājs atpazīst notikumu (trigeri) un sūta ziņu, lai sāktu procesu }  Process ir pabeigts, kad programmatūra ir paveikusi visu kas prasīts
  • 38. Trigeri un tiem atbilstošie funkcionālie procesi }  Darījumlietotnēs: ◦  Ir saņemts pasūtījums – Ievadīt pasūtījumu sistēmā ◦  Darbinieks ir apprēcējies – Atjaunināt viņa personas datus ◦  Ir mēneša beigas – Aprēķināt algas }  Reāla laika lietotnēs ◦  Pilota komanda – Pievilkt lidmašīnas ratus un pacelties gaisā ◦  Ziņa par sastādītu telefona numuru – Izveidot savienojumu
  • 39. }  4 tipu datu plūsmu tipi: ◦  Ievads (Entry) – kontroles vai biznesa informācija, kas nāk no lietotāja un šķērso lietotnes robežu (lietotāja ievaddati, sensoru informācija) ◦  Izvads (Exit) – apstrādāti dati, kas tiek virzīti ārā no lietotnes (grafiki, atskaites) lietotājam, kas tos pieprasījis ◦  Lasīšana (Read) – pārvieto datus no atmiņas procesam, kas tos pieprasījis ◦  Rakstīšana (Write) – pārvieto datus no procesa uz atmiņu
  • 41. Izmērs CFP (funkcionālais processi) = Σ izmērs(Ievadsi) + Σ izmērs(Izvadsi) + Σ size (Lasīšanai) + Σ size(Rakstīšanai)
  • 42. }  Pasūtījumu apstrādes lietotne glabā datus par klientiem – klienta ID, vārds, uzvārds, adrese, telefona numurs, kredīta limits, klienta tipa kods }  Ar klientu informāciju darbojas pasūtījumu apstrādes operatori }  Process “Jauna klienta izveide sistēmā” ietver ◦  1 Ievads (saistīts ar klienta objektu) ◦  1 Rakstīšana (saistīts ar klienta objektu) ◦  1 Izvads (apstiprinājums vai kļūdas paziņojums) }  Procesa izmērs: 3 CFP (COSMIC Function Point)
  • 43. Functional Process User Exch. rate Financia l trans. User prof. Sys. config. Entry Exit Read Write CFP Login validation R 1 1 1 0 3 User profile loading R 1 1 1 0 3 Exchange rates loading R/W 1 1 1 1 4 Buying or Selling currencies R/W R R 1 1 3 1 6 Detailed exchange rate information loading R 1 1 1 0 3 ……….. …… TOTAL 37
  • 44. }  The International Software Benchmarking Standards Group uztur divus repozitorijus ar vēsturiskiem projektu datiem }  Pašlaik pieejama informācija par ~5600 projektiem }  Projektu dati pieejami par maksu
  • 45. CFP Planning (h) Analysis (h) Building (h) Testing (h) Deploying (h) 44 9 7 88 50 52 CFP Planning (h) Analysis (h) Building (h) Testing (h) Deploying(h) 37 7 6 74 42 44 Benchmarking jeb industrijas dati par projektu ar līdzīgu CFP skaitu: Aprēķina darbietilpību savam projektam: Tālāk, ņemot vērā projekta unikālitāti un “izmaksu faktorus”, precizē darbietilpību. Piemēram, par 20% palielina izstrādes (building) darbu, jo darbinieki ir iesācēji darbā ar konkrēto programmēšanas valodu.
  • 46. }  The COSMIC Functional Size Measurement Method Version 3.0.1 Measurement Manual (The COSMIC Implementation Guide for ISO/ IEC 19761: 2003), May 2009 VAI }  The COSMIC Functional Size Measurement Method Version 3.0 Method Overview, September 2007
  • 47.
  • 48. }  Spēja (agile) pieeja darbietilpības plānošanai }  Darbietilpības novērtējuma mērvienība – sarežģītības punkts }  Izmanto kārtis uz kurām rakstīts punktu skaits }  Biežāk lietotās skalas: ◦  Fibonači skaitļi - 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 ◦  0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100
  • 49. }  Komandas biedri sapulcējas un balso par katras funkcionālās prasības izteiktas lietotāju stāsta (user story) formā relatīvo sarežģītības pakāpi, izmantojot kārtis }  Katrs balso individuāli (izvēlas kārti), bet visi balso vienlaicīgi (atklāj kārti). Ja vērtējumi atšķiras, tad diskutē un vienojas vai pārbalso
  • 50. Ātrums  (velocity)  =  vienā  iterācijā  realizēto  punktu  skaits     Darbietilpība  lietotāju  stāstam  =  vidējā  sarežgītības  punkta   darbietilpība  *  punktu  skaits  
  • 52.