13.07.2015 Views

IDK0071 Tarkvaratehnika Loeng 1: Sissejuhatus tarkvaratehnikasse

IDK0071 Tarkvaratehnika Loeng 1: Sissejuhatus tarkvaratehnikasse

IDK0071 Tarkvaratehnika Loeng 1: Sissejuhatus tarkvaratehnikasse

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>IDK0071</strong> <strong>Tarkvaratehnika</strong><strong>Loeng</strong> 1: <strong>Sissejuhatus</strong> <strong>tarkvaratehnikasse</strong>Professor Kuldar Taveter


<strong>Loeng</strong>u eesmärgidAine struktuur ja organisatsioon<strong>Tarkvaratehnika</strong> mõiste ja olulisus<strong>Tarkvaratehnika</strong> ja süsteemitehnika<strong>Tarkvaratehnika</strong> eetilised ja professionaalsedaspektid


Teemad loengusÜlevaade ainestÕppejõudStruktuurHindamine<strong>Sissejuhatus</strong> <strong>tarkvaratehnikasse</strong>Miks tarkvaratehnika?Mis on tarkvaratehnika?<strong>Tarkvaratehnika</strong> eetika


InimesedÕppejõudProfessor Kuldar TaveterMeil: kuldar.taveterADDttu.eeKonsultatsiooniajad: E 12.00 – 13.00 ruumis IT-402Lektorid:Kaspar Loog, Know IT EstoniaAndres Kütt, WebmediaAlar Raabe, SwedbankErik Jõgi, codebornePriit Potter, end. WebmediaNeeme Vool, Äripäeva veebikeskusIvo Mägi, WebmediaPaul Leis, SEBLaborijuhendajad:Risto Alas, Ignite OÜ…Tudengid:Kes olete teie?


Kes olen mina?Nimi: Kuldar TaveterAmetikoht: professor, tarkvaratehnika õppetooli juhatajaHaridus:Dip.Eng., TTÜ, 1988M.Sc., TTÜ, 1995Ph.D., TTÜ, 2004Töökogemus:1985-1989: Küberneetika Instituut1989-1993: Erasektor1993-1998: TTÜ Informaatika Instituut1997-2005: VTT Tietotekniikka, Soome2005-2008: Melbourne Ülikool, Austraalia2011: South Carolina Ülikool, USAUurimisalad: nõuete esiletoomine ja analüüs,agentorienteeritud modelleerimine, tarkvaraagendid,sotsiaalvõrgustikel põhinevad infosüsteemid


Kuhu kuulub <strong>IDK0071</strong> informaatikaõppekavas?IDU3350(S/j. IS)IDU5360(Kon. s/a.)<strong>IDK0071</strong>IDU0230(AB II)IDU0200(Veebip.rak.)IDU0220(AB I)IDK0051(OO Prog.Javas)IDU0075(Sissej.veebit.)


Kuhu kuulub <strong>IDK0071</strong> äriinfotehnoloogiaõppekavas?IDU3350(S/j. IS)IDU5360(Kon. s/a.)IDU0220(AB I)IDK0051(OO Prog.Javas)<strong>IDK0071</strong>IDU0075(Sissej.veebit.)IDU0230(AB II)IDU0200(Veebip.rak.)IDU0080(Veebit.ja Inter.)


Aine eesmärgidArusaamine suurte tarkvarasüsteemide loomiseprobleemidest ja keerukusestArusaamine tarkvara arendusprotsessi etappidestja tegevustestArusaamine hea projektihalduse eelistest tarkvaraarendusprotsessisVõime kriitiliselt analüüsida ja hinnata tarkvaraarendusprotsessis esilekerkivaid probleemeVõime valida ja rakendada sobivaiddisainitehnikaid


Aine eesmärgid (jätkub)Arusaamine tarkvara arendusprotsessi olulisusesttarkvarasüsteemi kvaliteedi saavutamiselTeadlikkus vajalikest tehnikatest ja tööriistadestVõime rakendada oma teadmisi ja kogemusiotustamiselSaada rühmatöö kogemusiArendada oma suhtlemis- ja kirjutamisoskust


Aine struktuur<strong>Loeng</strong>ud esmaspäeviti kell 14.00 – 15.30auditooriumis VI-229Laboritunnid kord nädalas, reedetiHindamine:Laboritunnid 70%Kirjalik eksam 30%


