1paskaita Įvadas, reikalavimai - dma.vgtu.ltdma.vgtu.lt/psi/psi_1.pdf · –kas tai yra uml™,...
TRANSCRIPT
Programų sistemų inžinerija
1paskaita Įvadas, reikalavimai
Prof. dr. Dalius Mažeika
1
Dėstytojai Teorija Prof. dr. Dalius Mažeika Informacinių sistemų katedros vedėjas
e-paštas [email protected] Tel. 2744917 http://dma.vgtu.lt Pratybos INf – 09 doc.dr. Algirdas Laukaitis ITPf – 10/1 doc.dr. Justas Trinkūnas Skaidrės paruoštos remianti prof. A.Čaplinsko medžiaga ir Jan Sommerville knygos “Software Engineering 9” medžiaga.
2
Paskaitos planas
Įvadas į kursą
– 1 dalis. Trumpai apie kursą
• Tikslai, užduotys, grupinis darbas, tipinės problemos
– 2 dalis. Kurso turinys
– 3 dalis. Trumpas įvadas
3
Apie kursą • Programų sistemų inžinerijos nagrinėjimų objektas –
ilgalaikiai didelės apimties profesionalūs
(ne mėgėjiški) programinės įrangos kūrimo
projektai.
• Ji nagrinėja tokių projektų:
– sistemos sprenžiamų uždavinių formulavimą ir analizę
– sistemos projektavimo metodus
– sistemos testavimo ir našumo vertinimo metodus
– sistemos aptarnavimo ir priežiūros metodus
– vadybos klausimus
– projektų kainos vertinimo būdus 4
Kurso tikslai (1) • Supažindinti kaip galima laiku ir su tam tikrais
resursais kurti aukštos kokybės programų sistemas, nepaisant tų sistemų sudėtingumo ir nuolat užsakovo daromo reikalavimų keitimo: – Supažindinti su specifinėmis didelių programų sistemų
kūrimo problemomis
– Supažindinti su programų sistemų kūrimo stadijomis:
• poreikių analize
• reikalavimų analize ir reikalavimų specifikavimu
• programų projektavimu,
• programų realizavimu (kūrimu, kodavimu),
• programų testavimu 5
Kurso tikslai (tęsinys) – programų priežiūra ir tobulinimu,
– Supažindinti su svarbiausiais programų inžinerijos
metodais, naudojamais kiekvienoje iš stadijų
– Išmokyti kaip taikyti šiuos metodus praktiškai
(konkrečiame grupiniame projekte).
6
Kurso tikslai (tęsinys) • Pateikti šias technines žinias:
– Kas tai yra modeliavimas
– UML (Unified Modeling Language)
– Apie svarbiausius modeliavimo metodus:
• Užduočių modeliavimą
• Objektinį modeliavimą
• Statinį ir dinaminį modeliavimą
7
Kurso tikslai (4) • Pateikti šias technines žinias
– Išmokyti naudotis modeliavimo priemonėmis
– Supažindinti su tuo, kas tai yra tipiniai projektavimo
sprendimai ir kaip jie tiražuojami karkasų forma
• Pateikti šias vadybos žinias
– Supažindinti su programų sistemos gyvavimo ciklo
samprata
• Proceso ir produkto, veiklos skirtumai
• Skirtingi programų gyvavimo ciklo modeliai
8
Užduotys • Grupinis projektas: Grupinis projektas susideda iš keturių
dalių: Verslo tikslų ir poreikių specifikacija; Koncepcinis
verslo modelis; Programų sistemos reikalavimų specifikacija;
Programų sistemos eskizinis projektas.
– Pirmi trys darbai daromi ir ginami kaip laboratoriniai
darbai.
– Kiekviena grupė kiekvieno laboratorinio darbo rezultatus
pristato žodžiu ir raštu.
– Ketvirtas darbas daromas kaip kursinis darbas. Jis taip pat
pristatomas žodžiu ir raštu.
Neapsigynus bent vieno laboratorinio darbo arba kursinio
darbo, egzamino laikyti neleidžiama.
9
Užduotys • Vertinimas: Kiekvienas darbas vertinamas nuo 0 iki 10 balų.
Pažymys bendras visai grupei. Už pristatymą vertinama
individualiai.
• Egzaminas: raštu, konspektais ar knygomis naudotis
neleidžiama.
Vertinimas
– Galutinis pažymys = 0.5 x (0.9 x pažymių už darbus
vidurkis + 0.1 x balai už pristatymus) + 0.5 x pažymys už
atsakymus į bilieto klausimus
– Nesurinkus už atsakymus į klausimus 3 balų (iš 10 galimų)
egzaminas neužskaitomas.
• Kursinis darbas vertinamas atskiru pažymiu. 10
Grupinio projekto tikslai • Išugdyti tokius gebėjimus:
– Analizuoti ir specifikuoti verslo poreikius
– Specifikuoti programų sistemos reikalavimus
– Pertvarkyti reikalavimus į projektinę specifikaciją
– Kurti koncepcinius modelius
– Rengti techninius dokumentus
– Dirbti pagal formalius reikalavimus
– Dirbti grupėse
– Planuoti projektus, planuoti savo laiką, baigti darbus laiku
– Rengti ir daryti prezentacijas, argumentuoti, apginti savo
nuomonę.
11
Grupinis projektas • Grupės dydis: 4 studentai.
• Grupė pati planuoja savo darbą, pasiskirsto užduotis, koordinuoja savo darbą taip, kad laiku būtų padarytas darnus ir vientisas darbas.
• Kiekvienam darbui grupė išsirenka darbo vadovą, kuris ir yra atsakingas už grupės narių darbo
koordinavimą.
12
Grupinis projektas • Grupinis projektas imituoja darbą realioje aplinkoje.
– Instruktorius (laboratorinius darbus vedantis dėstytojas) atlieka
užsakovo vaidmenį. Jis priima (arba atmeta) grupės padarytą
darbą.
– Grupė atlieka vykdytojo (programinę įrangą kuriančios
organizacijos) vaidmenį.
• Imitavimas apima ir terminus. Jūs galite vėluoti, bet už tai
būsite baudžiami.
– Realioje aplinkoje už pavėluotą darbą užsakovas paprastai
sumoka mažiau pinigų. Jums bus mažinamas pažymys: už
savaitę 1 balu, už didesnį vėlavimą – 2 balais. Taigi, turite
griežtus terminus.
13
Grupinis projektas • Projektas susideda iš 4 darbų, kiekvienas darbas
vertinamas atskirai.
• Kiekvienas darbas atitinka tam tikrą projekto stadiją, jo rezultatai pateikiami atskiru dokumentu.
• Dokumentą, prieš pateikdami jo galutinę versiją, galima parodyti dėstytojui (pratyboms darbams skirtu laiku), su juo konsultuotis ir keisti. Tai jokios įtakos pažymiui neturi. Pateikus galutinę redakciją ir pristačius darbą, pažymys nebekeičiamas.
14
Grupinis projektas • Patarimas
– Pirmą reikalaujamo dokumento versiją parengti bent 3
savaitėm prieš terminą, kad turėtumėte laiko jį aptarti su
dėstytoju ir pataisyti.
• Darbų pristatymas vyks pratybų laiku.
• Kiekvienai grupei darbui pristatyti skiriama 10-12
minučių.
• Patarimai kaip rengti prezentaciją pateikti kitoje
skaidrėje.
15
Grupinis projektas – http://www.cs.wisc.edu/~markhill/conference-talk.html
– http://www.cgd.ucar.edu/cms/agu/scientific_talk.html
– http://www.tf.uni-
kiel.de/matwis/amat/elmat_en/kap_1/advanced/t1_2_1.html#_du
m_4
– http://www-ics.acs.i.kyoto-
u.ac.jp/~yy/Papers/HowtoPrepareYourPresentation3.pdf
– http://www.wittcom.com/how_to_prepare_a_presentation.htm
– http://www.cug.org/5-
publications/PresentatioPubsGuides/pages/slide_prep.html
– http://www.lakaw.com/2007/11/how-to-prepare-best-slide-
presentation.html
16
Įrankiai • Laboratoriniai darbai aprašomi panaudojant MS Word
ar kitas teksto redaktorius.
• Į tekstą dedamos UML diagramos gali būti braižomos
panaudojant bet kurią UML redagavimo sistemą,
pavyzdžiui,
• MagicDraw http://www.magicdraw.com/
• Microsoft Visio http://office.microsoft.com/en-us/visio/
• Rational Rose http://www-01.ibm.com/software/awdtools/developer/rose/
17
Kitos naudingos priemonės
Nemokami įrankiai internete
• Poseidon (for UML™)
- http://www.gentleware.com/products.html
• Eclipse (for Java and UML™)
– http://www.eclipse.org/
• UML sistemos: UML sistemų sąrašas
– http://en.wikipedia.org/wiki/List_of_UML_tools
• Use Case Map Navigator (for URN/UCM)
– http://www.usecasemaps.org/tools/ucmnav/index.shtml
18
Kurso programa • Įvadas į programų sistemų inžineriją (PSI)
– Menas, amatas, mokslas ir inžinerija
– Sistemos ir sistemų inžinerija
– Verslo inžinerija
– Organizacijų sistemų inžinerija
– Informacinių sistemų inžinerija
– Programinė įranga, programų sistemos, programų sistemų
inžinerija
21
Kurso programa • Įvadas į programų sistemų inžineriją
– Chroniška programavimo krizė
– Priklausomybių modelis
– Programinės įrangos kūrimas pramoniniais metodais
• Programinės įrangos kūrimas kaip pramonės šaka
• Pramoninis produkto pobūdis
• Darbo organizavimas
• Projektavimas, našumas, masinė gamyba, kokybės kontrolė
• Standartai
22
Kurso programa • Įvadas į programų sistemų inžineriją
– Programinės įrangos kūrimas pramoniniais metodais
• Darbas pagal sutartis, dokumentavimas
• Technologinis procesas ir proceso inžinerija
• Projekto vadyba
• Kokybės užtikrinimas
• Esamų komponentų naudojimas
• Kiti aspektai
– Kodėl programų sistemų inžinerija neišsprendžia visų
praktinių problemų
23
Kurso programa • Įvadas į programų sistemų inžineriją (PSI)
– PSI kaip studijų disciplinos turinys
– PSI procesai ir artefaktai
– PSI idealizacijos
– PSI principai ir paradigmos
• Turinių atskyrimas, dekompozicija, juodoji dėžė, abstrakcija, unifikavimas, struktūrinimas, atvirumas, interfeiso komfortiškumas, metaforizavimas, reaktyvumas
• Kūrimas “iš viršaus žemyn”, kūrimas “iš apačios aukštyn”, riešuto paradigma, iteracinė paradigma, evoliucinio kūrimo paradigma, komponentinė paradigma, programų šeimų inžinerija, karkasai, sintezės paradigma
24
Kurso programa
• Įvadas į reikalavimų inžineriją
– Poreikių analizė
– Operaciniai poreikiai (vartotojo reikalavimai)
– Kaip yra nustatomi operaciniai poreikiai
• Misija, vizija, silpnųjų ir stipriųjų pusių analizė, išorinė ir
vidinė analizė, verslo sėkmės matai, verslo tobulinimo
strategijos, verslo procesų reinžinerija, tikslų medis,
operaciniai poreikiai, vartotojo reikalavimai, sistemos
naudojimo scenarijus, veiksmų planas, įgyvendinamumo
analizė, konteksto analizė ir konteksto diagrama, sistemos
teikiamos naudos diagrama
25
Kurso programa
• Modeliavimas ir UML – Ką vadiname modeliu, abstraktieji modeliai, kam reikia
modelių, modelių lygmenys, kas vaizduojama modelyje;
– Kas tai yra UML™, diagramos sistemos elgsenai aprašyti, diagramos sistemos statinei struktūrai aprašyti, diagramos sistemos dinamikai aprašyti, diagramos sistemos realizacijai aprašyti.
26
Kurso programa • Užduočių (sistemos panaudojimo būdų) modeliavimas
– Ką vadiname užduotimis, ką jos primena, kaip organizuojama
užduočių visuma, kaip užduočių modeliavimas įterpiamas į
reikalavimų inžinerijos procesą ir kaip jos aprašomos
reikalavimų specifikacijoje, užduočių modeliai, pirminio
agento vaidmuo, antriniai agentai, vidiniai agentai, už ką
atsako agentas, pirminio agento tikslas, atkuriamieji veiksmai,
sąveikos, sąveikų sekos ir scenarijai, užduoties galiojimo
sritis, užduočių modelių hierarchijos, šablonai užduotims
aprašyti, scenarijaus “sprogimas”, visų su viena užduotimi
susijusių scenarijų susiejimas į vieną visumą.
27
Kurso programa • Reikalavimų inžinerija
– Ką vadiname reikalavimu, reikalavimų nustatymas, reikalavimų rūšys, dėl ko verta formuluoti reikalavimus, gerai suformuluoto reikalavimo savybės: abstraktumas, išsamumas, tikslumas, vienareikšmiškumas, patikrinamumas, įgyvendinamumas, integruojamumas, lokalizuojamumas, trasuojamumas, unikalumas, glaustumas, suprantamumas
– Funkciniai ir nefunkciniai reikalavimai, dalykinis ir papildomas funkcionalumas, kaip formuluoti funkcinius reikalavimus, funkcinių reikalavimų specifikavimas, programų sistemos korektiškumas.
– Interfeiso ribojimai: užduočių formulavimo kalba, sąveikos reikalavimai, naudojimo paprastumas, naudojimo patogumas, ergonominiai reikalavimai
28
Kurso programa • Reikalavimų inžinerija
– Veikimo ribojimai: tikslumas, patikimumas, gyvybingumas,
robastiškumas, našumas
– Ekonominiai ribojimai: diegiamumas, aptarnaujamumas,
prižiūrimumas, tiražuojamumas
– Politiniai ribojimai: duomenų ir programų apsauga.Teisiniai
ribojimai.
– ISO 9126 standartas.
– Reikalavimų anotavimas.
– Reikalavimų specifikacija, gerai parašytos specifikacijos savybės
29
Kurso programa
• Dalykinės srities analizė – Dalykinės srities analizė. Analizės “iš viršaus žemyn” metodas.
Sisteminis analitikas. Jo funkcijos.
– Šiuolaikinis duomenų apdorojimas. Funkcijų analizė. Procesų analizė. Užduočių analizė. Duomenų analizė.
– Interviu. Interviu tipai. Interviu sudėtinės dalys. Interviu tikslai. Rekomendacijos. Iš ko imti interviu? Kodėl būtina dokumentuoti interviu.
– Telefoninis interviu. Elektroninio pašto panaudojimas. Fokuso grupės. Apsilankymai darbo vietose. Kolektyvinis projektavimas ir kolektyvinė reikalavimų analizė. Prototipai.
– Reikalavimų vertinimas. Darnos analizė. Peržiūros.
30
Kurso programa
• Programų sistemų projektavimas ir testavimas – Programų sistemos skaidymas į dalis. Sistemos hierarchija. Verslo
modelio vaidmuo sistemos projektavime. Koncepcinis projektavimas. Eskizinis projektavimas. Detalusis projektavimas.
– Programų sistemos architektūra. Coad & Yourdon architektūra.
– Sistemos dekomponavimas:funkcinis dekomponavimas, objektinis dekomponavimas (OOSR, OOSD), funkcinis projektavimas ir objektinis projektavimas, paslaugomis grindžiama dekompozicija, užduotimis grindžiama dekompozicija, funkcinis projektavimas ir užduotimis grindžiamas projektavimas..
– Reikalavimų lokalizavimas, nuleidimas žemyn ir trasavimas. Interfeisų nustatymas. Reikalavimų verifikavimas ir vertinimas (peržiūra,inspektavimas)
31
Kurso programa • Programų sistemų projektavimas ir testavimas
– Projektavimo kokybės atributai: rišlumas, sankiba, sankiba ir paveldėjimas, projekto suprantamumas, projekto adaptyvumas, projekto adaptyvumas ir paveldėjimas
– Testavimas ir derinimas. Testavimo stadijos. Reikalavimai ir testavimas. Padengimas testais.
• Programų sistemų gyvavimo ciklo modeliai
– Programų sistemų gyvavimo ciklo modeliai (PSGCM): samprata, “koduok ir atiduok” modelis, krioklio modelis, prototipų naudojimas, išmetamieji prototipai, evoliucinis modelis, greitojo dalykinių programų kūrimo modelis, grupinio dalykinių programų kūrimo modelis, “sinchronizuok ir stabilizuok” modelis, pažingsninio kūrimo modelis, ekstremalusis programavimas, spiralinis modelis, formalaus sistemos kūrimo modelis, pakartotinas panaudojamumas, PSGCM reikalavimai.
32
Literatūra • Vieno vadovėlio kursui nėra.
• Albertas Čaplinskas. Laboratorinių ir kursinio
darbų reikalavimai (Kursas: Programų sistemų
inžinerija). VGTU, 2009.
• Jan Somerville. Software Engineering.
Edition 9. 2011.
33
2 tema 34
Rekomenduojama literatūra • Ian Sommerville. Software engineering, 9 edition,
Addison Wesley; 2010.
– Vienas iš populiariausių (ir naujausių) PSI vadovėlių, kuriame 864 puslapiuose nagrinėjami (nors ir gana trumpai) beveik visi PSI aspektai, taip pat ir tie, kurie mūsų kurse nėra aptariami (aspektinė paradigma, paslaugų inžinerija ir kt.).
• Skaidres (8 leidimo) galima rasti http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/.../PPT/ch14.ppt
2 tema 36
Rekomenduojama literatūra • Martin Fowler, Kendall Scott. UML Distilled.
Applying the Standard Object Modeling Language.
3rd edition, Addison-Wesley, 2003
– Pagrindinis šios knygos privalumas - trumpas ir gerai
pateiktas UML pagrindinių ypatumų ir kalbos
panaudojimo programų sistemų kūrimo procese aprašas.
– Aprašyti visi svarbiausieji UML diagramų tipai: paskirtis,
žymėjimai, notacija
• Yra vertimas į rusų kalbą. Skaidres galima rasti:
http://lyle.smu.edu/~devans/4345.html
2 tema 38
Rekomenduojama literatūra • Joseph Schmuller. Sams Teach Yourself UML in 24
Hours, Complete Starter Kit. 3rd edition, 2004
– Pateiktos 24 paskaitos, žingsnis po žingsnio aiškinančios
UML diagramų paskirtį ir sintaksę
– Daugiau kaip 50 000 žmonių mokėsi UML iš šios knygos
(taip teigia leidykla)
• Skaidrės:
http://www.cs.montana.edu/courses/351/currentLectures/CS351-
Uml.pdf
• http://gemas.msh-paris.fr/dphan/laLonde/docs/jpMullerUml-
DynamicModel.pdf
2 tema 40
Rekomenduojama literatūra • Jos Warmer, Anneke Kleppe. Object Constraint Language,
The: Getting Your Models Ready for MDA. Addison-Wesley
Professional, 2003
– Aiškina, kaip UML diagramas papildyti ribojimais OCL kalba, kaip
generuoti iš tokių diagramų Java kodą ir kaip OCL kalba aprašyti
transformacijas, reikalingas dirbant pagal MDA (model driven
architecture) metodiką
– Antrąją knygos dalį sudaro OCL kalbos žinynas (OCL išraiškų
kontekstas, basiniai elementai, vartotojo apibrėžti tipai, kolekcijos) • Skaidrės: www.csee.umkc.edu/~leeyu/class/CS590L-04/Quiz/OCL.pdf
• www.cs.bgu.ac.il/~oosd051/uploads/Lior-Limonad...OCL/OCL.ppt
• wire.cesar.org.br/slides/RamalhoProjectMODELOG.ppt
• conferences.embarcadero.com/article/.../32442_09301219_S.PPT
2 tema 42
Rekomenduojama literatūra • Grady Booch, James Rumbo, Ivar Jacobson. The
Unified Modeling Language. User Guide. Addison-
Wesley, 1999
– Bazinių UML kalbos savybių vadovėlis, parašytas tos
kalbos autorių
– Apima statinį, dinaminį ir architektūros modeliavimą
• Galima rasti skaidres: http://courses.softlab.ntua.gr/softeng/Tutorials/
2 tema 44
Rekomenduojama literatūra • Wendy Boggs, Michael Boggs. Mastering UML
with Rational Rose. SYBEX, 1999
– Skirtas asmenims, turintiems programavimo Visual Basic, C++, Java ar kitomis programavimo kalbomis patirtį
– Aprašo konkretaus įrankio (Rational Rose) naudojimą
– Akcentuojami kodavimo klausimai, pateikta daug praktinių
pavyzdžių • Skaidres http://cc.ee.ntu.edu.tw/~farn/courses/SE/
• http://ntur.lib.ntu.edu.tw/bitstream/246246/2006092712292291459
3/1/rationalrose.pdf
2 tema 46
Rekomenduojama literatūra • Stephen R. Schach. Object-Oriented and
Classical Software Engineering. 6th edition,
McGraw-Hill Higher Education, 2005
– Įvadinis programų sistemų inžinerijos kursas
– Įveda bazines sąvokas, nagrinėja tiek tradicines,
tiek ir objektines programų sistemų inžinerijos
metodikas
2 tema 48
Rekomenduojama literatūra • Stephen R. Schach. Classical and Object-Oriented Software
Engineering with UML and Java. 4th edition, McGraw-Hill Higher Education, 1999
– Įvadas į programų sistemų inžinerijos procesą (sistemų kūrimo technologiją)
– UML nagrinėjama labai paviršutiniškai, ryšys su Java iš tiesų tik deklaruojamas (nieko naudingo šiuo klausimu knygoje pateikta nėra)
• Skaidres galima rasti http://www.mhhe.com/engcs/compsci/schach/javabook.mhtml, http://www.mhhe.com/engcs/compsci/schach5/ppt.mhtml, http://www.cpe.ku.ac.th/~sk/204541/intro-to-software-engineering.PDF
2 tema 50
Rekomenduojama literatūra • Stephen R. Schach. Introduction to Object-
Oriented Analysis and Design with UML and the Unified Process. McGraw-Hill Higher Education, 2004
– Objektiniai PSI metodai įvedami tiesiogiai, nesiejant jų su tradiciniais metodais, nereikalaujama nei Java, nei C++ žinojimo
– UML vartojama visiems knygoje pateiktiems pavyzdžiamas aprašyti.
2 tema 52
Rekomenduojama literatūra • Alistair Cockburn. Writing Effective Use Cases.
Addison-Wesley, 2000 – Labai svarbi knyga. Dėmesys sutelktas į užduočių modeliavimą
tekstiniais aprašais (t.y. UML diagramos nenagrinėjamos)
– Daugybė patarimų, kaip modeliuoti užduotis ir valdyti projektus,
skirtus daug užduočių įgyvendinančioms sistemoms kurti
• Knygą galima rasti
http://seal.ifi.uzh.ch/fileadmin/User_Filemount/Vorlesungs_Folien/SOPRA/SS05/w
euc_extract.pdf
• Skaidrės http://www.wirfs-brock.com/PDFs/Art_of_Writing_Use_Cases.pdf
2 tema 54
Rekomenduojama literatūra • Alistair Cockburn. Agile Software
Development. Addison-Wesley Professional, 2002
– Traktuoja programų sistemų kūrimą daugiau kaip meną negu kaip mokslą.
– Skirta ne tiems, kurie ieško knygos pažingsniui įvedančios į problematiką. Tai daugiau knyga nagrinėjanti praeityje padarytas klaidas ir kalbanti apie tai, kaip tas klaidas reikėtų taisyti.
2 tema 56
Rekomenduojama literatūra • Kurt Bittner, Ian Spence. Use Case Modeling. Addison-
Wesley, 2002
– Aptaria užduoties modelio sampratą ir nagrinėja gero užduočių
modeliavimo ypatumus
– Pagrindinis dėmesys skirtas tam, kaip nustatyti visus veikiančiuosius
asmenis, kurie naudosis kuriama programų sistema, ir kaip aprašyti bei
modeliuoti jų atliekamas užduotis
– Autoriai yra iš Rational Software (šiuo metu IBM padalinys)
• Skaidrės https://cs.senecac.on.ca/~tmckenna/SYS366/sys366_week10-1r.ppt
• https://cs.senecac.on.ca/~tmckenna/SYS366/SYS366-10-2.ppt
• www.nf-rug.com/attachments/CUCD.ppt
2 tema 58
Rekomenduojama literatūra • Mark Priestley. Practical Object-Oriented Design
with UML. 2nd edition. Higher Education, 2004,
ISBN: 0077103939
– Praktinis objektinių sistemų projektavimo UML kalba
įvadas
– Panaudodama pavyzdžius, knyga išsamiai nagrinėja
modeliavimo technikas ir notacijas
– Pateikia pavyzdžius Java kalba
• Skaidrės
http://users.wmin.ac.uk/~priestm/pooduml/support/index.html
2 tema 60
Rekomenduojama literatūra • Dean Leffingwell, Don Widrig. Managing
Software Requirements: A Use Case Approach,
Second Edition. Addison-Wesley, 2003
– Parodo, kaip analitikai ir projektuotojai,
naudodami įvairias užduočių modeliavimo
technikas, gali efektyviai nustatyti kuriamos
programų sistemos reikalavimus
2 tema 62
Rekommenduojama literatūra • Frank Armour, Granville Miller. Advanced Use
Case Modeling: Software Systems. Addison-Wesley, 2001
– Įveda bazines sąvokas, vartojamas nustatant ir modeliuojant užduotis, kurias turi vykdyti kuriama programų sistema
– Aiškina sudėtingoms užduotims modeliuoti reikalingas sąvokas, nagrinėja užduočių modeliavimo proceso diegimo klausimus, viso sistemos gyvavymo ciklo kontekste aptaria įvairius kitus su užduočių modeliavimo susijusius klausimus
2 tema 64
Rekommenduojama literatūra • Daryl Kulak, Eamonn Guiney. Use Cases:
Requirements in Context, Second Edition. Addison-
Wesley, 2003
– Aprašo kaip, panaudojant užduočių modeliavimo technikas,
atskleisti ir apibrėžti kuriamos programų sistemos
reikalavimus.
– Aptaria tipines reikalavimų formulavimo problemas ir
trumpai įveda užduočių modeliavimo tiek tekstinais
aprašais, tiek ir UML diagramomis bazinius elementus.
2 tema 66
Rekommenduojama literatūra • Timothy C. Lethbridge and Robert Laganière. Object-
Oriented Software Engineering: Practical Software Development using UML and Java. McGraw Hill, 2001
– Skaitytojams, mokantiems programuoti objektiškai ir norintiems susipažinti su programų sistemų inžinerijos pagrindais, įskaitant didelių sistemų projektavimą UML kalba
– Apima reikalavimų formulavimą, modeliavimą, tipinius projektavimo sprendimus, projektavimą, architektūras, testavimą ir projektų vadybą.
• Skaidres galima rasti http://www.site.uottawa.ca/school/research/lloseng/
2 tema 68
Rekommenduojama literatūra • Hans van Vliet. Software Engineering, Principles
and Practice, 2nd edition. John Wiley and Sons, 2000
– Vadovėlis, nagrinėjantis didelių sistemų projektavimo
ypatumus, grupinio darbo principus, programų sistemų
architektūras, objektinę analizę ir objektinį projektavimą
– Geras skyrius apie programų sistemų priežiūrą
– Prieduose pateikti kai kurie IEEE programinės įrangos
dokumentavimo standartai
2 tema 70
Rekommenduojama literatūra • Bernd Bruegge, Allen H. Dutoit. Object-Oriented Software
Engineering: Using UML, Patterns and Java. 2nd edition, Prentice Hall, 2003 – Vadovėlis, skirtas objektinės programų sistemų inžinerijos praktiniams
klausimams
– Medžiaga pateikiama nuosekliai, žingsnis po žingsnio, nereikalaujant jokių pradinių žinių
– Mokantis pagal šį vadovėlį, visa studentų grupė (kursas) daro vieną bendrą realų projektą (t.y. dirba pagal kontraktą su realiu užsakovu)
• Skaidres galima rasti http://he-cda.wiley.com/WileyCDA/HigherEdTitle/productCd-0471322083.html
2 tema 72
Rekomenduojama literatūra
• Craig Larman. Applying UML and Patterns. An introduction to Object-Oriented Analysis. Prentice Hall, 2000
– Ne pradedantiesiems. Reikalaujamos žinios: objektinio programavimo patirtis; bazinės objektinių technologijų sąvokos
– Apima reikalavimų formulavimą, analizę, projektavimą ir kodavimą (pagrindinis dėmesys skirtas projektavimui, kuris iliustruojamas ištisiniu, per visą knygą einančiu pavyzdžiu)
– Aptariama daug naujausių mokslo tyrimų programinės įrangos projektavimo srityje rezultatų.
• Skaidres galima rasti http://web.njit.edu/~gblank/cis683/
Rekomenduojama literatūra • I. Jacobson, G. Booch, J. Rumbaugh. The
Unified Software Development Process. Addison Wesley Longman, Inc., 1999
– Unifikuotojo Proceso apžvalga, akcentuojamas modeliavimas UML kalba.
– Aprašyti modernūs programinės įrangos kūrimo standartai.
– Pateikta konkrečių pavyzdžių iš bankininkystės ir inventoriaus apskaitos sričių.
Rekomenduojama literatūra • Per Kroll, Philippe Kruchten. The Rational
Unified Process Made Easy: A Practitioner's Guide to Rational Unified Process. Addison Wesley, 2003
– Glaustas moderniųjų programinės įrangos kūrimo praktikų vadovas
– Aptaria pagrindinius RUP (Rational Unified Process) principus ir parodo kaip juos taikyti įvairaus dydžio projektams
2 tema 78
Rekomenduojama literatūra • Ian Graham. Object-Oriented Methods: Principles
and Practice. 3rd edition. Addison-Wesley
Professional, 2001
– Nuo konkrečios programavimo kalbos nepriklausantis
objektinės metodikos vadovas, kuriame aprašyti naujausi
metodai ir technologijos
– Apžvelgia bazines sąvokas, aptaria objektinio
programavimo, projektavimo ir analizės bei objektinių
duomenų bazių privalumus ir trūkumus
2 tema 80
Rekommenduojama literatūra • Eric J. Braude. Software Engineering: An Object-
Oriented Perspective. John Wiley and Sons, 2001
– Vieno semestro programų sistemų inžinerijos kursas 4 kurso bakalauro arba 1 kurso magistrų studijų studentams
– Derina praktinę patirtį su naujausiais mokslo tyrimais
– Per visą knygą einantis pavyzdys, realizuotas panaudojant IEEE standartus, daug kitų pavyzdžių, padedančių studentams suprasti kokybės veiksnių, geros reikalavimų specifikacijos ir projektavimo bei projektų vadybos metodų svarbą.
2 tema 82
Rekomenduojama literatūra • Carlo Ghezzi, Mehdi Jazayeri and Dino
Mandrioli. Fundamentals of Software Engineering.
2nd edition, Pearson Education (Addison Wesley),
2003
– rinktiniai, pagilinti programų sistemų inžinerijos
skyriai, apimantys formalaus ir neformalaus programų
sistemų kūrimo principus ir metodus
• Studentams skirtą medžiagą galima rasti
http://www.infosys.tuwien.ac.at/se-book/
2 tema 84
Rekommenduojama literatūra • Ali Behforooz and Frederick J.Hudson.
Software engineering fundamentals, Oxford University Press, 1996.
– Nagrinėja programų sistemų kūrimą kaip inžinerinį procesą; apibrėžia programinės įrangos kokybės matus (atributus), parodo kaip matuoti programų sistemų savybes bei kaip panaudoti matavimų rezultatus, kuriant programų sistemas.
Programų inžinerija
• Išsivysčiusių šalių gyvenimas neatsiejamas nuo
programų sistemų.
• Programų pagalba valdomi veiklos procesai, gamybos
procesai, įrenginiai ir t.t.
• Programų inžinerija siejama su teorija, metodais ir
įrankiais, skirtais profesionaliam programų kūrimui,
siekiant atlikti projektą laiku ir už nustatytą kainą.
Programinė įranga
• Programinė įranga nesusinešioja, bet blogėja
• Programinė įranga projektuojama, bet negaminama
• Programinė įranga yra produktas ir tuo pačiu priemonė informacijos gavimui
• Vartotojai programinę įrangą vertina tik pagal tai ar ji išpildo jų lūkesčius ir ar padeda lengviau spręsti problemas
• Programuotojai yra morališkai įsipareigoję kurti patikimą ir draugišką žmonėms programinę įrangą
• Programinę įrangą sudaro programos, dokumentacija ir duomenys
• Programinė įrangą projektuoja ir kuria programuotojai
Mitai apie programavimą
• Kad yra puikūs programinės įrangos kūrimo standartai ir automatizavimo priemonės
• Kad parašius programą programuotojo darbas tuo ir baigiasi
• Kad programuotojai su džiaugsmu ir entuziazmu kuria programų dokumentaciją
• Kad visuomet galima paspartinti darbus pritraukus daugiau programuotojų
Programų sistemų kaina
• Programų sistemų kaina dažnai didesnė nei
kompiuterinės įrangos.
• Didesnę programų kainos dalį sudaro programų
palaikymas (priežiūra, ekspoatacija)
• Programų inžinerijos paskirtis – užtikrinti ekonomiškai
naudingą programų kūrimo procesą.
Programų tipai (pagal užsakymą)
1. Bendros paskirties programos:
– Tai savarankiškos programų sistemos (Stand-alone
systems) – parduodamos atskirai ir nepriklausomai (MS
Windows, MS Office, AutoCad, Corel, Acrobat).
– Programos reikalavimų specifikaciją sudaro programų
kūrėjai.
2. Užsakomosios programos
– Programų sistemos sukurtos pagal užsakymą. (eismo
valdymo sistema, lėktuvo bilietų pardavimo sistema,
automobilio kompiuterio valdymo sistema).
– Programos reikalavimų specifikaciją sudaro programų
užsakovai. Jie taip pat apibrėžia pakeitimus.
Programų tipai (pagal panaudojimą)
• Savarankiškos programos (stand-alone)
– Tai programos, kurios veikia lokaliame kompiuteryje, joms nereikalingas komp.tinklas, jose realizuotas pilnas funkcionalumas.
• Interaktyvios tranzakcinės programos
– Tai programos, kurios vykdomos nutolusiame kompiuteryje ir pasiekiamos per PC ar terminalą. Tai apima ir web tipo programos pvz. e-komecija.
• Įterptinės (embedded) sistemos
– Tai programos, kurios valdo aparatūrinius įrenginius. Pagal skaičių – tai gausiausi programų sistemų dalis.
Programų tipai (pagal panaudojimą)
• Grupinio duomenų apdorojimo sistemos
– Tai programos, kurių paskirtis apdoroti didelį duomenų kiekį ir patiekti atitinkamą atsakymą.
• Žaidimai
– Tai programos, naudojamos asmeniniams poreikiams siekiant suteikti sau malonumo.
• Modeliavimas ir simuliacija
– Moksliniams tyrimams skirtos programos, kuriomis mokslininkai modeliuoja fizikinius ar inžinerinius uždavinius.
93
Populiarūs klausimai
94
Klausimai Atsakymai
What is software? Computer programs and associated documentation.
Software products may be developed for a particular
customer or may be developed for a general market.
What are the attributes of good software? Good software should deliver the required functionality
and performance to the user and should be
maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What are the fundamental software
engineering activities?
Software specification, software development,
software validation and software evolution.
What is the difference between software
engineering and system engineering?
System engineering is concerned with all aspects of
computer-based systems development including
hardware, software and process engineering.
Software engineering is part of this more general
process.
Programų charakteristikos
95
Charakteristikos Aprašymas
Palaikymas
(Maintainability) Programinė įranga turėtų būti parašyta taip, kad ją galima būtų keisti, besikeičiančius klientų poreikiams. Šis atributas yra ypač aktualus, nes programinės įrangos pakeitimai yra neišvengiami besikeičiančioje verslo aplinkoje.
Patikimumas ir
saugumas
(Dependability and
security)
Programinės įrangos patikimumas apima įvairias charakteristikas, įskaitant saugumą ir saugą. Patikima programinė įranga neturėtų sukelti fizinės ar ekonominės žalos sistemos gedimo atveju. .
Efektyvumas
(Efficiency) Programinė įranga neturėtų neracionaliai naudoti sistemos išteklius: atmintį, procesorių.
Priimtinumas
(Acceptability) Programinė įranga turi būti priimtina vartotojams, kuriems ji sukurta. Tai reiškia, kad ji turi būti suprantama, patogi naudoti ir suderinama su kitomis sistemomis.
Programų inžinerija
• Programų inžinerija – tai inžinerijos šaka, kuri apibrėžia visus programų kūrimo aspektus – nuo sistemų specifikavimo iki palaikymo ir tobulinimo.
• Inžinerinės disciplinos savybės:
– Naudoja teorines žinias ir metodus problemų sprendimui, įvertinant organizacinius ir finansinius apribojimus.
• Programų inžinerija apima visus programų kūrimo aspektus:
– Techninius aspektus
– Programų kūrimo metodus ir įrankius
– Projektų valdymą 96
Programų gamybos proceso ciklas
• Programų specifikavimas
– užsakomas ir inžinierius apsibrėžia ką programa turi daryti ir nustato apribojimus programos viekimui.
• Programų kūrimas
– programos projektuojamos ir programuojamos.
• Programų vertinimas ir patvirtinimas
– tikrinama ar programos ar atitinka užsakovo reikalavimus
• Programų tobulinimas, evoliucionavimas
– programos modifikuojamos pagal naujus užsakovo ar rinkos poreikius.
97
Programų inžinerijos naudojimas
• Nėra vieno universalaus programų kūrimo proceso ar metodikos tinkančio visiems programų kūrimo atvejams.
• Programų inžinerijos metodai ir įrankiai naudojami priklausomai nuo programos tipo, naudotojų reikalavimų, programuotojų įmonės kvalifikacijos ir
brandumo.
99
Programų inžinerijos pagrindai
• Programų inžinerijos fundamentalūs principai, naudojami visose programų sistemose, nepriklausomai nuo jų kūrimo metodų:
– Programos turi būti kuriamos remiantis valdomu ir suprantamu kūrimo procesu.
– Patikimumas ir greitaveika yra svarbi visoms programoms.
– Reikalavimai programai ir reikalavimų specifikacija turi būti aiškūs ir suprantami (turime supranti, ką programa turi daryti).
– Jei galima, reikia modifikuoti gerai veikiančias egzistuojančias programas, nei kurti naujas.
Įvado apibendrinimas
• Programų inžinerija yra inžinerijos disciplina, kuri apima visus programinės įrangos gamybos aspektus.
• Esminiai programų atributai – galimybė keisti, patikimumas ir saugumas, efektyvumas, priimtinumas.
• Pagrindinės programų gamybos proceso veiklos: specifikavimas, kūrimas, vertinimas, tobulinimas.
• Fundamentiniai programų inžinerijos principai taikomos visoms programų sistemoms.