400 likes | 544 Views
Asmeninis programų kūrimo procesas. 3 paskaita 2013-03-22 / 2013-04-12 Andrius Adamonis. Turinys. Kas yra ir kam reikalingas planavimas PSP1.0 procesas. PSP praktikos. TSP Komandos sudarymas Rizikos valdymas Projekto valdymas ir sekimas. Komandinis procesas TSP. PSP 2.1
E N D
Asmeninis programų kūrimo procesas 3 paskaita 2013-03-22 / 2013-04-12 Andrius Adamonis
Turinys • Kas yra ir kam reikalingas planavimas • PSP1.0 procesas
PSP praktikos TSP Komandos sudarymas Rizikos valdymas Projekto valdymas ir sekimas Komandinis procesasTSP PSP 2.1 Projektavimas pagal šablonus Kokybės valdymas ir projektavimas PSP 2 Kodo peržiūros Projekto peržiūros PSP 1.1 Užduočių planavimas Tvarkaraščio planavimas Vertinimas ir planavimas Vertinimas ir planavimas PSP 1 Dydžio vertinimas Testavimo ataskaita PSP 0.1 Kodavimo standartas Proceso gerinimo pasiūlymas Dydžio matavimai Proceso disciplina ir matavimai PSP 0 Esamas procesas Baziniai matavimai
Planavimas • Programinės įrangos industrijoje dažnai PĮ kūrimo planai yra netikslūs • Nedaugelis įmonių turi procesą, užtikrinantį, kad planai yra išbaigti, kruopščiai peržiūrėti ir tinkamai aprobuoti • Vadovybė aiškiai gali pasakyti, kada naujai pradedamas projektas turi būti baigtas, tačiau nelabai ką apie kitus tikslus. Tas sukuria iliuziją, kad terminai yra svarbiausia. Tačiau projekto komanda turi išsiaiškinti ir įgyvendinti ir kitus tikslus, tuo pačiu išlaikydama pageidaujamus darbo atlikimo terminus
Planavimas • Kai vadovybė nori, kad projektas būtų atliktas, iš tiesų jie nori, kad jis būtų atliktas dabar ir be jokių sąnaudų. Visa kita yra kompromisas. • Norint su vadovais suderinti datas, kurioms reikalavimai gali būti ir labai agresyvūs, reikalingas planas, parodantis, ką ir kada reikia atlikti. • Galų gale, kadangi vadovai nori plano ir tvarkaraščio, kurį komanda yra pajėgi įgyvendinti, su jūsų pateiktu pagrįstu planu ji sutiks.
Planavimas • Užsakovas projekto plane ieškos: • Kas įsipareigojama? • Ar bus pagaminta tai, ko reikia? Kokie tarpiniai kokybės ir įgyvendinimo patikrinimo taškai? • Kaip galima stebėti įgyvendinimo eigą? • Ar galima įvertinti atliekamą darbą? Ar galima atskirti gerai valdomą darbą nuo blogai valdomo?
Planavimas • Ar įtikinau, kad planuoti reikia?
Planavimas • Plane tikimės rasti: • Darbo apimtį • Kokio dydžio yra darbas ir kiek laiko jį atlikti užtruks • Darbo atlikimo struktūrą • Kokia tvarka atliksime darbą; ką darysime pirma, ką po to • Darbo atliktumo būseną • Kaip žinosime, kiek darbo jau esame atlikę; ar baigsime laiku ir ar kaštai neviršys planuotų • Galimybę įsivertinti • Ar geras buvo planas; ar buvo akivaizdžių klaidų; kokių klaidų reikėtų išvengti ateityje ir kitą sykį suplanuoti geriau
PĮ projekto planavimo etapai • 1. Darbo apibrėžimas (statement of work, SoW) • 2. Suskaidyti projektus, didesnius nei kelios dienos, į smulkesnes užduotis ir įvertinti kiekvienos dydį atskirai • 3. Palyginti įverčius su istoriniais duomenimis iš ankstesnių panašių darbų • 4. Dokumentuoti įverčius • 5. Jei keičiasi reikalavimai, keisti ir planą
Planavimo duomenys • Kaip gauti duomenis planui paruošti? • Kokie yra pirmieji žingsniai prieš rengiant planą?
Planavimo duomenys • Kaip gauti duomenis planui paruošti? • Kokie yra pirmieji žingsniai prieš rengiant planą? • Dydžio vertinimo atraminis principas – lyginti su ankstesnių projektų rezultatais • Pirmas žingsnis – parengti eskizinį projektą (conceptual design) • Toliau naudojame pavyzdžiais pagrįstą vertinimą (proxy-based estimating)
Programos dydžio nustatymas • Pavyzdžiais pagrįstas įvertinimas • Proxy-Based estimation • Gero pavyzdžio (proxy) kriterijai: • Pavyzdžio dydis koreliuoja su pastangų, reikalingų programai sukurti, apimtimi • Pavyzdžio dydis lengvai automatiškai išmatuojamas • Turi būti lengva vizualizuoti • Lengvai adaptuojamas projekto reikmėms
Programos dydžio nustatymas • Pavyzdžių pavyzdžiai: • Klasės • Lentelės • Formos • Skriptai
PROBE • PROxy-Based Estimation • 1. Pasidaryti koncepcinį dizainą = suskaidyti programos projektą į smulkesnes dalis • Smulkios dalies pavyzdys: masyvo įvedimas iš komandinės eilutės • 2. Kiekvienai naujai daliai: parinkti pavyzdžių iš istorinių duomenų bazės • Pagal proxy tipus • Vertinti, kiek bus elementų (pvz. klasės metodui) • Vertinti, kokio stambumo bus elementai (VS, S, M, L, VL)
Dydžių lentelė – pavyzdys VS S M L VL Skaičiuojame dalies dydžio eilutėmis nuokrypius nuo vidurkio ir pagal tai nustatome dalių dydį
PROBE • 3. Įvertinti perpanaudojamų dalių apimtis • Dalys imamos iš bibliotekos • 4. Įvykdyti apimties (dydžio) vertinimo procedūrą
PROBE • 5. Įvykdyti laiko vertinimo procedūrą • analogiškai • 6. Nustatyti tikslumo intervalą
PSP1.0 procesas • Įeitys (Input criteria): • Uždavinio aprašymas • PSP1 projekto plano suvestinė (PPS) • Dydžio vertinimo forma (DVF) • Istoriniai numatytų ir aktualių dydžių duomenys • LFF ir DFF, Laikrodis (gali ir nebūti) • Defektų standartas ir Kodavimo standartas • 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žpildyta DVF • Užpildyta Testavimo ataskaita • Užpildyti LFF ir DFF
PSP1.0 procesas - Development • Į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
PSP1.0 procesas - Postmortem • Įeitys: • Uždavinio aprašymas • Dokumentuoti reikalavimai • Užpildytos LFF & 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 bei PDF • 4. Laiko apskaita – perkelti suminius iš LFF į PPS • Rezultatai: • Ištestuota programa, griežtai atitinkanti Kodavimo standartą • Užpildytos projekto plano forma (PPS), Programos dydžių forma (PDF) ir Testavimo ataskaita • Užpildyti LFF ir DFF • Užpildyta Proceso gerinimo pasiūlymo (PGP) forma, įvardinanti proceso trūkumus, pagerinimo pasiūlymus, išmoktas pamokas
Funkcinių taškų analizė • Function point analysis • http://conferences.embarcadero.com/article/32094
FPA – skaičiavimo etapai • 1. Determine the type of count. • 2. Identify the scope and boundary of the count. • 3. Determine the unadjusted FP count. • 4. Determine the Value Adjustment Factor. • 5. Calculate the Adjusted FP Count.
FPA – skaičiuojami elementai • Data Functions: • Internal logical files (ILF) • External interface files (EIF) • Transactional Functions: • External Inputs (EI) • External Outputs (EO) • External Inquiries (EQ)
FPA - ILF • An ILF is a user-identifiable group of logically related data or control information maintained within the boundary of the application. The primary intent of an ILF is to hold data maintained through one or more elementary processes of the application being counted. • Samples of things that *can* be ILFs include: • Tables in a relational database. • Flat files. • Application control information, perhaps things like user preferences that are stored by the application. • LDAP data stores.
FPA - EIF • An external interface file (EIF) is a user identifiable group of logically related data or control information referenced by the application, but maintained within the boundary of another application. The primary intent of an EIF is to hold data referenced through one or more elementary processes within the boundary of the application counted. This means an EIF counted for an application must be in an ILF in another application." • Again, think of this as data that your application needs and uses, but does not maintain.
FPA - EI • An external input (EI) is an elementary process that processes data or control information that comes from outside the application boundary. The primary intent of an EI is to maintain one or more ILFs and/or to alter the behavior of the system. • Examples of EIs include: • Data entry by users. • Data or file feeds by external applications.
FPA - EO • An external output (EO) is an elementary process that sends data or control information outside the application boundary. The primary intent of an external output is to present information to a user through processing logic other than, or in addition to, the retrieval of data or control information . The processing logic must contain at least one mathematical formula or calculation, create derived data maintain one or more ILFs or alter the behavior of the system. • Examples of EOs include: • Reports created by the application being counted, where the reports include derived information.
FPA - EQ • An external inquiry (EQ) is an elementary process that sends data or control information outside the application boundary. The primary intent of an external inquiry is to present information to a user through the retrieval of data or control information from an ILF of EIF. The processing logic contains no mathematical formulas or calculations, and creates no derived data. No ILF is maintained during the processing, nor is the behavior of the system altered. • Examples of EQs include: • Reports created by the application being counted, where the report does not include any derived data. • Other things known as "implied inquiries", which unfortunately, are a little out of scope for this paper.
3. Determine the unadjusted FP count • Susumuojam visų elementų funkcinius taškus
4. Determine the Value Adjustment Factor • VAF = (TDI * 0.01) + 0.65 • TDI – suma svorių nuo 0 (žemas) iki 5 (aukštas) kiekvienam iš šių faktorių: • Data Communication • Distributed data processing • Performance • Heavily used configuration • Transaction rate • Online data entry • End user efficiency • Online update • Complex processing • Reusability • Installation ease • Operational ease • Multiple sites • Facilitate change
5. Calculate the Adjusted FP Count • Adjusted FP Count = Unadjusted FP Count * VAF • Geroji dalis: • AFPC galima suskaičiuoti jau vykdytiems projektams • Kai žinome, kiek laiko sugaišome tiems projektams, išsiskaičiuojame FP/žmogvalandės santykį • Naujiems projektams galima skaičiuoti numatomus FP ir gauti apimtį žmogvalandėmis!