Zaliczenie 2019

Zadanie 3: opisy przedmiotowe książek

Przypominamy, żę księgarnia Radagast zorganizowana jest w ten sposób, że ma dwóch menadżerów. Jeden z nich zajmuje się dostawami książek (dalej nazywany dostawcą), a drugi sprzedażą w sklepie (dalej nazywany szefem sali) i ma pod sobą pewną liczbę szeregowych sprzedawców. Zakładamy, że żaden użytkownik systemu komputerowego księgarni nie może przyjmować więcej niż jednej z powyższych ról.

Dotychczas baza danych zawierała trzy katalogi: opisy_ksiazek, zadania, raporty oraz pewną liczbę ich podkatalogów. Katalog z opisami książek pozwalał przeglądać książki w porządku alfabetycznym.

Ponieważ książki w księgarni ustawiano alfabetycznie, klienci uskarżali się, że trudno im szukać książek z interesującej ich dziedziny. Dlatego postanowiono dołożyć opisy przedmiotowe, stosując Uniwersalną Klasyfikację Dziesiętną Dewey'a (zob.
Ciocia Wikipedia albo Aunt Wiki). Dziedzinie bądź poddziedzinie wiedzy odpowiada stosowny numer. Każda książka jest zaliczana TYLKO do jednej dziedziny.

Książki będą (fizycznie) rozmieszczone w sklepie zgodnie z klasyfikacją przedmiotową, co pomoże pracownikom kierować klientów do odpowiednich regałów. Ograniczamy się do dwóch poziomów klasyfikacji.

Jak widać, ilość programów w księgarni zaczyna rosnąć. Powoduje to kłopoty z zapewnieniem bezpieczństwa aplikacji. Zdecydowano się więc na wdrożenie autoryzacji w oparciu o mechanizmy PAM. Powierzono Ci wykonanie następujących bazowych prac:

  1. Stworzenie szkieletu aplikacji w języku C dla pracowników firmy z ustanowieniem standardu kodowania. Aplikacje mają używać mechanizmów PAM do autoryzacji. Oprócz szkieletu programu potrzebny będzie wzór pliku konfiguracyjnego dla PAM.
  2. Wykonanie na bazie tego szkieletu próbnej aplikacji obsługującej katalog przedmiotowy (proof of concept). Ma ona mieć dwa poziomy uprawnień:
    • zwykły pracownik może przeglądać hierarchię opisów przedmiotowych,
    • menadżerowie mogą zmieniać klasyfikację istniejących książek oraz dopisywać nowe.

    Pracę z aplikacją pracownik zaczyna od logowania się do aplikacji. Aplikacja, używając mechanizmów PAM, ustala jego poziom uprawnień.

  3. Ponieważ menadżerowie są leniwi i nie chce im się katalogować książek, chcą mieć możliwość cedowania zwiększonych możliwości działania
    na NIEKTÓRYCH pracowników. Skorzystamy do tego z mechanizmu SUDO.

Katalog przedmiotowy ma mieć postać drzewa hierarchii, zapisywanego pod koniec aplikacji na plik(i). Wprowadzenie nowej książki z opisem przedmiotowym powoduje automatycznie utworzenie pliku z pełnym opisem książki w katalogu alfabetycznym. W ,,drzewie'' katalogu przedmiotowego znajdą się tylko odnośniki.

Dozwolone operacje to:

  • wprowadzanie opisu bibliograficznego książki (ograniczamy się do autora i tytułu) z opcjonalną klasyfikacją
  • dopisanie lub zmiana klasyfikacji dla istniejącego opisu
  • usunięcie opisu.

Interfejs nie musi być śliczny, wystarczy tekstowa komunikacja z oknem konsoli.


W ramach oddawania zadania należy

  • A. Przygotować szkielet aplikacji.
  • B. Dostarczyć aplikację katalogu przedmiotowego zgodną z powyższym szkieletem: żródła w C, pliki konfiguracyjne, skrypt/Makefile tworzący aplikację i rozmieszczający pliki konfiguracyjne.
  • C. Przygotować na drugie zajęcia NIEWIELKĄ bazę testową (5 książek).
  • D. Nadać uprawnienia pracownikom (por. zajęcia 1-2), używając SUDO należy jednemu z szeregowych pracowników pozwolić na pełną obsługę aplikacji testowej (ale tylko na to).

Wszystkie materiały źródłowe należy dostarczyć w postaci spakowanego archiwum tgz, używając Moodle. Termin: dzień przed laboratorium
z odbiorem zadania.

Przecieki z działu kontroli jakości: oceniany będzie styl programowania (w zakresie bezpieczeństwa), zwłaszcza gospodarka buforami i ogólnie
pamięcią dynamiczną.