programavimo inžinerija

60
mmerville 2010 Software Engineering, 8th edition. Chapter 1 Slide Programavimo Inžinerija R. Šeinauskas

Upload: nirav

Post on 07-Jan-2016

122 views

Category:

Documents


0 download

DESCRIPTION

Programavimo Inžinerija. R. Šeinauskas. Komentarai. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 1

Programavimo Inžinerija

R. Šeinauskas

Page 2: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 2

KomentaraiSoftware Engineering verčiamas į lietuvių kalbą kaip- Programinės įrangos inžinerija, Programų sistemų inžinerija,

trumpinama iki Programų inžinerija, dar naudojama- Programavimo inžinerija. Kiekvienas iš šių terminų atspindi tam tikrus veiklos aspektus.

Iš vienos pusės tai kursas apibendrinantis anksčiau įgytas programavimo, programų kūrimo žinias. Iš kitos pusės tai kursas , kuriame pateikiama daug naujų žinių, ypač apie organizacinius ir žmogiškuosius didelių programų sistemų kūrimo aspektus. Laikoma, kad studentai jau moka programuoti, gali sukūrti programinės įrangos sistemas, įsisavinti įvairius programų kūrimo įrankius. Todėl kurse praktiškai nekalbama apie konkrečius techninius aspektus. Kalbama tik apie principus , įdėjas, kurios turi išliekamąją vertę. Kiekvienas įrankis labai greitai, kartais jau jo kūrimo metu pasensta. Principai išlieka ilgiau, nors jie taip pat keičiasi. Kai kurie aptariami principai yra labai jau bendri ir akivaizdūs po išvardinimo. Bet jie dažnai paraktikoje pamirštami ir prisimenami tik nesekmės atveju. Deja žmonės gaeriausiai mokosi iš savo klaidų. Bet mokantis tik iš savo klaidų nebūtų jokio progreso. Todėl bendrų principų akcentavimas yra naudingas, tikintis , kad kai kuriomis tiesomis bus pasinaudota.

Bendros tiesos ir principai yra išvardinami. Jų neįmanoma išmokti mintinai. Žmogus visuomet įsimena tik dalį išvardintų faktų. Principų neišvardinimas apklausos metu rodo, kad nėra gilesnių žinių apie kiekvieną iš jų ir kad buvo mokomasi mintinai.

Tarptautinės ACM ir IEEE organizacijso iškėlė uždavinį išvardinti žinias kurių reikia profesionaliems programuotojams. Tai buvo vykdoma atliekant projektą Swebok. Toliau skaidrėse išskirta dešimt sričių. Swebok projekte kievienai sričiai išvardintos reikalingos žinios. Kurso medžiaga pagal vadovėlį Ian Sommerville, Software Engineering, 2000 ir remaisi projekte išvardintomis žiniomis.

Page 3: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 3

SWEBOK Adresas:

http://www.computer.org/portal/web/swebok/htmlformat Iki programinės įrangos inžinerijos kurso

Software_Construction Programinės įrangos inžinerijos kurse

Software_Engineering_Process Software_Requirements_Analysis Software_Design

Software_Testing Sofware_Quality_Analysis Software_Engineering_Infrastructure

Software_Evolution_Maintenance

Page 4: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 4

SWEBOK Programinės įrangos projektų valdymo kurse

Software_Engineering_Management Software_Configuration_Management

Page 5: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 5

Paskaitos I1. Programavimo inžinerijos pradmenys                      2. Kūrimo procesas            3. Kritinės sistemos                                 4. Projekto vadyba                                  5. Reikalavimai       6. Architektūros projektavimas             7.  Realaus laiko sistemos 8. Vartotojo sąsajos projektavimas Pirma apklausa 1-8                                   

Page 6: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 6

Paskaitos II                     9. Kritinių sistemų projektavimas            10. Pakartotinis panaudojimas                    11. Programų priežiūra           12. Tikrinimas ir atestavimas                     13. Testavimas                                         14. Darbų kainos įvertinimas                    15. Proceso tobulinimas                            16. Tendencijos                                  Apklausa  9-16    

