43
SOFTWARE ENGINEERING Inxhinieri Software 1. Hyrje Software: Natyra e tij,Cilesite dhe Problemet

SE Leksion01 A

Embed Size (px)

DESCRIPTION

jkj

Citation preview

No Slide Title

Duhet zhvilluar software qe eshte i inxhinieruar(engineered)Pyetja e kohes: Cfare mund te behet per ti lehtesuar dhe shmangur keto probleme?Pjesa me e madhe e projekteve te software ne perdorim (real-life software) jane kaq te gjera dhe komplekse sa perpjekja per te zhvilluar software duke filluar te shkruash kod menjehere eshte fillimi i deshtimit. Inxhineria e Software perfshin marrjen e vendimeve nen kushte kufizuese kohe, njohurie dhe burimesh.Software Engineering entails making decisions under the constraints of limited time, knowledge, and resources.M. ShawProfesor Informatike, CMUTheksi bie mbi dy terma software dhe inxhinierimInxhinierimi eshte

Krijimi i zgjidhjeve me pak shpenzim - te problemeve praktike - duke zbatuar njohuri shkencore - per te ndertuar gjera - ne sherbim te njerezimit !!Inxhineria e Software eshte

- disiplina e cila studion zhvillimin e komponenteve software me cilesi te larte ne sistemet e kompjuterizuara.

Zhvillimi i software modern eshte zakonisht i bazuar ne metodat e objekt-orientuara. - per te na ndihmuar ne njohjen e ketyre metodave do te perdorim tekonlogjite e pershtatshme te mjeteve CASE .CASE (Computer-Aided Software Engineering) tools .Ne Konferencen e NATO-s u konkludua qe

- Zhvillimi i software duhet te jete nje aktivitet inxhinierik.

Duhen perdorur paradigma te disiplines se inxhinierise per te zgjidhur

- Krizen e Software: cilesia e software ishte e ulet, si dhe afatet kohore e kufijte e shpenzimit nuk realizoheshin sic ishte parashikuar.

Paralelizma te Inxhinierise se Software?

Kur nje ndertim strukture (psh ndertesa, rruge, ura etj) i caktuar propozohet, inxhinieret nuk fillojne menjehere ndertimin konkret.

Ne te vertete, ata perdorin metoda te paracaktuara, te pranuara me pare, te dokumentuara mire :

- Se pari, analizohet ndertimi i kerkuar (psh percaktimi i cilesive peshembajtese, lloji i tokes ku do behet ndertimi etj), duke biseduar shpesh me perdoruesit/klientet ne menyre qe te kuptojne me se miri se per cfare ka nevoje perdoruesi.

- Behet dizenjimi (design) i ndertimit per te arritur perputhje me kerkesat e perdoruesit/klientit. Keto kerkesa jane gjeneruar nga nje specifikim (plan i paracaktuar)

- Ndertohet nje model per te testuar dizenjon

- Me se fundi, fillohet ndertimi konkretKjo eshte menyra si nje software duhet te zhvillohet.Fatkeqesisht, nje numer I madh problemesh te lidhura me software (software crisis) ka shoqeruar zhvillimin e sistemeve te kompjuterizuara (computer-based). Shume prej ketyre problemeve vazhdojne te jene intensive edhe ne ditet e sotme.

Avancimet ne Hardware vazhdojne te dominojne mbi aftesine tone per te ndertuar Software te cilat arrijne potencialet e hardware.

Aftesite per te ndertuar programe te reja nuk mund te ecin ne te njejtin ritem me kerkesen per programe te reja. Aftesite jane te kufizuara edhe per te ndertuar shpejt programe te cilat perputhen me nevojat e biznesit dhe tregut. Perdorimi shume i gjere i kompjuterave e ka bere shoqerine akoma me shume te varur nga operimi i besueshem i software. Demtime shume te medha ekonomike rrjedhin si pasoje e deshtimeve te software.

Aftesite per te mbeshtetur dhe zhvilluar me tej programet ekzistuese kercenohen nga dizenjimi i varfer dhe burimet e pamjaftueshme.

Eshte per keto arsye qe inxhiniera e software (software engineering) eshte zhvilluar si disipline.

Kompanite e sukseshme te software duhet te maximizojne cilesine duke ulur kohen e kerkuar per zhvillim si dhe shpenzimet.

