Zadania do samodzielnego rozwiązania

Strona: SEZAM - System Edukacyjnych Zasobów Akademickich i Multimedialnych
Kurs: 4. Zastosowania narzędzi CASE
Książka: Zadania do samodzielnego rozwiązania
Wydrukowane przez użytkownika: Gość
Data: poniedziałek, 7 lipca 2025, 11:32

1. Podstawy implementacji oprogramowania

Zadanie 1

Dla poniższej klasy napisz odpowiadający jej kod w wybranym języku programowania. Zastosuj konwencje nazewnicze właściwe dla wybranego przez siebie języka. Opisz zastosowane konwencje nazewnicze. W razie potrzeby wykonaj inżynierię odwrotną, czyli dokonaj aktualizacji klasy na diagramie.

Zadanie 2

Stwórz model klas odpowiadający poniższemu szkieletowi kodu.

public class CTabelaStudentow {
  
private int liczbaStudentowNaLiscie;
   private CTabelaSymboli translacja;
   public void pokazStudenta(int nr) {}
   void zbudujTabeleTranslacji(XListaStudentow lis) {}
   private void ustalLiczbeStudentow(XListaStudentow lis) {}
   public void kasuj() {}
}
 
public class CTabelaSymboli {
   public void dodaj(int numer, long numer) {}
   public long podajId(int numer) {}
}

Zadanie 3

Dla poniższego diagramu sekwencji napisz w wybranym języku programowania kod klas „CIndex” oraz „CRejestrowanieOperacji”.


 

Zadanie 4

Stwórz diagram sekwencji odpowiadający poniższemu fragmentowi kodu.

public class COknoListyStudiujacych {
   IPrzegladanieListyStudentow przegladanieListyStudentow;
 
   void przyciskPokazStudenta(int idStudenta) {
        przegladanieListyStudentow.pokazStudenta(idStudenta);
   }
}

Zadanie 5

Przedstaw ciąg poleceń (etapów) dla systemu kontroli wersji w celu wprowadzenia nowego kodu do głównej gałęzi repozytorium.

Zadanie 6

Mamy zadany kod z głównej gałęzi oraz nowy kod. Podaj treść kodu po złączeniu.

public class CStudent {
  
private long id;
   public XStudent podajStudenta(long idStudenta) {
        XStudent srud = new XStudent(idStudenta);
        SELECT(stud);
        return stud;
   }
}


public class CStudent {

   private long id;
   private CRejestracjaStudenta rejestracjaStudenta;
   public short zmienOstatniaRejestracje(char status) {
        return rejestracjaStudenta.zmienOstatnia(status);
   }
  
}

2. Podstawy testowania

Zadanie 1

Zaprojektuj interfejs zawierający dwie operacje z jednym oraz dwoma parametrami numerycznymi oraz typu napisowego. Zaprojektuj po dwa testy dla każdej operacji, wykorzystujące metodę wartości granicznych. W ramach projektu testów podaj zbiory danych testowych składające się z co najmniej 5 elementów każdy, oraz zbiory oczekiwanych danych wynikowych.

Zadanie 2

Napisz test akceptacyjny metodą czarnej skrzynki dla przypadku użycia „Usunięcie towaru z magazynu”. Załóż określone scenariusze odpowiednich przypadków użycia, niezbędnych do wykonania pełnego testu.

Zadanie 3

Podaj zakres danych wejściowych dla testów zadanego modułu (np. mnożenie liczb ze znakiem) metodą czarnej skrzynki.

Zadanie 4

Wyszukaj kod nietrywialnego modułu programowego (klasy, komponentu) w wybranym języku programowania. Zaproponuj kilka testów tego modułu metodą białej skrzynki. Określ, które ścieżki przepływu sterowania będą sprawdzone tymi testami.

3. Narzędzia i metody automatyzacji inżynierii oprogramowania

Zadanie 1

Narysuj metamodel dla zadanego języka. Język powinien pozwalać na rysowanie akcji oraz przepływów sterowania lub przepływów obiektów między akcjami. Akcje mogą być trzech rodzajów (proszę założyć odpowiednie typy akcji).

Zadanie 2

Narysuj przykładowe modele zgodne z metamodelem z rozwiązania zadania 1. Zaproponuj składnię konkretną.

Zadanie 3

Poszukaj języków do transformacji modeli oraz powiązanych z nimi narzędzi. Napisz prostą transformację w wybranym języku transformacji. Transformacja powinna zamieniać klasę z atrybutami w języku UML w tabelę z kolumnami w języku ERD. Spróbuj wykonać tą transformację w wybranym narzędziu.

Zadanie 4

Poszukaj konkretnych narzędzi dla poszczególnych etapów metody DevOps. Opisz, w jaki sposób narzędzia te można ze sobą zintegrować.