17.03.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><br />

<strong>Loeng</strong> 1: <strong>Sissejuhatus</strong> <strong>tarkvaratehnikasse</strong><br />

Professor Kuldar Taveter


<strong>Loeng</strong>u eesmärgid<br />

• Aine struktuur ja organisatsioon<br />

• <strong>Tarkvaratehnika</strong> mõiste ja olulisus<br />

• <strong>Tarkvaratehnika</strong> ja süsteemitehnika<br />

• <strong>Tarkvaratehnika</strong> eetilised ja professionaalsed<br />

aspektid


Teemad loengus<br />

• Ülevaade ainest<br />

Õppejõud<br />

Struktuur<br />

Hindamine<br />

• <strong>Sissejuhatus</strong> <strong>tarkvaratehnikasse</strong><br />

Miks tarkvaratehnika?<br />

Mis on tarkvaratehnika?<br />

• <strong>Tarkvaratehnika</strong> eetika


Inimesed<br />

• Õppejõud<br />

<br />

<br />

<br />

Professor Kuldar Taveter<br />

Meil: kuldar.taveterADDttu.ee<br />

Konsultatsiooniajad: E 14.00 – 15.00 ruumis ICT-647<br />

(etteteatamisega)<br />

• Lektorid:<br />

<br />

<br />

<br />

<br />

<br />

<br />

Kaspar Loog, Browserbite<br />

Alar Raabe, Swedbank<br />

Erik Jõgi, codeborne<br />

Priit Potter, Plumbr<br />

Pirjo Vanem, LHV<br />

Paul Leis, SEB<br />

• Laborijuhendajad:<br />

<br />

<br />

Tanel Tenso, Proekspert<br />

Jekaterina Ivask, TTÜ<br />

• Tudengid:<br />

<br />

Kes olete teie?


Kes olen mina?<br />

• Nimi: Kuldar Taveter<br />

• Ametikoht: professor, tarkvaratehnika õppetooli juhataja<br />

• Haridus:<br />

Dip.Eng., TTÜ, 1988<br />

M.Sc., TTÜ, 1995<br />

Ph.D., TTÜ, 2004<br />

• Töökogemus:<br />

1985-1989: Küberneetika Instituut<br />

1989-1993: Erasektor<br />

1993-1998: TTÜ Informaatika Instituut<br />

1997-2005: VTT Tietotekniikka, Soome<br />

2005-2008: Melbourne Ülikool, Austraalia<br />

2011: South Carolina Ülikool, USA<br />

• Uurimisalad: nõuete esiletoomine ja analüüs,<br />

agentorienteeritud modelleerimine, tarkvaraagendid,<br />

agendipõhine simulatsioon, sotsiaalvõrgustikel<br />

põhinevad infosüsteemid


Kuhu kuulub <strong>IDK0071</strong> informaatika<br />

õppekavas?<br />

IDU3350<br />

(S/j. IS)<br />

IDU5360<br />

(Kon. s/a.)<br />

<strong>IDK0071</strong><br />

IDU0230<br />

(AB II)<br />

IDU0200<br />

(Veebip.<br />

rak.)<br />

IDU0220<br />

(AB I)<br />

IDK0051<br />

(OO Prog.<br />

Javas)<br />

IDU0075<br />

(Sissej.<br />

veebit.)


Kuhu kuulub <strong>IDK0071</strong> äriinfotehnoloogia<br />

õppekavas?<br />

IDU3350<br />

(S/j. IS)<br />

IDU5360<br />

(Kon. s/a.)<br />

IDU0220<br />

(AB I)<br />

IDK0051<br />

(OO Prog.<br />

Javas)<br />

<strong>IDK0071</strong><br />

IDU0075<br />

(Sissej.<br />

veebit.)<br />

IDU0230<br />

(AB II)<br />

IDU0200<br />

(Veebip.<br />

rak.)<br />

IDU0080<br />

(Veebit.<br />

ja Inter.)


Aine eesmärgid<br />

• Arusaamine suurte tarkvarasüsteemide loomise<br />

probleemidest ja keerukusest<br />

• Arusaamine tarkvara arendusprotsessi etappidest<br />

ja tegevustest<br />

