{"id":65,"date":"2019-03-26T10:09:42","date_gmt":"2019-03-26T10:09:42","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvaraarendus\/chapter\/tarkvaraarenduse-etapid\/"},"modified":"2020-07-22T14:04:13","modified_gmt":"2020-07-22T14:04:13","slug":"tarkvaraarenduse-etapid","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/tarkvaraarenduse-etapid\/","title":{"raw":"Tarkvaraarenduse etapid","rendered":"Tarkvaraarenduse etapid"},"content":{"raw":"<h1>Sissejuhatus<\/h1>\nK\u00e4esolevas osas vaatleme, kuidas tarkvara on n-\u00f6 t\u00f6\u00f6stuslikult arendatud ja praegu arendatakse. Kuigi ka siin materjalis tuuakse v\u00e4lja erinevaid k\u00e4sitlusi, on neid tegelikult veel m\u00e4rksa rohkem. V\u00e4hemalt osa termineid ei ole \u00fcheselt m\u00e4\u00e4ratud ja nii v\u00f5ivad n\u00e4iteks erinevates firmades varieeruda ametikohtade nimetused. Konkreetsed kohustused v\u00f5ivad erinevalt jaotuda vastavalt firma v\u00f5i projekti erip\u00e4radele. Kasutusel v\u00f5ivad olla ka t\u00e4psustavad eesliited, nt nooremarendaja ja vanemarendaja. Aga alustame ajaloolise \u00fclevaatega.\n\nKunagi ammu-ammu, 50 aastat tagasi (1968-1969), sai maailm esimest korda kuulda s\u00f5napaari \"software engineering\" (tarkvaraarendus) [<a href=\"http:\/\/homepages.cs.ncl.ac.uk\/brian.randell\/NATO\/Introduction.html\">NATO konverents<\/a>]. Selleks ajaks olid juba mitmed tarkvaraprojektid edukalt v\u00f5i mitte nii v\u00e4ga edukalt l\u00f5ppenud (aastatel 1950-1960) ning selleks, et t\u00f6\u00f6 saaks korralikult tehtud, oldi juba pikemat aega otsitud \u00f5igeid t\u00f6\u00f6protsesse. Pole siin maailmas midagi uut: esimene tarkvara arendamise protsessi mudel oli p\u00e4rit t\u00f6\u00f6stuses ning ehituses kasutusel olnud protsessidest.\n\nV\u00e4iksema maja ehitamisel v\u00f5ivad olla j\u00e4rgmised etapid:\n<ol>\n \t<li>leidub \u00fcks inimene (tellija), kes p\u00fcstitab eesm\u00e4rgi - tahan endale maja, odavalt;<\/li>\n \t<li>arhitekt p\u00fc\u00fcab tema soovidest aru saada, luua eskiise, kirja panna, suhelda kohaliku omavalitsusega (paberid tuleb ju korda teha);<\/li>\n \t<li>insener arvutab v\u00e4lja t\u00fc\u00fctud detailid;<\/li>\n \t<li>ehitajad ehitavad, ehitusmeister juhib;<\/li>\n \t<li>ehitusj\u00e4relevalve vaatab, et ehitus k\u00e4iks reeglite j\u00e4rgi;<\/li>\n \t<li>tellija v\u00f5tab maja vastu ning kas kolib sisse v\u00f5i laseb sel maha laguneda.<\/li>\n<\/ol>\n[caption id=\"\" align=\"alignnone\" width=\"1026\"]<img class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh4.googleusercontent.com\/RZhNGu0Knwnv8NilISpx8-S19biWhzx3pvZ1vkeZiRaztnfPsMfMoMqTKPlqXvyjKWTgfc_6tCfFe3vv19SV2yloiAp9IcXZ-2jSv1wxgnFJg8hHbWdzVlg3on0Zq3l3bQVfqobx\" alt=\"\" width=\"1026\" height=\"802\"> Joonis 1. Maja ehitamine[\/caption]\n\nMaja ehitamisel on selline protsess ennast \u00f5igustanud, niisiis lootsid inimesed, et see t\u00f6\u00f6tab ka kujuteldava maja (ehk tarkvara) \u00fclesehitamisel.\n<h1>Rollid<\/h1>\nEsitatud skeem ei n\u00e4ita k\u00f5iki ehituse etappe ega ka inimesi, kes sinna kaasatud on. Suure projekti puhul teevad kaasa veel n\u00e4iteks joonestaja, visualisaator, materjalide ekspert, elektriinsener, eelarvestaja, sisekujundaja, dekoraator, elektrik, santehnik, plaatija, maaler, laminaatparketi paigaldaja ja teised. Projekti eduka l\u00f5pu nimel t\u00f6\u00f6tavad paljud inimesed, kes t\u00e4idavad erinevaid \u00fclesandeid. M\u00f5nes projektis on neid rohkem, m\u00f5nes v\u00e4hem. V\u00e4iksema maja puhul tegeleb eelarvestamisega kas tellija ise v\u00f5i ehitaja. Arhitekt joonestab, arvutab v\u00e4lja detailid ja suhtleb nii tellija kui ka omavalitsusega. Tarkvara loomisel on palju sarnaseid rolle - inimene t\u00e4idab samalaadseid funktsioone ning teda kutsutakse sarnaselt (nt insener vs tarkvara insener). Tarkvara loomisel osaleb palju inimesi.\n\nTarkvara valmimise seisukohast olulisim inimeste r\u00fchm (inimene) on tellija. Tellijaks v\u00f5ib olla \u00e4rimees, firma, omavalitsus, asutuse teine osakond, eraisik. Tarkvaraarenduse protsessi kirjeldamisel nimetatakse seda poolt \u00e4riks (ingl <em>bussiness<\/em>).\n\n[caption id=\"\" align=\"alignleft\" width=\"287\"]<img class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh5.googleusercontent.com\/Gly6GfgyosyO4R9Z6CyUqrpLRSeFHfYFyvpiI5AsKm3SgRB3IyqSciP6AwXxMildWFFAhKD7IxnRmmOU8j85LSpHgBCjK7uSsJ1mFdmqIuz94w5wDxm9_uk0nW8tKzAajIvrQB4m\" alt=\"\" width=\"287\" height=\"287\"> Joonis 2. \u00c4rirollid[\/caption]\n\n\u00c4ri poolel on mitu rolli, nendest on p\u00f5hilised:\n\n<strong>Tooteomanik<\/strong> (ingl <em>product\u00a0owner<\/em>) on tellija esindaja, kes tunneb vajadust tarkvara j\u00e4rele ning otsustab, et toode tuleb luua. Olenevalt asutuse suurusest v\u00f5ib tooteomanikuks olla \u00e4riomanik (ingl\u00a0 <em>business owner<\/em>) ise v\u00f5i mitte.\n\n<strong>\u00c4riarhitekt<\/strong> (ingl <em>business architect<\/em>) on inimene, kes n\u00e4eb ning paneb kirja (joonestab) suure pildi, nt kaardistab tarkvaravajadused vastavas \u00e4riprotsessis.\n\n<strong>\u00c4rianal\u00fc\u00fctik<\/strong> (ingl <em>business analyst<\/em>) aitab panna kirja, mida tahetakse saavutada (esmane t\u00f5lge inimkeelest IT-keelde).\n\n<strong>Tarkvara kasutaja<\/strong> (ingl <em>software user<\/em>) on valmiva toote l\u00f5ppkasutaja (v\u00f5ib olla ka tooteomanik).\n\nAlati ei pruugi \u00e4ri poolel \u00e4riarhitekti ja \u00e4rianal\u00fc\u00fctikut olla. Sellisel juhul v\u00f5ib neid \u00fclesandeid t\u00e4ita vastav spetsialist projekti t\u00e4itja poolel.\n\n\u00c4rist alustab IT-firmaga suhtlemist tooteomanik. IT-firmast on suure t\u00f5en\u00e4osusega esmaseks kontaktiks <strong>m\u00fc\u00fcgiosakond<\/strong> (ingl <em>sales<\/em>). Lepingud on s\u00f5lmitud ning saab alustada projekti sisulise poolega. Oluline on, et \u00e4ri ja IT-firma vahel jutt sujuks, seep\u00e4rast on tihti esmaseks \u201csisuliseks\u201d kontaktiks tarkvaraarhitekt v\u00f5i s\u00fcsteemianal\u00fc\u00fctik.\n\n&nbsp;\n\n[caption id=\"\" align=\"alignnone\" width=\"526\"]<img class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh5.googleusercontent.com\/K5qK2uV-ZBKPM9DzV8trSbreECWQ8-XreHSNDBZHKUpLqPkIrhapkRMZjUMubgMlWImK79R4rX-mCPpgeLt2bAbThjqXhNW_YBIhiR67iQOS52BsJqunF3CiLz12BlTot5V2-sEy\" alt=\"\" width=\"526\" height=\"526\"> Joonis 3. IT rollid[\/caption]\n\n<strong>Tarkvaraarhitekt<\/strong> (ingl <em>software architect<\/em>) planeerib tarkvara \u00fclesehituse: millistest osadest tarkvara koosneb, kuidase need omavahel ja v\u00e4lismaailmaga suhtlevad.\n\n<strong>S\u00fcsteemianal\u00fc\u00fctik<\/strong> (ingl <em>system analyst<\/em>) aitab \u201ct\u00f5lkida\u201d \u00e4risoovid arendajatele sobivateks juhisteks.\n\nTarkvaraarhitekti ja s\u00fcsteemianal\u00fc\u00fctiku plaanide j\u00e4rgi saab tarkvara loomisega alustada. Tarkvara kirjutamise ehk programmeerimisega on seotud mitmed ametinimetused. Tasub m\u00e4rkida, et neid nimetusi kasutatakse paindlikult, erinevalt ja teineteisega vahetatavalt, mist\u00f5ttu ei ole need alati siintoodud t\u00e4hendusega.\n\n<strong>Programmeerija<\/strong> (ingl <em>programmer<\/em>) on keegi, kes kirjutab programmi. K\u00f5ige lihtsamalt v\u00f5ib see olla keegi, kes instruktsioonide j\u00e4rgi programmi kirjutab, ise programmi ehitusele v\u00e4he m\u00f5eldes. \u00dcldnimetusena v\u00f5ib see t\u00e4histada \u00fcksk\u00f5ik millist programmi kirjutamisega seotud ametit.\n\n<strong>Arendaja<\/strong> (ingl\u00a0<em>developer)<\/em> on \u00fcldm\u00f5iste t\u00f6\u00f6taja kohta, kes tarkvara loob. Arendust\u00f6\u00f6ks on vaja arusaamist programmeerimiskeelest ja n\u00f5uetest, kuid keerukamate \u00fclesannete jaoks v\u00f5ib olla tarvis laialdasemaid teadmisi. Oskuste, kogemuste ning vastutuse p\u00f5hjal eristatakse vahel <strong>nooremarendajat<\/strong> (ingl <em> junior developer<\/em>), kellele usaldatakse enamasti kergemad \u00fclesanded, ja <strong>vanemarendajat <\/strong>(ingl\u00a0<em>senior developer<\/em>), kes saab hakkama n\u00f5udlikumate t\u00f6\u00f6dega.\n\n<strong>Tarkvarainsener<\/strong> (ingl <em>software engineer<\/em>) tunneb programmeerimisega seotud infotehnoloogilisi v\u00f5imalusi (raamistikke, malle, arhitektuure, protsesse, tehnikaid jne.) ning oskab neid otstarbekohaselt rakendada. Tihti v\u00f5ib see kattuda arendaja v\u00f5i vanemarendaja t\u00f6\u00f6kirjeldusega.\n\n<strong>Testija<\/strong> (ingl <em>quality assurance tester<\/em>) kontrollib, et tarkvara teeks seda, mida ta peab tegema, ehk et \u00e4risoovid oleksid t\u00e4idetud ning tarkvaras ei oleks vigu. Seda rolli saab v\u00f5rrelda j\u00e4relevalveametniku rolliga ehituses.\n\n<strong>S\u00fcsteemiadministraator<\/strong> (ingl <em>system administrator<\/em>) vastutab arvutis\u00fcsteemide eest; hangib, paigaldab ja uuendab tarkvara ja riistvarakomponendid, ehk kannab hoolt, et k\u00f5ik s\u00fcsteemid oleksid t\u00f6\u00f6korras.\n\n<strong>Andmebaasi administraator<\/strong> (ingl <em>database administrator<\/em>) haldab andmebaasi, vastutab andmete s\u00e4ilitamise, rakenduse t\u00f6\u00f6tamise eest.\n\n<strong>Kasutajatugi<\/strong> (ingl <em>helpdesk<\/em>) aitab kasutajatel tarkvara kasutada. Tavaelus on kasutajatugi alati k\u00f5ne kaugusel (m\u00f5nikord on abiks murelahendaja), nt kui valminud majast peaks kaduma internet, tuleb ennek\u00f5ike v\u00f5tta \u00fchendust teenuse osutajaga, kasutajatugi suunab \u00f5ige lahenduseni.\n\n<strong>Koolitaja<\/strong> (ingl <em>training<\/em>) \u00f5petab l\u00f5ppkasutajat tarkvara kasutama, vajadusel vastutab kasutamiseks vajalike dokumentide loomise eest. Ka maja ehitamisel saab omanik palju \u201ckoolitajatega\u201d kokku. N\u00e4iteks p\u00e4rast uue k\u00fcttes\u00fcsteemi paigaldamist ja t\u00f6\u00f6le panemist \u201ckoolitab\u201d vastutav isik omanikku s\u00fcsteemi hooldama ja kasutama, seda sisse ja v\u00e4lja l\u00fclitama, toatemperatuuri reguleerima. V\u00f5i siis uude korterisse sisse kolimisel v\u00f5ib ees oodata pikem koolitus: kas koduloomad on lubatud, kuhu milline pr\u00fcgi l\u00e4heb, kuidas reguleerida ventilatsiooni, k\u00fctet jne.\n\n<strong>Projektijuht<\/strong> (ingl <em>project manager<\/em>) juhib projekti t\u00f6\u00f6korraldust, hoolitseb l\u00f5pptulemuse saavutamise eest, j\u00e4lgib eelarve t\u00e4itmist. Ka ehituses v\u00f5ib omanik vajaduse v\u00f5i v\u00f5imaluse puhul palgata tellija esindaja - projektijuhi. See imeline inimene seisab tellija soovide t\u00e4itmise eest, j\u00e4lgib, et ehitus oleks eelarves, tegeleb t\u00f6\u00f6tajatega.\n\n<strong>Arenduse juht<\/strong> (ingl <em>development manager<\/em>) koordineerib koost\u00f6\u00f6d projektide vahel, saab projekti katkestada.\n\nEelpool nimetasime palju erinevaid rolle, mis ei t\u00e4henda, et 18 inimese puudumisel tarkvara tegemata j\u00e4\u00e4b. Iga inimene v\u00f5ib t\u00e4ita mitut rolli, \u00fches rollis v\u00f5ib olla mitu inimest. V\u00e4he sellest - \u00a0k\u00f5ik need rollid polegi igas projektis vajalikud. Rollide arv s\u00f5ltub projekti suurusest ning valitud tarkvara loomise mudelist.\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\n<code>[h5p id=\"25\"]<\/code>\n<h1>Mudelid<\/h1>\nEelmises peat\u00fckis sai mainitud, et rollide arv s\u00f5ltub tarkvara loomise mudelist. Mis loom see mudel v\u00f5i protsess selline on?\n\nS\u00f5naraamat Cambridge Dictionary seletab \u201cprotsessi\u201d j\u00e4rgmiselt: tegevused, mida v\u00f5etakse ette tulemuseni j\u00f5udmiseks [<a href=\"https:\/\/dictionary.cambridge.org\/dictionary\/english\/process\">CambridgeDict<\/a>].\n\nMis tegevusi tuleb ette v\u00f5tta, et tarkvara valmis saaks? V\u00e4lja uurida, millist tulemust tellija ootab, programmeerida, testida k\u00f5ige t\u00f6\u00f6korras olemist ning panna tarkvara t\u00f6\u00f6le. Kui ees on v\u00e4iksem \u00fclesanne, n\u00e4iteks vanaemale kodulehek\u00fclje loomine, on selline nimekiri v\u00e4ga m\u00f5istlik ning v\u00f5ib kohe t\u00f6\u00f6le hakata: t\u00e4psustada, mis v\u00e4rvid vanaemale meeldivad ning teha lehek\u00fclg valmis. \u00a0Mikroprojekti puhul on selge, mida teha. Mida suuremaks kasvab \u00fclesanne, seda keerulisem on selle realiseerimine. Suurem on ka oht, et mingil hetkel kaob \u00e4ra arusaamine tehtud ja tegemata asjadest v\u00f5i eeldatavast ajakulust. Sellistes asjades selgusele j\u00f5udmiseks hakati m\u00f5tlema struktureeritud tegevuse peale, nii s\u00fcndisidki esimesed tarkvara loomise protsessi mudelid.\n<h1>Koskmudel (<em>waterfall<\/em>)<\/h1>\nAastal 1970 r\u00e4\u00e4giti esimest korda tarkvara loomise mudelist nimega <em>waterfall<\/em> (koskmudel, lineaarne mudel W. Royce 1970[<a href=\"http:\/\/www.cs.umd.edu\/class\/spring2003\/cmsc838p\/Process\/waterfall.pdf\">Royce<\/a>]) :\n\n[caption id=\"\" align=\"alignnone\" width=\"1018\"]<img class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh3.googleusercontent.com\/QffgFZ2yML0o6qTw2zfPj3YOKpHmV_ZMf-pljcVJHzyvnY_InR9IMggL-gf2VyHuBfvDkVCU5lSa42pghWpAJbFacLMQUxh5-hdZXsf3KHcQAQaSt1_MRSlHm-Vxiollzp2SGPaIK9ZRUyBNOw\" alt=\"\" width=\"1018\" height=\"389\"> Joonis 4. Koskmudel[\/caption]\n<ol>\n \t<li>n\u00f5uete kogumine ja anal\u00fc\u00fcs - \u00fclesande p\u00fcstitus;<\/li>\n \t<li>s\u00fcsteemidisain - projekteerimine;<\/li>\n \t<li>arendus ja \u00fchiktestimine - arendamine;<\/li>\n \t<li>integreerimine ja testimine - verifitseerimine (kontroll);<\/li>\n \t<li>kasutamine ja hooldus - t\u00f6\u00f6de vastuv\u00f5tt, tarkvara kasutuselev\u00f5tt.<\/li>\n<\/ol>\nVarsti oli selge, et seda mudelit tuleb iga sammu juures t\u00e4iendada ja minna tagasi eelmiste juurde, n\u00e4iteks kui\n<ul>\n \t<li>leiti, et m\u00f5ni \u00fclesanne ei olnudki v\u00e4ga h\u00e4sti s\u00f5nastatud,<\/li>\n \t<li>olukord on muutunud,<\/li>\n \t<li>leiti viga.<\/li>\n<\/ul>\nSee t\u00e4hendab, et tuli uuesti korralikult l\u00e4bi vaadata, mida teha, projekteerida, arendada, kontrollida, v\u00f5tta kasutusele jne.\n\nV\u00f5eti kasutusele t\u00e4iendatud iteratiivne koskmudel (<em>waterfall iterative<\/em>):\n\n[caption id=\"\" align=\"alignnone\" width=\"1018\"]<img class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh6.googleusercontent.com\/KLv6xZ6Z6wkfx3h1Y1eErIIpSq7Btk_DG1Fl4Z0Fl2dZ-ZD4pSmlxeFonW2k_20PhtA0481I9CyQKYusclgXL_akC3U2KAyFuAf0IXwRLM6ECspHfSxns_o_stm7FW-5mlxTVfM1cpR19skGnQ\" alt=\"\" width=\"1018\" height=\"389\"> Joonis 5. Iteratiivne koskmudel[\/caption]\n\nM\u00f6\u00f6dunud on k\u00fcll palju aastaid, kuid selline mudel (variatsioonidega) on endiselt kasutusel.\n<h2>Koskmudeli plussid<\/h2>\nKoskmudeli eelised: selged p\u00f5hjused-tagaj\u00e4rjed, struktuur, juhtidel on lihtsam j\u00e4lgida, kas projekt on graafikus, v\u00e4ljamaksed konkreetsete etappide eest.\n\nM\u00f5nikord on see ainuv\u00f5imalik lahendus.\n\nN\u00e4iteks on koskmudel endiselt v\u00e4ga laialt kasutusel, kui tellijaks on riigiasutus. Samuti on m\u00f5istlik selle mudeli kasutamine v\u00e4ga v\u00e4ikeste projektide puhul, kus n\u00f5uded on selged, ei muutu ning neid ei tule juurde.\n<h2>Koskmudeli puudused<\/h2>\nKoskmudeli puudusteks on k\u00f5rge hind, v\u00e4ga pikk valmimisaeg, palju dokumente: iga tagasiminek on v\u00e4ga kallis, igal etapil tehtud muudatus n\u00f5uab j\u00e4rgmiste etappide uuesti l\u00e4bimist ning dokumenteerimist.\n\nOn olnud palju projekte, mis l\u00f5petati ning v\u00f5eti vastu, kuid pole kunagi kasutusele v\u00f5etud: aja jooksul muutusid n\u00f5uded nii palju, et valmistarkvara polnud enam vajalik (suure s\u00fcsteemi k\u00f5ikide vajaduste peensusteni kirja panemisele v\u00f5ib minna mitu aastat ning paar metsamassiivi dokumentatsiooni koostamisele).\n<h2>Millal valida koskmudel?<\/h2>\n<ol>\n \t<li>kui n\u00f5uded on teada ning need on l\u00f5plikud ega muutu protsessi k\u00e4igus;<\/li>\n \t<li>on teada, mis tehnoloogiaid kasutada;<\/li>\n \t<li>projekt ei ole liiga pikk;<\/li>\n \t<li>tellija v\u00f5ib olla huvitatud selle mudeli kasutamisest, kui tal ei ole ressursi tegeleda projektiga pidevalt, vaid ainult tellimise (n\u00f5uete kogumise) ning testimise ajal.<\/li>\n<\/ol>\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\n<code>[h5p id=\"26\"]<\/code>\n\n<code><\/code>\n<h1>Iteratiivne mudel<\/h1>\nKoskmudeli kitsaskohtade v\u00e4ltimiseks v\u00f5eti kasutusele iteratiivne mudel (1980 Mills[<a href=\"https:\/\/trace.tennessee.edu\/cgi\/viewcontent.cgi?referer=&amp;httpsredir=1&amp;article=1004&amp;context=utk_harlan\">Mills<\/a>]). Vaadeldud mudelis on protsess v\u00e4ga otsejooneline: konkreetsed etapid konkreetses j\u00e4rjekorras, liikumine punktist A punkti B ja tulemuseks on l\u00f5pptoode.\n\nIteratiivse mudeli puhul valmistatakse toote esimene variant, see vaadatakse \u00fcle, otsustatakse, kas on valitud \u00f5ige tee. Algab uus iteratsioon: toodet t\u00e4iendatakse, see\u00a0vaadatakse \u00fcle, otsustatakse, kas on valitud \u00f5ige tee. Algab uus iteratsioon... kuni toode (imeilus pilt) saab valmis:\n\n[caption id=\"attachment_64\" align=\"aligncenter\" width=\"579\"]<img class=\"wp-image-64\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/proov\/wp-content\/uploads\/sites\/18\/2019\/02\/fuji_pilt_opetusmaterjali_jaoks_avg-300x84.jpg\" alt=\"\" width=\"579\" height=\"162\"> Joonis 6. Iteratiivsed tulemused[\/caption]\n\nIteratiivse mudeli puhul on kogu protsess jagatud mitmeks etapiks (siin ja edasi - iteratsioon), iga iteratsioon kestab 2-6 n\u00e4dalat. Alguses valmistatakse tarkvara kriitilisem osa, sisuliselt j\u00e4lgitakse seejuures samu samme, mida koskmudeli puhul. J\u00e4rgmise iteratsiooni ajal t\u00e4iendatakse tarkvara, luues uue funktsionaalsuse v\u00f5i t\u00e4iendades seda, mis oli varem tehtud. Iteratsioone korrutatakse projekti l\u00f5petamiseni. Kui tarkvara on valmis, v\u00f5etakse see kasutusele. Protsessi paremaks suunamiseks v\u00f5etakse arvesse riskianal\u00fc\u00fcsi tulemusi. Iteratiivset mudelit v\u00f5ib n\u00e4idata j\u00e4rgmiselt:\n\n[caption id=\"\" align=\"alignnone\" width=\"811\"]<img class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh6.googleusercontent.com\/tKHgp1jzF011EbWfODbsapt9-RinhR-BUMCJyhmhNW63UnX3V0FFhW2g6h7YnndgJgXPnKNEkuvft_Szd_SpiduTYvzKO32dvWGZphYkQUvsvDG3ivzdJBg2aGxf0XsuVCydDohGBvVolsWxBw\" alt=\"\" width=\"811\" height=\"591\"> Joonis 7. Iteratiivne mudel[\/caption]\n\nIteratiivse mudeli raamistikud on n\u00e4iteks RUP (<em>The Rational Unified Process<\/em>), EUP (<em>The Enterprise Unified Process<\/em>).\n<h2>Iteratiivse mudeli eelised<\/h2>\nKuna alustada saab \u00fcsna kiiresti, tulevad ka esimesed tulemused kiiresti, mis aitab \u00e4ril (tellijal) paremini aru saada, kas projekt kulgeb \u00f5iges suunas. T\u00e4nu sellele on ka riskide haldamine lihtsam. Projekt on lihtsalt m\u00f5\u00f5detav, seep\u00e4rast sobib\u00a0 suurtele klientidele, kelle jaoks on oluline suure eelarve t\u00e4pne haldamine. Teoreetiliselt on v\u00f5imalik panna k\u00e4ima paralleelselt mitu iteratsiooni, mis kiirendab valmistooteni j\u00f5udmist. Vigadest \u00f5ppimine - saab v\u00e4ltida eelmise iteratsiooni k\u00e4igus avastatud riske ja vigu. Iteratiivne mudel on paindlik - projekti jooksul on v\u00f5imalik muuta esialgseid n\u00f5udeid. [<a href=\"https:\/\/existek.com\/blog\/sdlc-models\/\">SDLC Models Guide<\/a>]\n<h2>Iteratiivse mudeli puudused<\/h2>\nOma paindlikkuse t\u00f5ttu vajab see mudel v\u00e4ga tugevat ning pidevat projektijuhtimist. T\u00f6\u00f6ressursi haldamine on raskem ning see vajab rohkem\u00a0t\u00f6\u00f6j\u00f5udu kui koskmudel (koskmudeli puhul on anal\u00fc\u00fctikul kindel ning pidev t\u00f6\u00f6 projekti alguses, hiljem ainult toetav funktsioon, siis saab teda suunata teise projekti juurde jne). Probleeme v\u00f5ib tekkida arhitektuurses disainis, kui projektiga tegelev seltskond ei ole v\u00e4ga etten\u00e4gelik v\u00f5i kogenud. Riskianal\u00fc\u00fcs vajab t\u00e4iendavat t\u00f6\u00f6j\u00f5udu ja see on kulukas.\n<h2>Millal kasutada iteratiivset mudelit?<\/h2>\n<ol>\n \t<li>On olemas \u00fcldine pilt, mida tahetakse saavutada. V\u00e4iksemaid \u00fclesandeid saab t\u00e4psustada hiljem.<\/li>\n \t<li>Projekt on suur. Kui on oht, et projekt venib pikaks, tasub v\u00f5tta kasutusele iteratiivne mudel, kuna see lubab rakendada paralleelseid iteratsioone: minimeerib riski, et projekti l\u00f5puks muutuvad tarkvara vajadused\/n\u00f5udmised.<\/li>\n<\/ol>\n<h1>Agiilne mudel<\/h1>\nTasapisi hakkas v\u00e4lja kujunema uus paradigma: mida kiirem, seda parem. Mitmed inimesed j\u00f5udsid j\u00e4reldusele, et mida varem saab tellija k\u00e4tte tulemuse, seda parem. Nii saab kiiremini otsustada, kas see, mida tehakse, ikka vastab vajadustele, kas projekti on m\u00f5tet arendada v\u00f5i pole see kuluefektiivne ning tuleb aegsasti kinni panna.\n\nUuteks meetoditeks kujunesid: <em>Extreme Programming<\/em>, <em>Scrum<\/em>, <em>DSDM<\/em> (<em>Dynamic System Development Method<\/em>), <em>Adaptive Software Development<\/em>, <em>Crystal<\/em>, <em>Feature-Driven Development<\/em>, <em>Pragmatic Programming<\/em> jne.\n\n11.-13.02.2001 kohtusid 17 nimetatud meetodite nimekamat kasutajat ja\/v\u00f5i leiutajat ning leppisid kokku uue paradigma s\u00f5nastuses ([<a href=\"https:\/\/agilemanifesto.org\/iso\/et\/manifesto.html\">agiilsuse manifest<\/a>]):\n<blockquote>\"Tarkvara luues ning teisi tarkvara loomise juures aidates oleme leidnud selleks t\u00f6\u00f6ks paremaid viise. Oleme hakanud hindama:\n<ul>\n \t<li><strong>inimesi ja nendevahelist suhtlust<\/strong> rohkem kui protsesse ja arendusvahendeid,<\/li>\n \t<li><strong>t\u00f6\u00f6tavat tarkvara<\/strong> rohkem kui k\u00f5ikeh\u00f5lmavat dokumentatsiooni,<\/li>\n \t<li><strong>koost\u00f6\u00f6d kliendiga<\/strong> rohkem kui l\u00e4bir\u00e4\u00e4kimisi lepingute \u00fcle,<\/li>\n \t<li><strong>reageerimist muutunud oludele<\/strong> rohkem kui algse plaani j\u00e4rgimist.<\/li>\n<\/ul>\nKa parempoolsetel teguritel on v\u00e4\u00e4rtus, kuid me hindame vasakpoolseid tegureid k\u00f5rgemalt.\"<\/blockquote>\nAgiilse arendamise mudeli puhul tarnitakse tellijale valmistarkvara iga etapi l\u00f5pus. Etapid on l\u00fchikesed - 1-2 n\u00e4dalat (m\u00f5ni meetod lubab ka 4 n\u00e4dalat, mis on pigem erand). Iga p\u00e4ev saab projekti meeskond kokku, et kiiresti arutleda, mis m\u00f6\u00f6dunud p\u00e4eval tehtud on, kas m\u00f5ni \u00fclesanne vajab lisatuge. Agiilse meetodi juures v\u00f5ib olla v\u00e4ga v\u00e4he rolle. N\u00e4iteks Scrumi puhul on minimaalne rollide arv kolm: tooteomanik, scrum-master ja meeskonnaliige. Iga iteratsiooni l\u00f5pus toimub tagasivaade: mida saab antud etapil \u00f5ppida, mis l\u00e4ks h\u00e4sti, mis halvasti. Agiilset meetodit v\u00f5ib skemaatiliselt esitada nii:\n\n[caption id=\"\" align=\"alignnone\" width=\"811\"]<img class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh3.googleusercontent.com\/AUwJYImPMpG05Np9OKcvPtXmSjvV1QzSKGrVBXlpCpD12oevvmpPdYXk20b6OQJ2i_C-EcaId6cr69mqiR7GAkmH3vVk9WEviXY33E_pcamPI1mgZyl932U2IgaB58bGWbiQ9jO2g8ys9m-xwA\" alt=\"\" width=\"811\" height=\"487\"> Joonis 8. Agiilne mudel[\/caption]\n<h2>Agiilse mudeli eelised<\/h2>\nAgiilse mudeli peamised eelised on kiirus, reageerimine olukorra muutustele, inimeste suhtlemine. Tellija on motiveeritud liikuma koos projekti meeskonnaga, ta on ise ka meeskonna liige ja kaasatud kogu protsessi.\n<ol>\n \t<li>Tellija rahulolu - uus tarkvara tarnitakse tihti ja kiiresti.<\/li>\n \t<li>Inimesed on protsessidest olulisemad: k\u00f5ik projektis osalevad inimesed on pidevas suhtlemises, m\u00f5jutades tulemust.<\/li>\n \t<li>Projektis osalejad saavad kiiresti tagasisidet, kas see, mis tehti, on vajalik.<\/li>\n \t<li>Olukorra muutmisel saab toodet kiiresti muuta.<\/li>\n \t<li>N\u00f5udeid saab muuta isegi v\u00e4ga hilisel projekti etapil.<\/li>\n \t<li>Dokumenteerimine on minimaalne: puhas isedokumenteeriv kood t\u00e4hendab, et tekib v\u00e4hem dokumente (mida keegi ei loe) ning koodi puhtana hoidmine on arendaja \u00fclesandeks, ehk on suurem t\u00f5en\u00e4osus, et dokumentatsioon (minimaalne arv dokumente + isedokumenteeriv kood) on aktuaalne.<\/li>\n<\/ol>\n<h2>Agiilse mudeli puudused<\/h2>\nAgiilse meetodi k\u00f5ige suurem puudus on inimeste kompetents: nii tellija kui ka arendustiim peavad olema v\u00e4ga kogenud, enesekriitilised ja julged otsustama.\n<ol>\n \t<li>Tellijal peab olema oskus ning volitus v\u00f5tta vastu kiireid ning suuri otsuseid.<\/li>\n \t<li>Arendajate tiim peab olema v\u00e4ga kogenud (omama suurt kogemust, et n\u00e4ha ette v\u00f5imalikke probleeme).<\/li>\n \t<li>Rahastamine pole l\u00e4bipaistev. On oht, et raha saab otsa enne kui \u00fclesanded.<\/li>\n \t<li>Agiilse mudeli puhul on dokumenteerimise piirid v\u00e4ga h\u00e4gusad, tihti dokumente ei tekigi. Dokumentatsiooni korrashoidmine on tugevalt seotud meeskonna kohusetundlikkusega.<\/li>\n<\/ol>\n<h2>Millal kasutada agiilset mudelit?<\/h2>\nAgiilne mudel sobib, kui\n<ol>\n \t<li>meeskond (tooteomanik, arendustiim) on v\u00e4ga tugev;<\/li>\n \t<li>on soov projektiga kiiresti alustada (ei vaja pikka anal\u00fc\u00fcsi faasi);<\/li>\n \t<li>on t\u00f5en\u00e4osus, et m\u00f5ned n\u00f5uded ilmnevad hiljem;<\/li>\n \t<li>rahastus ei ole probleemiks.<\/li>\n<\/ol>\n[<a href=\"http:\/\/tryqa.com\/what-is-agile-model-advantages-disadvantages-and-when-to-use-it\/\">TRY QA<\/a>]\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\nTuletame meelde, millised meetodeid oleme juba vaadelnud:\n\n<code>[h5p id=\"27\"]<\/code>\n<h1>Veel mudeleid<\/h1>\nOn olemas veel mitu erinevat tarkvara loomise protsessi: spiraalmudel, Lean (jah, seesama <a href=\"https:\/\/leanway.ee\/blogi\/mis-on-lean-ja-kuidas-see-ettevottele-kasulik-on\/\">Toyota Lean<\/a>), DevOps. Neil k\u00f5igil on oma koht tarkvara loomise juures. Internetist leiab palju sellekohast infot.\n\nAjaloohuvilistele on lisalugemiseks j\u00e4rgmine link: <a href=\"https:\/\/www.agilealliance.org\/agile101\/practices-timeline\/\">mudelite ajatelg<\/a>.\n<h1>Kokkuv\u00f5te<\/h1>\nOlemas on mitu erinevat tarkvara loomise protsessi, nende klassika on: koskmudel (ingl <em>waterfall<\/em>), iteratiivne (ingl <em>iterative<\/em>), agiilne (ingl <em>agile<\/em>).\n\nTarkvara loomisse on kaasatud mitmeid inimesi, kes t\u00e4idavad erinevaid rolle: tellija, arendaja, testija, projektijuht.\n\nPole olemas \u00fcht t\u00f5de, mudel tuleb valida l\u00e4htuvalt vajadustest ning v\u00f5imalustest. Tihtipeale valitakse meetod v\u00f5i mitu ning kohandatakse vastavalt enda vajadustele\/v\u00f5imalustele.\n<h1>Kasutatud kirjandus<\/h1>\n[CambridgeDict] <a href=\"https:\/\/dictionary.cambridge.org\/dictionary\/english\/process\">https:\/\/dictionary.cambridge.org\/dictionary\/english\/process<\/a>\n\n[NATO konverents] <a href=\"http:\/\/homepages.cs.ncl.ac.uk\/brian.randell\/NATO\/Introduction.html\">http:\/\/homepages.cs.ncl.ac.uk\/brian.randell\/NATO\/Introduction.html<\/a>\n\n[agiilsuse manifest] <a href=\"https:\/\/agilemanifesto.org\/iso\/et\/manifesto.html\">https:\/\/agilemanifesto.org\/iso\/et\/manifesto.html<\/a>\n\n[Royce]\n\n<a href=\"http:\/\/www.cs.umd.edu\/class\/spring2003\/cmsc838p\/Process\/waterfall.pdf\">http:\/\/www.cs.umd.edu\/class\/spring2003\/cmsc838p\/Process\/waterfall.pdf<\/a> , <a href=\"https:\/\/airbrake.io\/blog\/sdlc\/waterfall-model\">https:\/\/airbrake.io\/blog\/sdlc\/waterfall-model<\/a>]\n\n[Mills] <a href=\"https:\/\/trace.tennessee.edu\/cgi\/viewcontent.cgi?referer=&amp;httpsredir=1&amp;article=1004&amp;context=utk_harlan\">https:\/\/trace.tennessee.edu\/cgi\/viewcontent.cgi?referer=&amp;httpsredir=1&amp;article=1004&amp;context=utk_harlan<\/a> \u00a0\"Management of Software Engineering, The - Part I: Principles of Software Engineering\" Harlan D. Mills IBM Systelms Journal 1980","rendered":"<h1>Sissejuhatus<\/h1>\n<p>K\u00e4esolevas osas vaatleme, kuidas tarkvara on n-\u00f6 t\u00f6\u00f6stuslikult arendatud ja praegu arendatakse. Kuigi ka siin materjalis tuuakse v\u00e4lja erinevaid k\u00e4sitlusi, on neid tegelikult veel m\u00e4rksa rohkem. V\u00e4hemalt osa termineid ei ole \u00fcheselt m\u00e4\u00e4ratud ja nii v\u00f5ivad n\u00e4iteks erinevates firmades varieeruda ametikohtade nimetused. Konkreetsed kohustused v\u00f5ivad erinevalt jaotuda vastavalt firma v\u00f5i projekti erip\u00e4radele. Kasutusel v\u00f5ivad olla ka t\u00e4psustavad eesliited, nt nooremarendaja ja vanemarendaja. Aga alustame ajaloolise \u00fclevaatega.<\/p>\n<p>Kunagi ammu-ammu, 50 aastat tagasi (1968-1969), sai maailm esimest korda kuulda s\u00f5napaari &#8220;software engineering&#8221; (tarkvaraarendus) [<a href=\"http:\/\/homepages.cs.ncl.ac.uk\/brian.randell\/NATO\/Introduction.html\">NATO konverents<\/a>]. Selleks ajaks olid juba mitmed tarkvaraprojektid edukalt v\u00f5i mitte nii v\u00e4ga edukalt l\u00f5ppenud (aastatel 1950-1960) ning selleks, et t\u00f6\u00f6 saaks korralikult tehtud, oldi juba pikemat aega otsitud \u00f5igeid t\u00f6\u00f6protsesse. Pole siin maailmas midagi uut: esimene tarkvara arendamise protsessi mudel oli p\u00e4rit t\u00f6\u00f6stuses ning ehituses kasutusel olnud protsessidest.<\/p>\n<p>V\u00e4iksema maja ehitamisel v\u00f5ivad olla j\u00e4rgmised etapid:<\/p>\n<ol>\n<li>leidub \u00fcks inimene (tellija), kes p\u00fcstitab eesm\u00e4rgi &#8211; tahan endale maja, odavalt;<\/li>\n<li>arhitekt p\u00fc\u00fcab tema soovidest aru saada, luua eskiise, kirja panna, suhelda kohaliku omavalitsusega (paberid tuleb ju korda teha);<\/li>\n<li>insener arvutab v\u00e4lja t\u00fc\u00fctud detailid;<\/li>\n<li>ehitajad ehitavad, ehitusmeister juhib;<\/li>\n<li>ehitusj\u00e4relevalve vaatab, et ehitus k\u00e4iks reeglite j\u00e4rgi;<\/li>\n<li>tellija v\u00f5tab maja vastu ning kas kolib sisse v\u00f5i laseb sel maha laguneda.<\/li>\n<\/ol>\n<figure style=\"width: 1026px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh4.googleusercontent.com\/RZhNGu0Knwnv8NilISpx8-S19biWhzx3pvZ1vkeZiRaztnfPsMfMoMqTKPlqXvyjKWTgfc_6tCfFe3vv19SV2yloiAp9IcXZ-2jSv1wxgnFJg8hHbWdzVlg3on0Zq3l3bQVfqobx\" alt=\"\" width=\"1026\" height=\"802\" \/><figcaption class=\"wp-caption-text\">Joonis 1. Maja ehitamine<\/figcaption><\/figure>\n<p>Maja ehitamisel on selline protsess ennast \u00f5igustanud, niisiis lootsid inimesed, et see t\u00f6\u00f6tab ka kujuteldava maja (ehk tarkvara) \u00fclesehitamisel.<\/p>\n<h1>Rollid<\/h1>\n<p>Esitatud skeem ei n\u00e4ita k\u00f5iki ehituse etappe ega ka inimesi, kes sinna kaasatud on. Suure projekti puhul teevad kaasa veel n\u00e4iteks joonestaja, visualisaator, materjalide ekspert, elektriinsener, eelarvestaja, sisekujundaja, dekoraator, elektrik, santehnik, plaatija, maaler, laminaatparketi paigaldaja ja teised. Projekti eduka l\u00f5pu nimel t\u00f6\u00f6tavad paljud inimesed, kes t\u00e4idavad erinevaid \u00fclesandeid. M\u00f5nes projektis on neid rohkem, m\u00f5nes v\u00e4hem. V\u00e4iksema maja puhul tegeleb eelarvestamisega kas tellija ise v\u00f5i ehitaja. Arhitekt joonestab, arvutab v\u00e4lja detailid ja suhtleb nii tellija kui ka omavalitsusega. Tarkvara loomisel on palju sarnaseid rolle &#8211; inimene t\u00e4idab samalaadseid funktsioone ning teda kutsutakse sarnaselt (nt insener vs tarkvara insener). Tarkvara loomisel osaleb palju inimesi.<\/p>\n<p>Tarkvara valmimise seisukohast olulisim inimeste r\u00fchm (inimene) on tellija. Tellijaks v\u00f5ib olla \u00e4rimees, firma, omavalitsus, asutuse teine osakond, eraisik. Tarkvaraarenduse protsessi kirjeldamisel nimetatakse seda poolt \u00e4riks (ingl <em>bussiness<\/em>).<\/p>\n<figure style=\"width: 287px\" class=\"wp-caption alignleft\"><img loading=\"lazy\" decoding=\"async\" class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh5.googleusercontent.com\/Gly6GfgyosyO4R9Z6CyUqrpLRSeFHfYFyvpiI5AsKm3SgRB3IyqSciP6AwXxMildWFFAhKD7IxnRmmOU8j85LSpHgBCjK7uSsJ1mFdmqIuz94w5wDxm9_uk0nW8tKzAajIvrQB4m\" alt=\"\" width=\"287\" height=\"287\" \/><figcaption class=\"wp-caption-text\">Joonis 2. \u00c4rirollid<\/figcaption><\/figure>\n<p>\u00c4ri poolel on mitu rolli, nendest on p\u00f5hilised:<\/p>\n<p><strong>Tooteomanik<\/strong> (ingl <em>product\u00a0owner<\/em>) on tellija esindaja, kes tunneb vajadust tarkvara j\u00e4rele ning otsustab, et toode tuleb luua. Olenevalt asutuse suurusest v\u00f5ib tooteomanikuks olla \u00e4riomanik (ingl\u00a0 <em>business owner<\/em>) ise v\u00f5i mitte.<\/p>\n<p><strong>\u00c4riarhitekt<\/strong> (ingl <em>business architect<\/em>) on inimene, kes n\u00e4eb ning paneb kirja (joonestab) suure pildi, nt kaardistab tarkvaravajadused vastavas \u00e4riprotsessis.<\/p>\n<p><strong>\u00c4rianal\u00fc\u00fctik<\/strong> (ingl <em>business analyst<\/em>) aitab panna kirja, mida tahetakse saavutada (esmane t\u00f5lge inimkeelest IT-keelde).<\/p>\n<p><strong>Tarkvara kasutaja<\/strong> (ingl <em>software user<\/em>) on valmiva toote l\u00f5ppkasutaja (v\u00f5ib olla ka tooteomanik).<\/p>\n<p>Alati ei pruugi \u00e4ri poolel \u00e4riarhitekti ja \u00e4rianal\u00fc\u00fctikut olla. Sellisel juhul v\u00f5ib neid \u00fclesandeid t\u00e4ita vastav spetsialist projekti t\u00e4itja poolel.<\/p>\n<p>\u00c4rist alustab IT-firmaga suhtlemist tooteomanik. IT-firmast on suure t\u00f5en\u00e4osusega esmaseks kontaktiks <strong>m\u00fc\u00fcgiosakond<\/strong> (ingl <em>sales<\/em>). Lepingud on s\u00f5lmitud ning saab alustada projekti sisulise poolega. Oluline on, et \u00e4ri ja IT-firma vahel jutt sujuks, seep\u00e4rast on tihti esmaseks \u201csisuliseks\u201d kontaktiks tarkvaraarhitekt v\u00f5i s\u00fcsteemianal\u00fc\u00fctik.<\/p>\n<p>&nbsp;<\/p>\n<figure style=\"width: 526px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh5.googleusercontent.com\/K5qK2uV-ZBKPM9DzV8trSbreECWQ8-XreHSNDBZHKUpLqPkIrhapkRMZjUMubgMlWImK79R4rX-mCPpgeLt2bAbThjqXhNW_YBIhiR67iQOS52BsJqunF3CiLz12BlTot5V2-sEy\" alt=\"\" width=\"526\" height=\"526\" \/><figcaption class=\"wp-caption-text\">Joonis 3. IT rollid<\/figcaption><\/figure>\n<p><strong>Tarkvaraarhitekt<\/strong> (ingl <em>software architect<\/em>) planeerib tarkvara \u00fclesehituse: millistest osadest tarkvara koosneb, kuidase need omavahel ja v\u00e4lismaailmaga suhtlevad.<\/p>\n<p><strong>S\u00fcsteemianal\u00fc\u00fctik<\/strong> (ingl <em>system analyst<\/em>) aitab \u201ct\u00f5lkida\u201d \u00e4risoovid arendajatele sobivateks juhisteks.<\/p>\n<p>Tarkvaraarhitekti ja s\u00fcsteemianal\u00fc\u00fctiku plaanide j\u00e4rgi saab tarkvara loomisega alustada. Tarkvara kirjutamise ehk programmeerimisega on seotud mitmed ametinimetused. Tasub m\u00e4rkida, et neid nimetusi kasutatakse paindlikult, erinevalt ja teineteisega vahetatavalt, mist\u00f5ttu ei ole need alati siintoodud t\u00e4hendusega.<\/p>\n<p><strong>Programmeerija<\/strong> (ingl <em>programmer<\/em>) on keegi, kes kirjutab programmi. K\u00f5ige lihtsamalt v\u00f5ib see olla keegi, kes instruktsioonide j\u00e4rgi programmi kirjutab, ise programmi ehitusele v\u00e4he m\u00f5eldes. \u00dcldnimetusena v\u00f5ib see t\u00e4histada \u00fcksk\u00f5ik millist programmi kirjutamisega seotud ametit.<\/p>\n<p><strong>Arendaja<\/strong> (ingl\u00a0<em>developer)<\/em> on \u00fcldm\u00f5iste t\u00f6\u00f6taja kohta, kes tarkvara loob. Arendust\u00f6\u00f6ks on vaja arusaamist programmeerimiskeelest ja n\u00f5uetest, kuid keerukamate \u00fclesannete jaoks v\u00f5ib olla tarvis laialdasemaid teadmisi. Oskuste, kogemuste ning vastutuse p\u00f5hjal eristatakse vahel <strong>nooremarendajat<\/strong> (ingl <em> junior developer<\/em>), kellele usaldatakse enamasti kergemad \u00fclesanded, ja <strong>vanemarendajat <\/strong>(ingl\u00a0<em>senior developer<\/em>), kes saab hakkama n\u00f5udlikumate t\u00f6\u00f6dega.<\/p>\n<p><strong>Tarkvarainsener<\/strong> (ingl <em>software engineer<\/em>) tunneb programmeerimisega seotud infotehnoloogilisi v\u00f5imalusi (raamistikke, malle, arhitektuure, protsesse, tehnikaid jne.) ning oskab neid otstarbekohaselt rakendada. Tihti v\u00f5ib see kattuda arendaja v\u00f5i vanemarendaja t\u00f6\u00f6kirjeldusega.<\/p>\n<p><strong>Testija<\/strong> (ingl <em>quality assurance tester<\/em>) kontrollib, et tarkvara teeks seda, mida ta peab tegema, ehk et \u00e4risoovid oleksid t\u00e4idetud ning tarkvaras ei oleks vigu. Seda rolli saab v\u00f5rrelda j\u00e4relevalveametniku rolliga ehituses.<\/p>\n<p><strong>S\u00fcsteemiadministraator<\/strong> (ingl <em>system administrator<\/em>) vastutab arvutis\u00fcsteemide eest; hangib, paigaldab ja uuendab tarkvara ja riistvarakomponendid, ehk kannab hoolt, et k\u00f5ik s\u00fcsteemid oleksid t\u00f6\u00f6korras.<\/p>\n<p><strong>Andmebaasi administraator<\/strong> (ingl <em>database administrator<\/em>) haldab andmebaasi, vastutab andmete s\u00e4ilitamise, rakenduse t\u00f6\u00f6tamise eest.<\/p>\n<p><strong>Kasutajatugi<\/strong> (ingl <em>helpdesk<\/em>) aitab kasutajatel tarkvara kasutada. Tavaelus on kasutajatugi alati k\u00f5ne kaugusel (m\u00f5nikord on abiks murelahendaja), nt kui valminud majast peaks kaduma internet, tuleb ennek\u00f5ike v\u00f5tta \u00fchendust teenuse osutajaga, kasutajatugi suunab \u00f5ige lahenduseni.<\/p>\n<p><strong>Koolitaja<\/strong> (ingl <em>training<\/em>) \u00f5petab l\u00f5ppkasutajat tarkvara kasutama, vajadusel vastutab kasutamiseks vajalike dokumentide loomise eest. Ka maja ehitamisel saab omanik palju \u201ckoolitajatega\u201d kokku. N\u00e4iteks p\u00e4rast uue k\u00fcttes\u00fcsteemi paigaldamist ja t\u00f6\u00f6le panemist \u201ckoolitab\u201d vastutav isik omanikku s\u00fcsteemi hooldama ja kasutama, seda sisse ja v\u00e4lja l\u00fclitama, toatemperatuuri reguleerima. V\u00f5i siis uude korterisse sisse kolimisel v\u00f5ib ees oodata pikem koolitus: kas koduloomad on lubatud, kuhu milline pr\u00fcgi l\u00e4heb, kuidas reguleerida ventilatsiooni, k\u00fctet jne.<\/p>\n<p><strong>Projektijuht<\/strong> (ingl <em>project manager<\/em>) juhib projekti t\u00f6\u00f6korraldust, hoolitseb l\u00f5pptulemuse saavutamise eest, j\u00e4lgib eelarve t\u00e4itmist. Ka ehituses v\u00f5ib omanik vajaduse v\u00f5i v\u00f5imaluse puhul palgata tellija esindaja &#8211; projektijuhi. See imeline inimene seisab tellija soovide t\u00e4itmise eest, j\u00e4lgib, et ehitus oleks eelarves, tegeleb t\u00f6\u00f6tajatega.<\/p>\n<p><strong>Arenduse juht<\/strong> (ingl <em>development manager<\/em>) koordineerib koost\u00f6\u00f6d projektide vahel, saab projekti katkestada.<\/p>\n<p>Eelpool nimetasime palju erinevaid rolle, mis ei t\u00e4henda, et 18 inimese puudumisel tarkvara tegemata j\u00e4\u00e4b. Iga inimene v\u00f5ib t\u00e4ita mitut rolli, \u00fches rollis v\u00f5ib olla mitu inimest. V\u00e4he sellest &#8211; \u00a0k\u00f5ik need rollid polegi igas projektis vajalikud. Rollide arv s\u00f5ltub projekti suurusest ning valitud tarkvara loomise mudelist.<\/p>\n<h3>Enesekontroll (1 \u00fclesanne)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-25\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-25\" class=\"h5p-iframe\" data-content-id=\"25\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Tarkvara loomise mudelid. Rollid. M\u00f5isted.\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h1>Mudelid<\/h1>\n<p>Eelmises peat\u00fckis sai mainitud, et rollide arv s\u00f5ltub tarkvara loomise mudelist. Mis loom see mudel v\u00f5i protsess selline on?<\/p>\n<p>S\u00f5naraamat Cambridge Dictionary seletab \u201cprotsessi\u201d j\u00e4rgmiselt: tegevused, mida v\u00f5etakse ette tulemuseni j\u00f5udmiseks [<a href=\"https:\/\/dictionary.cambridge.org\/dictionary\/english\/process\">CambridgeDict<\/a>].<\/p>\n<p>Mis tegevusi tuleb ette v\u00f5tta, et tarkvara valmis saaks? V\u00e4lja uurida, millist tulemust tellija ootab, programmeerida, testida k\u00f5ige t\u00f6\u00f6korras olemist ning panna tarkvara t\u00f6\u00f6le. Kui ees on v\u00e4iksem \u00fclesanne, n\u00e4iteks vanaemale kodulehek\u00fclje loomine, on selline nimekiri v\u00e4ga m\u00f5istlik ning v\u00f5ib kohe t\u00f6\u00f6le hakata: t\u00e4psustada, mis v\u00e4rvid vanaemale meeldivad ning teha lehek\u00fclg valmis. \u00a0Mikroprojekti puhul on selge, mida teha. Mida suuremaks kasvab \u00fclesanne, seda keerulisem on selle realiseerimine. Suurem on ka oht, et mingil hetkel kaob \u00e4ra arusaamine tehtud ja tegemata asjadest v\u00f5i eeldatavast ajakulust. Sellistes asjades selgusele j\u00f5udmiseks hakati m\u00f5tlema struktureeritud tegevuse peale, nii s\u00fcndisidki esimesed tarkvara loomise protsessi mudelid.<\/p>\n<h1>Koskmudel (<em>waterfall<\/em>)<\/h1>\n<p>Aastal 1970 r\u00e4\u00e4giti esimest korda tarkvara loomise mudelist nimega <em>waterfall<\/em> (koskmudel, lineaarne mudel W. Royce 1970[<a href=\"http:\/\/www.cs.umd.edu\/class\/spring2003\/cmsc838p\/Process\/waterfall.pdf\">Royce<\/a>]) :<\/p>\n<figure style=\"width: 1018px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh3.googleusercontent.com\/QffgFZ2yML0o6qTw2zfPj3YOKpHmV_ZMf-pljcVJHzyvnY_InR9IMggL-gf2VyHuBfvDkVCU5lSa42pghWpAJbFacLMQUxh5-hdZXsf3KHcQAQaSt1_MRSlHm-Vxiollzp2SGPaIK9ZRUyBNOw\" alt=\"\" width=\"1018\" height=\"389\" \/><figcaption class=\"wp-caption-text\">Joonis 4. Koskmudel<\/figcaption><\/figure>\n<ol>\n<li>n\u00f5uete kogumine ja anal\u00fc\u00fcs &#8211; \u00fclesande p\u00fcstitus;<\/li>\n<li>s\u00fcsteemidisain &#8211; projekteerimine;<\/li>\n<li>arendus ja \u00fchiktestimine &#8211; arendamine;<\/li>\n<li>integreerimine ja testimine &#8211; verifitseerimine (kontroll);<\/li>\n<li>kasutamine ja hooldus &#8211; t\u00f6\u00f6de vastuv\u00f5tt, tarkvara kasutuselev\u00f5tt.<\/li>\n<\/ol>\n<p>Varsti oli selge, et seda mudelit tuleb iga sammu juures t\u00e4iendada ja minna tagasi eelmiste juurde, n\u00e4iteks kui<\/p>\n<ul>\n<li>leiti, et m\u00f5ni \u00fclesanne ei olnudki v\u00e4ga h\u00e4sti s\u00f5nastatud,<\/li>\n<li>olukord on muutunud,<\/li>\n<li>leiti viga.<\/li>\n<\/ul>\n<p>See t\u00e4hendab, et tuli uuesti korralikult l\u00e4bi vaadata, mida teha, projekteerida, arendada, kontrollida, v\u00f5tta kasutusele jne.<\/p>\n<p>V\u00f5eti kasutusele t\u00e4iendatud iteratiivne koskmudel (<em>waterfall iterative<\/em>):<\/p>\n<figure style=\"width: 1018px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh6.googleusercontent.com\/KLv6xZ6Z6wkfx3h1Y1eErIIpSq7Btk_DG1Fl4Z0Fl2dZ-ZD4pSmlxeFonW2k_20PhtA0481I9CyQKYusclgXL_akC3U2KAyFuAf0IXwRLM6ECspHfSxns_o_stm7FW-5mlxTVfM1cpR19skGnQ\" alt=\"\" width=\"1018\" height=\"389\" \/><figcaption class=\"wp-caption-text\">Joonis 5. Iteratiivne koskmudel<\/figcaption><\/figure>\n<p>M\u00f6\u00f6dunud on k\u00fcll palju aastaid, kuid selline mudel (variatsioonidega) on endiselt kasutusel.<\/p>\n<h2>Koskmudeli plussid<\/h2>\n<p>Koskmudeli eelised: selged p\u00f5hjused-tagaj\u00e4rjed, struktuur, juhtidel on lihtsam j\u00e4lgida, kas projekt on graafikus, v\u00e4ljamaksed konkreetsete etappide eest.<\/p>\n<p>M\u00f5nikord on see ainuv\u00f5imalik lahendus.<\/p>\n<p>N\u00e4iteks on koskmudel endiselt v\u00e4ga laialt kasutusel, kui tellijaks on riigiasutus. Samuti on m\u00f5istlik selle mudeli kasutamine v\u00e4ga v\u00e4ikeste projektide puhul, kus n\u00f5uded on selged, ei muutu ning neid ei tule juurde.<\/p>\n<h2>Koskmudeli puudused<\/h2>\n<p>Koskmudeli puudusteks on k\u00f5rge hind, v\u00e4ga pikk valmimisaeg, palju dokumente: iga tagasiminek on v\u00e4ga kallis, igal etapil tehtud muudatus n\u00f5uab j\u00e4rgmiste etappide uuesti l\u00e4bimist ning dokumenteerimist.<\/p>\n<p>On olnud palju projekte, mis l\u00f5petati ning v\u00f5eti vastu, kuid pole kunagi kasutusele v\u00f5etud: aja jooksul muutusid n\u00f5uded nii palju, et valmistarkvara polnud enam vajalik (suure s\u00fcsteemi k\u00f5ikide vajaduste peensusteni kirja panemisele v\u00f5ib minna mitu aastat ning paar metsamassiivi dokumentatsiooni koostamisele).<\/p>\n<h2>Millal valida koskmudel?<\/h2>\n<ol>\n<li>kui n\u00f5uded on teada ning need on l\u00f5plikud ega muutu protsessi k\u00e4igus;<\/li>\n<li>on teada, mis tehnoloogiaid kasutada;<\/li>\n<li>projekt ei ole liiga pikk;<\/li>\n<li>tellija v\u00f5ib olla huvitatud selle mudeli kasutamisest, kui tal ei ole ressursi tegeleda projektiga pidevalt, vaid ainult tellimise (n\u00f5uete kogumise) ning testimise ajal.<\/li>\n<\/ol>\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\n<p><code><\/p>\n<div id=\"h5p-26\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-26\" class=\"h5p-iframe\" data-content-id=\"26\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Koskmudeli etapid\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<p><code><\/code><\/p>\n<h1>Iteratiivne mudel<\/h1>\n<p>Koskmudeli kitsaskohtade v\u00e4ltimiseks v\u00f5eti kasutusele iteratiivne mudel (1980 Mills[<a href=\"https:\/\/trace.tennessee.edu\/cgi\/viewcontent.cgi?referer=&amp;httpsredir=1&amp;article=1004&amp;context=utk_harlan\">Mills<\/a>]). Vaadeldud mudelis on protsess v\u00e4ga otsejooneline: konkreetsed etapid konkreetses j\u00e4rjekorras, liikumine punktist A punkti B ja tulemuseks on l\u00f5pptoode.<\/p>\n<p>Iteratiivse mudeli puhul valmistatakse toote esimene variant, see vaadatakse \u00fcle, otsustatakse, kas on valitud \u00f5ige tee. Algab uus iteratsioon: toodet t\u00e4iendatakse, see\u00a0vaadatakse \u00fcle, otsustatakse, kas on valitud \u00f5ige tee. Algab uus iteratsioon&#8230; kuni toode (imeilus pilt) saab valmis:<\/p>\n<figure id=\"attachment_64\" aria-describedby=\"caption-attachment-64\" style=\"width: 579px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-64\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/proov\/wp-content\/uploads\/sites\/18\/2019\/02\/fuji_pilt_opetusmaterjali_jaoks_avg-300x84.jpg\" alt=\"\" width=\"579\" height=\"162\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2019\/02\/fuji_pilt_opetusmaterjali_jaoks_avg-300x84.jpg 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2019\/02\/fuji_pilt_opetusmaterjali_jaoks_avg-768x215.jpg 768w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2019\/02\/fuji_pilt_opetusmaterjali_jaoks_avg-1024x287.jpg 1024w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2019\/02\/fuji_pilt_opetusmaterjali_jaoks_avg-65x18.jpg 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2019\/02\/fuji_pilt_opetusmaterjali_jaoks_avg-225x63.jpg 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2019\/02\/fuji_pilt_opetusmaterjali_jaoks_avg-350x98.jpg 350w\" sizes=\"auto, (max-width: 579px) 100vw, 579px\" \/><figcaption id=\"caption-attachment-64\" class=\"wp-caption-text\">Joonis 6. Iteratiivsed tulemused<\/figcaption><\/figure>\n<p>Iteratiivse mudeli puhul on kogu protsess jagatud mitmeks etapiks (siin ja edasi &#8211; iteratsioon), iga iteratsioon kestab 2-6 n\u00e4dalat. Alguses valmistatakse tarkvara kriitilisem osa, sisuliselt j\u00e4lgitakse seejuures samu samme, mida koskmudeli puhul. J\u00e4rgmise iteratsiooni ajal t\u00e4iendatakse tarkvara, luues uue funktsionaalsuse v\u00f5i t\u00e4iendades seda, mis oli varem tehtud. Iteratsioone korrutatakse projekti l\u00f5petamiseni. Kui tarkvara on valmis, v\u00f5etakse see kasutusele. Protsessi paremaks suunamiseks v\u00f5etakse arvesse riskianal\u00fc\u00fcsi tulemusi. Iteratiivset mudelit v\u00f5ib n\u00e4idata j\u00e4rgmiselt:<\/p>\n<figure style=\"width: 811px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh6.googleusercontent.com\/tKHgp1jzF011EbWfODbsapt9-RinhR-BUMCJyhmhNW63UnX3V0FFhW2g6h7YnndgJgXPnKNEkuvft_Szd_SpiduTYvzKO32dvWGZphYkQUvsvDG3ivzdJBg2aGxf0XsuVCydDohGBvVolsWxBw\" alt=\"\" width=\"811\" height=\"591\" \/><figcaption class=\"wp-caption-text\">Joonis 7. Iteratiivne mudel<\/figcaption><\/figure>\n<p>Iteratiivse mudeli raamistikud on n\u00e4iteks RUP (<em>The Rational Unified Process<\/em>), EUP (<em>The Enterprise Unified Process<\/em>).<\/p>\n<h2>Iteratiivse mudeli eelised<\/h2>\n<p>Kuna alustada saab \u00fcsna kiiresti, tulevad ka esimesed tulemused kiiresti, mis aitab \u00e4ril (tellijal) paremini aru saada, kas projekt kulgeb \u00f5iges suunas. T\u00e4nu sellele on ka riskide haldamine lihtsam. Projekt on lihtsalt m\u00f5\u00f5detav, seep\u00e4rast sobib\u00a0 suurtele klientidele, kelle jaoks on oluline suure eelarve t\u00e4pne haldamine. Teoreetiliselt on v\u00f5imalik panna k\u00e4ima paralleelselt mitu iteratsiooni, mis kiirendab valmistooteni j\u00f5udmist. Vigadest \u00f5ppimine &#8211; saab v\u00e4ltida eelmise iteratsiooni k\u00e4igus avastatud riske ja vigu. Iteratiivne mudel on paindlik &#8211; projekti jooksul on v\u00f5imalik muuta esialgseid n\u00f5udeid. [<a href=\"https:\/\/existek.com\/blog\/sdlc-models\/\">SDLC Models Guide<\/a>]<\/p>\n<h2>Iteratiivse mudeli puudused<\/h2>\n<p>Oma paindlikkuse t\u00f5ttu vajab see mudel v\u00e4ga tugevat ning pidevat projektijuhtimist. T\u00f6\u00f6ressursi haldamine on raskem ning see vajab rohkem\u00a0t\u00f6\u00f6j\u00f5udu kui koskmudel (koskmudeli puhul on anal\u00fc\u00fctikul kindel ning pidev t\u00f6\u00f6 projekti alguses, hiljem ainult toetav funktsioon, siis saab teda suunata teise projekti juurde jne). Probleeme v\u00f5ib tekkida arhitektuurses disainis, kui projektiga tegelev seltskond ei ole v\u00e4ga etten\u00e4gelik v\u00f5i kogenud. Riskianal\u00fc\u00fcs vajab t\u00e4iendavat t\u00f6\u00f6j\u00f5udu ja see on kulukas.<\/p>\n<h2>Millal kasutada iteratiivset mudelit?<\/h2>\n<ol>\n<li>On olemas \u00fcldine pilt, mida tahetakse saavutada. V\u00e4iksemaid \u00fclesandeid saab t\u00e4psustada hiljem.<\/li>\n<li>Projekt on suur. Kui on oht, et projekt venib pikaks, tasub v\u00f5tta kasutusele iteratiivne mudel, kuna see lubab rakendada paralleelseid iteratsioone: minimeerib riski, et projekti l\u00f5puks muutuvad tarkvara vajadused\/n\u00f5udmised.<\/li>\n<\/ol>\n<h1>Agiilne mudel<\/h1>\n<p>Tasapisi hakkas v\u00e4lja kujunema uus paradigma: mida kiirem, seda parem. Mitmed inimesed j\u00f5udsid j\u00e4reldusele, et mida varem saab tellija k\u00e4tte tulemuse, seda parem. Nii saab kiiremini otsustada, kas see, mida tehakse, ikka vastab vajadustele, kas projekti on m\u00f5tet arendada v\u00f5i pole see kuluefektiivne ning tuleb aegsasti kinni panna.<\/p>\n<p>Uuteks meetoditeks kujunesid: <em>Extreme Programming<\/em>, <em>Scrum<\/em>, <em>DSDM<\/em> (<em>Dynamic System Development Method<\/em>), <em>Adaptive Software Development<\/em>, <em>Crystal<\/em>, <em>Feature-Driven Development<\/em>, <em>Pragmatic Programming<\/em> jne.<\/p>\n<p>11.-13.02.2001 kohtusid 17 nimetatud meetodite nimekamat kasutajat ja\/v\u00f5i leiutajat ning leppisid kokku uue paradigma s\u00f5nastuses ([<a href=\"https:\/\/agilemanifesto.org\/iso\/et\/manifesto.html\">agiilsuse manifest<\/a>]):<\/p>\n<blockquote><p>&#8220;Tarkvara luues ning teisi tarkvara loomise juures aidates oleme leidnud selleks t\u00f6\u00f6ks paremaid viise. Oleme hakanud hindama:<\/p>\n<ul>\n<li><strong>inimesi ja nendevahelist suhtlust<\/strong> rohkem kui protsesse ja arendusvahendeid,<\/li>\n<li><strong>t\u00f6\u00f6tavat tarkvara<\/strong> rohkem kui k\u00f5ikeh\u00f5lmavat dokumentatsiooni,<\/li>\n<li><strong>koost\u00f6\u00f6d kliendiga<\/strong> rohkem kui l\u00e4bir\u00e4\u00e4kimisi lepingute \u00fcle,<\/li>\n<li><strong>reageerimist muutunud oludele<\/strong> rohkem kui algse plaani j\u00e4rgimist.<\/li>\n<\/ul>\n<p>Ka parempoolsetel teguritel on v\u00e4\u00e4rtus, kuid me hindame vasakpoolseid tegureid k\u00f5rgemalt.&#8221;<\/p><\/blockquote>\n<p>Agiilse arendamise mudeli puhul tarnitakse tellijale valmistarkvara iga etapi l\u00f5pus. Etapid on l\u00fchikesed &#8211; 1-2 n\u00e4dalat (m\u00f5ni meetod lubab ka 4 n\u00e4dalat, mis on pigem erand). Iga p\u00e4ev saab projekti meeskond kokku, et kiiresti arutleda, mis m\u00f6\u00f6dunud p\u00e4eval tehtud on, kas m\u00f5ni \u00fclesanne vajab lisatuge. Agiilse meetodi juures v\u00f5ib olla v\u00e4ga v\u00e4he rolle. N\u00e4iteks Scrumi puhul on minimaalne rollide arv kolm: tooteomanik, scrum-master ja meeskonnaliige. Iga iteratsiooni l\u00f5pus toimub tagasivaade: mida saab antud etapil \u00f5ppida, mis l\u00e4ks h\u00e4sti, mis halvasti. Agiilset meetodit v\u00f5ib skemaatiliselt esitada nii:<\/p>\n<figure style=\"width: 811px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"HiaYvf-SmKAyb\" src=\"https:\/\/lh3.googleusercontent.com\/AUwJYImPMpG05Np9OKcvPtXmSjvV1QzSKGrVBXlpCpD12oevvmpPdYXk20b6OQJ2i_C-EcaId6cr69mqiR7GAkmH3vVk9WEviXY33E_pcamPI1mgZyl932U2IgaB58bGWbiQ9jO2g8ys9m-xwA\" alt=\"\" width=\"811\" height=\"487\" \/><figcaption class=\"wp-caption-text\">Joonis 8. Agiilne mudel<\/figcaption><\/figure>\n<h2>Agiilse mudeli eelised<\/h2>\n<p>Agiilse mudeli peamised eelised on kiirus, reageerimine olukorra muutustele, inimeste suhtlemine. Tellija on motiveeritud liikuma koos projekti meeskonnaga, ta on ise ka meeskonna liige ja kaasatud kogu protsessi.<\/p>\n<ol>\n<li>Tellija rahulolu &#8211; uus tarkvara tarnitakse tihti ja kiiresti.<\/li>\n<li>Inimesed on protsessidest olulisemad: k\u00f5ik projektis osalevad inimesed on pidevas suhtlemises, m\u00f5jutades tulemust.<\/li>\n<li>Projektis osalejad saavad kiiresti tagasisidet, kas see, mis tehti, on vajalik.<\/li>\n<li>Olukorra muutmisel saab toodet kiiresti muuta.<\/li>\n<li>N\u00f5udeid saab muuta isegi v\u00e4ga hilisel projekti etapil.<\/li>\n<li>Dokumenteerimine on minimaalne: puhas isedokumenteeriv kood t\u00e4hendab, et tekib v\u00e4hem dokumente (mida keegi ei loe) ning koodi puhtana hoidmine on arendaja \u00fclesandeks, ehk on suurem t\u00f5en\u00e4osus, et dokumentatsioon (minimaalne arv dokumente + isedokumenteeriv kood) on aktuaalne.<\/li>\n<\/ol>\n<h2>Agiilse mudeli puudused<\/h2>\n<p>Agiilse meetodi k\u00f5ige suurem puudus on inimeste kompetents: nii tellija kui ka arendustiim peavad olema v\u00e4ga kogenud, enesekriitilised ja julged otsustama.<\/p>\n<ol>\n<li>Tellijal peab olema oskus ning volitus v\u00f5tta vastu kiireid ning suuri otsuseid.<\/li>\n<li>Arendajate tiim peab olema v\u00e4ga kogenud (omama suurt kogemust, et n\u00e4ha ette v\u00f5imalikke probleeme).<\/li>\n<li>Rahastamine pole l\u00e4bipaistev. On oht, et raha saab otsa enne kui \u00fclesanded.<\/li>\n<li>Agiilse mudeli puhul on dokumenteerimise piirid v\u00e4ga h\u00e4gusad, tihti dokumente ei tekigi. Dokumentatsiooni korrashoidmine on tugevalt seotud meeskonna kohusetundlikkusega.<\/li>\n<\/ol>\n<h2>Millal kasutada agiilset mudelit?<\/h2>\n<p>Agiilne mudel sobib, kui<\/p>\n<ol>\n<li>meeskond (tooteomanik, arendustiim) on v\u00e4ga tugev;<\/li>\n<li>on soov projektiga kiiresti alustada (ei vaja pikka anal\u00fc\u00fcsi faasi);<\/li>\n<li>on t\u00f5en\u00e4osus, et m\u00f5ned n\u00f5uded ilmnevad hiljem;<\/li>\n<li>rahastus ei ole probleemiks.<\/li>\n<\/ol>\n<p>[<a href=\"http:\/\/tryqa.com\/what-is-agile-model-advantages-disadvantages-and-when-to-use-it\/\">TRY QA<\/a>]<\/p>\n<h3>Enesekontroll (1 k\u00fcsimus)<\/h3>\n<p>Tuletame meelde, millised meetodeid oleme juba vaadelnud:<\/p>\n<p><code><\/p>\n<div id=\"h5p-27\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-27\" class=\"h5p-iframe\" data-content-id=\"27\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Tarkvara loomise protsessid\"><\/iframe><\/div>\n<\/div>\n<p><\/code><\/p>\n<h1>Veel mudeleid<\/h1>\n<p>On olemas veel mitu erinevat tarkvara loomise protsessi: spiraalmudel, Lean (jah, seesama <a href=\"https:\/\/leanway.ee\/blogi\/mis-on-lean-ja-kuidas-see-ettevottele-kasulik-on\/\">Toyota Lean<\/a>), DevOps. Neil k\u00f5igil on oma koht tarkvara loomise juures. Internetist leiab palju sellekohast infot.<\/p>\n<p>Ajaloohuvilistele on lisalugemiseks j\u00e4rgmine link: <a href=\"https:\/\/www.agilealliance.org\/agile101\/practices-timeline\/\">mudelite ajatelg<\/a>.<\/p>\n<h1>Kokkuv\u00f5te<\/h1>\n<p>Olemas on mitu erinevat tarkvara loomise protsessi, nende klassika on: koskmudel (ingl <em>waterfall<\/em>), iteratiivne (ingl <em>iterative<\/em>), agiilne (ingl <em>agile<\/em>).<\/p>\n<p>Tarkvara loomisse on kaasatud mitmeid inimesi, kes t\u00e4idavad erinevaid rolle: tellija, arendaja, testija, projektijuht.<\/p>\n<p>Pole olemas \u00fcht t\u00f5de, mudel tuleb valida l\u00e4htuvalt vajadustest ning v\u00f5imalustest. Tihtipeale valitakse meetod v\u00f5i mitu ning kohandatakse vastavalt enda vajadustele\/v\u00f5imalustele.<\/p>\n<h1>Kasutatud kirjandus<\/h1>\n<p>[CambridgeDict] <a href=\"https:\/\/dictionary.cambridge.org\/dictionary\/english\/process\">https:\/\/dictionary.cambridge.org\/dictionary\/english\/process<\/a><\/p>\n<p>[NATO konverents] <a href=\"http:\/\/homepages.cs.ncl.ac.uk\/brian.randell\/NATO\/Introduction.html\">http:\/\/homepages.cs.ncl.ac.uk\/brian.randell\/NATO\/Introduction.html<\/a><\/p>\n<p>[agiilsuse manifest] <a href=\"https:\/\/agilemanifesto.org\/iso\/et\/manifesto.html\">https:\/\/agilemanifesto.org\/iso\/et\/manifesto.html<\/a><\/p>\n<p>[Royce]<\/p>\n<p><a href=\"http:\/\/www.cs.umd.edu\/class\/spring2003\/cmsc838p\/Process\/waterfall.pdf\">http:\/\/www.cs.umd.edu\/class\/spring2003\/cmsc838p\/Process\/waterfall.pdf<\/a> , <a href=\"https:\/\/airbrake.io\/blog\/sdlc\/waterfall-model\">https:\/\/airbrake.io\/blog\/sdlc\/waterfall-model<\/a>]<\/p>\n<p>[Mills] <a href=\"https:\/\/trace.tennessee.edu\/cgi\/viewcontent.cgi?referer=&amp;httpsredir=1&amp;article=1004&amp;context=utk_harlan\">https:\/\/trace.tennessee.edu\/cgi\/viewcontent.cgi?referer=&amp;httpsredir=1&amp;article=1004&amp;context=utk_harlan<\/a> \u00a0&#8220;Management of Software Engineering, The &#8211; Part I: Principles of Software Engineering&#8221; Harlan D. Mills IBM Systelms Journal 1980<\/p>\n","protected":false},"author":3,"menu_order":1,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-65","chapter","type-chapter","status-publish","hentry"],"part":63,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/65","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":2,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/65\/revisions"}],"predecessor-version":[{"id":89,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/65\/revisions\/89"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/63"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/65\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=65"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=65"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=65"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=65"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}