Page 7: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 7

Įžanga

Programavimo inžinerijos pradmenys (Kurso paskirtis, Swebok projektas, kurso paskaitų struktūra, paskaitos tikslai, paskaitos temos, kokius aspektus apima programavimo inžinerija? ką galima pasakyti apie programinės įrangos kainą? koks yra programavimo inžinerijos tikslas? kas būdinga programinei įrangai? ką apibūdina programinės įrangos krizė? Kokie populiarūs mitai apie programinę įrangą?)

Page 8: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 8

Paskaitos tikslai Pristatyti programavimo inžineriją ir išaiškinti jos svarbą Atsakyti į esminius klausimus apie programavimo

inžineriją Pristatyti etikos ir profesinius klausimus ir paaiškinti kuo

jie yra svarbūs programinės įrangos inžinieriams Paaiškinti kas tai yra socio-techninė sistema ir kodėl

organizacinis sistemos kontekstas įtakoja jos projektavimą ir naudojimą

Page 9: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 9

Apžvelgiamos temos Dažniausiai sutinkami klausimai apie

programavimo inžineriją Etika ir profesinė atsakomybė Socio-techninės sistemos

Page 10: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 10

VISŲ išsivysčiusių šalių ekonomika priklauso nuo programinės įrangos

Vis daugiau ir daugiau sistemų valdo programinė įranga

Programavimo inžinerija apima teoriją, metodus ir priemones profesionaliam programinės įrangos kūrimui

Programavimo inžinerijos išlaidos užima žymią dalį BNP visose išsivysčiusiose šalyse

Programavimo inžinerija

Kokius aspektus apima programavimo inžinerija?

Page 11: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 11

Programinės įrangos kaina sudaro didžiąją sistemos kainos dalį. Personalinio kompiuterio programinės įrangos kaina dažnai yra didesnė nei aparatūrinės įrangos kaina

Programinės įrangos eksploatavimas kainuoja daugiau nei jos kūrimas. Ilgalaikėms sistemoms eksploatavimo kaštai gali būti kelis kartus didesni už kūrimo kaštus

Programavimo inžinerijos tikslas yra programinės įrangos kūrimas su mažiausiomis išlaidomis.

Programinės įrangos kaina

Ką galima pasakyti apie programinės įrangos kainą?

Koks yra programavimo inžinerijos tikslas?

Page 12: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 12

Programinė įranga Šiuo metu programinė įranga pagrindinai yra sukurta vartotojų. 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

Kas būdinga programinei įrangai?

Page 13: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 13

Programavimo krizė Programinės įrangos klaidos yra geriau žinomos

negu sėkmės atvejai Programavimo krizė prognozuota prieš 30 metų taip

niekada ir neįvyko ir programuotojams pavyko sumažinti nesėkmių kiekį bei darbuotojų poreikį

Problemos, kurios kamuoja programuotojus pagrindinai susietos su tinkamu programinės įrangos kūrimu ir jos palaikymu negu kad su gavimu programinės įrangos, kuri funkcionuoja korektiškai

Ką apibūdina programinės įrangos krizė?

Page 14: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 14

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ų

Kokie populiarūs mitai apie programinę įrangą?

Page 15: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 15

Apžvelgiamos temos Dažniausiai sutinkami klausimai apie programavimo

inžineriją (Kas yra programinė įranga? Kas yra programavimo inžinerija? Kuo skiriasi programavimo inžinerija ir kompiuterių mokslas? Kuo skiriasi programavimo inžinerija ir sistemų inžinerija? Kas yra programinės įrangos procesas? Kas yra programinės įrangos proceso modelis? Kokie yra programavimo inžinerijos kaštai? Kokie yra programavimo inžinerijos metodai? Kas yra CASE (Kompiuterizuota programinės įrangos inžinerija) Kokie yra geros programinės įrangos atributai? Kokios esminės problemos yra sprendžiamos programavimo inžinerijoje? Kodėl taip ilgai užtrunka programinės įrangos darbų užbaigimas?)

Etika ir profesinė atsakomybė Socio-techninės sistemos