• Arusaamine hea projektihalduse eelistest tarkvara<br />

arendusprotsessis<br />

• Võime kriitiliselt analüüsida ja hinnata tarkvara<br />

arendusprotsessis esilekerkivaid probleeme<br />

• Võime valida ja rakendada sobivaid<br />

disainitehnikaid


Aine eesmärgid (jätkub)<br />

• Arusaamine tarkvara arendusprotsessi olulisusest<br />

tarkvarasüsteemi kvaliteedi saavutamisel<br />

• Teadlikkus vajalikest tehnikatest ja tööriistadest<br />

• Võime rakendada oma teadmisi ja kogemusi<br />

otustamisel<br />

• Saada rühmatöö kogemusi<br />

• Arendada oma suhtlemis- ja kirjutamisoskust


Aine muudes maailma ülikoolides<br />

• The University of Melbourne: Software<br />

Engineering Process and Practice<br />

• Swinburne University of Technology: Software<br />

Engineering<br />

• University of South Carolina: Software Engineering<br />

(project)


Aine struktuur<br />

• <strong>Loeng</strong>ud esmaspäeviti kell 16.00 – 17.30<br />

auditooriumis VI-229<br />

• Laboritunnid kord nädalas, vastavalt<br />

tunniplaanile<br />

Laborirühmi üldjuhul vahetada ei saa!<br />

• Hindamine:<br />

Laboritunnid 60%<br />

Kirjalik eksam 40%


<strong>Loeng</strong>ute teemad<br />

<strong>Sissejuhatus</strong> <strong>tarkvaratehnikasse</strong> (2. Sept., Kuldar Taveter, TTÜ)<br />

Infosüsteemi/tarkvarasüsteemi elutsükkel ja arendusprotsess (9.<br />

Sept., Kaspar Loog, Browserbite)<br />

Süsteemi nõuete esiletoomine ja analüüs (16. Sept., Priit<br />

Potter, Plumbr)<br />

Mudelid ja modelleerimine tarkvaraprotsessis (23. Sept., Kuldar<br />

Taveter, TTÜ)<br />

Süsteemi arhitektuur ja arhitektuuriline kavandamine (30. Sept., Alar<br />

Raabe, Swedbank)<br />

Süsteemi detailne (koodi) disain (7. Okt., Erik Jõgi, codeborne)<br />

Arenduse infrastruktuur ja konfiguratsioonihaldus (14. Okt.)<br />

Süsteemi testimine ja kvaliteet (21. Okt.)<br />

Agiilne tarkvaratehnika: CMMI ja Scrum (28. Okt., Paul Leis, SEB)<br />

Agiilne tarkvaratehnika: XP (4. Nov., Erik Jõgi, codeborne)<br />

Agiilne tarkvaratehnika: kasutajaliides ja kasutusmugavus (11. Nov.,<br />

Pirjo Vanem, LHV)<br />

Agiilne tarkvaratehnika: Kanban (18. Nov., Paul Leis, SEB)<br />

Süsteemi evolutsioon ja elukaar (25. Nov., Paul Leis, SEB)<br />

Arendusprotsessi organisatsioon (2. Dets., Kaspar Loog, Browserbite)<br />

Mudelipõhine tarkvaratehnika (9. Dets., Alar Raabe, Swedbank)<br />

Turva-aspektid tarkvaratehnikas (16. Dets., Paul Leis, SEB)


Ülevaade teemadest laboritundides<br />

(mitte veel siduv)<br />

• Projekti nõuded, SVN<br />

• Test Driven Design sissejuhatus. JUnit<br />

• User Stories ja Test Driven Design<br />

• Koodi loetavus e. "Clean Code”<br />

• Kasutajaliidese testimine, Swingi testimine<br />

• Retrospektiiv (Scrum)<br />

• Koodi kattuvuse mõõtmine.<br />

• Paarisprogrammeerimine<br />

• Testimine teisikobjektidega<br />

• Ant / Maven<br />

• Miniprojektide vahekaitsmised ja lõpukaitsmine


Ressursid<br />

• Õpikud:<br />

Sommerville, I. (2011). Software engineering (9th<br />

International Ed.). Boston, MA: Pearson.<br />

