programų sistemų inžinerija

25
Programų sistemų inžinerija Saulius Ragaišis, VU MIF [email protected]

Upload: bryce

Post on 19-Jan-2016

60 views

Category:

Documents


0 download

DESCRIPTION

Programų sistemų inžinerija. Saulius Ragaišis , VU MIF [email protected]. Judriųjų programų kūrimo metodikų manifestas. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programų sistemų inžinerija

Programų sistemų inžinerija

Saulius Ragaišis, VU [email protected]

Page 2: Programų sistemų inžinerija

Judriųjų programų kūrimo metodikų manifestas2001 metais grupė programinės įrangos praktikų ir konsultantų paskelbė

judriųjų programų sistemų kūrimo metodikų manifestą (angl. Agile Software Development Manifesto):

• Individai ir jų bendradarbiavimas yra svarbesni už procesus ir įrankius.

• Veikianti programinė įranga yra svarbesnė už išsamią jos dokumentaciją.

• Bendradarbiavimas su užsakovu svarbesnis už kontrakto derybas.

• Galimybė reaguoti į pakeitimus svarbesnė už plano vykdymą.

Page 3: Programų sistemų inžinerija

Metodikų palyginimasVeiksnys Tradicinės metodikos Judriosios metodikos

Apimtis (reikalavimai)

Tiksliai žinoma;Dydis gerai suvokiamas;Nesikeičianti.

Neaiški (ar reikalavimai teisingi?);Nežinoma (Kas yra apimtis?)Besikeičianti.

Resursai (pinigai, infrastruktūra, žmonės)

Patvirtinti ir prieinami;Nustatyti iš anksto;Biudžetas pakankamas ir finansuojamas;Žmonės susipažinę su užduotimis ir įrankiais

Nepilnai patvirtinti arba prieinami;Patikrinimo poreikis;Pinigų nepakanka;Biudžetas neapibrėžtas;Naujų įgūdžių poreikis.

Laikas Aiškiai nustatytas;Aiškūs etapai.

Netiksliai nustatytas, atviras;Neaiškūs etapai;Linkęs keistis.

Rizikos Gerai suprantamos;Nedidelė įtaka.

Naujos technologijos;Nežinomos rizikos;Didelė įtaka.

Page 4: Programų sistemų inžinerija

Metodikų paplitimas (2001 metai)Ekstremalus programavimas (angl. eXtreme Programming, XP):

38 %

DSDM (angl. Dynamic Systems Development Method) :19 %

Page 5: Programų sistemų inžinerija

Ekstremalus programavimasEkstremalus programavimas (XP) – metodika, kurios pagrindinės idėjos

pradėjo formuotis 1990-ųjų viduryje ir kurios autoriais laikomi Kent Beck, Ron Jeffrees ir Ward Cunninghan.

XP metodika skirta daugiausia mažoms ir vidutinėms komandoms, kurios vykdo projektą, pasižymintį reikalavimų neapibrėžtumu arba kitimu.

Page 6: Programų sistemų inžinerija

XP proceso struktūra

PasakojimaiPasakojimai

Tyrimas Planavimas Iteracijos iki versijos išleidimo Gamyba Priežiūra "Mirtis"

Pasakojimai

PasakojimaiPasakojimaiPasakojimai

kitai iteracijai

Reguliarūsatnaujinimai

Prioritetai

Apimtiesvertinimas

Programavimas poromis

Ana

lizė

Pro

jekt

avim

as

Tes

tavi

mas

Tes

tųpl

anav

imas

Pastoviosperžiūros

Grįžtamasisryšys

TestaiBendra

kodo bazė

Pastovusintegravimas

Mažoslaidos

Užsakovopatvirtinimas

Papildytosversijos

Galutinėversija

Page 7: Programų sistemų inžinerija

Pagrindinės XP vertybės

- bendravimas (angl. communication);

- paprastumas (angl. simplicity);

- grįžtamasis ryšys (angl. feedback);

- drąsa (angl. courage).

Page 8: Programų sistemų inžinerija

XP praktikos1. Planavimo žaidimas

2. Mažos laidos

3. Metafora

4. Paprastas projektas

5. Pertvarkymas

6. Testavimas

7. Programavimas poromis

8. Bendra kodo nuosavybė

9. Nuolatinis integravimas

10. 40-ies darbo valandų savaitė

11. Aktyvus užsakovas

12. Kodavimo standartai