Page 16: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 16

Dažniausiai sutinkami klausimai apie programavimo inžineriją

Kas yra programinė įranga? Kas yra programavimo inžinerija? Kuo skiriasi programavimo inžinerija ir

kompiuterių mokslas? Kuo skiriasi programavimo inžinerija ir sistemų

inžinerija? Kas yra programinės įrangos procesas? Kas yra programinės įrangos proceso modelis?

Page 17: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 17

Dažniausiai sutinkami klausimai apie programavimo inžineriją

Kokie yra programavimo inžinerijos kaštai? Kokie yra programavimo inžinerijos metodai? Kas yra CASE (Kompiuterizuota programinės

įrangos inžinerija) Kokie yra geros programinės įrangos atributai? Kokios esminės problemos yra sprendžiamos

programavimo inžinerijoje? Kodėl taip ilgai užtrunka programinės įrangos

darbų užbaigimas?

Page 18: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 18

Kas yra programinė įranga? Kompiuterių programos ir su jomis susijusi

dokumentacija Programinės įrangos produktai gali būti kuriami

konkrečiam vartotojui arba bendrai rinkai Programinės įrangos produktai gali būti:

• Bendri – sukurti, parduoti eilei skirtingų vartotojų

• Užsakyti (bespoke) – sukurti, vienam pirkėjui pagal jų specifikaciją

Page 19: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 19

Kas yra programavimo inžinerija ? Programavimo inžinerija yra inžinerijos šaka,

kuri apima visus programinės įrangos gamybos aspektus

Programinės įrangos inžinieriai turėtų taikyti sisteminį ir organizuotą požiūrį į darbą, vartoti tinkamas priemones ir metodus priklausomai nuo sprendžiamos problemos, keliamų apribojimų ir turimų resursų

Page 20: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 20

Kuo skiriasi programavimo inžinerija ir kompiuterių mokslas?

Kompiuterių mokslas apima teoriją ir pagrindus. Programavimo inžinerija apima praktinę

programinės įrangos kūrimo ir naudojimo pusę Kompiuterių mokslo teorijos nėra pakankamai

išsamios, kad būtų tinkamas programavimo inžinerijos pagrindas

Page 21: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 21

Kuo skiriasi programavimo inžinerija ir sistemų inžinerija?

Sistemų inžinerija apima visus kompiuterinių sistemų kūrimo aspektus, įskaitant aparatūrinės įrangos, programinės įrangos ir proceso inžineriją. Programavimo inžinerija yra šio proceso dalis

Sistemų inžinieriai užsiima sistemų specifikacijomis, architektūriniu projektavimu, integravimu ir plėtojimu.

Page 22: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 22

Kas yra programinės įrangos kūrimo procesas?

Eilė veiksmų, kurių tikslas yra kurti ir prižiūrėti programinę įrangą

Bendri veiksmai visuose programinės įrangos kūrimo procesuose:• Specifikacija – ką sistema turėtų daryti ir jos kūrimo

apribojimai.

• Kūrimas - programinės įrangos sistemos projektavimas, gamyba

• Atestavimas ( validation) – tikrinimas, ar programinė įranga atitinka vartotojo poreikius

• Tobulinimas ( evolution) – programinės įrangos keitimas priklausomai nuo poreikių pasikeitimo

Page 23: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 23

Kas yra programinės įrangos proceso modelis?

Supaprastintas programinės įrangos proceso pristatymas, daromas iš tam tikros perspektyvos (tam tikru atžvilgiu)

Proceso perspektyvų pavyzdžiai:• Darbų srautas – veiksmų seka

• Duomenų srautas – informacijos judėjimas

• Rolės/ veiksmo eiga – kas ką daro

Bendri proceso modeliai:• Krintantis (Krioklio)

• Nuolatinio vystymo

• Formali transformacija

• Sistemos surinkimas iš daugkartinio naudojimo elementų

Page 24: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 24

Kokie yra programavimo inžinerijos kaštai?

Apytiksliai 60% kaštų yra kūrimo kaštai, 40% - yra testavimo kaštai. Įprastos programinės įrangos priežiūros kaštai dažnai viršija kūrimo kaštus