Pressman, R. S. (2005). Software engineering: A<br />

practitioner's approach (6th Ed.). New York, NY:<br />

McGraw Hill<br />

• Aine koduleht:<br />

http://maurus.ttu.ee/sts/?page_id=1577<br />

• NB! Mitte tavaline maurus!


Taust<br />

• Tarkvara iseloom<br />

• Kõrgenenud nõudmised:<br />

suuremad süsteemid;<br />

keerulisemad süsteemid;<br />

kiiremini.


Mis on ühist kaitsesimulaatoritel, Skype-il,<br />

energia ülekandesüsteemidel ja<br />

liikluskaameratel?


Miks vajame tarkvaratehnikat?<br />

• Asjalik mees või naine suudab ehitada<br />

tööriistakuuri oma maja või suvila juurde. Kas<br />

seesama inimene saab hakkama ka 30-<br />

korruselise kontorihoone püstipanekuga?<br />

• Insener suudab valmis programmeerida lihtsa<br />

kontrolleri. Kas seesama insener saab<br />

hakkama ka lennuliikluse kontrollsüsteemi<br />

programmeerimisega?


Milleks tarkvaratehnika?<br />

• Tarkvaratööstuse kriis 1965-1985:<br />

failure<br />

31%<br />

success<br />

16%<br />

Source: The Standish Group International, Inc. (CHAOS research)<br />

over budget<br />

53%


Dünaamika CHAOS raporti järgi<br />

1994 1996 1998 2000 2002 2004 2006 2009<br />

Successful 16% 27% 26% 28% 34% 29% 35% 32%<br />

Over<br />

budget<br />

53% 33% 46% 49% 51% 53% 46% 44%<br />

Failed 31% 40% 28% 23% 15% 18% 19% 24%


Ariane Crash (1996)<br />

Reference: http://www.around.com/ariane.html<br />

(Story by James Gleick)<br />

It took the European Space Agency 10 years and $7 billion to<br />

produce Ariane 5, a giant rocket capable of hurling a pair of<br />

three-ton satellites into orbit with each launch and intended to<br />

give Europe overwhelming supremacy in the commercial<br />

space business.<br />

All it took to explode that rocket less than a minute into its<br />

maiden voyage last June, scattering fiery rubble across the<br />

mangrove swamps of French Guiana, was a small computer<br />

program trying to stuff a 64-bit number into a 16-bit space.<br />

One bug, one crash. Of all the careless lines of code recorded<br />

in the annals of computer science, this one may stand as the<br />

most devastatingly efficient. From interviews with rocketry<br />

experts and an analysis prepared for the space agency, a<br />

clear path from an arithmetic error to total destruction<br />

emerges.


Ariane Crash (1996): vigane kood<br />

L_M_BV_32 := TBD.T_ENTIER_32S ((1.0/C_M_LSB_BV) *<br />

G_M_INFO_DERIVE(T_ALG.E_BV));<br />

if L_M_BV_32 > 32767 then<br />

P_M_DERIVE(T_ALG.E_BV) := 16#7FFF#;<br />

elsif L_M_BV_32 < -32768 then<br />

P_M_DERIVE(T_ALG.E_BV) := 16#8000#;<br />

else<br />

P_M_DERIVE(T_ALG.E_BV) :=<br />

UC_16S_EN_16NS(TDB.T_ENTIER_16S(L_M_BV_32));<br />

end if;<br />

P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS<br />

(TDB.T_ENTIER_16S ((1.0/C_M_LSB_BH) *<br />

G_M_INFO_DERIVE(T_ALG.E_BH)));


THERAC-25 (1)<br />

• Therac 25 was engineered by Atomic Energy Canada<br />

Limited (AECL) in conjunction with a French company<br />

CGR. It was an advancement in the fight against<br />

cancer. The million dollar, dual-mode linear accelerator<br />

was first developed in 1976 and the commercial version<br />

was available in 1982<br />

• The machine had two settings, a low energy, 200-rad<br />

mode, and a x-ray mode of 25 million electron volt<br />

capacity. The low setting could be directly aimed at the<br />

patient whereas the high-energy mode had to aim at the<br />

