Diagrame Use-case ATM

36
Studiu de caz -ATM (Automatic teller machine)-

Transcript of Diagrame Use-case ATM

Page 1: Diagrame Use-case ATM

Studiu de caz

-ATM (Automatic teller machine)-

Page 2: Diagrame Use-case ATM

Enunţarea problemeiSe presupune că un ATM oferă următoarele servicii:1) Distribuirea banilor către orice posesor de card (smartcard), prin intermediul

unui cititor de card2) Consultarea soldului contului, facilităţi de plată şi de depozitare a cecurilor

pentru clienţii băncii (bank customers) care deţin un card (smardcard)

Trebuie avut în vedere că:3) Toate tranzacţiile trebuie făcute în siguranţă4) E necesar uneori ca bancomatul să se reumple etc.

De aceea, trebuie îndeplinite sarcinile:• Să se identifice actorii

• Să se identifice cazurile de utilizare

• Să se construiască o diagramă use-case

• Să se descrie textual cazurile de utilizare

• Să se completeze descrierile cu diagrame dinamice

• Să se organizeze şi să se structureze cazurile de utilizare

Obs. Enunţul problemei poate fi incomplet (aşa cum se întâmplă în realitate)

Page 3: Diagrame Use-case ATM

Pasul 1. Identificarea actorilor

1.1 Care sunt entităţile externe care interacţionează direct cu ATM-ul?

Prima propoziţie indică şi primul actor :1) Distribuirea banilor către orice posesor de card (smardcard), prin

intermediul unui cititor de card

Atenţie! Cititorul de card face parte din ATM, deci nu poate fi actor!

Întrebare. Este cardul un actor (deoarece este extern ATM şi interacţionează cu el)?

Răspuns. Poate fi, dar se aplică următorul principiu: eliminaţi actorii “fizici”în dauna actorilor “logici”!, deoarece actorii reprezintă cineva sau ceva ce beneficiază în urma utilizării sistemului.

Cardul nu beneficiază prin folosirea ATM, ci cel care deţine cardul, aşadar cardul nu va fi considerat actor.Aşadar, primul actor va fi posesorul de card (CardHolder)

Page 4: Diagrame Use-case ATM

Pasul 1. Identificarea actorilor (continuare)

A doua propoziţie specifică :2) Consultarea soldului contului, facilităţi de plată şi de depozitare a cecurilor

pentru clienţii băncii (bank customers) care deţin un card (smardcard)

Aşadar, se conturează şi alt actor: clientul băncii (bank customer)

A treia propoziţie specifică :3) Toate tranzacţiile trebuie făcute în siguranţăCine oferă siguranţă?

În exemplul considerat (preluat după sistemul bancar din Franţa) se identifică alţi doi actori:

• Visa authorisation system (VISA AS) pentru tranzacţii de retragere prin intermediul unui smatcard Visa

• Sistemul informaţional al băncii (Bank IS) care să autorizeze toate tranzacţiile făcute de un client prin intermediul smartcard-ului său, dar şi accesarea soldului

Page 5: Diagrame Use-case ATM

Pasul 1. Identificarea actorilor (continuare)

A patra propoziţie specifică :4) E necesar uneori ca bancomatul să se reumple etc.

Aceasta sugerează că e nevoie activitate de mentenanţă: umplerea bancomatului, recuperarea smartcard-urilor care au fost “înghiţite” etc.

Aceste sarcini identifică un alt actor: Operatorul (Maintenance Operator)

CardHolder

Bank Customer

Concluzie. Actorii sunt: Visa AS

Bank IS

Maintenance Operator

Page 6: Diagrame Use-case ATM

Pasul 1 bis. Reprezentarea unei diagrame

Pentru o mai bună înţelegere a celor deduse la pasul 1, e mai utilă desenarea unei diagrame, pe care o s-o numim diagramă statică de context (static context diagram)

Page 7: Diagrame Use-case ATM

Pasul 1 bis. Reprezentarea unei diagrame (continuare)

O altă soluţie, mai elaborată, ar fi să considerăm Bank customer ca specializarea a lui CardHolder. Se rezolvă astfel problema excluderii mutuale dintre cei doi actori.

Page 8: Diagrame Use-case ATM

Pasul 2. Identificarea cazurilor de utilizare

Un caz de utilizare reprezintă specificarea unei secvenţe de acţiuni, incluzând variante, pe care sistemul le poate efectua, interacţionând cu actorii din sistem.

Vom lua actorii, unul câte unul, şi vom lista modurile în care aceştia interacţionează cu sistemul:

1) CardHolder:• retrage bani

2) Bank customer:

• retrage bani

• consultarea soldului

• depozitarea banilor (cash)

• depozitarea cecurilor

Page 9: Diagrame Use-case ATM

3) Maintenance operator:

• reumple cu bani bancomatul

• recuperarea cardurilor care au fost “înghiţite”

• recuperarea cecurilor care au fost depozitate

4) Visa AS:

• niciuna

5) Bank IS:

• niciuna

Actor primar sau secundar?

Numim actor primar pe acela pentru care cazul de utilizare produce un rezultat observabil. Ceilalţi participanţi la cazul de utilizare se numesc actori secundari.

Exemplu: Visa AS şi Bank IS sunt actori secundari. Nu pot ei înşişi să folosească ATM.

Page 10: Diagrame Use-case ATM

Pasul 3. Crearea diagramelor use caseO diagrama use case arată relaţiile dintre actori şi sistem, precum şi cazurile de utilizare (use cases).

ATM

Retragere bani

Consultare sold

Depozitează bani

Depozitează cecuri

Umple bancomatul

Recuperează carduri

Recuperează cecuriFrontiera sistemului

Page 11: Diagrame Use-case ATM

Pasul 3. Crearea diagramelor use case (continuare)O variantă se obţine considerând Bank customer ca specializare a CardHolder.

ATM

Retragere bani

Consultare sold

Depozitează bani

Depozitează cecuri

Umple bancomatul

Recuperează carduri

Recuperează cecuri

Obs. Vom redenumi actorul CardHolder în Visa CardHolder

Page 12: Diagrame Use-case ATM

Pasul 3. Crearea diagramelor use case (continuare)Adăugarea actorilor secundari

Recomandări:• Implicit, rolul unui actor e “principal” (“primary”); dacă nu e aşa, indicaţi că rolul e “secundar” (“secondary”) pe asociere, de partea actorului• Pe cât e posibil, plasaţi actorii principali în stânga diagramei, iar pe cei secundari în dreapta

Obs. Dacă actorul principal e Visa CardHolder, atunci Visa AS trebuie solicitat; pe de altă parte, ATM va solicita Bank IS direct, dacă e vorba de un client al băncii (bank customer).

O soluţie ar consta în adăugarea unei asocieri cu fiecare dintre aceşti actori secundari.

Page 13: Diagrame Use-case ATM

Adăugarea unei asocieri cu fiecare dintre aceşti actori secundari.

Page 14: Diagrame Use-case ATM

O altă soluţie ar fi să se facă disticţie între cele două cazuri de utilizare referitoare la retragerea banilor: • Retragere bani cu Visa card• Retragere bani cu un card bancar

Page 15: Diagrame Use-case ATM

Pasul 4. Descrierea textuală a cazurilor de utilizareCazul de utilizare trebuie să aibă un început şi un sfârşit identificabile clar. Trebuie specificate, de asemenea, variante posibile, cum ar fi scenariu de succes, secvenţe alternative, în timp ce, simultan, se încearcă să se aranjeze descrierile într-o ordine secvenţială, pentru a îmbunătăţi înţelegerea lor.

ScenariiNumim fiecare unitate de descriere a secvenţelor de acţiune secvenţă.Un scenariu reprezintă o succesiune particulară a secvenţelor, care e rulat de la începutul la sfârşitul unui caz de utilizare.Un scenariu poate fi folosit pentru a ilustra o interacţiune sau o execuţie a unei instanţe a unui caz de utilizare.

Page 16: Diagrame Use-case ATM

Pasul 4. Descrierea textuală a cazurilor de utilizare(continuare)

Înregistrarea descrierii textuale nu e standardizată în UML. Se recomandă:

a) Rezumatul de identificare (Identification summary) (obligatoriu): include titlu, rezumat, datele de creare şi modificare, versiunea, persoana responsabilă, actorii...

b) Fluxul de evenimente (Flow of events) (obligatoriu): descrie principalul scenariu de succes (main success scenario sau basic flow of events sau normal path), secvenţele alternative şi secveţele de erori, precum şi precondiţiile şi postcondiţiile.

c) Cerinţe UI (UI requirements) (opţional): adăugarea constrângerilor pentru GUI.

d) Cerinţe nefuncţionale (Non-functional constraints) (opţional): se pot adăuga informaţiile: frecvenţă, disponibilitate, acurateţe, integritate, confidenţialitate, performanţă etc.

Page 17: Diagrame Use-case ATM

a) Rezumatul de identificare (Identification summary)

Titlu: Retragere bani folosind Visa card