Kaštai svyruoja priklausomai nuo kuriamos sistemos tipo ir sistemos atributų reikalavimų, pvz.: Našumas (pajėgumas) ir sistemos patikimumas

Kaštų pasiskirstymas priklauso nuo to, koks yra naudojamas kūrimo modelis

Page 25: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 25

Kokie yra programavimo inžinerijos metodai?

Struktūrinis požiūris į programinės įrangos kūrimą, į kurį įeina sistemos modeliai, žymėjimai, taisyklės, projektavimo patarimai ir vadovavimas procesui

Modelio apibrėžimas• Grafinių modelių, kurie turėtų būti padaryti, apibrėžimas

Taisyklės• Sistemos modeliams taikyti apribojimai

Rekomendacijos• Praktiniai gero projektavimo patarimai

Vadovavimas procesui• Kokius veiksmus atlikti (kokia tvarka)

Page 26: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 26

Kas yra CASE – (programavimo inžinerijos automatizavimas)

Programinės įrangos sistemos, kurių paskirtis yra automatizuoti programinės įrangos kūrimo procesą

Ankstyvoji CASE• Priemonės ankstyvajai reikalavimų ir projektavimo proceso

veiklai automatizuoti

Vėlyvoji CASE• Automatizavimo priemonės programavimui, derinimui,

testavimui, programų priežiūrai

Page 27: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 27

Kokie yra geros programinės įrangos atributai?

Programinė įranga turėtų teikti vartotojui reikiamą funkcionalumą ir greitaeigiškumą, turėtų būti tinkama eksploatavimui (priežiūrai), turėtų kelti pasitikėjimą ir būti efektyvi bei tinkama naudojimui

Tinkamumas priežiūrai• Programinė įranga turi vystytis, kad atitiktų besikeičiančius poreikius. Ji turi

būti parašyta ir dokumentuota taip, kad galėtų būti keičiama be didelių išlaidų. Pasikliautinumas (dependability)

• Programinė įranga turėtų kelti pasitikėjimą. Efektyvumas

• Programinė įranga neturėtų bereikalingai naudoti sistemos resursus Tinkamumas vartotojams

• Programinė įranga turi būti tinkama tiems vartotojams, kuriems ji buvo suprojektuota.

Page 28: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 28

Kokias esminės problemas tenka spręsti programavimo inžinerijoje?

Reikia pajėgti susidoroti su pasenusiomis sistemomis, augančia sistemų įvairove ir su reikalavimais trumpinti sistemų kūrimo laiką.

Pasenusios sistemos• Senos vertingos sistemos turi būti prižiūrimos ir atnaujinamos

Heterogeniškumas (įvairovė)• Sistemos yra paskirstytos ir apima aparatūrinės ir programinės įrangos

junginį

Sistemų kūrimo laikas• Vis dažniau reikalaujama paruošti programinę įrangą per kuo

trumpesnį laiką

Page 29: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 29

Kodėl taip ilgai užtrunka programinės įrangos darbų užbaigimas?

Kūrimo priemonės neveikia taip kaip buvo tikėtasi

Užsakovas reikalauja įvertinti naujus reikalavimus dėl ko tenka daug ką perdaryti

Netikėtai pasikeičia valstybinis reguliavimas Suderinimas su kitoms sistemoms reikalauja

daugiau pastangų negu buvo tikėtasi Projekto rizikos valdymas reikalauja daugiau

laiko negu buvo tikėtasi

Kodėl ilgai užtrunka programinės įrangos kūrimas?

Page 30: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 30

Apžvelgiamos temos Dažniausiai sutinkami klausimai apie

programavimo inžineriją Etika ir profesinė atsakomybė (Kodėl programuotojams

svarbi profesinė atsakomybė ir etika? Kokie yra keturi profesinės atsakomybės aspektai? Kam taikomas etikos kodeksas? Kas sakoma etikos kodekso pratarmėje? Ką sako etikos kodekso principai : visuomenės, klientas ir užsakovas a, produktas, sprendimai, valdymas ,profesija, bendradarbiai, saviugda? Su kokiomis etikos dilemomis susiduriama?)