patient through a thick tungsten shield. It was controlled<br />

through a terminal


THERAC-25 (2)<br />

• In Texas, the technician entered mode "x" instead of the<br />

proper mode "e". Upon realization of the error the<br />

technician scrolled up to "Edit", corrected the mistake,<br />

hit "e" and then hit "Enter". The total time that it took for<br />

the sequence of events to occur was less then eight<br />

seconds<br />

• Meanwhile, the patient was bombarded with 25 000-<br />

rads with 25 million electron volts, 125x the normal<br />

dose. The man died four months later


The Mars Climate Orbiter (MCO) Satellite<br />

• The MCO was launched in December 1998<br />

• The MCO was lost after it entered the Martian<br />

atmosphere in September 1999


The Mars Climate Orbiter (MCO) Satellite<br />

• The root cause was the use of an incorrect unit of<br />

measure when calculating the trajectory of landing<br />

• While the software on board the MCO used metric<br />

units, a ground software file contained English<br />

units of pound-seconds


<strong>Tarkvaratehnika</strong> ajalugu<br />

• Terminit „tarkvaratehnika“ (software engineering)<br />

kasutati esimest korda NATO Software<br />

Engineering Conference 1968 raames Garmish-<br />

Partenkirchenis, Saksamaal<br />

• See oli mõeldud ühe ideena, kuidas tulla toime<br />

tarkvaratööstuse kriisiga


<strong>Tarkvaratehnika</strong> “point”<br />

• <strong>Tarkvaratehnika</strong> = tarkvara inseneeria<br />

• <strong>Tarkvaratehnika</strong> on suunatud professionaalsele<br />

tarkvaraarendusele<br />

• <strong>Tarkvaratehnika</strong> ei tegele tarkvaraarenduse<br />

endaga vaid sellega, kuidas organiseerida<br />

tarkvaraarendust


Mis on tarkvara(toode)<br />

• Arvutiprogrammid + nende dokumentatsioon


Kvaliteetse tarkvara atribuudid<br />

• Evib nõutud funktsionaalsust<br />

• Hooldatav<br />

<br />

Tarkvara peab arenema, et vastata muutuvatele<br />

vajadustele<br />

• Usaldusväärne<br />

<br />

• Efektiivne<br />

<br />

• Vastuvõetav<br />

<br />

Tarkvara peab olema töökindel<br />

Tarkvara ei tohi raisata süsteemi ressursse<br />

Tarkvara peab olema aktsepteeritud kasutajate poolt,<br />

kelle jaoks ta on loodud. See tähendab, et tarkvara<br />

peab olema arusaadav, kasutatav ja ühilduv teiste<br />

süsteemidega


Mis on tarkvaratehnika?<br />

• Suuremastaabiline programmeerimine vrdl. väikesemastaabiline<br />

programmeerimine<br />

• “Engineers Australia” definitsioon: <strong>Tarkvaratehnika</strong> on tiimide poolt<br />

rakendatav distsipliin tootmaks kõrgekvaliteedilist,<br />

suuremastaabilist ja hinnaefektiivset tarkvara mis rahuldab<br />

kasutajate nõudmisi ja mida saab hooldada teatud ajaperioodi<br />

vältel<br />

• IEEE definitsioon: <strong>Tarkvaratehnika</strong> on süstemaatilise,<br />

distsiplineeritud ja mõõdetava lähehemisviisi rakendamine<br />

tarkvara arendamisele, käitamisele ja hooldamisele, see<br />

tähendab, inseneriteaduste rakendamine tarkvarale.<br />

• Tarkvaraarendus on nõrgem termin, kus tingimata ei kasutata<br />

protsesse, tööriistu, standardeid, jne.<br />

• Hallatakse ja kontrollitakse:<br />

Kvaliteeti<br />

Keerukust<br />

Ressursse: eelarvet, aega, inimesi<br />

Riske


<strong>Tarkvaratehnika</strong> huvigrupid<br />

• Klient<br />

• Arendaja<br />

• Kasutaja


<strong>Tarkvaratehnika</strong> kontekst<br />

• <strong>Tarkvaratehnika</strong> ei ole isoleeritud distsipliin vaid<br />

