Programų sistemų inžinerija
description
Transcript of Programų sistemų inžinerija
Programų sistemų inžinerija
Saulius Ragaišis, VU [email protected]
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ą.
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.
Metodikų paplitimas (2001 metai)Ekstremalus programavimas (angl. eXtreme Programming, XP):
38 %
DSDM (angl. Dynamic Systems Development Method) :19 %
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.
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
Pagrindinės XP vertybės
- bendravimas (angl. communication);
- paprastumas (angl. simplicity);
- grįžtamasis ryšys (angl. feedback);
- drąsa (angl. courage).
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
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
DSDM proceso struktūra
Taikymotyrimas
Verslo analizė
Funkcinio modelioiteracija
Projektavimo irkonstravimo iteracija
Realizavimas
1 5
23
6
74
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.
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.
Pagrindiniai DSDM metodai- laiko skaidymas intervalais (angl. timeboxing),
- reikalavimų prioritetizavimas (angl. prioritization)
- prototipavimas (angl. prototyping)
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.
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).
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.
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.
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). .
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
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.
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ą.
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.
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.
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.
?