Kontekst i zakres#

Przykład modeluje wypożyczenie fizycznego egzemplarza książki przez czytelnika w bibliotece. Rozróżnia tytuł od egzemplarza: katalogowy tytuł może mieć wiele kopii, ale operacja wypożyczenia dotyczy konkretnego egzemplarza o własnym identyfikatorze i dostępności.

Zakładamy, że bibliotekarz obsługuje operację, a system sprawdza konto i stan egzemplarza. Inne biblioteki mogą dopuszczać samoobsługę, automatyczne blokady, różne typy kont, limity, rezerwacje i odrębne terminy. Reguły należy uzgodnić; model nie powinien przedstawiać ich jako uniwersalnych.

Cel i warunki#

Celem czytelnika jest uzyskanie egzemplarza na określony czas. Operacja może się powieść, gdy konto jest aktywne, limit wypożyczeń nie został przekroczony, egzemplarz jest dostępny i nie ma blokującej rezerwacji. Wynikiem sukcesu jest zarejestrowane wypożyczenie z datą wypożyczenia i terminem zwrotu, a egzemplarz przechodzi do stanu Wypożyczony.

Jeżeli konto jest zablokowane albo egzemplarz niedostępny, system nie tworzy wypożyczenia i informuje o przyczynie. Jeśli informacja o istnieniu konta lub jego zadłużeniu jest wrażliwa, sposób jej ujawnienia zależy od polityki biblioteki.

Przebieg interakcji#

Czytelnik prosi bibliotekarza o wypożyczenie egzemplarza; system sprawdza konto i dostępność, zapisuje wypożyczenie z terminem zwrotu albo odmawia z powodu blokady lub niedostępności.
Interakcja przy wypożyczeniu egzemplarza z warunkiem dopuszczalności.

Diagram przedstawia wywołania między rolami i elementami systemu, nie dokładne rozmieszczenie danych. W praktyce aktualizacja dostępności oraz zapis wypożyczenia powinny zachować spójność: jeśli zapis jednej części się nie powiedzie, system nie może zostawić egzemplarza oznaczonego jako wypożyczony bez odpowiadającego mu rekordu wypożyczenia.

Model pojęciowy#

Minimalny model może zawierać Czytelnika, Konto, Tytuł, Egzemplarz i Wypożyczenie. Wypożyczenie łączy konto z konkretnym egzemplarzem oraz przechowuje daty i status. Tytuł grupuje opis bibliograficzny wielu egzemplarzy. Rezerwacja może być osobnym pojęciem, jeżeli system kolejkuje czytelników lub kontroluje pierwszeństwo.

Nie zapisuj wyłącznie statusu egzemplarza, jeśli system musi znać historię. Rekord wypożyczenia pozwala ustalić, kto wypożyczył egzemplarz, kiedy, do kiedy oraz czy został zwrócony. Liczności i retencja historii zależą od wymagań instytucji.

Zwrot i przedłużenie#

Przy zwrocie system identyfikuje egzemplarz i aktywne wypożyczenie, zapisuje datę zwrotu oraz zmienia dostępność. Jeżeli istnieje rezerwacja, egzemplarz może otrzymać status Zarezerwowany do odbioru zamiast Dostępny.

Przedłużenie wymaga sprawdzenia, czy konto może przedłużyć wypożyczenie, nie przekroczono limitu, a inny czytelnik nie zarezerwował egzemplarza. Nowy termin powinien wynikać z reguł, a system zachowuje informację o aktualnym terminie i — jeśli wymagane — historię zmian.

Stany i reguły#

Egzemplarz może przechodzić między stanami Dostępny, Zarezerwowany, Wypożyczony, W naprawie i Wycofany. Wypożyczenie ma własny cykl: Aktywne, Przeterminowane, Zwrócone lub Utracone. Nie łącz statusu egzemplarza ze statusem rekordu wypożyczenia — opisują powiązane, lecz różne byty.

Reguły do doprecyzowania obejmują limit wypożyczeń, terminy dla typów kont, naliczanie opłat, karencję, rezerwacje, obsługę uszkodzeń i zagubienia. Diagram interakcji nie rozstrzyga ich sam z siebie.

Przypadki testowe#

  • Aktywne konto i dostępny egzemplarz tworzą jedno wypożyczenie.
  • Zablokowane konto nie tworzy wypożyczenia.
  • Egzemplarz już wypożyczony nie może być ponownie wypożyczony.
  • Błąd zapisu nie zostawia niespójnego statusu i rekordu.
  • Zwrot egzemplarza z kolejką rezerwacji nie oznacza go jako ogólnodostępnego.
  • Przedłużenie jest odrzucone, gdy zarezerwowano egzemplarz, o ile taka reguła obowiązuje.
  • Powtórne przesłanie żądania nie tworzy podwójnego wypożyczenia.

Typowe błędy#

  • Tytuł utożsamiony z egzemplarzem. Wypożycza się konkretną kopię.
  • Brak rekordu historii. Sam aktualny status nie wyjaśnia, kto i kiedy wypożyczył książkę.
  • Brak kontroli limitu i rezerwacji. Dostępność fizyczna może nie oznaczać możliwości wypożyczenia.
  • Niespójna aktualizacja. Egzemplarz i wypożyczenie muszą pozostać w zgodzie.
  • Pomieszanie stanów konta i egzemplarza. Każdy obiekt ma odrębny cykl życia.
  • Założenie uniwersalnych terminów. Okres zależy od regulaminu.
  • Pomijanie wariantów zwrotu. Rezerwacja, uszkodzenie i opóźnienie zmieniają dalszy przebieg.

Co przykład pokazuje, a czego nie#

Model pokazuje warunki dopuszczalności, podstawową współpracę stanowiska, systemu, konta i katalogu oraz potrzebę spójnego zapisu wypożyczenia. Może być podstawą do przygotowania testów i rozszerzenia o stany obiektów.

Nie określa regulaminu biblioteki, retencji danych, konkretnej architektury ani polityki prywatności. Przed implementacją uzupełnij go o zatwierdzone zasady, szczegółowy model danych i obsługę scenariuszy wyjątkowych.