Kasutusmall

**Kasutusmall** ehk **kasutusstsenaarium** (ingl *use case*) on käitumismudeli liik, milles kirjeldatakse nõudeid, mis esitatakse süsteemi käitumisele ja kasutamisinteraktsioonile. Kasutusmalli kasutatakse tarkvaraarenduses, et dokumenteerida ja modelleerida süsteemi toimimist eri olukordades. Kasutusstsenaariumi eesmärgiks on lihtsustatud ja struktureeritud ühtne arusaamine ja ülevaade projektist, tuues välja süsteemi kasutatavuse ning interaktsiooni nii kasutaja tasemel kui ka teiste süsteemidega ning koondades ideid .

## Ajalugu
Esimesena võttis kasutusmalli kontseptsiooni kasutusele Ivar Jacobson 1987. aastal.

## Üldpõhimõtted

Kasutusmall on üldine ja ülevaatlik, näidates kuidas süsteemi toimib erinevates olukordades, kuid stsenaariumis ei täpsustata millist programmeerimiskeelt kasutatakse või mida lõppkasutaja parasjagu rakenduse ekraanil näeb. 

Kasutusstsenaariumid on välja töötatud süsteemi toimimise kirjeldamiseks, nende dokumenteerimine aitab analüüsida süsteemi potentsiaalseid tõrkeid ja vigu. Dokumendid sisaldavad süsteemi eesmärke, mis aitavad määratleda, millised funktsioonid peaksid saama süsteemi nõueteks ja olema arenduseks valmis.

Kasutusmallil on mitmeid tasemeid. Lihtsaim stsenaarium sisaldab kirjeldust, osalejaid ja peamist edukat stsenaariumi, detailsem lähenemine kirjeldab iga sammu põhjalikumalt, luues vajadusel iga sammu jaoks eraldi kasutusmalli. Põhjalikumad kirjeldused käsitlevad ka alternatiivseid kasutaja või süsteemi poolt tehtavaid samme, mis ei vii soovitud tulemuseni, kuid on siiski süsteemis võimalikud. 

Igal kasutusstsenaariumi juures peaksid olema lisatud järgmised kategooriad:

* kirjeldus; 
* peamised eesmärgid ja väärtus, mida kasutusstsenaarium süsteemile lisab; 
* rakenduslik eesmärk; 
** inimese ja süsteemi vahelise suhtluse kirjeldus
** uue tehnoloogia kirjeldus
** uue tehnoloogia suhtlus juba olemasolevate lahendustega
* stsenaariumiks vajalikud eeldused; 
* inimosaluse kirjeldus; 
* süsteemi rakendamise kirjeldus.

Kui kasutusmall on kujutatud skeemina, lisatakse sinna ka ja/või operaatorid, et selgitada, kuidas erinevad kasutusmallid teineteist mõjutavad: “või” operaatori kasutatakse alternatiivse valikute puhul ning “ja” operaatorit teise võrdselt vajaliku kasutusmalli jaoks .

### Kasutusmalli kirjutamine
Kasutusmalle on väga erinevaid, nende tasemed ja keerukus võivad varieeruda üldisest kuni väga detailsete kirjeldusteni. Süsteemi kasutusstsenaariumi loomiseks saab kasutada järgnevat kuut etappi: 

# Kasutusmalli määratlemine See hõlmab kasutaja määramist, kes on peamise osatäitja rollis ja esindab teatud kasutajate kategooriat. Osatäitjaid saab omakorda veel liigitada peamiseks ja kõrval osatäitjateks. Peasatäitja vajab ise süsteemi abi eesmärkide saavutamiseks, kõrvalosatäitja eesmärgi täitmiseks vajab süsteem informatsiooni.
# Kasutaja eesmärkide kindlaksmääramine Valitakse konkreetne kasutajatüüp ja pannakse kirja nende eesmärgid. Kõik mida kasutaja tahab saavutada tuleks kirja panema eesmärgina.
# Protsessi defineerimine Analüüsitakse ja dokumenteeritakse, millised sammud on vajalikud, et eesmärk saavutada. Ollakse võimalikult täpne, kirja pannakse ka süsteemi väljundid ja sellega kaasnevad protsessid
# Alternatiivsete stsenaariumite kirjeldamine Mõned stsenaariumid võivad omada alternatiivseid võimalusi, mis ei vii soovitud tulemuseni. Ka selliste juhtude jaoks mõeldakse läbi soovitud tulemused. 
# Kasutusmallide võrdlemine ja ühiste osade leidmine Pärast kõikide kasutusmallide kirja panemist võrreldakse neid teineteisega, et tuvastada ühiseid jooni ja stsenaariume, mille põhjal pannakse kirja reeglite kogum.
# Tegevuse kordamine kõikide kasutajagruppide jaoks Enamik protsessidel on mitmeid erinevaid kasutajagruppe. Kui ühe kasutaja jaoks on kasutusmall valmis tuleks tegevust korrata kõigi erinevate kasutajagruppide jaoks.

