1paskaita Įvadas, reikalavimai - dma.vgtu.ltdma.vgtu.lt/psi/psi_1.pdf · –kas tai yra uml™,...

101
Programų sistemų inžinerija 1paskaita Įvadas, reikalavimai Prof. dr. Dalius Mažeika [email protected] 1

Upload: phungkiet

Post on 11-Nov-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

Programų sistemų inžinerija

1paskaita Įvadas, reikalavimai

Prof. dr. Dalius Mažeika

[email protected]

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

Klausimai?

19

Kurso turinys

20

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 35

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

37

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

39

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

41

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/

43

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

45

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

47

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

49

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 51

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

53

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 55

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 57

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 59

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 61

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 63

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 65

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 67

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 69

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 71

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/

2 tema 73

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ų.

2 tema 75

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 77

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 79

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 81

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 83

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.

Įvadas

85

Programų kūrimo projektų realybė

86

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ų kūrimo proceso ciklas

98

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.