<strong>Loeng</strong>ute teemad<strong>Sissejuhatus</strong> <strong>tarkvaratehnikasse</strong> (5. Sept., Kuldar Taveter, TTÜ)Süsteemi elutsükkel ja arendusprotsess (12. Sept., Kaspar Loog, Know IT)Süsteemi organisatsioon ja arhitektuur (19. Sept., Andres Kütt, Webmedia)Süsteemi modelleerimine (26. Sept., Kuldar Taveter, TTÜ)Mudelipõhine tarkvaratehnika (3. Okt., Alar Raabe, Swedbank)Agiilne (väle) tarkvaratehnika (10. Okt., Erik Jõgi, codeborne)Süsteemi nõuete esiletoomine ja analüüs (17. Okt., Priit Potter, end. Webmedia)Süsteemi kavandamine (24. Okt., Neeme Vool, Äripäeva veebikeskus)Detailne (koodi) disain (31. Okt., Erik Jõgi, codeborne)Arenduse infrastruktuur ja konfiguratsioonihaldus (7. Nov., Ivo Mägi, Webmedia)Süsteemi testimine (14. Nov., Kaspar Loog, Know IT)21. Nov. teema veel lahtineEttevõtte tarkvaratehnika (28. Nov., Paul Leis, SEB)Süsteemi haldamine ja evolutsioon (5. Dets., Paul Leis, SEB)Arendusprotsessi organisatsioon e. Peopleware (12. Dets., Kaspar Loog, Know IT)


RessursidÕpikud:Sommerville, I. (2011). Software engineering (9thInternational Ed.). Boston, MA: Pearson.Pressman, R. S. (2005). Software engineering: Apractitioner's approach (6th Ed.). New York, NY:McGraw HillAine koduleht:http://maurus.ttu.ee/sts/?page_id=617, seal onsaadaval loengute slaidid ja videolindistusedAine meililist: loomisel


Mis on ühist kaitsesimulaatoritel, Skype-il,energia ülekandesüsteemidel jaliikluskaameratel?


Miks vajame tarkvaratehnikat?Asjalik mees või naine suudab ehitadatööriistakuuri oma maja või suvila juurde. Kasseesama inimene saab hakkama ka 30-korruselise kontorihoone püstipanekuga?Insener suudab valmis programmeerida lihtsakontrolleri. Kas seesama insener saabhakkama ka lennuliikluse kontrollsüsteemiprogrammeerimisega?


Milleks tarkvaratehnika?Tarkvaratööstuse kriis 1965-1985:failure31%success16%Source: The Standish Group International, Inc. (CHAOS research)over budget53%


Dünaamika CHAOS raporti järgi1994 1996 1998 2000 2002 2004 2006 2009Successful 16% 27% 26% 28% 34% 29% 35% 32%Overbudget53% 33% 46% 49% 51% 53% 46% 44%Failed 31% 40% 28% 23% 15% 18% 19% 24%


Ariane Crash (1996)Reference: http://www.around.com/ariane.html(Story by James Gleick)It took the European Space Agency 10 years and $7 billion toproduce Ariane 5, a giant rocket capable of hurling a pair ofthree-ton satellites into orbit with each launch and intended togive Europe overwhelming supremacy in the commercialspace business.All it took to explode that rocket less than a minute into itsmaiden voyage last June, scattering fiery rubble across themangrove swamps of French Guiana, was a small computerprogram trying to stuff a 64-bit number into a 16-bit space.One bug, one crash. Of all the careless lines of code recordedin the annals of computer science, this one may stand as themost devastatingly efficient. From interviews with rocketryexperts and an analysis prepared for the space agency, aclear path from an arithmetic error to total destructionemerges.


Ariane Crash (1996): vigane koodL_M_BV_32 := TBD.T_ENTIER_32S ((1.0/C_M_LSB_BV) *G_M_INFO_DERIVE(T_ALG.E_BV));if L_M_BV_32 > 32767 thenP_M_DERIVE(T_ALG.E_BV) := 16#7FFF#;elsif L_M_BV_32 < -32768 thenP_M_DERIVE(T_ALG.E_BV) := 16#8000#;elseP_M_DERIVE(T_ALG.E_BV) :=UC_16S_EN_16NS(TDB.T_ENTIER_16S(L_M_BV_32));end if;P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS(TDB.T_ENTIER_16S ((1.0/C_M_LSB_BH) *G_M_INFO_DERIVE(T_ALG.E_BH)));