Socio-techninės sistemos

Page 31: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 31

Profesinė atsakomybė ir etika Programavimo inžinerija turi didesnę

atsakomybę nei vien tik techninių sugebėjimų pritaikymas

Programavimo inžinieriai privalo elgtis garbingai ir etiškai, jei jie nori būti gerbiami kaip profesionalai

Etiškas elgesys yra daugiau nei tik paisyti įstatymų

Kodėl programuotojams svarbi profesinė atsakomybė ir etika?

Page 32: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 32

Profesinės atsakomybės aspektai

Konfidencialumas• Inžinieriai turėtų gerbti užsakovų ar klientų konfidencialumą

nepriklausomai nuo to, ar buvo pasirašytas oficialus konfidencialumo susitarimas

Kompetencija• Inžinieriai turi objektyviai vertinti savo kompetencijos lygį..Jie

neturėtų sąmoningai imtis darbo, kuris yra ne jų kompetencijoje

Kokie yra keturi profesinės atsakomybės aspektai?

Page 33: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 33

Profesinės atsakomybės aspektai

Intelektualinės nuosavybės teisės• Inžinieriai turėtų žinoti vietinius įstatymus, valdančius

intelektualinę nuosavybę, tokią kaip patentai, autorinės teisės ir t.t. Jie turi būti atsargūs užtikrindami, kad užsakovų ir klientų intelektualinė nuosavybė yra apsaugota

Piktnaudžiavimas kompiuteriais• Programavimo inžinieriai neturėtų naudotis techniniais

sugebėjimais piktnaudžiaujant kitų žmonių kompiuteriais. Piktnaudžiavimo kompiuteriais diapazonas labai įvairus : nuo santykinai nežymių (kasdienių) (tarkim žaidžiant su užsakovo kompiuteriu) iki ypač rimtų (virusų platinimo)

Page 34: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 34

ACM/IEEE etikos kodeksas Profesinės bendruomenės JAV bendradarbiauja

kuriant etikos kodeksą Šių organizacijų nariai įstodami pasirašo

praktikos kodeksą Kodeksą sudaro aštuoni principai susiję su

elgesiu ir sprendimais šių žmonių: profesionalių programinės įrangos inžinierių, tuo pačiu praktikų, mokytojų, vadybininkų, prižiūrėtojų ir draudėjų, taip pat šios profesijos praktikantų ir studentų

Kam taikomas etikos kodeksas?

Page 35: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 35

Etikos kodeksas – pratarmė

• Sutrumpinta kodekso versija apibendrina aukštus siekius; punktai, kurie yra pilnoje versijoje, pateikia pavyzdžius ir detales kaip siekiai pakeičia mūsų, kaip programavimo inžinerijos profesionalų veiksmus. Be troškimų, smulkmenos gali tapti varginančios; be detalių, troškimai gali tapti tuščiažodžiavimu, o tuo pačiu, troškimai ir detalės formuoja kodekso visumą

• Programavimo inžinieriai įsipareigoja vykdyti programinės įrangos analizę, specifikavimą, projektavimą, kūrimą, testavimą ir eksploatavimą; pelningoje ir gerbiamoje profesijoje. Atsižvelgiant į jų įsipareigojimus visuomenės sveikatai, saugumui ir gerovei, programavimo inžinieriai turi laikytis sekančių aštuonių principų:

Kas sakoma etikos kodekso pratarmėje?

Page 36: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 36

Etikos kodeksas – principai 1. Visuomenės.

• Programavimo inžinierių veikla turi atitikti visuomenės interesus

2. Klientas ir užsakovas• Programavimo inžinierius turi veikti taip, kad geriausiai atitiktų

kliento ir darbdavio interesus atitinkant visuomenės interesams

3. Produktas• Programavimo inžinieriai turi užtikrinti, kad jų produktai ir

susijusios modifikacijos atitiktų aukščiausius galimus profesionalumo standartus.

Page 37: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 37