Kerkesa gjithmone ne rritje per software

Pyetje per tu konsideruar Nje program leshohet ne treg me gabime. Kush eshte pergjegjes?menaxheri? Planifikim projekti - i varferkompania? Mungese sigurimi cilesie (quality assurance)programuesi? Mbi te gjitha, ai eshte krijuesi!Disa Shifra & Statistika ...

Ne 1994, Grupi Keshillor i IBM (IBM Consulting Group) nxorri nje studim(sondazh) nga 24 kompani kryesuese te cilat kishin zhvilluar sisteme shperndarjeje shume te medha. Studimi: - 55% e software te zhvilluar kushtonte me shume sesa ishte parashikuar ne projekt.- 68% kerkuan kohe me te gjate per tu perfunduar sesa ishte parashikuar. - 88% ishin ridizenjuar thuajse teresisht. Nje studim i 1994 Standish Group i zhvilluar per 8,380 projekte te bera per qeverine dhe sektoret private ne SHBA, tregoi qe :- 31% e projkteve te software ishin anulluar para se te perfundoheshin. - 53% e projekteve te perfunduara kushtuan 189% nga vlera e paracaktuar. >> nga 53%, vetem 42% i kishin funksionet dhe tiparet e propozuara qe me pare. - vetem 9% e projekteve ishin perfunduar ne perputhje me afatet kohore dhe buxhetin e percaktuar. Sondazh i 7,500 i Standish Group ne 1997

- 46% te deshtuar- 28% anulluar

Parashikohej qe shpenzimet e software te vazhdonin te ngriheshin ( me rreth 12% ne vit), edhe pse shpenzimet per hardware mund te ulen. Kjo ndodh sepse: - nje aplikim i ri do te thote programe te reja- kompjutera te rinj kane nevoje per software te ri ose modifikime te software ekzistues. - programimi kerkon aftesi dhe pune intensive.

Gabimet ne Software kushtojne per:- demtimin qe sjellin- perpjekjen per te korrigjuarKriza e SoftwareDeshtime shume te kushtueshme, spektakolareProgrami i raketes ESA Ariane NASA Mars Lander - priority-inversion bug in OS

Gabimi (bug) insistues Y2K Ndikim ekonomik Global

Dobesi kritike ne fushen e zhvillimit :Viruse ne E-mail attachment Sulme me natyre Mohim-sherbimi (Denial-of-service attacks)Mungesa e sigurise per veprimet ne WEBRaketa Ariane-5, nga European Space AgencyQershor 1996: funksionoi mire per 40 sekonda, me pase devijoi dhe u shkaterrua!Permbante kater satelite: shpenzimi ishte:$500 milion!Kod i riperdorur nga raketa Ariane-4 : pa kontrolluar me pare perputhjen (compatibility) me procesore te ndryshem.Deshtimi i Raketes Arian (Ariane Rocket) - Fiasco Shkaku?- Perjashtim i pakonsideruar ( Unhandled floating-point exception) ne Ada kod per konvertimin e numrit te plote(integer) nga 64-bit floating point ne 16-bit me shenje.- Kerkesat shenonin qe kompjuteri (kryesor dhe ai backup) do te mbylleshin nqs nje perjashtim i pakonsideruar (unhandled exception) do te ndodhte.

Pse nuk kishte strukture per te marre persiper kete perjashtim (exception handler)?- Perpjekje per te zvogeluar ngarkesen e procesorit nen 80%- Analizat e Ariane-4 tregonin qe overflow nuk ishte e mundur te ndodhte. Pse nuk u modifikua dizenjimi (design) per Ariane-5?- Nuk u konsiderua inteligjente te ndryshohej software qe punonte mire ne Ariane-4Prodhimi i Software ka nje Testim Ecurie te Varfer(Poor Track Record)Shembull: Software i Anijes Hapesinore(Space Shuttle)Kostoja: $10 Billion, miliona dollare me shume sec ishte planifikuarKoha: 3 vjet me voneseCilesia: Leshimi i pare i Columbia u anullua per shkak te nje problemi ne sinkronizim me 5 kompjuterat ne bord. Gabimi u kontrollua dhe u gjet te ishte tek ndryshimi qe nje programues kishte bere 2 vjet me pare, duke ndryshuar nje faktor ngadalesi te nje interrupt handler nga 50 ne 80 miliseconda.Shancet qe gabimit e ndodhte ishin shume te vogla, sa gabimi nuk shkaktoi asnje problem gjate mijera oreve te testimit. Gabime thelbesore ekzistojne akoma Astronautet jane te pajisur me nje liber te problemeve te software te njohur si "Program Notes and Waivers-shenime dhe zgjidhje programi.Pyetje te rendesishme per Zhvillimin e SoftwarePse duhet nje kohe kaq e gjate per te perfunduar nje projekt?Pse kushton kaq shume per te zhvilluar nje software?Pse shperndahen software me gabime te rendesishme prezente ne to?Pse eshte kaq e veshtire per te matur progresin gjate procesit te zhvillimit? Pergjigjet e ketyre pyetjeve kerkojne nje perqendrim ne Procesin e zhvillimit te software, dmth hapat qe duhen ndjekur ne zhvillimin e software, mjetet qe duhen perdorur, etj.