THERAC-25 (1)Therac 25 was engineered by Atomic Energy CanadaLimited (AECL) in conjunction with a French companyCGR. It was an advancement in the fight againstcancer. The million dollar, dual-mode linear acceleratorwas first developed in 1976 and the commercial versionwas available in 1982The machine had two settings, a low energy, 200-radmode, and a x-ray mode of 25 million electron voltcapacity. The low setting could be directly aimed at thepatient whereas the high-energy mode had to aim at thepatient through a thick tungsten shield. It was controlledthrough a terminal


THERAC-25 (2)In Texas, the technician entered mode "x" instead of theproper mode "e". Upon realization of the error thetechnician scrolled up to "Edit", corrected the mistake,hit "e" and then hit "Enter". The total time that it took forthe sequence of events to occur was less then eightsecondsMeanwhile, the patient was bombarded with 25 000-rads with 25 million electron volts, 125x the normaldose. The man died four months later


The Mars Climate Orbiter (MCO) SatelliteThe MCO was launched in December 1998The MCO was lost after it entered the Martianatmosphere in September 1999


The Mars Climate Orbiter (MCO) SatelliteThe root cause was the use of an incorrect unit ofmeasure when calculating the trajectory of landingWhile the software on board the MCO used metricunits, a ground software file contained Englishunits of pound-seconds


<strong>Tarkvaratehnika</strong> ajaluguTerminit „tarkvaratehnika“ (software engineering)kasutati esimest korda NATO SoftwareEngineering Conference 1968 raames Garmish-Partenkirchenis, SaksamaalSee oli mõeldud ühe ideena, kuidas tulla toimetarkvaratööstuse kriisiga


Mis on tarkvaratehnika?Suuremastaabiline programmeerimine vrdl. väikesemastaabilineprogrammeerimine“Engineers Australia” definitsioon: <strong>Tarkvaratehnika</strong> on tiimide pooltrakendatav distsipliin tootmaks kõrgekvaliteedilist,suuremastaabilist ja hinnaefektiivset tarkvara mis rahuldabkasutajate nõudmisi ja mida saab hooldada teatud ajaperioodivältelIEEE definitsioon: <strong>Tarkvaratehnika</strong> on süstemaatilise,distsiplineeritud ja mõõdetava lähehemisviisi rakendaminetarkvara arendamisele, käitamisele ja hooldamisele, seetähendab, inseneriteaduste rakendamine tarkvarale.Tarkvaraarendus on nõrgem termin, kus tingimata ei kasutataprotsesse, tööriistu, standardeid, jne.Haldatakse ja kontrollitakse:KvaliteetiKeerukustRessursse: eelarvet, aega, inimesiRiske


<strong>Tarkvaratehnika</strong> huvigrupidKlientArendajaKasutaja


Kvaliteetse tarkvara atribuudidTarkvara peab evima nõutud funktionaalsust jajõudlust kasutaja jaoks ning peab olema hooldatav,usaldusväärne ja vastuvõetavHooldatavus:Tarkvara peab arenema, et vastata muutuvatelevajadusteleUsaldusväärsusTarkvara peab olema töökindelEfektiivsusTarkvara ei tohi raisata süsteemi ressursseVastuvõetavusTarkvara peab olema aktsepteeritud kasutajate poolt,kelle jaoks ta on loodud. See tähendab, et tarkvarapeab olema arusaadav, kasutatav ja ühilduv teistesüsteemidega


<strong>Tarkvaratehnika</strong> kontekst<strong>Tarkvaratehnika</strong> ei ole isoleeritud distsipliin vaidosa laiemast süsteemitehnikastTarkvarasüsteemid ei ole isoleeritud süsteemidvaid sotsiaalsete süsteemide osad


Mis on tarkvarasüsteem?Mis on tarkvara?Arvutiprogramm + selle dokumentatsioonMis on süsteem?Üksteisega ühendatud olemite või komponentidehulk, mis moodustavad keerulise terviku võitäidavad koos keerulist funktsiooniSüsteem võib sisaldada tarkvara, mehhaanilist,elektrilist ja elektroonilist riistvara ja olla opereeritudinimeste pooltSüsteemi komponentide omadused ja käituminesõltuvad teistest süsteemi komponentidest


Süsteemide kategooriadTehnilised süsteemidSüsteemid, mis sisaldavad riist- ja tarkvara ning kuskasutajaid ja kasutusprotsesse ei käsitleta süsteemiosadena. Tehniline süsteem ei ole iseendast teadlikSotsio-tehnilised süsteemidSüsteemid, mis sisaldavad nii tehnilisi süsteeme kuika inimesi, kes kasutavad tehnilisi süsteeme jasuhtlevad nendega ning kasutusprotsesse


