340 likes | 631 Views
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?.
E N D
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
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
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.html • C#: http://www.idesign.net/idesign/download/IDesign%20CSharp%20Coding%20Standard.zip • Pascal: http://edn.embarcadero.com/article/10280 • Php: http://www.dagbladet.no/development/phpcodingstandard/ • Python: http://www.voidspace.org.uk/python/articles/python_style_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