IDK0071 Tarkvaratehnika Loeng 1: Sissejuhatus tarkvaratehnikasse
IDK0071 Tarkvaratehnika Loeng 1: Sissejuhatus tarkvaratehnikasse
IDK0071 Tarkvaratehnika Loeng 1: Sissejuhatus tarkvaratehnikasse
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