Käyttötapaus

**Käyttötapaus** (engl. use case) on ohjelmisto- ja järjestelmäsuunnittelussa toimintojen (actions) tai askelten (event steps) luettelo, joka tavallisesti määrittää toimijaroolin eli aktorin ja (tieto)järjestelmän välistä kommunikaatiota tietyn päämäärän saavuttamiseksi. Termiä aktori käytetään erityisesti UML:n kanssa. Aktori voi olla ihminen tai tarkasteltavasta järjestelmästä erillinen toinen järjestelmä.

Järjestelmäsuunnittelussa käyttötapaukset kuvataan korkeammalla abstraktiotasolla kuin ohjelmistosuunnittelussa
ja ne edustavat järjestelmän missiota tai järjestelmän omistajien (stakeholders) päämääriä. Yksityiskohtaisempia
vaatimuksia voidaan kuvata SysML-kielellä (Systems Modeling Language). SysML on tähän tarkoitukseen rajattu UML-kielen osa.

## Historiaa
Käyttötapausten idean on esitellyt julkisesti Ivar Jacobson vuonna 1987 oliopohjaisiin menetelmiin keskittyneessä 
OOPSLA '87 -konferenssissa. Kuvaustekniikkaa käytettiin tuolloin L.M.Ericssonilla oliopohjaisen analyysin ja suunnittelun työkaluna. Termi *use case* on muokattu käännös Jacobsin kehittämästä ruotsinkielisestä termistä *användningsfall*. 

Vuonna 1992 Jacobson oli mukana kirjoittamassa teosta *Object-Oriented Software Engineering: A Use Case Driven Approach*
, joka loi perustan  OOSE-menetelmälle ja toi yleiseen tietoisuuteen käyttötapaukset keinona tunnistaa toiminnallisia vaatimuksia erityisesti ohjelmistokehitystä varten. Teoksessa *The object advantage: business process reengineering with object technology* (1994) Jacobson yhdessä Maria Ericssonin ja Agneta Jacobsonin kanssa käsitteli käyttötapausten soveltamista liiketoimintamallien ja prosessien kuvaamiseen.

Samoihin aikoihin Grady Booch ja James Rumbaugh työskentelivät yhdistääkseen omat oliopohjaisen analyysin ja suunnittelun menetelmänsä,
Booch methodin ja Object Modeling Techniquen (OMT). Jacobson liittyi heihin 1995 ja tuloksena oli UML-kieli, johon käyttötapausten
mallintaminen sisältyy. Object Management Group (OMG) standardoi UML:n vuonna 1997. 

Jacobson, Booch ja Rumbaugh kehittelivät myös ohjelmistokehityksen prosessimallia nimellä Objectory. Tuloksena oli Unified Process -malli, joka julkaistiin 1999. Käyttötapaukset ovat osa sitä.

Tekniikkaa ovat kehittäneet edelleen monet henkilöt, kuten 1) Larry Constantine (1995) käsitteellä *essential use cases*, jossa tavoitteena on kuvata käyttäjän pyrkimyksiä eikä niinkään toimintosarjoja 
, 2) Alistair Cockburn (2000) tavoitesuuntautuneilla use caseilla, jotka perustuvat teksti- ja taulukkomuotoisiin kuvauksiin
, 3) Kurt Bittner ja Ian Spence (2002) käyttötapauksiin perustuvalla toiminnallisten tarpeiden analyysitekniikalla

, 4) Dean Leffingwell ja Don Widrig (2002) muutoksenhallintaan ja sidosryhmäviestintään keskittyvillä sovelluksilla sekä 5) Gunnar Övergaard (2004) laajentamalla suunnittelumallien
(design patterns) käytön periaatteet käyttötapauksiin.

## Use Case 2.0
Vuonna 2011 Jacobson julkisti yhdessä Ian Spencen ja Kurt Bittnerin kanssa Use Case 2.0 -nimisen e-kirjan, jossa käyttötapaustekniikka liitetään ketterään ohjelmistokehitykseen (agile). Sillä tuetaan myös vaiheittain kehittämistä *use case slices* -rakenteilla, joita käytettäessä ensiksi ratkaistaan yksinkertainen perustapaus. 

## Yleiset periaatteet
Käyttötapaukset ovat järjestelmävaatimusten tunnistamisen, mallintamisen ja määrittelyn tekniikka.
Kukin käyttötapaus vastaa tiettyä joukkoa käyttäytymisiä, jotka järjestelmä suorittaa eri aktorien kanssa tuottaen havaittavia, 
tavoitteiden mukaisia tuloksia. Kukin aktori edustaa tiettyä roolia, joka käyttäjillä tai toisilla systeemeillä on 
vuorovaikutuksessa.

Vaatimusmäärittelyssä käyttötapaukset nimetään vastaamaan tiettyä tavoitetta ensisijaisen käyttäjän kannalta. Tapausta täydennetään
tekstimuotoisilla kuvauksilla tai muilla graafisilla malleilla, jotka kuvaavat toimintojen ja tapahtumien järjestyksiä
sekä muunnelmia, kuten erikoisia olosuhteita, poikkeuksia tai virhetilanteita.

SWEBOK-käsikirjan (Software Engineering Body of Knowledge) mukaan käyttötapaukset kuuluvat skenaarioperustaisiin vaatimusten tunnistamisen
tekniikoihin ja toisaalta malliperustaisiin analyysitekniikoihin. Käyttötapauksia voidaan käyttää myös vaatimusten keräämiseen kertomusten avulla, vaiheittain etenevään vaatimusten etsintään, järjestelmän dokumentointiin ja vastaanottotestaukseen.

## Lähteet