{"id":52,"date":"2019-03-08T12:52:26","date_gmt":"2019-03-08T12:52:26","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/?post_type=chapter&#038;p=52"},"modified":"2021-01-25T12:00:16","modified_gmt":"2021-01-25T12:00:16","slug":"tarkvara-arendusnouded","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/chapter\/tarkvara-arendusnouded\/","title":{"raw":"Tarkvara arendusn\u00f5uded","rendered":"Tarkvara arendusn\u00f5uded"},"content":{"raw":"Selles peat\u00fckis \u00f5pid:\r\n<ul>\r\n \t<li>selgitama n\u00f5uete m\u00e4\u00e4ratlemise olulisust tarkvaraarenduses<\/li>\r\n \t<li>s\u00f5nastama funktsionaalseid ja mittefunktsionaalseid n\u00f5udeid<\/li>\r\n \t<li>koostama kasutajalugusid ja kasutusjuhte<\/li>\r\n<\/ul>\r\nEelnevas peat\u00fckis \u00f5ppisime, miks ei piisa tarkvara arendamiseks pelgalt sellest, kui klient esitab oma versiooni oma soovitud lahendusest arendusmeeskonnale. Sageli v\u00f5ivad sellisel juhul varju j\u00e4\u00e4da kliendi tegelikud vajadused, mist\u00f5ttu on arendusmeeskondades anal\u00fc\u00fctikud, kes aitavad kliendi vajadusi p\u00f5hjalikult uurides pakkuda v\u00e4lja sobivaima lahenduse. Selles peat\u00fckis uurime t\u00e4psemalt, kuidas anal\u00fc\u00fctikud antud lahendusi kirjeldavad nii, et neid oleks mugav kliendiga koosk\u00f5lastada ja arendajatele nende p\u00f5hjal t\u00f6\u00f6\u00fclesandeid jagada.\r\n\r\nVaata allpool olevast videost, mis juhtub siis kui anal\u00fc\u00fctik ei suuda kliendi soove arendajale selgeks teha :-)\r\n\r\n[embed]https:\/\/youtu.be\/tUOiO4dN65Y[\/embed]\r\n<h3>Funktsionaalsed n\u00f5uded<\/h3>\r\nIga s\u00fcsteem luuakse eesm\u00e4rgiga pakkuda kasutajale m\u00f5nda funktsiooni \u2013 s\u00fcsteemi k\u00e4itumist v\u00f5i tegevust, mille abil kasutaja saavutab oma soovitud tulemuse. Selleks kirjeldab anal\u00fc\u00fctik s\u00fcsteemi funktsionaalsed n\u00f5uded, et selliseid kasutajate ootuseid s\u00fcsteemi k\u00e4itumise ja tegevuste kohta oleks v\u00f5imalik lihtsalt kliendiga valideerida. Kui alles peale s\u00fcsteemi valmimist selgub, et kliendi n\u00f5udeid oli valesti m\u00f5istetud, on muudatuste tegemine oluliselt kulukam, mist\u00f5ttu on n\u00f5uete kontrollimine koos kliendiga enne programmeerimise alustamist \u00e4\u00e4rmiselt kriitiline. Lisaks annab n\u00f5uete t\u00e4pne kirjeldamine kliendile v\u00f5imaluse kontrollida peale s\u00fcsteemi vastu v\u00f5tmist, kas k\u00f5ik kokku lepitud vajadused said t\u00e4idetud.\r\n\r\nAnal\u00fc\u00fctik alustab funktsionaalsete n\u00f5uete kirjeldamist esmalt l\u00fchikeste lausetena, kirjeldamaks p\u00f5hilisi kliendi ootuseid s\u00fcsteemile. Sellised l\u00fchikesed kirjeldused peavad vastama k\u00fcsimusele <strong>mida<\/strong> s\u00fcsteem peab tegema, mitte aga t\u00e4pselt selgitama <strong>kuidas<\/strong> s\u00fcsteem neid tegevusi v\u00f5imaldab. Kasutame siinkohal n\u00e4itena v\u00f5imalikke funktsionaalsete n\u00f5uete kirjeldusi Instagram\u2019i mobiilirakendust:\r\n<ul>\r\n \t<li style=\"font-weight: 400\">S\u00fcsteemis peab saama pilte \u00fcles laadida \u00fckshaaval;<\/li>\r\n \t<li style=\"font-weight: 400\">S\u00fcsteemis peab saama pilte \u00fcles laadida pilte albumina kuni 10 pilti korraga;<\/li>\r\n \t<li style=\"font-weight: 400\">S\u00fcsteemis peab saama piltidele kommentaare j\u00e4tta.<\/li>\r\n<\/ul>\r\nS\u00fcsteemi loomisel aga on vaja arvestada, et kasutajaid v\u00f5ib olla erinevaid t\u00fc\u00fcpi ning neil v\u00f5ivad olla erinevad \u00f5igused. N\u00e4iteks e-koolis on hinde panemise \u00f5igus vaid \u00f5petajal, kuid mitte tudengil endal. Seep\u00e4rast lisatakse funktsionaalsete n\u00f5uete kirjeldamisel sageli ka t\u00e4psustus, millises rollis v\u00f5i milliste \u00f5igustega kasutaja peab saama vastavat funktsionaalsust kasutada. Kasutame taaskord n\u00e4itena Instagram\u2019i mobiilirakendust:\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Sisselogitud kasutaja peab saama \u00fcles laadida pilte oma Instagrami kontole \u00fckshaaval<\/li>\r\n \t<li style=\"font-weight: 400\">Sisselogitud kasutaja peab saama oma profiilil olevaid pilte teiste sisselogitud ja anon\u00fc\u00fcmsete kasutajate eest varjata.<\/li>\r\n \t<li style=\"font-weight: 400\">Anon\u00fc\u00fcmne kasutaja peab saama vaadata teiste kasutajate avalikke profiile<\/li>\r\n<\/ul>\r\n[h5p id=\"17\"]\r\n<h4>Kasutajalood ja kasutusjuhud<\/h4>\r\nSelleks, et n\u00f5uete kirjeldamine oleks k\u00f5igi projekti osapoolte jaoks \u00fchtmoodi arusaadav, on n\u00f5uete kirjeldamiseks v\u00e4lja t\u00f6\u00f6tatud erinevaid formaate. Siinkohal tutvume l\u00e4hemalt kahe antud formaadiga - kasutajalugu (ehk <em>user story<\/em>) ja kasutusjuht (ehk <em>use case<\/em>).\r\n\r\nKasutajalugu on k\u00f5nekeeles kirjutatud s\u00fcsteemi omaduse v\u00f5i funktsionaalsuse kirjeldus, mis kirjutatakse kindla kasutaja vaatenurgast. Kasutajalugude kirjeldamine tehakse nn lihtsas k\u00f5nekeeles selleks, et ka projekti klient v\u00f5i s\u00fcsteemi kasutajad oleksid v\u00f5imelised omalt poolt esitama ootuseid s\u00fcsteemi funktsionaalsuste ja omaduste osas. \u00dchtlasi v\u00f5imaldab k\u00f5nekeeles kasutajalugude kirjeldamine loodava s\u00fcsteemi funktsionaalsuste n\u00f5udeid kasutajate ja kliendiga lihtsalt valideerida, sest nende m\u00f5istmine ei n\u00f5ua IT-erialast tausta.\r\n\r\nKasutajalugude kirjeldamisel j\u00e4rgitakse reeglina kindlat formaati, mis keskenduvad kolmele k\u00fcsimusele: <em>kes<\/em> (v\u00f5i <em>kellena<\/em>), <em>mis<\/em> (v\u00f5i <em>mida<\/em>) ja <em>miks<\/em>?\r\n<ul>\r\n \t<li style=\"font-weight: 400\"><i>Kes <\/i>ehk millise kasutaja jaoks on vastav funktsionaalsus v\u00f5i s\u00fcsteemi omadus vajalik<i>;<\/i><\/li>\r\n \t<li style=\"font-weight: 400\"><i>Mis <\/i>ehk millist funktsionaalsust v\u00f5i s\u00fcsteemi omadust antud kasutaja vajab;<\/li>\r\n \t<li style=\"font-weight: 400\"><i>Miks <\/i>ehk miks antud funktsionaalsus v\u00f5i s\u00fcsteemi omadus on kasutaja jaoks oluline<i>.<\/i><\/li>\r\n<\/ul>\r\nNende kolme k\u00fcsimuse toel on loodud kasutajaloo kirjeldamiseks kasutatav lauseformaat, mis on j\u00e4rgnev:\r\n<ul>\r\n \t<li style=\"font-weight: 400\"><i>(Kellena) <\/i>ma saan\/tahan s\u00fcsteemis <i>(teha mida), <\/i>et <i>(miks).<\/i><\/li>\r\n<\/ul>\r\nKasutades j\u00e4llegi n\u00e4itena Instagram\u2019i mobiilirakendust, on v\u00f5imalik v\u00e4lja tuua j\u00e4rgnevad kasutajalugude n\u00e4ited:\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Sisselogitud kasutajana ma saan lisada kommentaare postitustele, et jagada oma m\u00f5tteid seoses antud postitusega;<\/li>\r\n \t<li style=\"font-weight: 400\">Sisselogitud kasutajana ma saan m\u00e4rkida oma kontot privaatseks, et piirata ligip\u00e4\u00e4su oma piltidele kasutajatele, kellele ma ei ole oma kontole ligip\u00e4\u00e4su andnud;<\/li>\r\n \t<li style=\"font-weight: 400\">Sisselogitud privaatse kontoga kasutajana ma saan s\u00fcsteemis vastu v\u00f5tta ja tagasi l\u00fckata teiste kasutajate poolt tehtud j\u00e4lgimistaotlusi.<\/li>\r\n<\/ul>\r\nNagu n\u00e4ha on v\u00f5imalik kasutajalugusid kirjeldada nii detailsemalt kui ka v\u00e4hemate detailidega. Kui arendusprojekti klient esitab oma n\u00f5uded kasutajalugudena, siis ongi t\u00e4pselt anal\u00fc\u00fctiku t\u00f6\u00f6 v\u00e4lja selgitada kasutajaloo juures puuduvad detailid. N\u00e4iteks on v\u00f5imalik eelnevalt kirjeldatud esimese Instagram\u2019i kasutajaloo kohta k\u00fcsida hulk t\u00e4psustavaid k\u00fcsimusi:\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Kas iga sisselogitud kasutaja peab saama k\u00f5ikidele piltidele lisada kommentaare?<\/li>\r\n \t<li style=\"font-weight: 400\">Kui pikk v\u00f5ib olla kommentaar, mida lisada saab?<\/li>\r\n \t<li style=\"font-weight: 400\">Kas kommentaar v\u00f5i sisaldada pilte, faile v\u00f5i videosid?<\/li>\r\n \t<li style=\"font-weight: 400\">Kas kommentaarides on v\u00f5imalik \u00e4ra m\u00e4rkida teisi kasutajaid?<\/li>\r\n \t<li style=\"font-weight: 400\">Kas kommentaari on v\u00f5imalik lisada teisele kommentaarile vastuseks?<\/li>\r\n<\/ul>\r\nKui kasutajalood on pigem k\u00f5nekeelsed ja \u00fclds\u00f5nalised kirjeldused s\u00fcsteemi funktsionaalsustest, siis kasutusjuhud on detailsemad sammhaaval t\u00e4psustatud kirjeldused s\u00fcsteemi funktsionaalsuse kasutamise kohta. Kasutusjuhte loovad reeglina anal\u00fc\u00fctikud ja s\u00f5ltuvalt nende detailsusastmest on v\u00f5imalik neid ka vajadusel kasutada otseselt programmeerijate t\u00f6\u00f6 sisendina.\r\n\r\nEhkki kasutusjuhtude formaate on erinevaid, on nende peamised komponendid reeglina samad:\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Pealkiri\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Funktsionaalsus, mida kasutusloona on kirjeldatud;<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">Tegutsejad\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Kasutajarollid, kes antud funktsionaalsust saavad kasutada;<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">Eeltingimused\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Tingimused, mis peavad olema t\u00e4idetud, et antud kasutuslugu saaks alustada ja l\u00e4bida;<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">Protsessi p\u00f5hivoog\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Kirjeldatakse \u00fckshaaval sammudena kogu funktsionaalsuse kasutamise protsess, kus on v\u00e4lja toodud nii kasutaja tegevused kui ka s\u00fcsteemi reaktsioonid kasutaja tegevustele;<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">Alternatiivsed protsessivood\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Kui funktsionaalsuse kasutamises v\u00f5ib esineda m\u00f5ningaid alternatiivseid voogusid, siis kirjeldatakse ka need sammudena ja m\u00e4rgitakse p\u00f5hivoos \u00e4ra, kus vastav alternatiivne voog saab alata;<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">J\u00e4reltingimused\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Millised tingimused on s\u00fcsteemis saavutatud peale selle funktsionaalsuse l\u00e4bimist.<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\nKasutame siinkohal n\u00e4itena \u00fcht protsessi, millega k\u00f5ik tuttavad on - pangaautomaadist sularaha v\u00e4lja v\u00f5tmine:\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Kasutusjuhu pealkiri:\u00a0<b style=\"text-align: initial;font-size: 1em\">X Panga automaadist sularaha v\u00e4lja v\u00f5tmine<\/b><\/li>\r\n \t<li style=\"font-weight: 400\">Tegutsejad\r\n<ul>\r\n \t<li style=\"font-weight: 400\">X panga klient<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">Eeltingimused\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Tegutsejal peab olema X panga kaart<\/li>\r\n \t<li style=\"font-weight: 400\">Tegutsejal peab olema kontol raha<\/li>\r\n \t<li style=\"font-weight: 400\">Tegutseja peab teadma oma pangakaardi PIN-koodi<\/li>\r\n \t<li style=\"font-weight: 400\">Pangaautomaadis peab olema piisav kogus sularaha<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">Protsessi p\u00f5hivoog\r\n<ul>\r\n \t<li style=\"font-weight: 400\">1. Tegutseja sisestab oma pangakaardi pangaautomaati.<\/li>\r\n \t<li style=\"font-weight: 400\">2. S\u00fcsteem k\u00fcsib tegutsejalt pangakaardi PIN-koodi.<\/li>\r\n \t<li style=\"font-weight: 400\">3. Tegutseja sisestab PIN-koodi ja vajutab OK.<\/li>\r\n \t<li style=\"font-weight: 400\">4. S\u00fcsteem kontrollib tegutseja PIN-koodi.\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Alternatiivvoog 1: Vale PIN-kood<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">5. Kui PIN-kood on korrektselt sisestatud, kuvab s\u00fcsteem tegutsejale valiku v\u00f5imalikest funktsionaalsustest.<\/li>\r\n \t<li style=\"font-weight: 400\">6. Tegutseja valib sularaha v\u00e4lja v\u00f5tmise funktsionaalsuse.<\/li>\r\n \t<li style=\"font-weight: 400\">7. S\u00fcsteem kuvab tegutsejale valiku v\u00f5imalikest summadest, mida v\u00e4lja saab v\u00f5tta.<\/li>\r\n \t<li style=\"font-weight: 400\">8. Tegutseja valib summa, mida soovib automaadist sularahana v\u00e4lja v\u00f5tta.<\/li>\r\n \t<li style=\"font-weight: 400\">9. S\u00fcsteem v\u00e4ljastab valitud summa.<\/li>\r\n \t<li style=\"font-weight: 400\">10. S\u00fcsteem kuvab tegutsejale valiku, kas ta soovib j\u00e4tkata v\u00f5i soovib v\u00e4ljutada pangakaardi automaadist.<\/li>\r\n \t<li style=\"font-weight: 400\">11. Tegutseja soovib pangakaardi v\u00e4ljutamist pangaautomaadist.<\/li>\r\n \t<li style=\"font-weight: 400\">12. S\u00fcsteem v\u00e4ljutab pangakaardi.<\/li>\r\n \t<li style=\"font-weight: 400\">13. Tegutseja v\u00f5tab pangakaardi.<\/li>\r\n \t<li style=\"font-weight: 400\">14. S\u00fcsteem kuvab teksti: \u201cT\u00e4name teid tehingu eest!\u201d<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">Alternatiivsed protsessivood\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Alternatiiv 1. Vale PIN-kood\r\n<ul>\r\n \t<li style=\"font-weight: 400\">A1_1. S\u00fcsteem kuvab teate \u201cVale PIN-kood\u201d ja kuvab uuesti PIN-koodi sisestamise v\u00e4lja.<\/li>\r\n \t<li style=\"font-weight: 400\">A1_2. Tegutseja sisestab PIN-koodi ja vajutab OK.<\/li>\r\n \t<li style=\"font-weight: 400\">A1_3. S\u00fcsteem kontrollib tegutseja PIN-koodi.\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Kui PIN-kood on korrektselt sisestatud, j\u00e4tkub protsess p\u00f5hivoo sammust 5.<\/li>\r\n \t<li style=\"font-weight: 400\">Kui PIN-kood on valesti sisestatud teist korda, j\u00e4tkub protsess alternatiivvoo 1 sammust A1_1.<\/li>\r\n \t<li style=\"font-weight: 400\">Kui PIN-kood on valesti sisestatud kolmandat korda, j\u00e4tkub protsess alternatiivvoo 1 sammust A1_4.<\/li>\r\n<\/ul>\r\n<\/li>\r\n \t<li style=\"font-weight: 400\">A1_4. S\u00fcsteem kuvab teate \u201cVale PIN-kood. P\u00f6\u00f6rduge X panga kontorisse uue kaardi v\u00e4ljastamiseks\u201d ja h\u00e4vitab pangakaardi.<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<ul>\r\n \t<li style=\"list-style-type: none\">\r\n<ul>\r\n \t<li style=\"font-weight: 400\"><i>Alternatiiv 2. Suletud\/varastatud pangakaart (j\u00e4tame selle siinkohal detailselt lahkamata)<\/i><\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<ul>\r\n \t<li style=\"font-weight: 400\">J\u00e4reltingimused\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Tegutseja pangakonto seis v\u00e4henes v\u00e4lja v\u00f5etud sularaha summa v\u00f5rra.<\/li>\r\n \t<li style=\"font-weight: 400\">Tegutsejal on soovitud hulk sularaha.<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n[h5p id=\"18\"]\r\n<h3>Mittefunktsionaalsed n\u00f5uded<\/h3>\r\nLisaks funktsionaalsetele n\u00f5uetele on anal\u00fc\u00fctiku t\u00f6\u00f6ks koos kliendiga paika panna ka s\u00fcsteemi mittefunktsionaalsed n\u00f5uded. Mittefunktsionaalsed n\u00f5uded keskenduvad s\u00fcsteemi k\u00e4itumise t\u00e4psustamisele, mitte konkreetsete funktsionaalsuste v\u00f5i omaduste kirjeldamisele. Sellistele n\u00f5uetele tuleb t\u00e4helepanu p\u00f6\u00f6rata, et oleks v\u00f5imalik hinnata ka s\u00fcsteemi toimimise kvaliteeti, mitte lihtsalt tegevusi, mida s\u00fcsteem v\u00f5imaldab.\r\n\r\nMittefunktsionaalsete n\u00f5uete t\u00e4psustamisel paneb anal\u00fc\u00fctik \u00fcheskoos kliendiga paika n\u00e4iteks j\u00e4rgnevad s\u00fcsteemi kvaliteedi eesm\u00e4rgid:\r\n<ul>\r\n \t<li style=\"font-weight: 400\">Kui kiiresti peab veebirakenduse puhul brauser veebilehe kuvama;<\/li>\r\n \t<li style=\"font-weight: 400\">Kui palju kasutajaid peavad saama s\u00fcsteemi korraga kasutada, ilma s\u00fcsteemi kiirust kahjustamata;<\/li>\r\n \t<li style=\"font-weight: 400\">Millistes veebilehitsejates peab olema veebirakendus kasutatav;<\/li>\r\n \t<li style=\"font-weight: 400\">S\u00fcsteem peab olema kasutatav ka vaegn\u00e4gijate puhul.<\/li>\r\n<\/ul>\r\n[h5p id=\"3\"]\r\n<h3>R\u00fchmat\u00f6\u00f6\u00fclesanne<\/h3>\r\n<ol>\r\n \t<li>Valige v\u00e4lja \u00fcks tuttav infos\u00fcsteem (nt. kalendri-\u00e4pp telefonis) ja las iga r\u00fchmaliige koostab selle kohta \u00fche kasutajaloo ja \u00fche kasutusjuhu (andke need \u00fclesanded ka Trellos)<\/li>\r\n \t<li>V\u00f5tke r\u00fchmakaaslase s\u00f5nastatud kasutusjuht ja s\u00f5nastage selle kohta \u00fcks funktsionaalne n\u00f5ua<\/li>\r\n \t<li>S\u00f5nastage \u00fches koos v\u00e4hemalt kaks mittefunktsionaalset n\u00f5uet sama s\u00fcsteemi kohta.<\/li>\r\n \t<li>Esitage oma tulemused Trellos.<\/li>\r\n<\/ol>\r\n<h3>Kasutatud allikad:<\/h3>\r\nhttps:\/\/infosysteemianalyys.weebly.com\/42-analuumluumlsi-faas-ja-etapid.html","rendered":"<p>Selles peat\u00fckis \u00f5pid:<\/p>\n<ul>\n<li>selgitama n\u00f5uete m\u00e4\u00e4ratlemise olulisust tarkvaraarenduses<\/li>\n<li>s\u00f5nastama funktsionaalseid ja mittefunktsionaalseid n\u00f5udeid<\/li>\n<li>koostama kasutajalugusid ja kasutusjuhte<\/li>\n<\/ul>\n<p>Eelnevas peat\u00fckis \u00f5ppisime, miks ei piisa tarkvara arendamiseks pelgalt sellest, kui klient esitab oma versiooni oma soovitud lahendusest arendusmeeskonnale. Sageli v\u00f5ivad sellisel juhul varju j\u00e4\u00e4da kliendi tegelikud vajadused, mist\u00f5ttu on arendusmeeskondades anal\u00fc\u00fctikud, kes aitavad kliendi vajadusi p\u00f5hjalikult uurides pakkuda v\u00e4lja sobivaima lahenduse. Selles peat\u00fckis uurime t\u00e4psemalt, kuidas anal\u00fc\u00fctikud antud lahendusi kirjeldavad nii, et neid oleks mugav kliendiga koosk\u00f5lastada ja arendajatele nende p\u00f5hjal t\u00f6\u00f6\u00fclesandeid jagada.<\/p>\n<p>Vaata allpool olevast videost, mis juhtub siis kui anal\u00fc\u00fctik ei suuda kliendi soove arendajale selgeks teha \ud83d\ude42<\/p>\n<p><a href=\"https:\/\/youtu.be\/tUOiO4dN65Y\">https:\/\/youtu.be\/tUOiO4dN65Y<\/a><\/p>\n<h3>Funktsionaalsed n\u00f5uded<\/h3>\n<p>Iga s\u00fcsteem luuakse eesm\u00e4rgiga pakkuda kasutajale m\u00f5nda funktsiooni \u2013 s\u00fcsteemi k\u00e4itumist v\u00f5i tegevust, mille abil kasutaja saavutab oma soovitud tulemuse. Selleks kirjeldab anal\u00fc\u00fctik s\u00fcsteemi funktsionaalsed n\u00f5uded, et selliseid kasutajate ootuseid s\u00fcsteemi k\u00e4itumise ja tegevuste kohta oleks v\u00f5imalik lihtsalt kliendiga valideerida. Kui alles peale s\u00fcsteemi valmimist selgub, et kliendi n\u00f5udeid oli valesti m\u00f5istetud, on muudatuste tegemine oluliselt kulukam, mist\u00f5ttu on n\u00f5uete kontrollimine koos kliendiga enne programmeerimise alustamist \u00e4\u00e4rmiselt kriitiline. Lisaks annab n\u00f5uete t\u00e4pne kirjeldamine kliendile v\u00f5imaluse kontrollida peale s\u00fcsteemi vastu v\u00f5tmist, kas k\u00f5ik kokku lepitud vajadused said t\u00e4idetud.<\/p>\n<p>Anal\u00fc\u00fctik alustab funktsionaalsete n\u00f5uete kirjeldamist esmalt l\u00fchikeste lausetena, kirjeldamaks p\u00f5hilisi kliendi ootuseid s\u00fcsteemile. Sellised l\u00fchikesed kirjeldused peavad vastama k\u00fcsimusele <strong>mida<\/strong> s\u00fcsteem peab tegema, mitte aga t\u00e4pselt selgitama <strong>kuidas<\/strong> s\u00fcsteem neid tegevusi v\u00f5imaldab. Kasutame siinkohal n\u00e4itena v\u00f5imalikke funktsionaalsete n\u00f5uete kirjeldusi Instagram\u2019i mobiilirakendust:<\/p>\n<ul>\n<li style=\"font-weight: 400\">S\u00fcsteemis peab saama pilte \u00fcles laadida \u00fckshaaval;<\/li>\n<li style=\"font-weight: 400\">S\u00fcsteemis peab saama pilte \u00fcles laadida pilte albumina kuni 10 pilti korraga;<\/li>\n<li style=\"font-weight: 400\">S\u00fcsteemis peab saama piltidele kommentaare j\u00e4tta.<\/li>\n<\/ul>\n<p>S\u00fcsteemi loomisel aga on vaja arvestada, et kasutajaid v\u00f5ib olla erinevaid t\u00fc\u00fcpi ning neil v\u00f5ivad olla erinevad \u00f5igused. N\u00e4iteks e-koolis on hinde panemise \u00f5igus vaid \u00f5petajal, kuid mitte tudengil endal. Seep\u00e4rast lisatakse funktsionaalsete n\u00f5uete kirjeldamisel sageli ka t\u00e4psustus, millises rollis v\u00f5i milliste \u00f5igustega kasutaja peab saama vastavat funktsionaalsust kasutada. Kasutame taaskord n\u00e4itena Instagram\u2019i mobiilirakendust:<\/p>\n<ul>\n<li style=\"font-weight: 400\">Sisselogitud kasutaja peab saama \u00fcles laadida pilte oma Instagrami kontole \u00fckshaaval<\/li>\n<li style=\"font-weight: 400\">Sisselogitud kasutaja peab saama oma profiilil olevaid pilte teiste sisselogitud ja anon\u00fc\u00fcmsete kasutajate eest varjata.<\/li>\n<li style=\"font-weight: 400\">Anon\u00fc\u00fcmne kasutaja peab saama vaadata teiste kasutajate avalikke profiile<\/li>\n<\/ul>\n<div id=\"h5p-17\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-17\" class=\"h5p-iframe\" data-content-id=\"17\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Funktsionaalsed n\u00f5uded\"><\/iframe><\/div>\n<\/div>\n<h4>Kasutajalood ja kasutusjuhud<\/h4>\n<p>Selleks, et n\u00f5uete kirjeldamine oleks k\u00f5igi projekti osapoolte jaoks \u00fchtmoodi arusaadav, on n\u00f5uete kirjeldamiseks v\u00e4lja t\u00f6\u00f6tatud erinevaid formaate. Siinkohal tutvume l\u00e4hemalt kahe antud formaadiga &#8211; kasutajalugu (ehk <em>user story<\/em>) ja kasutusjuht (ehk <em>use case<\/em>).<\/p>\n<p>Kasutajalugu on k\u00f5nekeeles kirjutatud s\u00fcsteemi omaduse v\u00f5i funktsionaalsuse kirjeldus, mis kirjutatakse kindla kasutaja vaatenurgast. Kasutajalugude kirjeldamine tehakse nn lihtsas k\u00f5nekeeles selleks, et ka projekti klient v\u00f5i s\u00fcsteemi kasutajad oleksid v\u00f5imelised omalt poolt esitama ootuseid s\u00fcsteemi funktsionaalsuste ja omaduste osas. \u00dchtlasi v\u00f5imaldab k\u00f5nekeeles kasutajalugude kirjeldamine loodava s\u00fcsteemi funktsionaalsuste n\u00f5udeid kasutajate ja kliendiga lihtsalt valideerida, sest nende m\u00f5istmine ei n\u00f5ua IT-erialast tausta.<\/p>\n<p>Kasutajalugude kirjeldamisel j\u00e4rgitakse reeglina kindlat formaati, mis keskenduvad kolmele k\u00fcsimusele: <em>kes<\/em> (v\u00f5i <em>kellena<\/em>), <em>mis<\/em> (v\u00f5i <em>mida<\/em>) ja <em>miks<\/em>?<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i>Kes <\/i>ehk millise kasutaja jaoks on vastav funktsionaalsus v\u00f5i s\u00fcsteemi omadus vajalik<i>;<\/i><\/li>\n<li style=\"font-weight: 400\"><i>Mis <\/i>ehk millist funktsionaalsust v\u00f5i s\u00fcsteemi omadust antud kasutaja vajab;<\/li>\n<li style=\"font-weight: 400\"><i>Miks <\/i>ehk miks antud funktsionaalsus v\u00f5i s\u00fcsteemi omadus on kasutaja jaoks oluline<i>.<\/i><\/li>\n<\/ul>\n<p>Nende kolme k\u00fcsimuse toel on loodud kasutajaloo kirjeldamiseks kasutatav lauseformaat, mis on j\u00e4rgnev:<\/p>\n<ul>\n<li style=\"font-weight: 400\"><i>(Kellena) <\/i>ma saan\/tahan s\u00fcsteemis <i>(teha mida), <\/i>et <i>(miks).<\/i><\/li>\n<\/ul>\n<p>Kasutades j\u00e4llegi n\u00e4itena Instagram\u2019i mobiilirakendust, on v\u00f5imalik v\u00e4lja tuua j\u00e4rgnevad kasutajalugude n\u00e4ited:<\/p>\n<ul>\n<li style=\"font-weight: 400\">Sisselogitud kasutajana ma saan lisada kommentaare postitustele, et jagada oma m\u00f5tteid seoses antud postitusega;<\/li>\n<li style=\"font-weight: 400\">Sisselogitud kasutajana ma saan m\u00e4rkida oma kontot privaatseks, et piirata ligip\u00e4\u00e4su oma piltidele kasutajatele, kellele ma ei ole oma kontole ligip\u00e4\u00e4su andnud;<\/li>\n<li style=\"font-weight: 400\">Sisselogitud privaatse kontoga kasutajana ma saan s\u00fcsteemis vastu v\u00f5tta ja tagasi l\u00fckata teiste kasutajate poolt tehtud j\u00e4lgimistaotlusi.<\/li>\n<\/ul>\n<p>Nagu n\u00e4ha on v\u00f5imalik kasutajalugusid kirjeldada nii detailsemalt kui ka v\u00e4hemate detailidega. Kui arendusprojekti klient esitab oma n\u00f5uded kasutajalugudena, siis ongi t\u00e4pselt anal\u00fc\u00fctiku t\u00f6\u00f6 v\u00e4lja selgitada kasutajaloo juures puuduvad detailid. N\u00e4iteks on v\u00f5imalik eelnevalt kirjeldatud esimese Instagram\u2019i kasutajaloo kohta k\u00fcsida hulk t\u00e4psustavaid k\u00fcsimusi:<\/p>\n<ul>\n<li style=\"font-weight: 400\">Kas iga sisselogitud kasutaja peab saama k\u00f5ikidele piltidele lisada kommentaare?<\/li>\n<li style=\"font-weight: 400\">Kui pikk v\u00f5ib olla kommentaar, mida lisada saab?<\/li>\n<li style=\"font-weight: 400\">Kas kommentaar v\u00f5i sisaldada pilte, faile v\u00f5i videosid?<\/li>\n<li style=\"font-weight: 400\">Kas kommentaarides on v\u00f5imalik \u00e4ra m\u00e4rkida teisi kasutajaid?<\/li>\n<li style=\"font-weight: 400\">Kas kommentaari on v\u00f5imalik lisada teisele kommentaarile vastuseks?<\/li>\n<\/ul>\n<p>Kui kasutajalood on pigem k\u00f5nekeelsed ja \u00fclds\u00f5nalised kirjeldused s\u00fcsteemi funktsionaalsustest, siis kasutusjuhud on detailsemad sammhaaval t\u00e4psustatud kirjeldused s\u00fcsteemi funktsionaalsuse kasutamise kohta. Kasutusjuhte loovad reeglina anal\u00fc\u00fctikud ja s\u00f5ltuvalt nende detailsusastmest on v\u00f5imalik neid ka vajadusel kasutada otseselt programmeerijate t\u00f6\u00f6 sisendina.<\/p>\n<p>Ehkki kasutusjuhtude formaate on erinevaid, on nende peamised komponendid reeglina samad:<\/p>\n<ul>\n<li style=\"font-weight: 400\">Pealkiri\n<ul>\n<li style=\"font-weight: 400\">Funktsionaalsus, mida kasutusloona on kirjeldatud;<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">Tegutsejad\n<ul>\n<li style=\"font-weight: 400\">Kasutajarollid, kes antud funktsionaalsust saavad kasutada;<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">Eeltingimused\n<ul>\n<li style=\"font-weight: 400\">Tingimused, mis peavad olema t\u00e4idetud, et antud kasutuslugu saaks alustada ja l\u00e4bida;<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">Protsessi p\u00f5hivoog\n<ul>\n<li style=\"font-weight: 400\">Kirjeldatakse \u00fckshaaval sammudena kogu funktsionaalsuse kasutamise protsess, kus on v\u00e4lja toodud nii kasutaja tegevused kui ka s\u00fcsteemi reaktsioonid kasutaja tegevustele;<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">Alternatiivsed protsessivood\n<ul>\n<li style=\"font-weight: 400\">Kui funktsionaalsuse kasutamises v\u00f5ib esineda m\u00f5ningaid alternatiivseid voogusid, siis kirjeldatakse ka need sammudena ja m\u00e4rgitakse p\u00f5hivoos \u00e4ra, kus vastav alternatiivne voog saab alata;<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">J\u00e4reltingimused\n<ul>\n<li style=\"font-weight: 400\">Millised tingimused on s\u00fcsteemis saavutatud peale selle funktsionaalsuse l\u00e4bimist.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Kasutame siinkohal n\u00e4itena \u00fcht protsessi, millega k\u00f5ik tuttavad on &#8211; pangaautomaadist sularaha v\u00e4lja v\u00f5tmine:<\/p>\n<ul>\n<li style=\"font-weight: 400\">Kasutusjuhu pealkiri:\u00a0<b style=\"text-align: initial;font-size: 1em\">X Panga automaadist sularaha v\u00e4lja v\u00f5tmine<\/b><\/li>\n<li style=\"font-weight: 400\">Tegutsejad\n<ul>\n<li style=\"font-weight: 400\">X panga klient<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">Eeltingimused\n<ul>\n<li style=\"font-weight: 400\">Tegutsejal peab olema X panga kaart<\/li>\n<li style=\"font-weight: 400\">Tegutsejal peab olema kontol raha<\/li>\n<li style=\"font-weight: 400\">Tegutseja peab teadma oma pangakaardi PIN-koodi<\/li>\n<li style=\"font-weight: 400\">Pangaautomaadis peab olema piisav kogus sularaha<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">Protsessi p\u00f5hivoog\n<ul>\n<li style=\"font-weight: 400\">1. Tegutseja sisestab oma pangakaardi pangaautomaati.<\/li>\n<li style=\"font-weight: 400\">2. S\u00fcsteem k\u00fcsib tegutsejalt pangakaardi PIN-koodi.<\/li>\n<li style=\"font-weight: 400\">3. Tegutseja sisestab PIN-koodi ja vajutab OK.<\/li>\n<li style=\"font-weight: 400\">4. S\u00fcsteem kontrollib tegutseja PIN-koodi.\n<ul>\n<li style=\"font-weight: 400\">Alternatiivvoog 1: Vale PIN-kood<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">5. Kui PIN-kood on korrektselt sisestatud, kuvab s\u00fcsteem tegutsejale valiku v\u00f5imalikest funktsionaalsustest.<\/li>\n<li style=\"font-weight: 400\">6. Tegutseja valib sularaha v\u00e4lja v\u00f5tmise funktsionaalsuse.<\/li>\n<li style=\"font-weight: 400\">7. S\u00fcsteem kuvab tegutsejale valiku v\u00f5imalikest summadest, mida v\u00e4lja saab v\u00f5tta.<\/li>\n<li style=\"font-weight: 400\">8. Tegutseja valib summa, mida soovib automaadist sularahana v\u00e4lja v\u00f5tta.<\/li>\n<li style=\"font-weight: 400\">9. S\u00fcsteem v\u00e4ljastab valitud summa.<\/li>\n<li style=\"font-weight: 400\">10. S\u00fcsteem kuvab tegutsejale valiku, kas ta soovib j\u00e4tkata v\u00f5i soovib v\u00e4ljutada pangakaardi automaadist.<\/li>\n<li style=\"font-weight: 400\">11. Tegutseja soovib pangakaardi v\u00e4ljutamist pangaautomaadist.<\/li>\n<li style=\"font-weight: 400\">12. S\u00fcsteem v\u00e4ljutab pangakaardi.<\/li>\n<li style=\"font-weight: 400\">13. Tegutseja v\u00f5tab pangakaardi.<\/li>\n<li style=\"font-weight: 400\">14. S\u00fcsteem kuvab teksti: \u201cT\u00e4name teid tehingu eest!\u201d<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">Alternatiivsed protsessivood\n<ul>\n<li style=\"font-weight: 400\">Alternatiiv 1. Vale PIN-kood\n<ul>\n<li style=\"font-weight: 400\">A1_1. S\u00fcsteem kuvab teate \u201cVale PIN-kood\u201d ja kuvab uuesti PIN-koodi sisestamise v\u00e4lja.<\/li>\n<li style=\"font-weight: 400\">A1_2. Tegutseja sisestab PIN-koodi ja vajutab OK.<\/li>\n<li style=\"font-weight: 400\">A1_3. S\u00fcsteem kontrollib tegutseja PIN-koodi.\n<ul>\n<li style=\"font-weight: 400\">Kui PIN-kood on korrektselt sisestatud, j\u00e4tkub protsess p\u00f5hivoo sammust 5.<\/li>\n<li style=\"font-weight: 400\">Kui PIN-kood on valesti sisestatud teist korda, j\u00e4tkub protsess alternatiivvoo 1 sammust A1_1.<\/li>\n<li style=\"font-weight: 400\">Kui PIN-kood on valesti sisestatud kolmandat korda, j\u00e4tkub protsess alternatiivvoo 1 sammust A1_4.<\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\">A1_4. S\u00fcsteem kuvab teate \u201cVale PIN-kood. P\u00f6\u00f6rduge X panga kontorisse uue kaardi v\u00e4ljastamiseks\u201d ja h\u00e4vitab pangakaardi.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><i>Alternatiiv 2. Suletud\/varastatud pangakaart (j\u00e4tame selle siinkohal detailselt lahkamata)<\/i><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400\">J\u00e4reltingimused\n<ul>\n<li style=\"font-weight: 400\">Tegutseja pangakonto seis v\u00e4henes v\u00e4lja v\u00f5etud sularaha summa v\u00f5rra.<\/li>\n<li style=\"font-weight: 400\">Tegutsejal on soovitud hulk sularaha.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div id=\"h5p-18\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-18\" class=\"h5p-iframe\" data-content-id=\"18\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Lohista omadused \u00f5igesse kasti!\"><\/iframe><\/div>\n<\/div>\n<h3>Mittefunktsionaalsed n\u00f5uded<\/h3>\n<p>Lisaks funktsionaalsetele n\u00f5uetele on anal\u00fc\u00fctiku t\u00f6\u00f6ks koos kliendiga paika panna ka s\u00fcsteemi mittefunktsionaalsed n\u00f5uded. Mittefunktsionaalsed n\u00f5uded keskenduvad s\u00fcsteemi k\u00e4itumise t\u00e4psustamisele, mitte konkreetsete funktsionaalsuste v\u00f5i omaduste kirjeldamisele. Sellistele n\u00f5uetele tuleb t\u00e4helepanu p\u00f6\u00f6rata, et oleks v\u00f5imalik hinnata ka s\u00fcsteemi toimimise kvaliteeti, mitte lihtsalt tegevusi, mida s\u00fcsteem v\u00f5imaldab.<\/p>\n<p>Mittefunktsionaalsete n\u00f5uete t\u00e4psustamisel paneb anal\u00fc\u00fctik \u00fcheskoos kliendiga paika n\u00e4iteks j\u00e4rgnevad s\u00fcsteemi kvaliteedi eesm\u00e4rgid:<\/p>\n<ul>\n<li style=\"font-weight: 400\">Kui kiiresti peab veebirakenduse puhul brauser veebilehe kuvama;<\/li>\n<li style=\"font-weight: 400\">Kui palju kasutajaid peavad saama s\u00fcsteemi korraga kasutada, ilma s\u00fcsteemi kiirust kahjustamata;<\/li>\n<li style=\"font-weight: 400\">Millistes veebilehitsejates peab olema veebirakendus kasutatav;<\/li>\n<li style=\"font-weight: 400\">S\u00fcsteem peab olema kasutatav ka vaegn\u00e4gijate puhul.<\/li>\n<\/ul>\n<div id=\"h5p-3\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-3\" class=\"h5p-iframe\" data-content-id=\"3\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Funktsionaalsed n\u00f5uded\"><\/iframe><\/div>\n<\/div>\n<h3>R\u00fchmat\u00f6\u00f6\u00fclesanne<\/h3>\n<ol>\n<li>Valige v\u00e4lja \u00fcks tuttav infos\u00fcsteem (nt. kalendri-\u00e4pp telefonis) ja las iga r\u00fchmaliige koostab selle kohta \u00fche kasutajaloo ja \u00fche kasutusjuhu (andke need \u00fclesanded ka Trellos)<\/li>\n<li>V\u00f5tke r\u00fchmakaaslase s\u00f5nastatud kasutusjuht ja s\u00f5nastage selle kohta \u00fcks funktsionaalne n\u00f5ua<\/li>\n<li>S\u00f5nastage \u00fches koos v\u00e4hemalt kaks mittefunktsionaalset n\u00f5uet sama s\u00fcsteemi kohta.<\/li>\n<li>Esitage oma tulemused Trellos.<\/li>\n<\/ol>\n<h3>Kasutatud allikad:<\/h3>\n<p>https:\/\/infosysteemianalyys.weebly.com\/42-analuumluumlsi-faas-ja-etapid.html<\/p>\n","protected":false},"author":26,"menu_order":3,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-52","chapter","type-chapter","status-publish","hentry"],"part":3,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/pressbooks\/v2\/chapters\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/wp\/v2\/users\/26"}],"version-history":[{"count":34,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/pressbooks\/v2\/chapters\/52\/revisions"}],"predecessor-version":[{"id":270,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/pressbooks\/v2\/chapters\/52\/revisions\/270"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/pressbooks\/v2\/chapters\/52\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/wp\/v2\/media?parent=52"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/pressbooks\/v2\/chapter-type?post=52"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/wp\/v2\/contributor?post=52"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/testimine\/wp-json\/wp\/v2\/license?post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}