Page 9: Programų sistemų inžinerija

DSDMDSDM (angl. Dynamic Systems Development Method) – dinaminis programų kūrimo

metodas, sukurtas 1994 metais ir prižiūrimas DSDM konsorciumo, priklauso judriųjų programų kūrimo metodikų grupei.

Pagrindinė DSDM idėja – kurti programų sistemą, atsižvelgiant į kintančius reikalavimus, siekiant, kad kuriama sistema atitiktų verslo poreikius.

Fiksuota

Kintamas

Tradi- cinės

Funkcionalumas

Laikas Resursai

DSDM

Funkcionalumas

Laikas Resursai

Page 10: Programų sistemų inžinerija

DSDM proceso struktūra

Taikymotyrimas

Verslo analizė

Funkcinio modelioiteracija

Projektavimo irkonstravimo iteracija

Realizavimas

1 5

23

6

74

Page 11: Programų sistemų inžinerija

Pagrindiniai DSDM principaiPrincipas Komentarai

1. Būtinas aktyvus naudotojo įtraukimas

DSDM yra į naudotojus orientuotas metodas. Į kūrimo procesą įtraukiama tam tikra nedidelė grupė naudotojų, kurie pateikia atsiliepimus apie sistemą.

2. DSDM komandai privalo būti suteikta sprendimo teisė

DSDM komandą sudaro kūrėjai ir naudotojai. Pastariesiems turi būti suteikta spręsti, kokius reikalavimus sistema privalo tenkinti, kurie iš jų turėtų būti peržiūrėti arba pakeisti išvengiant dažno vadovybės dalyvavimo.

3. Reikalingas dažnas produkto pristatymas užsakovui.

DSDM komandos darbas orientuotas į produktus, kurie gali būti sukurti per sutartą laiko tarpą. Pagal tai, kiek laiko yra skirta užduočiai komanda pasirenka užduoties įgyvendinimo būdą. Iteracijas siekiama daryti kuo trumpesnes, todėl galima anksti sulaukti užsakovo vertinimo.

4. Esminis produkto priėmimo kriterijus – tinkamumas verslo paskirčiai

DSDM kelia tikslą realizuoti reikalingą funkcionalumą per pageidaujamą laiko tarpą. Atitikimas pagrindiniams verslo poreikiams, atsižvelgiant, kad jie gali keistis, yra svarbesnis už sistemos techninį tobulumą.

5. Siekiant rasti verslui tinkamą sprendimą naudojamas cikliškas kūrimo procesas.

Dėl cikliško kūrimo proceso anksti sulaukiama naudotojo vertinimų, todėl ankstyvose fazėse ištaisomos klaidos.

Page 12: Programų sistemų inžinerija

Pagrindiniai DSDM principai (2)Principas Komentarai

6. Kūrimo metu visi keitimai gali būti atšaukiami.

DSDM palaiko grįžimo metodą (angl. backtracking). Priėmus neteisingą sprendimą, grįžtama į ankstesnę kūrimo fazę, tokiu būdu neteisingas kūrimo kelias gali būti ištaisomas. Pakeitimų atsisakymas apribojamas kūrimo ciklais.

7. Reikalavimai projektuojami abstrakčiu lygiu.

Apibrėžiami tik pagrindiniai reikalavimai, kurie turėtų apibūdinti sistemos apimtį. Reikalavimai detalizuojami vėlesnėse kūrimo fazėse ir gali būti keičiami esant poreikiui.

8. Testavimas integruojamas į gyvavimo ciklą.

Testavimas nėra laikomas atskira veikla. Sistema testuojama tiek kūrėjų, tiek naudotojų. Ankstyvose fazėse orientuojamasi atitikimą verslo poreikiams, vėliau testuojama, ar sistema veikia efektyviai.

9. Labai svarbus bendradarbiavimas tarp visų suinteresuotų asmenų (angl. stakeholders).

Reikalavimai detalizuojami projekto vykdymo metu ir norint išlaikyti trumpus terminus, reikia priimti sprendimus atsisakant varžančių pakeitimų kontrolės procedūrų, todėl reikalinga įtraukti visus suinteresuotus asmenis ne tik iš verslo pusės, tačiau ir atstovus iš paslaugų teikimo, logistikos srities.

Page 13: Programų sistemų inžinerija

Pagrindiniai DSDM metodai- laiko skaidymas intervalais (angl. timeboxing),

