programavimo inžinerija
DESCRIPTION
Programavimo Inžinerija. R. Šeinauskas. Komentarai. - PowerPoint PPT PresentationTRANSCRIPT
©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 1
Programavimo Inžinerija
R. Šeinauskas
©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.
©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
©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 4
SWEBOK Programinės įrangos projektų valdymo kurse
Software_Engineering_Management Software_Configuration_Management
©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
©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
©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ą?)
©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ą
©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
©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?
©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?
©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?
©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ė?
©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ą?
©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
©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?
©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?
©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ą
©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ų
©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
©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.
©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
©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ų
©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
©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)
©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
©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.
©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ą
©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?
©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
©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?
©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?
©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)
©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?
©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?
©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.
©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.
©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
©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?
©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)
©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ę
©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
©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.
©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.
©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ų.
©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.
©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.
©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
©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
©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?
©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.
©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.
©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.
©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?
©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?
©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
©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)
©Ian Sommerville 2010 Software Engineering, 8th edition. Chapter 1 Slide 58
Esminių akcentų raktiniai žodžiai
Klausimas 1.1 Kaip suprantame programavimo inžineriją?
©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ą?
©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ą?