osa laiemast süsteemitehnikast<br />

• Tarkvarasüsteemid ei ole isoleeritud süsteemid<br />

vaid sotsiaalsete süsteemide osad sotsiotehniline<br />

süsteem


Mis on süsteem?<br />

• Mis on süsteem?<br />

Üksteisega ühendatud olemite või komponentide<br />

hulk, mis moodustavad keerulise terviku või<br />

täidavad koos keerulist funktsiooni<br />

Süsteem võib sisaldada tarkvara, mehhaanilist,<br />

elektrilist ja elektroonilist riistvara ja olla opereeritud<br />

inimeste poolt<br />

Süsteemi komponentide omadused ja käitumine<br />

sõltuvad teistest süsteemi komponentidest


Süsteemide kategooriad<br />

• Tehnilised süsteemid<br />

Süsteemid, mis sisaldavad riist- ja tarkvara ning kus<br />

kasutajaid ja kasutusprotsesse ei käsitleta süsteemi<br />

osadena. Tehniline süsteem ei ole iseendast teadlik<br />

• Sotsio-tehnilised süsteemid<br />

Süsteemid, mis sisaldavad nii tehnilisi süsteeme kui<br />

ka inimesi, kes kasutavad tehnilisi süsteeme ja<br />

suhtlevad nendega ning kasutusprotsesse


Sotsio-tehniline süsteem<br />

• Süsteem, mis koosneb riistvarast, tarkvarast ja<br />

inimestest<br />

• Sotsio-tehnilise süsteemi karakteristikud:<br />

Esilekerkiv käitumine: süsteemi kui terviku<br />

omadused sõltuvad süsteemi komponentidest ja<br />

seostest nende vahel<br />

Mittemääratud käitumine: süsteem ei anna alati<br />

sama väljundit sama sisendi puhul, sest et süsteemi<br />

käitumine sõltub inimoperaatoritest ning riistvara,<br />

tarkvara ja andmete muudatustest


Sotsio-tehniliste süsteemide „kihiline<br />

tort“


Mis on süsteemitehnika?<br />

• Sotsio-tehniliste süsteemide spetsifitseerimise,<br />

kavandamise, realiseerimise, valideerimise,<br />

installeerimise ja hooldamise protsess<br />

• Selles kursuses piirdume tarkvaratehnikaga,<br />

süsteemitehnikat käsitlen näiteks oma<br />

magistrikursuses “Agentorienteeritud<br />

modelleerimine ja multiagentsüsteemid”


Millised on parimad tarkvaratehnika<br />

meetodid?<br />

• Erinevat tüüpi meetodid erinevat liiki süsteemidele


Tarkvararakenduste liigid<br />

• Kohalikud (stand-alone) rakendused, nt. MS Office ja<br />

fotode mainupuleerimise süsteemid<br />

• Interaktiivsed transaktsioonipõhised rakendused, nt.<br />

pangarakendused ja e-kaubanduse rakendused<br />

• Mähisrakendused (embedded control systems), nt.<br />

ABS-pidureid ja mikrolaineahju kontrollivad süsteemid<br />

• Andmetöötlusrakendused (batch processing systems),<br />

nt. arvete ja palgaarvestuse süsteemid<br />

• Meelelahutusrakendused, nt. mängud<br />

• Modelleerimis- ja simulatsioonirakendused<br />

• Andmekogumisrakendused (data collection systems),<br />

nt. keskkonna kohta andmeid koguvad süsteemid<br />

• Süsteemide süsteemid (systems of systems)


Mis on protsess?<br />

• Protsess on sammude jada, mis hõlmab<br />

tegevusi, piiranguid ja ressursse mingit<br />

liiki väljundi loomiseks<br />

• Näiteid protsessidest?


Mis on tarkvara arendusprotsess e.<br />

tarkvaraprotsess?<br />

• Tarkvaraprotsess on sammude jada, mille<br />

eesmärgiks on tarkvara arendamine ja<br />

evolutsioon<br />

• Üldistatud tegevused<br />

tarkvaraprotsessides:<br />

<br />

<br />

<br />

<br />

Spetsifitseerimine – mida süsteem peab tegema<br />

ja mis on piirangud tema arendamisel?<br />

