Przejdź do treści
INF.04 · część pisemna

Inżynieria oprogramowania i projektowanie

Przed Tobą 10 pytań w formule egzaminu CKE.

Pytanie 1 / 10Algorytmika i Logika
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?
Wszystkie 10 pytań z wyjaśnieniamiRozwiń, jeśli wolisz przejrzeć zestaw bez rozwiązywania testu.

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.

To nie koniec powtórki

Przećwicz kolejny zestaw i utrwal materiał przed egzaminem.

Dalej: Tworzenie aplikacji desktopowych i mobilnych