Etikos kodeksas – principai 4. Sprendimai

• Programavimo inžinieriai turi išlikti garbingi ir nepriklausomi priimant profesinius sprendimus.

5. Valdymas• Programavimo inžinerijos vadybininkai ir vadovai turi laikytis

etikos principų valdant programinės įrangos kūrimą ir eksploatavimą.

6. Profesija• Programavimo inžinieriai turi stiprinti profesijos garbingumą ir

reputaciją visuomenės akyse.

Page 38: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 38

Etikos kodeksas – principai 7. Bendradarbiai

• Programavimo inžinieriai turi būti sąžiningi ir paslaugūs savo kolegoms.

8. Saviugda• Programavimo inžinieriai turi nuolat tobulinti profesinius

įgūdžius ir tobulinti etikos naudojimą profesinėje praktikoje.

Ką sako etikos kodekso principai : visuomenės, klientas ir užsakovas a, produktas, sprendimai, valdymas , profesija, bendradarbiai, saviugda? Aštuoni klausimai

Page 39: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 39

Etikos dilemos Principiniai nesutarimai su vadovybės vykdoma

politika Jūsų darbuotojas elgiasi neetiškai : išleidžia

kritinio saugumo sistemas ( kurioms saugumas yra vienas svarbiausių atributų) nebaigęs sistemos testavimo

Dalyvavimas kuriant karines ginklų ar branduolines sistemas.

Su kokiomis etikos dilemomis susiduriama?

Page 40: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 40

Apžvelgiamos temos Dažniausiai sutinkami klausimai apie

programavimo inžineriją Etika ir profesinė atsakomybė Socio-techninės sistemos (Kas yra sistema?,

sistemų kategorijos, socio-techninių sistemų charakteristikos, sistemų inžinerijos problemos, programinės įrangos ir sistemų inžinerija, požiūris į sistemą, sistemos modeliavimas, sistemos įsigyjimas, liktinės sistemos,palikimo dilema)

Page 41: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 41

Kas tai yra sistema? Tai tikslingas tarpusavyje susietų komponentų rinkinys,

kurie veikia kartu, tam, kad pasiektų kokį nors bendrą tikslą.

Sistema gali būti sudaryta iš programinės, mechaninės, elektrinės ir elektroninės aparatūrinės įrangos, ir gali būti naudojama žmonių.

Sistemos komponentai yra priklausomi vieni nuo kitų. Sistemos komponentų savybės bei elgsena yra

neatskiriamai susiję

Page 42: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 42

Sistemų kategorijos Techninės kompiuterinės sistemos

• Apima aparatūrą ir programinę įrangą, bet operatoriai ir vykdymo procesai paprastai nelaikomi šių sistemų dalimi

Socio-techninės sistemos

• Apima technines sistemas, procesus bei žmones, kurie sąveikauja su technine sistema. Socio-techninės sistemos yra valdomos organizacine politika ir taisyklėmis

Page 43: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 43

Socio-techninių sistemų charakteristikos

Pasireiškiančios savybės• Tai savybės labiau būdingos visai sistemai, bet priklausančios

nuo sistemos komponentų ir jų ryšių.

Nedeterministiškumas• Ne visuomet sistemos apsprendžia tuos pačius rezultatus,

kadangi jų elgsena dalinai priklauso ir nuo operatorių veiksmų.

Sudėtingas ryšys su organizaciniais tikslais• Sistemos remiamų organizacinių tikslų apimtis priklauso ne tik

nuo pačios sistemos.

Page 44: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 44

Sistemų inžinerijos problemos Didelės sistemos paprastai yra projektuojamos tam, kad

spręstų nei karto dar nespręstas problemas Sistemų inžinerija reikalauja didelio disciplinų

suderinamumo• Beveik neribotos galimybės projektuojant

ekvivalentiškus bet skirtingus (trade-offs) komponentus.

• Bendras nepasitikėjimas ir supratimo stoka inžinerijos disciplinose.

Sistemos turi būti suprojektuotos dirbti daug metų, besikeičiančioje aplinkoje.

Page 45: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 45