Arendamine – tarkvarasüsteemi tootmine<br />

Valideerimine – kas toodetud tarkvarasüsteem<br />

on see, mida kasutaja soovis?<br />

Evolutsioon – tarkvarasüsteemi muutmine<br />

vastavalt kasutajate muutuvatele nõudmistele


Tarkvaraprotsessi mudel<br />

• Tarkvaraprotsessi lihtsustatud esitus teatud<br />

vaatepunktist<br />

• Näited vaatepunktidest:<br />

Protsessikeskne vaatepunkt: tegevuste jada<br />

Andmekeskne vaatepunkt: andmevood<br />

Rollikeskne vaatepunkt: kes mida teeb?<br />

• Üldistatud tarkvaraprotsessi mudelite näited:<br />

Kosk (waterfall)<br />

Iteratiivne arendamine<br />

Komponendipõhine arendamine<br />

• NB! Erinevad tarkvaraprotsessid erinevat tüüpi<br />

rakendustele!


Näide: kose mudel


Näide: iteratiivne arendamine


Tarkvara arenduskulud<br />

• Koosnevad:<br />

<br />

<br />

Arenduskulud<br />

Evolutsiooni ja hoolduse kulud<br />

• Kulud sõltuvad arendatava süsteemi tüübist ja<br />

süsteemile esitatud nõudmistest nagu näiteks jõudlus<br />

ja töökindlus<br />

0<br />

100 200 300 400<br />

Arendamine<br />

Evolutsioon


Tarkvara arenduskulude jaotus<br />

• Sõltub arendatava süsteemi tüübist ja kasutatavast<br />

tarkvaraprotsessi mudelist<br />

• Pöidlareegel, mis näitab, kuidas arenduskulud sõltuvad<br />

arendatava süsteemi tüübist:<br />

Mittekriitilised süsteemid<br />

40-20-40<br />

Nõudmised<br />

Kavandamine<br />

Kodeerimine<br />

Testimine<br />

Kriitilised süsteemid<br />

60-20-20


Tarkvara arenduskulude jaotus (jätkub)<br />

• Tarkvara arenduskulude jaotuse sõltuvus kasutatavast<br />

tarkvaraprotsessi mudelist:<br />

Kose mudel<br />

0<br />

25 50 75 100<br />

Nõudmiste<br />

analüüs<br />

Kavandamine<br />

Iteratiivne arendamine<br />

0<br />

Arendamine<br />

Integreerimine ja testimine<br />

25 50 75 100<br />

Spetsifitseerimine<br />

Komponendipõhine tarkvaratehnika<br />

0<br />

Iteratiivne arendamine<br />

Süsteemi testimine<br />

25 50 75 100<br />

Spetsifitseerimine<br />

Arendamine<br />

Integratsioon ja testimine


Tarkvarainseneri professionaalsus<br />

• <strong>Tarkvaratehnika</strong> on laiem pelgalt tehniliste oskuste<br />

rakendamisest<br />

• Tarkvarainsenerid peavad käituma ausal ja<br />

eetiliselt vastutustundlikul viisil, kui soovivad olla<br />

respekteeritud professionaalidena<br />

• Eetiline käitumine on rohkem kui pelgalt seaduste<br />

järgimine


Professionaalse vastutuse aspektid<br />

• Konfidentsiaalsus<br />

Tarkvarainsener peab respekteerima oma<br />

tööandja ja klientide konfidentsiaalsust,<br />

sõltumata sellest, kas formaalne leping<br />

konfidentsiaalsuse kohta on alla kirjutatud<br />

• Kompetents<br />

Tarkvarainsener ei tohi anda väära ettekujutust<br />

oma kompetentsist. Ta ei tohi võtta teadlikult<br />

vastu tööd, mis on väljaspool tema kompetentsi


Professionaalse vastutuse aspektid<br />

(jätkub)<br />

• Intellektuaalne omand<br />

<br />

Tarkvarainsener peab olema teadlik kohalikest<br />

seadustest ja määrustest, mis sätestavad<br />

intellektuaalse omandi kasutamise näiteks patentide ja<br />

kopeerimisõiguse näol. Ta peab olema ettevaatlik, et<br />