- reikalavimų prioritetizavimas (angl. prioritization)

- prototipavimas (angl. prototyping)

Page 14: Programų sistemų inžinerija

Laiko skaidymas intervalaisKiekvienas DSDM projektas turi fiksuotą pabaigos datą – sistemos

realizavimo terminą, kuris savo ruožtu skirstomas į 2-6 savaičių trukmės intervalus.

Kiekvienas laiko intervalas turi galutinį terminą ir priskirtą reikalavimų, suskirstytų pagal prioritetus, rinkinį.

Kiekvieno intervalo tikslus nustato kūrėjai ir naudotojai.

Svarbus laiko skaidymo intervalais aspektas – kontrolė nėra paremta konkrečių užduočių visapusišku įgyvendinimu: jei kažkuriame laiko intervale nebuvo pasiekti tam tikri rezultatai, apimtis peržiūrima – reikalavimai gali būti nukeliami, tačiau terminas – ne. Naudotojai tokiu atveju nusprendžia, kurie reikalavimai bus įtraukiami į sekantį laikotarpį ar nukeliami vėliau.

Šio metodo tikslas – kontroliuoti projekto eigą, bet kartu gali būti naudojamas reikalingų resursų, sukurti veikiančią sistemą, kiekiui įvertinti.

Page 15: Programų sistemų inžinerija

Reikalavimų prioritetizavimasReikalavimams suskirstyti pagal prioritetus DSDM naudojamos

vadinamosios MoSCoW taisyklės.

• Privalomieji (angl. Must have)

• Reikalingi (angl. Should have).

• Galimi (angl. Could have).

• Vertingi, tačiau gali būti atidėti (angl. Want to have but Won’t have this time round).

Page 16: Programų sistemų inžinerija

PrototipavimasDSDM metodika rekomenduoja 4 tipų prototipus:

1. Verslo, skirti automatizuojamų verslo aspektų demonstravimui.

2. Tinkamumo naudoti – naudotojo interfeiso demonstravimui.

3. Efektyvumo/sugebėjimų – sistemos sugebėjimo sėkmingai atlikti numatytą darbą. Šis prototipas skirtas kūrėjams, kadangi susijęs su nefunkciniais reikalavimais.

4. Gebėjimų/metodų – koncepcijos tikrinimui ir projektavimo bandymams.

Page 17: Programų sistemų inžinerija

Scrum metodikaŠi judrioji programų kūrimo metodika buvo sukurta 90-aisiais metais grupės,

kuriai vadovavo Jeff Sutherland. Paskutiniu metu ji vystoma K.Schwaber ir M.Beedle darbuose.

Scrum principai atitinka judriųjų metodikų manifestą:

- Mažos komandos turi maksimizuoti bendravimą, neformalų keitimąsi informacija ir žiniomis bei minimizuoti papildomas valdymo sąnaudas.

- Procesas turi būti pritaikomas prie techninių ir verslo sąlygų pasikeitimų, kad užtikrintų geriausio įmanomo produkto sukūrimą.

- Procesas orientuotas į dažnas programos laidas (versijas).

- Darbai ir juos atliekantys žmonės dalinami į aiškias ir mažai susijusias grupes.

- Kuriamas produktas būtinai testuojamas ir dokumentuojamas.

- Scrum procesas sudaro galimybę paskelbti produktą „sukurtu“, kada tik to reikia.

Page 18: Programų sistemų inžinerija

Esminės Scrum proceso veiklos- reikalavimai (angl. requirements),

- analizė (angl. analysis),

- projektavimas (angl. design),

- įgyvendinimas (angl. evolution)

- pateikimas (angl. delivery).

Produktas kuriamas iteracijomis, kurios vadinamos sprintais (angl. sprints). .

Page 19: Programų sistemų inžinerija

Scrum proceso struktūra

Produkto užsakymų krepšelis:prioritetizuotos užsakovo pageidaujamos produkto savybės

Sprinto užsakymų krepšelis:sprintui priskirtos produktosavybės

Naujasfunkcionalumas

Komandospatikslintiužsakymai

30 dienų

24 valandos Scrumsusirinkimas

Page 20: Programų sistemų inžinerija

Esminės Scrum sąvokosUžsakymų krepšelis (angl. backlog) – prioritetizuotas sąrašas svarbių