Programinės įrangos ir sistemų inžinerija

Programinės įrangos dalis sistemose nuolat didėja. Programinės įrangos valdoma elektronika keičia specialios paskirties sistemas.

Sistemų inžinerijos problemos yra panašios į programinės įrangos inžinerijos problemas.

Deja, sistemų inžinerijoje programinė įranga sukelia daugiausia problemų. Daug didelių sistemų projektų vėlavo dėl programinės įrangos kūrimo problemų.

Page 46: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 46

Požiūris į sistemą Į sistemą nereikia žiūrėti vien tik iš programinės

įrangos pusės; prieš akcentuodami programinę įrangą, reikia aptarti visus sistemos elementus.

Gera sistemų inžinerija prasideda nuo plataus požiūrio ir palaipsniui siaurėja, kol jos techninė dalis tampa suprantama.

Kompleksinės sistemos iš tikrųjų yra sudarytos iš makro-elementų, kurie taip pat yra sistemos, hierarchijos.

Page 47: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 47

Sistemos modeliavimas (atvaizdavimas)

Proceso pagal kurį formuojamas sistemos suvokimas, apibrėžimas.

Pavaizduoti proceso vyksmą ir nustatyti prielaidas, kuriomis remiantis tas vyksmas ir buvo sumodeliuotas.

Aiškiai apibrėžti išorinę ir vidinę modelio informaciją.

Nustatyti visas sąsajas (įskaitant ir išvedamos informacijos) reikalingas supratimui.

Page 48: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 48

Organizacijos/žmonės/sistemos Socio-techninės sistemos yra organizacijos

sistemos skirtos siekti organizacijos ar verslo tikslų

Nesuprantant organizacijos aplinkos, kurioje sistema naudojama, vargu ar sistema bus realiai naudinga verslui bei vartotojams

Page 49: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 49

Sistemos įsigijimo procesas

Choosesupplier

Issue requestfor bids

Choosesystem

Adaptrequirements

Survey market forexisting systems

Let contract fordevelopment

Negotiatecontract

Selecttender

Issue requestto tender

Off-the-shelfsystem available

Bespoke systemrequired

Užsakomosiossistemos

Užbaigtos sistemos

Page 50: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 50

LIKTINĖS SISTEMOS Programinės įrangos sistemos, suprojektuotos

specialiai organizacijai, gyvuoja ilgai. Daug vis dar naudojamų programinės įrangos

sistemų buvo išvystytos prieš daugelį metų, naudojant technologijas, kurios dabar jau paseno.

Šios sistemos vis dar yra labai svarbios verslui, t.y. jos yra būtinos verslui normaliai funkcionuoti.

Jos buvo pavadintos liktinėmis sistemomis.

Kas yra liktinės sistemos?

Page 51: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 51

LIKTINIŲ SISTEMŲ KEITIMAS NAUJOMIS

Verslo požiūriu, liktinių sistemų atsisakyti ir pakeisti jas naujomis (kurios buvo išvystytos naudojant modernią technologiją), gana rizikinga.• Liktinės sistemos retai kada turi išbaigtą specifikaciją. Per savo

gyvavimo laikotarpį, jose gali atsirasti nedokumentuotų pakeitimų.

• Verslo procesai priklauso nuo liktinės sistemos.

• Sistemoje gali būti realizuotos verslo taisyklės, kurios niekur kitur nėra formaliai dokumentuotos.

• Naujos programinės įrangos vystymas yra rizikingas, ir gali būti nesėkmingas.

Page 52: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 52

LIKTINIŲ SISTEMŲ MODIFIKAVIMAS

Sistemos privalo keistis, kad išliktų naudingos. Tačiau dažnai liktines sistemas būna brangu

modifikuoti• Kai nėra nuosekliai programuojama, nes skirtingos dalys būna

realizuotos skirtingų kolektyvų.

• Sistema gali naudoti pasenusią programavimo kalbą

• Sistemos dokumentacija dažnai yra pasenusi

• Sistemos struktūra gali būti sugadinta metai iš metų vykdomų palaikymo procedūrų.

