**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
-------

1. 1 2  Jacobson, Ivar, Spence, Ian & Bittner, Kurt: *Use Case 2.0: The Guide to Succeeding with Use Cases*, s. 4. Ivar Jacobson International, 2011. (englanniksi)
2. ↑  Jacobson, Ivar: Object-oriented development in an industrial environment.  *ACM SIGPLAN Notices*, 1987, 22. vsk, nro 12, s. 183–191.
3. ↑  Cockburn, Alistair: Use cases, ten years later *STQE magazine [arkistoitu versio 15.9.2008]*.  Mar/Apr 2002. Alistair.cockburn.us.  Arkistoitu 15.9.2008. Viitattu 21.9.2020.
4. ↑  Jacobson, Ivar, Christerson, Magnus, Jonsson, Patrik, Övergaard, Gunnar: *Object-oriented software engineering : a use case driven approach*. ACM Press, 1992. ISBN 0-201-54435-0. (englanniksi)
5. ↑  Jacobson, Ivar, Ericsson, Maria, Jacobson, Agneta: *The object advantage : business process reengineering with object technology*. Addison-Wesley, 1995. ISBN 0-201-42289-1. (englanniksi)
6. ↑  
About the Unified Modeling Language Specification Version 2.5.1  2017. Association for Computing Machinery. Viitattu 9.8.2020.
7. ↑  
Jacobson, Ivar, Booch, Grady. Rumbaugh, Jim: *The unified software development process*. Reading, Mass.: Addison-Wesley, 1999. ISBN 0-201-57169-2. (englanniksi)
8. ↑  Constantine, Larry L.: Essential modeling: use cases for user interfaces.  *Interactions*, 1995, 2. vsk, nro 2, s. 34–46. doi:10.1145/205350.205356.   (englanniksi)
9. ↑  
Cockburn, Alistair: *Writing effective use cases*. Addison-Wesley, 2001. ISBN 0-201-70225-8. (englanniksi)
10. 1 2  
Bittner, Kurt & Spence, Ian: *Use case modeling*. Addison Wesley, 2003. ISBN 0-201-70913-9. (englanniksi)
11. ↑   Leffingwell, Dean & Widrig, Don: *Managing software requirements : a use case approach*. Addison-Wesley, 2003. ISBN 0-321-12247-X. (englanniksi)
12. ↑   Övergaard, Gunnar & Palmkvist, Karin: *Use cases : patterns and blueprints*. Indianapolis, Ind.: Addison-Wesley, 2005. ISBN 0-13-145134-0. (englanniksi)
13. ↑   Jacobson, Ivar, Spence, Ian & Bittner, Kurt: *Use Case 2.0: The Guide to Succeeding with Use Cases*. Ivar Jacobson International, 2011. (englanniksi)
14. ↑  Bourque, Pierre & Fairley, Richard E.: *SWEBOK : guide to the software engineering body of knowledge*, s. 1-6 - 1-8. 3.0 ed.. IEEE Computer Society, 2014. ISBN 978-0-7695-5166-1. (englanniksi)

Käännös suomeksiKäännös suomeksi Tämä artikkeli tai sen osa on käännetty tai siihen on haettu tietoja muunkielisen Wikipedian artikkelista.   
Alkuperäinen artikkeli: en:Use case