užsakovo verslui reikalavimų ar sistemos savybių. Šis sąrašas gali būti papildomas/patikslinamas bet kuriuo metu. Kai prireikia, produkto vadovas (angl. product manager) įvertina užsakymus ir patikslina prioritetus.

Sprintas (angl. sprint) – darbai, kurie turi būti atlikti pasirinktų užsakymų iš krepšelio (angl. backlog) įgyvendinimui per nustatytą laiko intervalą (angl. time-box), kuris tradiciškai yra 30 dienų. Sprinto metu jame įgyvendinami užsakymai yra „užšaldomi“ (t.y. jokie reikalavimų pakeitimai nedaromi). Tokiu būdu komandai sudaromos sąlygos sprinto metu dirbti stabilioje aplinkoje.

Page 21: Programų sistemų inžinerija

Esminės Scrum sąvokos (2)Scrum susirinkimai (angl. Scrum meetings) – trumpi (tradiciškai 15 minučių)

kasdieniniai Scrum komandos susirinkimai, kurių metu kiekvienas komandos narys atsako į 3 klausimus:

- Ką padarė nuo paskutinio komandos susitikimo?

- Su kokiomis kliūtimis, problemomis susidūrė?

- Ką planuoja padaryti iki kito komandos susitikimo?

Susitikimui vadovauja ir komandos narių atsakymus vertina komandos lyderis, vadinamas Scrum meistru (angl. Scrum master). Susirinkimai padeda komandai identifikuoti galimas problemas, kiek įmanoma, anksčiau. Be to, šie susirinkimai veda prie „žinių suvisuomeninimo“ (visi žino tikslią projekto būseną) ir skatina saviorganizuojančią komandos struktūrą.

Page 22: Programų sistemų inžinerija

Esminės Scrum sąvokos (3)Demo (angl. demos) – programos laidos pateikiamos užsakovams tam, kad

įgyvendintas funkcionalumas galėtų būti išbandytas ir įvertintas. Svarbu pastebėti, kad demo gali neturėti viso planuoto funkcionalumo, iš esmės jame yra funkcijos, kurios galėjo būti įgyvendintos per nustatytą laiko intervalą (angl. time-box), t.y. prioritetas teikiamas laikui, o ne planuotam funkcionalumui.

Teigiama, kad Scrum metodika įgalina komandą sėkmingai dirbti aplinkoje, kurioje neapibrėžtumų išvengti neįmanoma.

Page 23: Programų sistemų inžinerija

Crystal metodikosCrystal judriųjų metodikų šeimą sukūrė Alistair Cockburn ir Jim Highsmith.

Pavadinimas „Crystal“ buvo parinktas pagal geologinių kristalų charakteristikas – kiekvienas kristalas yra unikalus, turintis savo spalvą, formą ir kietumą.

Siekiamas tikslas buvo maksimalus manevringumas, kuris charakterizuojamas kaip „kolektyvinis kūrimo ir bendravimo žaidimas su ribotais resursais, siekiant pirmiausia patiekti naudingą, veikiančią programų sistemą, o taip pat pasirengti sekančiam žaidimui“.

Siekdami manevringumo autoriai apibrėžė aibę metodikų, turinčių bendrus esminius elementus, tačiau unikalius procesus, šablonus, darbo produktus, roles ir praktikas. Praktiškai tai aibė judriųjų metodikų, kurios pasirodė efektyvios skirtingo tipo projektuose. Siekiamas tikslas suteikti „judrioms“ komandoms galimybę pasirinkti iš metodikų šeimos tą, kuri labiausiai tinka jų projektui ir aplinkai.

Page 24: Programų sistemų inžinerija

Judriųjų ir planais paremtų metodų derinimas1. Nei judriosios metodikos, nei planais paremti metodai nepateikia

sidabrinės kulkos.

2. Judriosios metodikos ir planais paremti metodai turi taikymo sąlygas, kuriose neabejotinai dominuoja prieš kitus metodus.

3. Ateities tendencijos yra link programų sistemų kūrimo, kuriam reikia ir judrumo, ir disciplinos.

4. Atsiranda subalansuoti metodai.

5. Geriau konstruoti savo metodą „į viršų“ nei prisitaikyti jį „žemyn“.

6. Metodai yra svarbūs, tačiau labiau tikėtina rasti sidabrinę kulką užsiimant žmonėmis, vertybėmis, komunikavimu ir vilčių valdymu.

Page 25: Programų sistemų inžinerija

?