• Gali būti panaudoti veikimo spartos arba atmintinės taupymo optimizavimo metodai, dėl kurių sumažėja suprantamumas.

Page 53: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 53

PALIKIMO DILEMA Liktinę sistemą keisti nauja yra rizikinga ir

brangu. Liktinę sistemą brangu išlaikyti. Firmos turi pasverti kaštus bei riziką, ir gali

nuspręsti ar pratęsti sistemos gyvavimo laiką, naudojant tokius metodus, kaip perprojektavimą.

Apie šiuos metodus bus kalbama vėliau.

Page 54: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 54

Esminiai akcentai Programavimo inžinerija yra inžinerijos šaka, kuri susijusi su visais

programinės įrangos gamybos aspektais Programinė įranga susideda iš sukurtų programų ir su jomis

susijusios dokumentacijos. Esminiai produkto atributai yra tinkamumas eksploatavimui, pasikliautinumas, efektyvumas ir tinkamumas vartotojui. Iš ko susideda programinė įranga ir kokie esminiai produkto atributai?

Programinės įrangos kūrimo procesą sudaro veiksmai, kurie įeina į programinės įrangos produkto kūrimą. Pagrindinai veiksmai yra programinės įrangos specifikavimas, kūrimas ( development) , atestavimas ( validation) ir tobulinimas ( evolution). Kokie pagrindiniai veiksmai sudaro programinės įrangos kūrimo procesą?

Metodai yra organizuoti būdai programinės įrangos kūrimui. Jie apima rekomendacijas proceso eigai, žymėjimus, kuriais reikėtų naudotis, taisykles reguliuojančias sistemos aprašymus ir nuorodas projektavimui.

Kas tai yra programavimo inžinerija?

Ką apima programinės įrangos kūrimo metodai?

Page 55: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 55

Esminiai akcentai CASE ( programinės įrangos projektavimo automatizavimo)

priemonės yra programinės įrangos sistemos, suprojektuotos vykdyti pasikartojančius veiksmus programinės įrangos kūrimo procese, tokius kaip projektavimo diagramų redagavimas, diagramų logiškumo tikrinimas ir sekimas įvykdytų programų testų. Kas tai yra CASE priemonės?

Programavimo inžinieriai yra atsakingi prieš inžinerijos profesiją ir visuomenę. Jie neturėtų susikoncentruoti vien ties techniniais klausimais. Kam atsakingi programavimo inžineriai?

Profesinės visuomenės leidžia elgesio kodeksus, kurie nusako elgesio normas, kurių tikimasi iš jų narių.

Kas leidžia elgesio kodeksus ir ką jie nusako?

Page 56: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 56

Sistemos projektavimas yra sudėtingas! Niekada nebus elementarių atsakymų kaip sukurti sudėtingą sistemą

Nors programinės įrangos kūrėjai neturi visų atsakymų, tačiau gali gerai suprasti požiūrį į sistemą

Disciplinos turi susipažinti su viena kitos pajėgumu ir veikla vietoj to, kad nenoriai bendradarbiautų sistemos inžinerijos procese

Išvados

Page 57: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 57

Esminių akcentų raktiniai žodžiai (Kas tai yra programavimo inžinerija? Iš ko

susideda programinė įranga ir kokie esminiai produkto atributai? Kokie pagrindiniai veiksmai sudaro programinės įrangos kūrimo procesą? Ką apima programinės įrangos kūrimo metodai? Kas tai yra CASE priemonės? Kam atsakingi programavimo inžineriai? Kas leidžia elgesio kodeksus ir ką jie nusako? Sudėtingų sistemų projektavimas)

Page 58: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 58

Esminių akcentų raktiniai žodžiai

Klausimas 1.1 Kaip suprantame programavimo inžineriją?

Page 59: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 59

Esminių akcentų raktiniai žodžiai

Klausimas 1.2 Kodėl programavimo inžinerijoje kalbame apie

etiką?

Page 60: Programavimo  Inžinerija

©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 60

Esminių akcentų raktiniai žodžiai

Klausimas 1.3 Koks yra požiūris į sistemą?