Sotsio-tehniline süsteemSüsteem, mis koosneb riistvarast, tarkvarast jainimestestSüsteem, mis sisaldab nii sotsiaalset aspekti, misvõib olla alamsüsteem, kui ka tehnilist aspektiSotsio-tehnilise süsteemi karakteristikud:Esilekerkiv käitumine: süsteemi kui tervikuomadused sõltuvad süsteemi komponentidest jaseostest nende vahelMittemääratud käitumine: süsteem ei anna alatisama väljundit sama sisendi puhul, sest et süsteemikäitumine sõltub inimoperaatoritest ning riistvara,tarkvara ja andmete muudatustest


Mis on süsteemitehnika?Sotsio-tehniliste süsteemide spetsifitseerimise,kavandamise, realiseerimise, valideerimise,installeerimise ja hooldamise protsessAnaloogia ehitustehnikast:visand ja arhitekti joonistusedarhitekti projektplaanid alltöövõtjate jaoks


Süsteemitehnika vaatedOmaniku vaadeKavandaja vaadeEhitaja vaade


Kontseptuaalne ruumMotivation layerSystem design layerIMPLEMENTATIONDESIGNDeployment layer


Süsteemi elutsükli etapidNõudmiste esiletoomine ja analüüsKavandamine e. disainArhitektuuriline kavandamineDetailne kavandamineRealiseerimineTestimineHooldus


Mis on protsess?Protsess on sammude jada, mis hõlmabtegevusi, piiranguid ja ressursse mingitliiki väljundi loomiseksNäiteid protsessidest?


Mis on tarkvara arendusprotsess e.tarkvaraprotsess?Tarkvaraprotsess on sammude jada, milleeesmärgiks on tarkvara arendamine jaevolutsioonÜldistatud tegevusedtarkvaraprotsessides:Spetsifitseerimine – mida süsteem peab tegemaja mis on piirangud tema arendamisel?Arendamine – tarkvarasüsteemi tootmineValideerimine – kas toodetud tarkvarasüsteemon see, mida kasutaja soovis?Evolutsioon – tarkvarasüsteemi muutminevastavalt kasutajate muutuvatele nõudmistele


Tarkvaraprotsessi mudelTarkvaraprotsessi lihtsustatud esitus teatudvaatepunktistNäited vaatepunktidest:Protsessikeskne vaatepunkt: tegevuste jadaAndmekeskne vaatepunkt: andmevoodRollikeskne vaatepunkt: kes mida teeb?Üldistatud tarkvaraprotsessi mudelite näited:Kosk (waterfall)Iteratiivne arendamineKomponendipõhine tarkvaratehnika


Näide: kose mudel


Näide: iteratiivne arendamine


Tarkvara arenduskulud0Koosnevad:ArenduskuludEvolutsiooni ja hoolduse kuludKulud sõltuvad arendatava süsteemi tüübist jasüsteemile esitatud nõudmistest nagu näiteks jõudlusja töökindlus100 200 300 400ArendamineEvolutsioon


Tarkvara arenduskulude jaotusSõltub arendatava süsteemi tüübist ja kasutatavasttarkvaraprotsessi mudelistPöidlareegel, mis näitab, kuidas arenduskulud sõltuvadarendatava süsteemi tüübist:Mittekriitilised süsteemid40-20-40NõudmisedKavandamineKodeerimineTestimineKriitilised süsteemid60-20-20


Tarkvara arenduskulude jaotus (jätkub)Tarkvara arenduskulude jaotuse sõltuvus kasutatavasttarkvaraprotsessi mudelist:Kose mudel025 50 75 100NõudmisteanalüüsIteratiivne arendamine0ArendamineIntegreerimine ja testimine25 50 75 100SpetsifitseerimineSpetsifitseerimineIteratiivne arendamineSüsteemi testimineKomponendipõhinetarkvaratehnika025 50 75 100KavandamineArendamineIntegratsioon ja testimine


Mis on tarkvaratehnika peamisedväljakutsed?HeterogeensusTehnikate väljatöötamine niisuguse tarkvara loomiseks,mis töötab erinevatel platvormidel ja erinevateskeskkondadesTuruletoomise aegTehnikate väljatöötamine, mis lühendavad tarkvaraturuletoomise aegaUsaldusTehnikate väljatöötamine, mis demonstreerivad, etkasutajad saavad tarkvara usaldada


