ir Kodavimo standartas

Download Report

Transcript ir Kodavimo standartas

Asmeninis programų kūrimo procesas
2 paskaita
2012-02-24
Andrius Adamonis
Turinys
• Kas yra procesas ir kas yra apibrėžtas procesas
• Kas yra asmeninis procesas
• Bazinis PSP procesas
• Baziniai matavimai
• PSP0.1 procesas
Kas yra procesas?
• Procesas – seka veiksmų, reikalingų rezultatui pasiekti
• Proceso apibrėžimas = proceso aprašymas
• Proceso apibrėžimas nusako vaidmenis, užduotis,
matavimus, pateikia pagrindinių žingsnių įėjimo ir
išėjimo kriterijus
Apibrėžtas procesas
• Apibrėžtas procesas – dokumentuota seka veiksmų,
reikalingų atlikti specifinę užduotį
• Padeda atskirti rutininius darbus nuo sudėtingų veiklų
• Nustato kiekvieno proceso žingsnio pradžios ir pabaigos
kriterijus
• Sustiprina proceso supratimą ir suteikia pagrindą
automatizuoti proceso žingsnius
Apibrėžtas procesas apima matavimus
•
Matavimai padeda:
– suprasti savo efektyvumą
– valdyti savo ir komandos darbus
– planuoti ir valdyti darbo rezultatų kokybę
• „Jeigu nori pakeisti procesą (elgesį), pirmiausia
nustatyk metriką“
Pvz:
• Metrika – kodo apimtis KLOC
• Rezultatas:
– Procedure
–
A;
–
(*
–
bla
–
bla
–
bla
–
*)
– var
–
//
–
I: Integer;
–
J: Integer;
– begin
–
...
–
I := I + 0;
–
//
– end;
Pvz:
• Metrika – ištaisytų defektų skaičius
•
http://dilbert.com/strips/comic/1995-11-13/
Apibrėžtas procesas padeda valdyti
projektus
• Leidžia pasidaryti detalų projekto planą ir tiksliai
matuoti ir raportuoti būseną
• Leidžia vertinti vertinimų bei planų tikslumą
• Leidžia tiksliai komunikuoti apie darbą su naudotojais,
užsakovais, kitais programuotojais, vadovais
Asmeninis procesas
• Asmeninis procesas – apibrėžta veiksmų seka, kuri
nurodo asmeniui, kaip atlikti asmeninę užduotį
• Pagrįstas asmenine patirtimi
• Gali būti susikurtas paties
• Gali būti nusikopijuotas iš pavyzdžio ir priderintas pagal
savo poreikius
Asmeninis programuotojo procesas
• 1. Planavimas
• 2. Reikalavimų išsiaiškinimas, algoritmas
• 3. Kalbos, įrankio pasirinkimas
• 4. Projektavimas
– Dizaino sprendimų, kodo pakartotinis panaudojimas
• Dizaino šablonai
• 5. Programavimas
– Kodavimo standartas
• 6. (Kompiliavimas, surinkimas)
• 7. Testavimas (unit testing)
• 8. Derinimas, klaidų taisymas
– Dažniausia daromos klaidos, optimizacijos
Bazinis PSP procesas (PSP0)
PSP0 procesas
• PSP0 = Bazinis procesas + baziniai matavimai
• Bazinio proceso paskirtis – suteikti pagrindus,
leidžiančius parašyti savo pirmąją programą pagal PSP ir
pradėti rinkti duomenis apie savo darbą
• Paranki darbus aprašanti struktūra smulkių užduočių
atlikimui
• Pagrindiniai matavimai
• Suteikia pagrindą proceso gerinimui
Kaip apibrėšime procesą?
• Skriptas – procedūra
– Įėjimo kriterijai
– Veiksmai
– Pabaigimo kriterijai
– Darbo rezultatai
• Forma / čeklistas
• Standartai
PSP0 procesas
• Paskirtis: Suteikti paaiškinimus, kaip kurti programų modulius
• Įeitys (Input criteria):
– Uždavinio aprašymas
– PSP0 projekto plano šablonas (PSP0 Project Plan
Summary)
– LFF ir DFF
– Defektų standartas
– Laikrodis (gali ir nebūti)
• Veiklos:
– 1. Planning – Planavimas
– 2. Development – Kūrimas
– 3. Postmortem – Užbaigimas
• Rezultatai (Output criteria):
– Ištestuota programa
– Užpildyta projekto plano forma (PPS)
– Užpildyti LFF ir DFF
PSP0 procesas – Planavimas
• Paskirtis: PSP0 planavimas
• Įeitys:
– Uždavinio aprašymas
– PSP0 projekto plano šablonas (PSP0 Project Plan
Summary)
– LFF
• Veiklos:
– 1. Programos reikalavimai – reikalavimų „išgavimas“,
neprieštaringumo užtikrinimas, klausimai/atsakymai
– 2. Resursų įvertinimas – nustatyti numatomą
programavimui reikalingą laiką (PPS)
• Rezultatai:
– Dokumentuoti reikalavimai
– Numatomas laikas PPS formoje
– Planavimui sugaištas laikas LFF
PSP0 procesas – Kūrimas
• Paskirtis: programos sukūrimas
• Įeitys:
– Dokumentuoti reikalavimai
– Numatomas laikas PPS formoje
– LFF, DFF
– Defektų standartas
• Veiklos:
– 1. Projektas – projekto parengimas
– 2. Kodavimas – programos kodo pagal projektą parašymas
– 3. Kompiliavimas – programos kompiliavimas, kol nelieka
kompiliavimo klaidų
– 4. Testavimas – programos testų vykdymas, kol nelieka
klaidų testuose
• Rezultatai:
– Ištestuota programa
– Užpildyti LFF ir DFF
PSP0 procesas – Užbaigimas
• Paskirtis: užbaigti užduotį
• Įeitys:
– Uždavinio aprašymas
– Dokumentuoti reikalavimai
– Užpildytos LFF ir DFF
– Ištestuota programa
• Veiklos:
– 1. Defektų aprašymas
– 2. Defektų duomenų patikrinimas
– 3. Laiko apskaita – perkelti suminius iš LFF į PSS
• Rezultatai:
– Ištestuota programa
– Užpildyta projekto plano forma (PPS)
– Užpildyti LFF ir DFF
PSP0 matavimai
• Laikas
– Praktika: Laiko fiksavimas
• Defektai
– Praktika: Defektų fiksavimas
• Suvestinė: PPS
• Kompiliavimo laiko matavimas
• Iteratyvus programavimas
Programų dydžio matavimas
• Kaip matuoti atlikto darbo dydį
– Pvz. perskaitytų puslapių skaičius?
• Koreliacija
Koreliacija
Programų dydžio matavimas
• Matuojami dalykai:
– Duomenų bazės elementai
– Programos išeities teksto dydis
Programų dydžio matavimas
• Skaičiuojamos programos teksto eilutės:
– Bazė
– Naujos
– Pakeistos
– Ištrintos
– Perpanaudotos
– Naujos arba pakeistos
– Naujos perpanaudojamos
– Viso
Programų dydžio matavimas
• Dydžio duomenų panaudojimas:
– Planavimui
– Programos kokybės matavimui
• Defektų tankis
– Produktyvumo skaičiavimui
Programų dydžio matavimas
• Fizinis eilučių skaičius (LOC)
• Loginis eilučių skaičius
• Elementų skaičiavimas
• Kodavimo standartas
Eilučių skaičiaus pavyzdys
--------------·
/* 2 autorius
pataisyta */
for i = 1 to PALUKANU_SKAICIAVIMO_BAZE_360 //bazė
do:
assign x = x * y. // ...
end.
·
--------------Failo eilučių skaičius: 8
Kodo eilučių skaičius: 4
Komentarų: 4
Kodavimo standartas
• Apibrėžia vieningą programos rašymo stilių
• Net jei ir nenaudojate kodavimo standarto, pagrindinė
taisyklė, kurios privalu laikytis – nuoseklumas, t.y.
nuosekliai naudojamas tas pats stilius vienos programos
išeities tekstuose
Skirtingų stilių pavyzdžiai
// sūku ciklą ir skaicioju
repeat i = 1 to 12 do:
assign paluk_suma = paluk_suma + x.
end.
/* suku cikla ir skaiciuoju */
REPEAT iMen = 1 TO 12
DO:
fPalukSuma = fPalukSuma + fX. // f - float
END.
/***
suskaičiuoti bendrą palūkanų sumą
***/
REPEAT menesio-nr = 1 TO 12 DO:
ASSIGN palukanu-suma = palukanu-suma + x.
END.
Kodavimo standarto struktūra
• 1) Komentarai: ▪ failų antraštės, ▪ įterpti komentarai,
▪ „JavaDoc“ tipo komentarai, ▪ seno kodo fragmentai
• 2) Vardai:
– Daryba (veiksmažodžiai, daiktavardžiai), skirtukai, prefiksai
– Tipai: ▪ konstantos, ▪ kintamieji, ▪ funkcijos, ▪ struktūros, ▪ klasės
ir klasių atributai
• 3) Sintaksė
• 4) Blokiniai sakiniai ir blokai:
– Skliaustai; pastūmimai; trikiai (exceptions);
• 5) Struktūros ir klasės
• 6) Konstrukcijos: ▪ konstantų naudojimas, ▪ enum naudojimas,
▪ klaidų apdorojimas, ▪ makro naudojimas
Kodavimo standartų pavyzdžiai
• C++:
http://www.possibility.com/Cpp/CppCodingStandard.ht
ml
• C#:
http://www.idesign.net/idesign/download/IDesign%20C
Sharp%20Coding%20Standard.zip
• Pascal: http://edn.embarcadero.com/article/10280
• Php:
http://www.dagbladet.no/development/phpcodingstand
ard/
• Python:
http://www.voidspace.org.uk/python/articles/python_st
yle_guide.shtml
PSP0.1 procesas
• Paskirtis: Suteikti paaiškinimus, kaip kurti programų modulius
• Įeitys (Input criteria):
– Uždavinio aprašymas
– PSP0.1 projekto plano suvestinė (PPS)
– LFF ir DFF
– Defektų standartas ir Kodavimo standartas
– Laikrodis (gali ir nebūti)
• Veiklos:
– 1. Planning – Planavimas
– 2. Development – Kūrimas
– 3. Postmortem – Užbaigimas
• Rezultatai (Output criteria):
– Ištestuota programa, griežtai atitinkanti Kodavimo
standartą
– Užpildyta projekto suvestinė forma (PPS)
– Užpildyti LFF ir DFF
PSP0.1 procesas – Planavimas
• Paskirtis: PSP0 planavimas
• Įeitys:
– Uždavinio aprašymas
– PSP0.1 projekto plano suvestinė (PPS)
– LFF
• Veiklos:
– 1. Programos reikalavimai – reikalavimų „išgavimas“,
neprieštaringumo užtikrinimas, klausimai/atsakymai
– 2. Dydžio įvertinimas – kaip įmanoma geriau numatyti,
kokia bus programos papildymo ir modifikavimo apimtis
(LOC)
– 3. Resursų įvertinimas – nustatyti numatomą
programavimui reikalingą laiką (PPS); vadovaujantis PPS
„Iki šiol %“ duomenimis, paskirstyti planuojamą laiką į
projekto fazes
• Rezultatai:
– Dokumentuoti reikalavimai
– Numatomas laikas PPS formoje
– Planavimui sugaištas laikas LFF
PSP0.1 procesas – Kūrimas
• Paskirtis: programos sukūrimas
• Įeitys:
– Dokumentuoti reikalavimai
– Numatomas laikas (paskirstytas per fazes) ir dydis PPS
formoje
– LFF, DFF
– Defektų standartas ir Kodavimo standartas
• Veiklos:
– 1. Projektas – projekto parengimas
– 2. Kodavimas – programos kodo pagal projektą
parašymas, vadovaujantis Kodavimo standartu
– 3. Kompiliavimas – programos kompiliavimas, kol nelieka
kompiliavimo klaidų
– 4. Testavimas – programos testų vykdymas, kol nelieka
klaidų testuose
• Rezultatai:
– Ištestuota programa, griežtai atitinkanti Kodavimo
standartą
– Užpildyti LFF ir DFF
PSP0.1 procesas – Užbaigimas
• Paskirtis: užbaigti užduotį
• Įeitys:
– Uždavinio aprašymas
– Dokumentuoti reikalavimai
– Užpildytos LFF ir DFF
– Ištestuota programa
• Veiklos:
– 1. Defektų aprašymas
– 2. Defektų duomenų patikrinimas
– 3. Dydžio apskaita – suskaičiuoti ir įrašyti programos dydžius į
PPS
– 4. Laiko apskaita – perkelti suminius iš LFF į PPS
• Rezultatai:
– Ištestuota programa, griežtai atitinkanti Kodavimo standartą
– Užpildyta projekto plano forma (PPS)
– Užpildyti LFF ir DFF
– Užpildyta Proceso gerinimo pasiūlymo (PGP) forma, įvardinanti
proceso trūkumus, pagerinimo pasiūlymus, išmoktas pamokas
Namų darbai
• Kitai paskaitai būti perskaičius:
– [Hum00] W.Humphrey “The PSP” – iki 5 skyriaus
imtinai
– [PCC09] “The PSP BOK 2.0”, kokių žinių reikia
Competency Area 1–3, t.y. 1–38 lapai
– [Rag06] S.Ragaišis: Asmeninis programų kūrimo
procesas, 2006.
• Peržiūrėti:
– [PspMa] PSP Materials, iki PSP0.1 imtinai