Scope (Italian scopo purpose, goal, from Greek skopos shof, veshtroj)- Teresia e Qellimeve, Hapesira-gjeresia e ObjektivaveShume perkufizime ekzistojne!

Inxhinierimi i Software eshte nje disipline, qellimi i se ciles eshte te zhvilloje software pa gabime, software qe jane te perfunduara dhe leshuara ne kohe, brenda buxhetit, dhe kenaqin nevojat e perdoruesve. Objektivat e Inxhinerise se Software (Software Engineering)

1.Studimi i proceseve sistematike dhe efektive, si dhe 2. Studimi teknologjive per te mbeshtetur zhvillimin e software ne menyre qe:

a)- Te rritet cilesia

b)- Te ulen shpenzimet

Software EngineeringPerkufizimi Klasik (1969)Themelimi dhe perdorimi i principeve te inxhinierise per te prodhuar software:- ekonomik, te besueshem dheqe punon ne menyre eficente ne makina reale.Perkufizim nga IEEE (Institute of Electrical and Electronics Engineers)(1993)Software Engineering: Zbatimi I nje menyre sistematike, te disiplinuar per te zhvilluar, operuar, dhe mirembajtur software; ky eshte zbatimi inxhinerik I software.Pse nevojitet Software Engineering?

Per te parashikuar kohe, perpjekje, dhe shpenzime.

Per per permiresuar cilesine e software

Per te permiresuar mirembajtjen

Per tiu pergjigjur kerkesave ne rritje

Per te ulur shpenzimet e software

Per te ndertuar suksesshem sisteme software te medha, komplekse Per te lehtesuar perpjekjet ne grup gjate zhvillimit te softwareShpenzimet Hardware kundrejt Shpenzimeve Software (% e shpenzimeve te pergjithshem)

Raporti Ecuri/Cmim i Software kundrejt Hardware197519791983198719911995Software 5% / vitMinis/Mainframes 20% / vit PCs/Workstations 50% / vitRritje ne raportin performance/cmimper vit50%20%5%Vetem 5% rritje ne raportim ecuri/cmim per softwareKrahasuar me rritjen 20-50% te raportit per hardware!Kriza e Software - Pse?Mos nivelimi ndermjet rritjes se kompleksitetit ne punet qe kerkoheshin dhe prapambetjes se mjeteve te perdorura per zgjidhjeKerkesa ne rritje dramatike per softwareShembull Programi Hapesinor (US Space)SpacestationSpace shuttleApolloMercuryMiliona instruksioneKriza e Software - Pse?Nevoja per ndryshim ne sistemet e vjetra kerkon zhvillim te sistemeve te rejaMiliona programues

Kriza e Software - Pse?Pershkallezim i pritjeve/kerkesave te klientitKerkesa tejkalon furnizimin me programues dhe menaxhere te afteMitet e Menaxhereve (Manager Myths)Ne e kemi tashme nje liber qe eshte plote me standarte dhe procedura per te ndertuar software. A nuk do ti siguroje kjo njerezve te mi cdo gje te cilen ata kane nevoje ta dine?

Njerezit e mi kane mjete te sofistikuara (state-of-the-art) per te zhvilluar software. Mbi te gjitha, ne blejme kompjuterat me te rinj.

Nqs ne jemi vone per afatin e percaktuar, ne mund te shtojme me shume programues, te rrisim ritmin dhe te jemi ne kohe.Mitet e Klientit (Customer Myths)Kerkesat e projektit ndryshojne vazhdimist, por ndryshimet mund te pershtaten lehtesisht sepse software eshte fleksibel.

