Modele wytwarzania, Scrum, diagramy UML, wymagania, poziomy testów oraz wzorce Singleton i MVC w praktyce.
1.Na diagramie klas klasa Playlista jest połączona z klasą Utwor linią z rombem. Po usunięciu playlisty utwory nadal istnieją w bibliotece i można je dodać do innej playlisty. Jak powinna wyglądać ta relacja?
- A.Romb wypełniony przy klasie Playlista — kompozycja
- B.Romb pusty przy klasie Playlista — agregacja— poprawna
- C.Romb pusty przy klasie Utwor — agregacja
- D.Pusty trójkąt przy klasie Playlista — dziedziczenie
Dlaczego: O rodzaju rombu decyduje wspólny los obiektów: jeśli część przeżywa usunięcie całości, mamy słabszy związek i romb zostaje niewypełniony. Romb rysuje się zawsze po stronie całości, więc przeniesienie go do klasy części odwraca sens odczytu. Kusi tu wariant z rombem wypełnionym, bo uczniowie kojarzą listę elementów z silnym powiązaniem, choć taki symbol pasuje dopiero do pary faktura i jej pozycje.
2.W diagramie klas w prostokącie klasy Konto zapisano element: # saldo : float. Kto zgodnie z notacją UML ma dostęp do tego atrybutu?
- A.Wyłącznie kod znajdujący się wewnątrz klasy Konto
- B.Dowolny kod w programie, także spoza pakietu klasy
- C.Klasa Konto oraz wszystkie klasy po niej dziedziczące— poprawna
- D.Klasy z tego samego pakietu, ale nie klasy potomne
Dlaczego: Symbol widoczności stoi przed nazwą i rozstrzyga zasięg niezależnie od typu: plus to dostęp publiczny, minus to dostęp zamknięty w jednej klasie, krzyżyk rozszerza go o gałąź dziedziczenia, a tylda ogranicza do pakietu. Najczęstsza pomyłka polega na czytaniu krzyżyka jak minusa i zamykaniu atrybutu wyłącznie w klasie macierzystej, przez co klasa potomna rzekomo traci dostęp.
3.Na diagramie przypadków użycia z przypadku Rezerwuj miejsce wychodzi strzałka opisana etykietą include i prowadzi do przypadku Zaloguj sie. Co z tego wynika?
- A.Rezerwacja zawsze obejmuje logowanie, bo jest ono jej obowiązkowym elementem— poprawna
- B.Logowanie tylko czasem uzupełnia rezerwację, gdy spełniony jest dodatkowy warunek
- C.Rezerwacja jest szczególnym rodzajem logowania, więc po nim dziedziczy
- D.Aktor musi wykonać oba przypadki, lecz w dowolnej wybranej przez siebie kolejności
Dlaczego: Obie zależności różnią się obowiązkowością i kierunkiem strzałki. Przy włączeniu strzałka biegnie od przypadku bazowego do zawsze wykonywanego fragmentu wspólnego, przy rozszerzeniu odwrotnie — od opcjonalnego dodatku do przypadku bazowego. Dystraktor z warunkiem opisuje właśnie rozszerzenie i kusi, bo obie etykiety wyglądają na diagramie identycznie i różni je tylko słowo w nawiasach kątowych.
4.Na końcu sprintu zespół spotyka się bez udziału klienta i ustala, co usprawnić we własnym sposobie pracy. Jak nazywa się to wydarzenie i kto odpowiada za usuwanie zgłoszonych na nim przeszkód?
- A.Przegląd sprintu, a przeszkody usuwa Product Owner
- B.Przegląd sprintu, a przeszkody usuwa Scrum Master
- C.Retrospektywa, a przeszkody usuwa Product Owner
- D.Retrospektywa, a przeszkody usuwa Scrum Master— poprawna
Dlaczego: Kryterium rozróżnienia jest przedmiot rozmowy: jedno spotkanie dotyczy powstałego przyrostu i odbywa się z zamawiającym, drugie dotyczy procesu i zostaje wewnątrz zespołu. Opiekunem procesu jest Scrum Master, który nie przydziela zadań, lecz zdejmuje blokady. Kusi wskazanie Product Ownera, bo bywa on brany za kierownika, choć odpowiada za wartość produktu i kolejność pozycji w backlogu.
5.Zamawiający nie potrafi z góry podać kompletu wymagań i chce co kilka tygodni otrzymywać działającą część systemu do oceny. Który model wytwarzania jest właściwy?
- A.Kaskadowy, bo obszerna dokumentacja każdej fazy ułatwia późniejsze zmiany wymagań
- B.Iteracyjno-przyrostowy, bo klient wcześnie dostaje działający fragment, a zmiany są tańsze— poprawna
- C.Kaskadowy, bo produkt wolno pokazać zamawiającemu dopiero po zakończeniu wszystkich testów
- D.V-model, bo jako model zwinny pozwala dowolnie zmieniać wymagania w trakcie realizacji
Dlaczego: Model dobiera się do stabilności wymagań. Podejście liniowe zakłada zamknięcie fazy przed przejściem do następnej, więc każda zmiana po analizie oznacza kosztowny powrót, a produkt widać dopiero na końcu. Podejście cykliczne dzieli zakres na moduły i rozkłada ryzyko. Dystraktor z V-modelem kusi, bo bywa on mylony z modelem zwinnym, choć jest równie sztywny jak kaskada i tylko dokłada poziomy testów.
6.Który z poniższych zapisów w specyfikacji jest wymaganiem niefunkcjonalnym?
- A.System umożliwia wygenerowanie faktury w formacie PDF
- B.Administrator może zablokować konto wybranego użytkownika
- C.Strona wyników wyszukiwania ładuje się poniżej 2 sekund przy 500 użytkownikach— poprawna
- D.System wysyła powiadomienie o zbliżającym się terminie płatności
Dlaczego: Rozstrzyga pytanie pomocnicze: czy po usunięciu tego zapisu program nadal robi to samo, tylko gorzej. Jeśli tak, opisano cechę jakościową, czyli wymaganie niefunkcjonalne — zwykle zawiera ono liczbę, jednostkę albo nazwę normy. Pozostałe zapisy nazywają konkretne czynności widziane przez użytkownika. Uwaga na hasło bezpieczeństwo: nadawanie uprawnień to funkcja, ale szyfrowanie transmisji to już jakość.
7.Zamawiający sprawdza gotowy system przed podpisaniem protokołu odbioru, żeby ocenić, czy spełnia on jego oczekiwania. Jaki to poziom testów i któremu etapowi odpowiada w V-modelu?
- A.Testy systemowe, odpowiadające specyfikacji systemu
- B.Testy integracyjne, odpowiadające projektowi architektury
- C.Testy jednostkowe, odpowiadające projektowi szczegółowemu
- D.Testy akceptacyjne, odpowiadające analizie wymagań— poprawna
Dlaczego: Poziomy testów układają się od najmniejszego fragmentu kodu do całości odbieranej przez zamawiającego, a w V-modelu każdemu etapowi z lewego ramienia odpowiada poziom z prawego. Wykonawcą najwyższego poziomu jest klient lub użytkownik końcowy, nie zespół. Kusi wskazanie testów systemowych, bo one także obejmują cały produkt, lecz prowadzą je testerzy i porównują wynik ze specyfikacją, a nie z oczekiwaniami odbiorcy.
8.Tester bez wglądu w kod sprawdza pole wieku przyjmujące wartości od 18 do 65, podając kolejno 17, 18, 65 oraz 66. Jak nazywa się ta metoda testowania i użyta technika?
- A.Testy czarnej skrzynki, technika wartości brzegowych— poprawna
- B.Testy białej skrzynki, technika wartości brzegowych
- C.Testy czarnej skrzynki, technika pokrycia gałęzi kodu
- D.Testy białej skrzynki, technika klas równoważności
Dlaczego: O metodzie decyduje wiedza testera o wnętrzu programu, a nie rodzaj danych. Brak dostępu do źródeł oznacza sprawdzanie par wejście i wyjście względem specyfikacji, a dobrane wartości leżą tuż przy granicach dozwolonego przedziału, gdzie najczęściej siedzą błędy w warunkach. Techniki pokrycia instrukcji, gałęzi i ścieżek wymagają widoku kodu, więc łączenie ich z testem bez źródeł jest sprzeczne.
9.Aplikacja ma korzystać dokładnie z jednego obiektu połączenia z bazą danych. W jaki sposób realizuje to wzorzec Singleton?
- A.Konstruktor jest publiczny, a obiekty tworzy klasa fabryki na podstawie przekazanego parametru
- B.Klasa trzyma listę obiektów zależnych i przy zmianie stanu powiadamia je wszystkie w pętli
- C.Konstruktor jest prywatny, a metoda statyczna tworzy obiekt raz i potem zwraca wciąż ten sam— poprawna
- D.Konstruktor jest prywatny, lecz metoda dostępowa przy każdym wywołaniu tworzy nowy obiekt
Dlaczego: Mechanizm opiera się na dwóch elementach naraz: zamknięty konstruktor blokuje tworzenie obiektów z zewnątrz, a statyczne pole przechowuje jedyną instancję między wywołaniami. Sam prywatny konstruktor nie wystarcza, dlatego kusi wariant, w którym metoda dostępowa i tak buduje obiekt za każdym razem. Opis listy powiadamianych obiektów dotyczy wzorca Observer, a wybór klasy po parametrze to fabryka.
10.W aplikacji zbudowanej według wzorca MVC trzeba dodać nowe zapytanie pobierające listę produktów z bazy danych. W której warstwie należy umieścić ten kod?
- A.W widoku, ponieważ to on wyświetla użytkownikowi listę produktów
- B.W modelu, ponieważ odpowiada on za dane i logikę, w tym dostęp do bazy— poprawna
- C.W kontrolerze, ponieważ to on przyjmuje żądanie i wybiera dalsze działanie
- D.W widoku i w kontrolerze, ponieważ obie warstwy muszą znać strukturę bazy
Dlaczego: Podział ról ma jeden cel: wymiana szablonu nie może dotykać logiki, a wymiana bazy nie może dotykać szablonu. Dlatego warstwa prezentacji nie odpytuje bazy, a warstwa danych nie generuje kodu strony. Kusi umieszczenie zapytania w kontrolerze, bo to on rozpoczyna obsługę żądania, jednak jego zadaniem jest tylko poprosić o dane i wskazać szablon, który je przedstawi.