Rezumat: Acest caz de utilizare permite unui posesor de card Visa (Visa CardHolder), care nu e client al băncii, să retragă bani în limita zilnică.

Actori: Visa CardHolder (primary), Visa AS (secondary).

Creation date: xx/11/09

Date of update: zz/11/09

Version: 2.2

Person in charge: Nume Prenume

Page 18: Diagrame Use-case ATM

b) Fluxul evenimentelor (Flow of events)Precondiţii:• ATM e aprovizionat cu bani• Nu e niciun card în cititorul de card

Main success scenario:1. Visa CardHolder introduce cardul în cititor.2. ATM verifică dacă este valabil cardul.3. ATM cere Visa CardHolder pin-ul.4. Visa CardHolder introduce pin-ul.5. ATM verifică dacă datele sunt corecte.6. ATM cere autorizaţie de la VISA authorisation system.7. VISA authorisation system confirmă şi indică limita zilnică de retragere.8. ATM cere Visa CardHolder să introducă suma dorită.9. Visa CardHolder introduce suma dorită.10. ATM verifică dacă suma e sub limita zilnică.11. ATM întreabă Visa CardHolder dacă doreşte chitanţă.12. Visa CardHolder cere chitanţa.13. ATM returnează cardul către Visa CardHolder.14. Visa CardHolder ia cardul.15. ATM oferă banii şi chitanţa.16. Visa CardHolder ia banii şi chitanţa.

Page 19: Diagrame Use-case ATM

O altă prezentare posibilă constă în separarea acţiunii actorilor şi sistemului:

1. Visa CardHolder introduce cardul în cititor.

2. ATM verifică dacă este valabil cardul.3. ATM cere Visa CardHolder pin-ul.

4. Visa CardHolder introduce pin-ul. 5. ATM verifică dacă datele sunt corecte.6. ATM cere autorizaţie de la VISA authorisation system.

7. VISA authorisation system confirmă şi indică limita zilnică de retragere.

8. ATM cere Visa CardHolder să introducă suma dorită.

9. Visa CardHolder introduce suma dorită.

10. ATM verifică dacă suma e sub limita zilnică.11. ATM întreabă Visa CardHolder dacă doreşte chitanţă.

12. Visa CardHolder cere chitanţa. 13. ATM returnează cardul către Visa CardHolder.

14. Visa CardHolder ia cardul. 15. ATM oferă banii şi chitanţa.

16. Visa CardHolder ia banii şi chitanţa.

Page 20: Diagrame Use-case ATM

b) Fluxul evenimentelor (Flow of events) (continuare)Secvenţe alternative:

A1) Număr de pin incorect: intervine la pasul 56. ATM informează CardHolder că pin-ul e incorect pentru prima şi a doua oară.7. ATM înregistrează eşecul pentru card.Scenariul se reîntoarce la pasul 3.

A2) Suma cerută e mai mare decât limita zilnică: intervine la pasul 10

11. ATM informează CardHolder că suma cerută e mai mare decât limita zilnică.Scenariul se reîntoarce la pasul 8.

A3) Visa CardHolder nu vrea chitanţă: intervine la pasul 1112. Visa CardHolder declină oferta de a primi o chitanţă.13. ATM returnează cardul cătreVisa CardHolder.14. Visa CardHolder ia cardul.15. ATM oferă banii. 16. Visa CardHolder ia banii.

Page 21: Diagrame Use-case ATM

Secvenţe de erori:E1) Card invalid: intervine la pasul 23. ATM informează Visa CardHolder că nu e valid cardul (nu se poate citi, expirat etc.) şi îl confiscă, cazul de utilizare eşuează (fails).E2) Număr de pin invalid după încercări repetate: intervine la pasul 56. ATM informează Visa CardHolder că pin-ul e incorect pentru a treia oară.7. ATM confiscă (smart)cardul.8. E notificat VISA AS; cazul de utilizare eşuează (fails).

E3) Retragere neautorizată: intervine la pasul 6

7. VISA AS interzice orice retragere.8. ATM scoate cardul; cazul de utilizare eşuează (fails).

E4) Cardul nu e luat înapoi de Visa CardHolder: intervine la pasul 1314. După 15 secunde, ATM confiscă (smart)cardul.15. VISA AS e notificat; cazul de utilizare eşuează (fails).

E5) Banii nu sunt ridicaţi de Visa CardHolder: intervine la pasul 1514. După 30 secunde, ATM ia banii înapoi.15. VISA AS e notificat; cazul de utilizare eşuează (fails).

