10.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
  • No tags were found...

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ärgid• Aine 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õud Struktuur Hindamine• <strong>Sissejuhatus</strong> <strong>tarkvaratehnikasse</strong> Miks tarkvaratehnika? Mis on tarkvaratehnika?• <strong>Tarkvaratehnika</strong> eetika


Inimesed• Õppejõud• Lektorid:Professor Kuldar TaveterMeil: kuldar.taveterADDttu.eeKonsultatsiooniajad: E 12.00 – 13.00 ruumis IT-402Kaspar Loog, Know IT EstoniaAlar Raabe, SwedbankErik Jõgi, codebornePriit PotterPirjo Vanem, LHVPaul Leis, SEBRaino Kolk, TTÜ• Laborijuhendajad:Risto Alas, IgniteTanel Tenso, ProekspertRaino Kolk, TTÜ• Tudengid:Kes olete teie?


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ärgid• Arusaamine suurte tarkvarasüsteemide loomiseprobleemidest ja keerukusest• Arusaamine tarkvara arendusprotsessi etappidestja tegevustest• Arusaamine hea projektihalduse eelistest tarkvaraarendusprotsessis• Võime kriitiliselt analüüsida ja hinnata tarkvaraarendusprotsessis esilekerkivaid probleeme• Võime valida ja rakendada sobivaiddisainitehnikaid


Aine eesmärgid (jätkub)• Arusaamine tarkvara arendusprotsessi olulisusesttarkvarasüsteemi kvaliteedi saavutamisel• Teadlikkus vajalikest tehnikatest ja tööriistadest• Võime rakendada oma teadmisi ja kogemusiotustamisel• Saada rühmatöö kogemusi• Arendada oma suhtlemis- ja kirjutamisoskust


Aine muudes maailma ülikoolides• The University of Melbourne: SoftwareEngineering Process and Practice• Swinburne University of Technology: SoftwareEngineering• University of South Carolina: Software Engineering(project)


<strong>Loeng</strong>ute teemad• <strong>Sissejuhatus</strong> <strong>tarkvaratehnikasse</strong> (3. Sept., Kuldar Taveter, TTÜ)• Süsteemi elutsükkel ja arendusprotsess (10. Sept., Kaspar Loog, Know IT)• Süsteemi nõuete esiletoomine ja analüüs (17. Sept., Priit Potter, Webmedia)• Agiilne tarkvaratehnika (24. Sept., Erik Jõgi, codeborne)• Süsteemi modelleerimine (1. Okt., Kuldar Taveter, TTÜ)• Mudelipõhine tarkvaratehnika (8. Okt., Alar Raabe, Swedbank)• Arhitektuuriline kavandamine (15. Okt., Raino Kolk, TTÜ)• Tarkvara arhitektuur (22. Okt., Alar Raabe, Swedbank)• Kasutajaliides ja kasutajamugavus (29. oktoober, Pirjo Vanem, LHV)• Arenduse infrastruktuur ja konfiguratsioonihaldus (5. Nov., Raino Kolk, TTÜ)• Süsteemi testimine (12. Nov., Kaspar Loog, Know IT)• Detailne (koodi) disain (19. Nov., Erik Jõgi, codeborne)• Süsteemi haldamine ja evolutsioon (26. Nov., Paul Leis, SEB)• Ettevõtte tarkvaratehnika (3. Dets., Paul Leis, SEB)• “From Crafting Software to Software Craftmanship”: Secure SoftwareEngineering (10. Dets., Paul Leis, SEB)• Arendusprotsessi organisatsioon e. Peopleware (17. Dets., Kaspar Loog, KnowIT)


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 Hill• Aine koduleht:http://maurus.ttu.ee/sts/?page_id=1122 NB! Mitte tavaline maurus!


Aine moto• Programmeerimine pole põhiline, protsess onoluline!• Aga: harjutustundides on üks teema näiteks„clean code“!


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 1982• The 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 eightseconds• Meanwhile, 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) Satellite• The MCO was launched in December 1998• The MCO was lost after it entered the Martianatmosphere in September 1999


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


<strong>Tarkvaratehnika</strong> ajalugu• Terminit „tarkvaratehnika“ (software engineering)kasutati esimest korda NATO SoftwareEngineering Conference 1968 raames Garmish-Partenkirchenis, Saksamaal• See 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ältel• IEEE 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: Kvaliteeti Keerukust Ressursse: eelarvet, aega, inimesi Riske


<strong>Tarkvaratehnika</strong> huvigrupid• Klient• Arendaja• Kasutaja


Kvaliteetse tarkvara atribuudid• Tarkvara peab evima nõutud funktionaalsust jajõudlust kasutaja jaoks ning peab olema hooldatav,usaldusväärne ja vastuvõetav• Hooldatavus:Tarkvara peab arenema, et vastata muutuvatelevajadustele• Usaldusväärsus• Efektiivsus• VastuvõetavusTarkvara peab olema töökindelTarkvara ei tohi raisata süsteemi ressursseTarkvara peab olema aktsepteeritud kasutajate poolt,kelle jaoks ta on loodud. See tähendab, et tarkvarapeab olema arusaadav, kasutatav ja ühilduv teistesüsteemidega


