1 / 43

Programavimo Inžinerija

Programavimo Inžinerija. R. Šeinauskas. Komentarai.

meghana
Download Presentation

Programavimo Inžinerija

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programavimo Inžinerija R. Šeinauskas

  2. Komentarai Software 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.

  3. SWEBOK • Iki programinės įrangos inžinerijos kurso Software_Construction • Programinės įrangos inžinerijos kurse Software_Engineering_ProcessSoftware_Requirements_Analysis Software_Design Software_Testing Sofware_Quality_AnalysisSoftware_Engineering_InfrastructureSoftware_Evolution_Maintenance

  4. SWEBOK • Programinės įrangos projektų valdymo kurse Software_Engineering_ManagementSoftware_Configuration_Management

  5. Komentarai Paskaitų medžiaga suskirstyta į 19 temų, kurios išvardintos toliau skaidrėse. Semestro metu numatomi trys atsiskaitymai iš nurodytų temų. Toliau aprašytos vertinimo taisyklės. Reikia pastebėti, kad naudojama vertinimo sistema yra santykinė, studentai vertinami vienas kito atžvilgiu ir todėl naudojama aritmetinė reikšmių apvalinimo taisyklė, besiskirianti nuo nurodomos pažymių lapeliuose. Seminarų vertinimą pateiks pravedantys dėstytojai, grupinio projekto vertinimas trumpai aptartas skaidrėse. Didelę reikšmę turi atsiskaitymo reguliarumas. Tikslinga susipažinti su praeitų metų vertinimais pateiktais internete. Paskaitų skaidrėse pateikta išsami medžiaga, leidžianti mokytis savarankiškai, paskaitos pabaigoje pateikiami esminiai temos aspektai

  6. Paskaitos I • Programavimo inžinerijos pradmenys • Socio-techninės sistemos • Kritinės sistemos • Kūrimo procesas                                 • Projekto vadyba • Reikalavimai   • Reikalavimų inžinerijos procesas       • Architektūros projektavimas           • Paskirstytų sistemų architektūra • Realaus laiko   • Pirma apklausa 1-10                                   

  7. Paskaitos II • Vartotojo sąsajos projektavimas         •  Pakartotinis panaudojimas                 •  Kritinių sistemų projektavimas    • Programų sistemų tobulinimas             • Tikrinimas ir atestavimas                      •  Testavimas                                          • Darbų kainos įvertinimas                    • Proceso tobulinimas                             • Tendencijos                                   • Apklausa  11-19    

  8. Įž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ą?)

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

  10. Apžvelgiamos temos • Dažniausiai sutinkami klausimai apie programavimo inžineriją • Etika ir profesinė atsakomybė

  11. Programavimo inžinerija • 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 Kokius aspektus apima programavimo inžinerija?

  12. Programinės įrangos kaina • 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. Ką galima pasakyti apie programinės įrangos kainą? Koks yra programavimo inžinerijos tikslas?

  13. 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?

  14. 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ė?

  15. 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ą?

  16. 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ė

  17. 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?

  18. 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?

  19. 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ą

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

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

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

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

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

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

  26. 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)

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

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

  29. 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ą

  30. 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?

  31. 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?)

  32. 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?

  33. Profesinės atsakomybės aspektai Kokie yra keturi 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

  34. 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)

  35. 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?

  36. 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?

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

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

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

  40. 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?

  41. 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?

  42. 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?

  43. 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?)

More Related