## Eelised
Läbi ekstreemprogrammeerimise on populaarsust kogunud kasutajalugude kasutamine, mis on ekstreemoprogrammeerimises planeerimisfaasi keskmine osa . Alistair Cockburn toob välja viis põhjust, miks ta kasutab kasutusmalle agiisles arenduses:

# Nimekiri eesmärkidest annab juhtidele lühikokkuvõtte, millist kasu toob süsteem ärile ja kasutajatele. Samuti on see hea alus projektide planeerimiseks.
# Iga kasutusmalli peamine edustsenaarium annab kõigile ülevaate, mida süsteem teeb ning, mis võib-olla isegi olulisem, mida ta ei tee.
# Tänu laiendustingimustele saab analüütik raamistiku, milles uurida ka pisemaid detaile, mis tihti võtavad 80% projektile kulutatavast ajast ja eelarvest. Lisaks on see ka vaade tulevikku, mille raames saab kaardistada tulevasi probleeme ja murekohti ning võimaldab omada nendele probleemidele lahendust ajaks, kui jõutakse arenduseni.
# Kasutusmalli laiendused annavad vastuse ärilise poolega seotud küsimustele, mida programmeerijad küsivad ning millele vastamine võib olla ilma kindla kasutusmallita keerukas, näiteks “Mida sellises stsenaariumis tegema peaks?”. Tänu sellele on probleemid läbi mõeldud planeerimise käigus, mitte siis kui need avastatakse alles arendusfaasis.
# Täielik kasutusmallide komplekt näitab, et analüütikud on uurinud iga kasutaja vajadusi ning kasutaja eesmärke, mida süsteem peab täitma ning kõiki ärivariante.

Kasutusmallide fookus on kasutajate vajadustel ja nõuetel, aidates arendada funktsioone ja süsteeme, mis vastavad tegelikele kasutajate ootustele ja vajadustele. Lisaks on kasutusmallid kirjutatud peamiselt jutustavas keeles, mistõttu on nad arusaadavad nii programmeerijale kui ka lõppkasutajale ning projekti tellivale firmale. Neid saab kohandada vastavalt projekti vajadusele, ülevaatlikust stsenaariumikirjeldusest kuni süsteemi detailsema tehnilise kirjelduseni.

Kasutusstsenaariumeid saab mugavalt kirjutada ümber ka testmallideks, kui vaadata peamist stsenaariumit ja alternatiivseid stsenaariume ning lisada neile juurde testandmed .

## Kasutusmalli mudel
Kasutusmallskeem on skeem, mis kirjeldab süsteemi käitumist välisvaate perspektiivist, illustreerides kasutusmustrite ja nende loojate vahelisi seoseid. . 

Kasutusmallide diagrammil on neli peamist elementi: 

* osaleja(d), kellega süsteem suhtleb;
* süsteem ise;
* kasutusmallid või teenused, mida süsteem juba oskab kasutada;
* jooned, mis esindavad elementide vahelisi suhteid.

Üks võimalus kasutusmallide modelleerimiseks on kasutada unifitseeritud modelleerimikeelt (UML).

### UML
Unifitseeritud modelleerimiskeel (ingl *Unified Modeling Language*) on üldotstarbeline noteeringukeel keerulise tarkvara, peamiselt suurte objektorienteeritud projektide spetsifitseerimiseks ja visualiseerimiseks . UML põhineb sellistel vanematel noteeringumeetoditel nagu Booch, OMT ja OOSE .

### Kasutusmallist mudeli loomine
Kasutusstsenaariumi tekstist luuakse tavaliselt ka mudel. Mudeli koostamise etapid on järgmised: 

# kasutuajalugudest välja lugeda stsenaariumis osalevad inimesed või süsteemid
# kirja panna, kes on peaosatäitja ning kaasosatäitjad, kes osalevad olukorras
# lisada joonisele eesmärgid
# osatäitjate ülesannete lisamine
# lisada operaatorid ehk luua sõltuvused
# määrata piirangud.

## Viited