Nje dokument i thjeshte me objektivat e pergjithshme eshte I mjaftueshem per te filluar te shkruash programin ne mund ta mbushim me detaje me vone.Secili e dinte saktesisht se cfare duhej bere,derisa dikush e shkruajtite plote!Mitet e Praktikuesit/zhvilluesit (Practitioners Myths)Sapo ne e shkruajme programin dhe e veme ne pune, detyra jone ka mbaruar.

Derisa une ta bej programin te punoje, nuk kam vertet asnje menyre sesi te vleresoj cilesine e tij.

I vetmi mjet per tu dorezuar ne nje projekt te suksesshem eshte programi qe punon.Ne Realitet ... Programuesit nuk tregojne te verteten per gjendjen aktuale te kodit te tyre.

... Menaxhimi e nenvleresoi jashte mase kohen e nevojitur per te perfunduar projektin.

... Menaxhimi nuk lejoi kohe te mjaftueshme per te planifikuar me kujdes projektin.

... Rendimeti i programuesve rezultoi te ishte shume me e ulet sesa pritej.

ZgjidhjaZhvillimi i nje strukture (framework) e cila te suportonte permiresimet e vazhdueshme, evoluese ne produkt dhe proces.

Nje model i qarte per procesin e zhvillimit ishte celesi qe mungonte ne pervojat e kaluaraInxhinieria e Software (Software Engineering)Perberesit Kryesore:ProcesiMbeshtetja ne Ciklin-jetesor (Lifecycle) per te gjitha hapat e zhvillimit te software, qe nga fillimi deri ne dorezim. MetodaTeknika formale te percaktuara mire(Well-defined) per cdo hap gjate procesit te Ciklit-jetesor (Lifecycle) MjetetPershkrim i gjuheve dhe software mbeshtetes (CASE tools) per metoda te caktuaraPyetje ThelbesoreCili eshte problemi per tu zgjidhur?Cilat jane tiparet e nje zgjidhjeje te mundshme?Si do te modelohet zgjidhja? Si do te ndertohet zgjidhja?Si do te testohet modeli (design) dhe implementimi(venia ne pune)?Si do te mirembahet ne kohe?Ndertohet nje strukture (framework) e bazuar ne inxhinieri per zhvillimin e softwareTre Faza Konceptuale BazeZhvillimi I Software mund te konsiderohet si proces I perbere nga tre faza te ndryshme:

PerkufizimiCfare eshte per tu ndertuar?ZhvillimiSi do ta ndertojme ate?Suporti/MbeshtetjaSi do ta mirembajme me kalimin e kohes?Me vone, ne do ti zgjerojme keto hapa baze duke shtuar me shume detaje.Tiparet e Software

Software ka karakteristika te cilat jane te ndryshme nga ato te hardware:

- software zhvillohet (ose kalon ne inxhinierim- engineering); nuk prodhohet/fabrikohet (manufactured) duke u bazuar ne kuptimin klasik;

- software nuk demtohet(del jashte perdorimit): software ka ritme te ndryshme deshtimi nga hardware me saktesisht: eshte konstant pasi eshte korrigjuar;

- pjesa me e madhe e software eshte ndertuar sipas klientit (custom built), dhe jo te jete nje pershtatje-asemblim i perberesve ekzistues.

Kur nje perberes i hardware demtohet, ai mund te zevendesohet me nje pjese tjeter, ndersa persa i perket software: nuk ka perberes zevendesues per te.

Software i vecuar(Pure software) eshte i paperdorshem! software ekziston si pjese e nje sistemi

Software eshte i padukshem, i paprekshem, abstrakt- nuk ka ligje fizike mbi te cilat sjellja e software bazohet- nuk ka kushtezime fizike mbi kompleksitetin e software

Software nuk demtohet

Software mund te shumefishohet pa ndryshime prodhimi/fabrikimi (manufacturing variability)

Deshtim ne rritje si pasoje e efekteve anesore(side effects)NdryshimRitmi i DeshtimitKohaVija AktualeVija e IdealizuarGabimet fillestare te eleminuaraGabime te reja dalin gjate ndryshimeveMythical Man-Month , Fred Brooks (1986)Miti Njerez per muaj te punesuar