tööandjate ja klientide intellektuaalne omand oleks<br />

kaitstud<br />

• Arvuti väärkasutus<br />

<br />

Tarkvarainsener ei tohi kasutada oma tehnilisi oskusi<br />

teiste inimeste arvutite väärkasutamiseks. Väärkasutus<br />

katab vahemiku suhteliselt triviaalsest (näiteks<br />

mängude mängimine tööandja arvutil) kuni äärmiselt<br />

tõsiseni (viiruste levitamine ja teiste arvutite<br />

ründamine)


ACM/IEEE eetikakood<br />

• ACM ja IEEE liikmed allkirjastavad liitumisel vastava<br />

organisatsiooni eetikakoodeksi<br />

• Eetikakoodeks sisaldab kaheksat põhimõtet<br />

professionaalsete tarkvarainseneride käitumise ja<br />

otsustuste jaoks


Code of ethics - preamble<br />

• Preamble<br />

<br />

<br />

The short version of the code summarizes aspirations at a<br />

high level of the abstraction; the clauses that are included in<br />

the full version give examples and details of how these<br />

aspirations change the way we act as software engineering<br />

professionals. Without the aspirations, the details can<br />

become legalistic and tedious; without the details, the<br />

aspirations can become high sounding but empty; together,<br />

the aspirations and the details form a cohesive code.<br />

Software engineers shall commit themselves to making the<br />

analysis, specification, design, development, testing and<br />

maintenance of software a beneficial and respected<br />

profession. In accordance with their commitment to the<br />

health, safety and welfare of the public, software engineers<br />

shall adhere to the following Eight Principles:


Code of ethics - principles<br />

• PUBLIC<br />

<br />

Software engineers shall act consistently with the<br />

public interest.<br />

• CLIENT AND EMPLOYER<br />

<br />

• PRODUCT<br />

<br />

Software engineers shall act in a manner that is in the<br />

best interests of their client and employer consistent<br />

with the public interest.<br />

Software engineers shall ensure that their products<br />

and related modifications meet the highest<br />

professional standards possible.


Code of ethics - principles<br />

• JUDGMENT<br />

<br />

Software engineers shall maintain integrity and<br />

independence in their professional judgment.<br />

• MANAGEMENT<br />

<br />

Software engineering managers and leaders shall<br />

subscribe to and promote an ethical approach to the<br />

management of software development and<br />

maintenance.<br />

• PROFESSION<br />

<br />

Software engineers shall advance the integrity and<br />

reputation of the profession consistent with the public<br />

interest.


Code of ethics - principles<br />

• COLLEAGUES<br />

Software engineers shall be fair to and<br />

supportive of their colleagues.<br />

• SELF<br />

Software engineers shall participate in lifelong<br />

learning regarding the practice of their profession<br />

and shall promote an ethical approach to the<br />

practice of the profession.


Eetilised dilemmad<br />

• Põhimõtteline mittenõustumine firma juhtkonna<br />

poliitikaga?<br />

• Sinu tööandja käitub ebaeetilisel viisil väljastades<br />

ohutuskriitilise süsteemi ilma seda testimata?<br />

• Osalemine massihävitusrelvade või tuumarelvade<br />

valjatöötamisel?


Põhipunktid<br />

• <strong>Tarkvaratehnika</strong> e. tarkvara inseneeria on<br />

professionaalsele tarkvaraarendusele suunatud<br />

distsipliin, mis tegeleb sellega, kuidas organiseerida<br />

tarkvaraarendust<br />

• Tarkvaratooted koosnevad valjatöötatud<br />

programmidest ja nende dokumentatsioonist<br />

• Tarkvaratoode on alati osa mingist laiemast sotsiotehnilisest<br />

süsteemist<br />

• Tarkvaraprotsess koosneb tegevustest, mis on<br />

vajalikud tarkvaratoodete arendamiseks. Nende<br />

tegevuste organiseerimisega tegelebki<br />

tarkvaratehnika.<br />

• Tarkvarainseneril on eetilised kohustused, mis ei piirdu<br />

vaid tehniliste oskuste rakendamisega

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

Saved successfully!

Ooh no, something went wrong!