Tarkvararakenduste liigid• Kohalikud (stand-alone) rakendused• Interaktiivsed transaktsioonipõhised rakendused• Mähisrakendused (embedded control systems)• Andmetöötlusrakendused (batch processingsystems)• Meelelahutusrakendused• Modelleerimis- ja simulatsioonirakendused• Andmekogumisrakendused (data collectionsystems)• Süsteemide süsteemid (systems of systems)• NB! Erinevad tarkvaraprotsessid erinevat tüüpirakendustele!


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


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


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


Sotsio-tehniline süsteem• Süsteem, mis koosneb riistvarast, tarkvarast jainimestest• Süsteem, mis sisaldab nii sotsiaalset aspekti, misvõib olla alamsüsteem, kui ka tehnilist aspekti• Sotsio-tehnilise süsteemi karakteristikud: Esilekerkiv käitumine: süsteemi kui tervikuomadused sõltuvad süsteemi komponentidest jaseostest nende vahel Mittemää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


Sotsio-tehniliste süsteemide „kihilinetort“


Mis on süsteemitehnika?• Sotsio-tehniliste süsteemide spetsifitseerimise,kavandamise, realiseerimise, valideerimise,installeerimise ja hooldamise protsess• Analoogia ehitustehnikast: visand ja arhitekti joonistused arhitekti projekt plaanid alltöövõtjate jaoks


Süsteemitehnika vaated• Omaniku vaade• Kavandaja vaade• Ehitaja vaade


Kontseptuaalne ruumMotivation layerSystem design layerIMPLEMENTATIONDESIGNDeployment layer


Süsteemi elutsükli etapid• Nõudmiste esiletoomine ja analüüs• Kavandamine e. disain Arhitektuuriline kavandamine Detailne kavandamine• Realiseerimine• Testimine• Hooldus ja evolutsioon


Mis on protsess?• Protsess on sammude jada, mis hõlmabtegevusi, piiranguid ja ressursse mingitliiki väljundi loomiseks• Nä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 mudel• Tarkvaraprotsessi lihtsustatud esitus teatudvaatepunktist• Näited vaatepunktidest: Protsessikeskne vaatepunkt: tegevuste jada Andmekeskne vaatepunkt: andmevood Rollikeskne vaatepunkt: kes mida teeb?• Üldistatud tarkvaraprotsessi mudelite näited: Kosk (waterfall) Iteratiivne arendamine Komponendipõhine arendamine


Näide: kose mudel


Näide: iteratiivne arendamine


Tarkvara arenduskulud• Koosnevad:ArenduskuludEvolutsiooni ja hoolduse kulud• Kulud sõltuvad arendatava süsteemi tüübist jasüsteemile esitatud nõudmistest nagu näiteks jõudlusja töökindlus0100 200 300 400ArendamineEvolutsioon


Tarkvara arenduskulude jaotus• Sõltub arendatava süsteemi tüübist ja kasutatavasttarkvaraprotsessi mudelist• Pö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üüsKavandamineIteratiivne arendamine0ArendamineIntegreerimine ja testimine25 50 75 100SpetsifitseerimineKomponendipõhine tarkvaratehnika0Iteratiivne arendamineSüsteemi testimine25 50 75 100SpetsifitseerimineArendamineIntegratsioon ja testimine


Tarkvarainseneri professionaalsus• <strong>Tarkvaratehnika</strong> on laiem pelgalt tehniliste oskusterakendamisest• Tarkvarainsenerid peavad käituma ausal jaeetiliselt vastutustundlikul viisil, kui soovivad ollarespekteeritud professionaalidena• Eetiline käitumine on rohkem kui pelgalt seadustejärgimine


Professionaalse vastutuse aspektid• Konfidentsiaalsus Tarkvarainsener peab respekteerima omatööandja ja klientide konfidentsiaalsust,sõltumata sellest, kas formaalne lepingkonfidentsiaalsuse kohta on alla kirjutatud• Kompetents Tarkvarainsener 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 olekskaitstud• Arvuti 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 eetikakood• ACM ja IEEE liikmed allkirjastavad liitumisel vastavaorganisatsiooni eetikakoodeksi• Eetikakoodeks sisaldab kaheksat põhimõtetprofessionaalsete tarkvarainseneride käitumise jaotsustuste jaoks


Code of ethics - preamble• PreambleThe 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 - principles• PUBLICSoftware engineers shall act consistently with thepublic interest.• CLIENT AND EMPLOYER• PRODUCTSoftware engineers shall act in a manner that is in thebest interests of their client and employer consistentwith the public interest.Software engineers shall ensure that their productsand related modifications meet the highestprofessional standards possible.


Code of ethics - principles• JUDGMENTSoftware 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 - principles• COLLEAGUES Software engineers shall be fair to andsupportive of their colleagues.• SELF Software engineers shall participate in lifelonglearning regarding the practice of their professionand shall promote an ethical approach to thepractice of the profession.


Eetilised dilemmad• Põ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 aspekte• Tarkvaratooted koosnevad valjatöötatudprogrammidest ja nende dokumentatsioonist• Tarkvaratoode on alati osa mingist laiemast sotsiotehnilisestsüsteemist• Tarkvaraprotsess koosneb tegevustest, mis onvajalikud tarkvaratoodete arendamiseks• Tarkvarainseneril on eetilised kohustused, mis ei piirduvaid tehniliste oskuste rakendamisega


Põhiline on protsess!

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

Saved successfully!

Ooh no, something went wrong!