Postcondiţii:• nu sunt prea evidente

Page 22: Diagrame Use-case ATM

c) Cerinţe UI (UI Requirements)Mecanismul de intrare/ieşire disponibil pentru Visa CardHolder trebuie să fie:• Un cititor de (smart)card.• O tastatură numerică (pentru a introduce pin-ul) cu tastele “enter”, “corect” şi “cancel”.• Un ecran pe care să se afişeze mesajele ATM-ului.• Taste în jurul ecranului, a.î. posesorul de card să selecteze suma dorită.• Un distribuitor de chitanţe.• Un distribuitor de bani.

d) Restricţii nefuncţionale (Non-functional constraints)Timpul de răspuns: • Interfaţa ATM trebuie să răspundă în limita maximă de 2 secunde.• O tranzacţie nominală trebuie să se termine în cel mult 2 minute.Disponibilitatea• ATM trebuie să fie accesibil 24/7• Lipsa hârtiei pentru tipărirea chitanţelor nu trebuie să fie un obstacol pentru un posesor de card ră retragă bani.Integritatea• Interfaţa ATM trebuie să fie destul de robustă pentru a evita vandalizarea.Confidenţialitatea• Rata de eroare a procedurii de comparare a numărului de pin introdus cu acela de pe card să fie sub 10-6.

Page 23: Diagrame Use-case ATM

Pasul 5. Descrierea grafică a cazurilor de utilizare

Deşi descrierea textuală a cazurilor de utilizare e esenţială, are totuşi dezavantajul că nu specifică în ce ordine vor fi secvenţele sau în ce moment intervin actorii secundari.

E recomandat să completăm descrierea textuală cu una sau mai multe diagrame UML mai dinamice.

Page 24: Diagrame Use-case ATM

Obs. Pentru cazurile de utilizare se recomandă diagramele de activitate (Activity diagram), dar pot fi utile diagramele de secvenţe (Sequence diagram).

Obs. Pentru anumite scenarii se recomandă Sequence diagram, care se va numi System sequence diagram, în care se reprezintă sistemul ca o cutie neagră, actorul principal la stânga, iar actorii secundari în dreapta sistemului.

Page 25: Diagrame Use-case ATM

Crearea unei System sequence diagram care să descrie un main success scenario pentru cazul Retragere bani folosind un Visa card.

Page 26: Diagrame Use-case ATM

Activity state; Action state

O activity state modelează realizarea unei activităţi care:

• e complexă şi poate fi divizată în mai multe activităţi;

• poate fi întreruptă de un eveniment.

O action state modelează realizarea unei activităţi care:

• e simplă şi nu poate fi divizată;

• nu poate fi întreruptă de un eveniment.

Page 27: Diagrame Use-case ATM
Page 28: Diagrame Use-case ATM

Completarea diagramei de secvenţe

Se introduc: -activităţile principale ale sistemului (prin mesajele trimise către sistem);-referinţe la secvenţele alternative şi de eroare (prin note).

Page 29: Diagrame Use-case ATM

Organizarea cazurilor de utilizareIdentificarea părţii comune pe care cazurile de utilizare le au în comun şi adăugarea relaţiei include.

Page 30: Diagrame Use-case ATM

Relaţia extend e opţională, spre deosebire de include, care e obligatorie.

Cazul de utilizare “Consultare sold” poate fi inserat în cazul de utilizare “Retragere bani cu card bancar”, la punctul de extensie: verifica sumaPunctul de extensie trebuie declarat în descrierea textuală:...8. ATM cere Bank customer să introducă suma dorită.Punct de extensie: Verifica suma.

9. Bank customer introduce suma.

Page 31: Diagrame Use-case ATM

Identificarea unei relaţii de generalizare ce implică cazuri de utilizare

Considerăm cazurile de utilizare: Depunere cash şi Depunere cecuri. Ambele implică aceiaşi actori: Bank customer ca actor principal şi Bank IS ca actor secundar.

Page 32: Diagrame Use-case ATM
Page 33: Diagrame Use-case ATM

Structurarea cazurilor de utilizare folosind pacheteStrategii posibile: gruparea după actor, după domeniu funcţional etc.

În acest exemplu, folosim gruparea după actorii principali

Page 34: Diagrame Use-case ATM

Crearea cazurilor de utilizare pentru pachetul Visa Withdrawal.

Page 35: Diagrame Use-case ATM

Crearea cazurilor de utilizare pentru pachetul Customer Transactions.

Page 36: Diagrame Use-case ATM

Crearea cazurilor de utilizare pentru pachetul Maintenance.