Tarkvarainseneri professionaalsus<strong>Tarkvaratehnika</strong> on laiem pelgalt tehniliste oskusterakendamisestTarkvarainsenerid peavad käituma ausal jaeetiliselt vastutustundlikul viisil, kui soovivad ollarespekteeritud professionaalidenaEetiline käitumine on rohkem kui pelgalt seadustejärgimine


Professionaalse vastutuse aspektidKonfidentsiaalsusTarkvarainsener peab respekteerima omatööandja ja klientide konfidentsiaalsust,sõltumata sellest, kas formaalne lepingkonfidentsiaalsuse kohta on alla kirjutatudKompetentsTarkvarainsener ei tohi anda väära ettekujutustoma kompetentsist. Ta ei tohi võtta teadlikultvastu tööd, mis on väljaspool tema kompetentsi


Professionaalse vastutuse aspektid(jätkub)Intellektuaalne omandTarkvarainsener peab olema teadlik kohalikestseadustest ja määrustest, mis sätestavadintellektuaalse omandi kasutamise näiteks patentide jakopeerimisõiguse näol. Ta peab olema ettevaatlik, ettööandjate ja klientide intellektuaalne omand olekskaitstudArvuti väärkasutusTarkvarainsener ei tohi kasutada oma tehnilisi oskusiteiste inimeste arvutite väärkasutamiseks. Väärkasutuskatab vahemiku suhteliselt triviaalsest (näiteksmängude mängimine tööandja arvutil) kuni äärmiselttõsiseni (viiruste levitamine ja teiste arvutiteründamine)


ACM/IEEE eetikakoodACM ja IEEE liikmed allkirjastavad liitumisel vastavaorganisatsiooni eetikakoodeksiEetikakoodeks sisaldab kaheksat põhimõtetprofessionaalsete tarkvarainseneride käitumise jaotsustuste jaoks


Code of ethics - preamblePreambleThe short version of the code summarizes aspirations at ahigh level of the abstraction; the clauses that are included inthe full version give examples and details of how theseaspirations change the way we act as software engineeringprofessionals. Without the aspirations, the details canbecome legalistic and tedious; without the details, theaspirations can become high sounding but empty; together,the aspirations and the details form a cohesive code.Software engineers shall commit themselves to making theanalysis, specification, design, development, testing andmaintenance of software a beneficial and respectedprofession. In accordance with their commitment to thehealth, safety and welfare of the public, software engineersshall adhere to the following Eight Principles:


Code of ethics - principlesPUBLICSoftware engineers shall act consistently with thepublic interest.CLIENT AND EMPLOYERSoftware engineers shall act in a manner that is in thebest interests of their client and employer consistentwith the public interest.PRODUCTSoftware engineers shall ensure that their productsand related modifications meet the highestprofessional standards possible.


Code of ethics - principlesJUDGMENTSoftware engineers shall maintain integrity andindependence in their professional judgment.MANAGEMENTSoftware engineering managers and leaders shallsubscribe to and promote an ethical approach to themanagement of software development andmaintenance.PROFESSIONSoftware engineers shall advance the integrity andreputation of the profession consistent with the publicinterest.


Code of ethics - principlesCOLLEAGUESSoftware engineers shall be fair to andsupportive of their colleagues.SELFSoftware engineers shall participate in lifelonglearning regarding the practice of their professionand shall promote an ethical approach to thepractice of the profession.


Eetilised dilemmadPõhimõtteline mittenõustumine firma juhtkonnapoliitikaga?Sinu tööandja käitub ebaeetilisel viisil väljastadesohutuskriitilise süsteemi ilma seda testimata?Osalemine massihävitusrelvade või tuumarelvadevaljatöötamisel?


Põhipunktid<strong>Tarkvaratehnika</strong> on distsipliin, mis puudutab tarkvaratootmise kõiki aspekteTarkvaratooted koosnevad valjatöötatudprogrammidest ja nende dokumentatsioonistTarkvaratoode on alati osa mingist laiemast sotsiotehnilisestsüsteemistTarkvaraprotsess koosneb tegevustest, mis onvajalikud tarkvaratoodete arendamiseksTarkvarainseneril on eetilised kohustused, mis eipiirdu vaid tehniliste oskuste rakendamisega


Põhiline on protsess!

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!