1. Program 迭 in転inerija Programins 眺rangos projektavimas Funkcinis ir objekti邸kai orientuotas projektavimo metodai
2. Turinys (1) Funkcinis projektavimas Funkcinio projektavimo metodologija ir procesas Duomen迭 sraut迭 diagramos Strukt笛rins diagramos Duomen迭 転odyno sudarymas
3. Turinys (2) Objekti邸kai orientuotas projektavimas Objekti邸kai orientuoto projektavimo metodologija ir procesas Objekti邸kai orientuoto projektavimo pavyzdys Funkcinio ir objekti邸kai orientuoto projektavimo metod迭 palyginimas
5. Funkcinio projektavimo metodologija (1) Funkcinio projektavimo metodologija pagr眺sta programos dekompozicija 眺 rinkin眺 tarpusavyje sveikaujani迭 funkcij迭, 眺skaitant sistemos b笛sen, kurios informacija jos dalinasi (vidin funkcij迭 b笛senos informacija yra palaikoma tik j迭 vykdymo metu)
6. Funkcinio projektavimo metodologija (2) Funkcinio projektavimo atveju algoritmas saugomas paioje funkcijoje, o sistemos b笛senos informacija 転inoma visiems programos komponentams
7. Funkcinio projektavimo taikymas Funkcinis projektavimo metodas yra efektyviausias projektuojant sistem, kur saugomos informacijos kiekis apie jos b笛sen minimalus ir yra ai邸kus informacijos dalijimasis tarp jos komponeni迭 Kai kuriose situacijose tokia architekt笛ra kelia problem迭, nes galimi atvejai, kuomet kuri nors funkcija pakeiia sistemos b笛sen taip, kaip kitos funkcijos to nesitiki
8. Funkcinio projektavimo procesas Duomen迭 sraut迭 projektavimas. Jis leid転ia atskleisti, kaip vyksta duomen迭 mainai tarp sistemos funkcij迭, ir kaip jos 眺jimo duomenis transformuoja 眺 i邸jimo duomenis Strukt笛rin dekompozicija. Pavaizduoja sistemos funkcij迭 hierarchij, pradedant nuo auk邸iausio lygio funkcij迭 ir baigiant 転emiausio lygio funkcijomis Detalus projektavimas. Jo metu i邸samiai apra邸omos projektavimo metu i邸skirtos sistemos dalys ir j迭 tarpusavio ssajos
10. Duomen迭 sraut迭 projektavimas Duomen迭 sraut迭 projektavimo metu yra modeliuojamos funkcins transformacijos, kurios gautus 眺jimo duomenis transformuoja 眺 pageidaujamus i邸jimo duomenis
11. Duomen迭 sraut迭 diagramos Duomen迭 sraut迭 projektavimo rezultatai yra atvaizduojami duomen迭 sraut迭 diagramomis Duomen迭 sraut迭 diagramos yra patogus ir intuityviai suvokiamas sistemos atvaizdavimo b笛das
12. Duomen迭 sraut迭 diagramos notacija Diagramos elementas Elemento apra邸ymas Funkcija, kuri paveria 眺jimo duomenis 眺 i邸jimo Duomen迭 saugykla Vartotojo sveika su sistema, kurios metu pateikiami 眺jimo duomenys arba gaunami i邸jimo duomenys Duomen迭 srauto kryptis and; or Logins i邸rai邸kos, kurios skirtos susieti duomen迭 srautus, kuomet daugiau negu vienas i邸 j迭 gali b笛ti 眺jimo arba i邸jimo duomenimis
13. Pavyzdys Panagrinkime ataskait迭 generavimo program: Vartotojas programai nurodo diagramos pavadinim, o ataskait迭 generatorius suranda visas esybes, priklausanias nurodytai diagramai, ir j迭 apra邸ymus duomen迭 転odyne Atrinkus vis reikiam informacij, sugeneruojama ataskaita
15. Duomen迭 sraut迭 diagramos rezultatas Duomen迭 sraut迭 diagramos parodo duomen迭 transformacijas, taiau nesi笛lo, kaip reikt迭 jas realizuoti Jomis apra邸yta sistema gali b笛ti realizuota kaip viena programa, sudaryta i邸 funkcij迭 ir proced笛r迭, arba kaip visa eil tarpusavyje sveikaujani迭 program迭
17. Strukt笛rin dekompozicija Strukt笛rin dekompozija leid転ia parodyti, kaip kuri nors viena funkcija yra realizuota kit迭 funkcij迭, i邸 kuri迭 ji yra sudaryta ir kurias i邸kvieia vykdymo metu, pagalba
18. Strukt笛rins diagramos Strukt笛rins dekompozijos rezultatams atvaizduoti naudojamos strukt笛rins diagramos, kuriose pavaizduota sistem sudarani迭 funkcij迭 hierarchija, i邸 kurios matyti, kaip viena funkcija i邸kvieia kitas
19. Strukt笛rins diagramos notacija Diagramos elementas Elemento apra邸ymas Sistemos funkcija Funkcij迭 susiejimo ry邸ys 町jimo ir i邸jimo duomenys (parametrai arba bendri kintamieji) Duomen迭 saugykla Vartotojo 眺vedami duomenys
20. Strukt笛rins diagramos sudarymas Paprastai duomen迭 sraut迭 diagrama yra paveriama 眺 strukt笛rin diagram Tai nra automatinis procesas jis reikalauja projektuotojo 眺転valgumo ir k笛rybi邸kumo
21. Strukt笛rins diagramos sudarymo taisykls (1) Dauguma verslo sistem迭, kurioms funkcinis projektavimas yra pats tinkamiausias, yra sudarytos i邸 trij迭 dali迭: duomen迭 眺vedimo, apimanio j迭 kontrol ir tikrinim duomen迭 apdorojimo duomen迭 i邸vedimo (da転niausiai ataskaitos pavidalu) arba j迭 i邸saugojimo 眺 fail
22. Strukt笛rins diagramos sudarymo taisykls (2) Jeigu reikalinga duomen迭 kontrol, j realizuojanios funkcijos priskiriamos duomen迭 眺vedimo funkcijoms Atitinkamai ataskait迭 formavimo, saugojimo 眺 failus ir pan. funkcijos turi b笛ti priskirtos duomen迭 i邸vedimo funkcijoms
23. Strukt笛rins diagramos sudarymo taisykls (3) Kiekviena funkcija turi atlikti tik vien u転duot眺 ir daugiau nieko Kiekvienas strukt笛rins diagramos mazgas gali turti ne daugiau 7 jam pavald転i迭 mazg迭 Jeigu mazgas teturi vien pavald迭 mazg, tai rei邸kia, kad pastarasis negali b笛ti atskira funkcija Jeigu mazgas turi labai daug jam pavald転i迭 mazg迭, vadinasi, sistema i邸skaidyta per smulkiai
27. Detalus projektavimas Detalaus projektavimo metu apra邸oma kiekviena sistemos funkcija: jos algoritmas, 眺jimai ir i邸jimai Detalus projektavimas padeda i邸ry邸kinti duomen迭 sraut迭 ir strukt笛rini迭 diagram迭 spragas, todl jos 邸iame etape da転nai yra modifikuojamos
28. Duomen迭 転odynas Funkcij迭 apra邸ymai yra talpinami 眺 duomen迭 転odyn, kuris leid転ia i邸vengti to paties funkcijos vardo panaudojimo kelis kartus ir atskleisti skaitytojams, kaip projektuotojas 眺sivaizduoja b笛simos sistemos strukt笛r Duomen迭 転odynuose gali b笛ti saugomi tiek trumpi, neformal笛s funkcij迭 apra邸ymai, tiek ir detalus funkcij迭 apib笛dinimas kokia nors projektavimo apra邸ymo kalba
29. Ataskait迭 generatoriaus duomen迭 転odyno i邸trauka Esyb Tipas Apra邸ymas Diagramos vardas STRING Diagramos vardas, jai priskirtas projektuotojo 町vesti diagramos vard FUNCTION 町jimas: Diagramos vardas Funkcija: funkcija sveikauja su vartotoju tam, kad jis galt迭 眺vesti diagramos, kurios esybi迭 informacijos ataskait jis nori gauti, vard I邸jimas: Diagramos vardas
31. Objekti邸kai orientuota analiz, projektavimas ir programavimas (1) Objekti邸kai orientuota analiz (OOA), projektavimas (OOP) ir programavimas (OOPRG) yra tarpusavyje susijusios, bet ne tos paios svokos
32. Objekti邸kai orientuota analiz, projektavimas ir programavimas (2) OOA metu sudaromas objekt迭, priklausani迭 nagrinjamai dalykinei sriiai, modelis OOP metu sudaromas objekti邸kai orientuotos sistemos (P町) modelis, pagal kur眺 bus realizuoti P町 keliami reikalavimai OOPRG metu, naudojant pasirinkt OO programavimo kalb (C++, Java ar kt.), realizuojamas OOP metu sudarytas sistemos modelis
33. OOP metodologija objektai Objektas yra realaus pasaulio esybs abstrakcija Objektai yra nepriklausomi vienetai, kuri迭 b笛sena ir realizacijos detals yra paslptos nuo kit迭 objekt迭 (inkapsuliacija) Sistemos funkcionalumas i邸rei邸kiamas objekt迭 teikiamomis paslaugomis (metodais) Objektai tarpusavyje sveikauja 転inui迭 pagalba
34. OOP metodologija objekt迭 klass Objektai yra skirstomi 眺 klases Tai paiai klasei priklausantys objektai pasi転ymi tomis paiomis savybmis (atributais ir metodais) Tarp objekt迭 klasi迭 gali egzistuoti paveldjimo ry邸ys: vaiko klass objektai paveldi visas tvo klass objekto savybes bei turi papildomas savo savybes
35. OOP procesas Apibr転iamas sistemos veikimo kontekstas Sudaroma sistem sudarani迭 objekt迭 klasi迭 diagrama Sukuriami reikalingi statiniai ir dinaminiai modeliai ir/arba apra邸ai, apib笛dinantys sistem sudaranias klases
37. Panaudojimo atvej迭 diagramos Panaudojimo atvej迭 diagramos vaizduoja sistemos vartotojus ir sistemos jiems teikiamas funkcijas
38. Pavyzdys (1) Nagrinsime adres迭 knyguts program, kurioje saugomas kontakt迭 sra邸as Apie kiekvien kontakt galima su転inoti toki informacij: vard, pavard, adres, 邸al眺, miest, pa邸to indeks ir telefono numer眺 Turi b笛ti galimyb pridti nauj kontakt, redaguoti jau esani迭 kontakt迭 informacij (i邸skyrus vard ir pavard) bei pa邸alinti kontakt
39. Pavyzdys (2) Turi b笛ti galima r笛邸iuoti kontakt迭 sra邸: abcls tvarka pagal vard ir pavard pagal pa邸to indeks Turi b笛ti galimyb atsispausdinti kontakt迭 sra邸
40. Pavyzdys (3) Turi b笛ti galima: sukurti nauj adres迭 knygut atidaryti jau esam adres迭 knygut u転daryti darbin adres迭 knygut u転saugoti adres迭 knygutje atliktus pakeitimus, jei j迭 buvo Vartotojui turi b笛ti galimyb dirbti su keletu adres迭 knygui迭, kiekvien j迭 rodant atskiruose languose
48. Funkcinio projektavimo privalumai ir tr笛kumai Funkcinis projektavimas leid転ia geriau atskleisti sistemos funkcionavim, taiau skaitytojui suteikia ma転ai informacijos apie esybes, kuriomis manipuliuoja sistema
49. Objekti邸kai orientuoto projektavimo privalumai ir tr笛kumai Objektinis projektavimas leid転ia labai detaliai apra邸yti sistemos naudojamas esybes, lengviau pasiduoda modifikavimui Taiau objektinis projektavimas neleid転ia taip detaliai atskleisti sistemoje vykdom迭 proces迭, kaip funkcinis projektavimas