Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programowanie obiektowe i inżynieria oprogramowania
Tok studiów:
2019/2020
Kod:
RIME-1-613-s
Wydział:
Inżynierii Mechanicznej i Robotyki
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Inżynieria Mechatroniczna
Semestr:
6
Profil:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma studiów:
Stacjonarne
Strona www:
 
Prowadzący moduł:
dr inż. Miękina Lucjan (miekina@agh.edu.pl)
Treści programowe zapewniające uzyskanie efektów uczenia się dla modułu zajęć

Celem kursu jest zapoznanie studentów z nowoczesnym podejściem do tworzenia oprogramowania o średniej i dużej skali, opartym o metody obiektowe i model w języku UML. Kurs składa się z nauki programowania obiektowego w języku C++, analizy wymagań, modelowania systemów w języku UML, testowania i walidacji, pracy grupowej i ciągłej integracji oprogramowania, a także wprowadzenia do zarządzania procesami wytwarzania oprogramowania.

Opis efektów uczenia się dla modułu zajęć
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Powiązania z KEU Sposób weryfikacji i oceny efektów uczenia się osiągniętych przez studenta w ramach poszczególnych form zajęć i dla całego modułu zajęć
Wiedza: zna i rozumie
M_W001 zna i rozumie zasady obiektowego podejścia do tworzenia programowania, zna i rozumie ogólną strukturę programu obiektowego w języku C++, zna i rozumie pojęcie klasy (jej przeznaczenie, składniki i ich dostępność, notację w języku C++) i obiektu, zna i rozumie pojęcie klasy abstrakcyjnej; zna i rozumie pojęcie klasy pochodnej, jej znaczenie w procesie rozwoju oprogramowania, zastosowanie i sposób definiowania (w tym na podstawie abstrakcyjnej klasy bazowej, z implementacją mechanizmu polimorfizmu), zna i rozumie funkcje operatorowe, ich przeznaczenie, sposoby definiowania i zalety stosowania, zna i rozumie mechanizm funkcji i klas szablonowych, jego zastosowania i notację, zna i rozumie strumieniowe operatory << i >>, w tym sposób ich definiowania dla dowolnych klas i strumieni, zna i rozumie statyczne składniki klasy, zaprzyjaźnienia i klasy wewnętrzne, zna i rozumie mechanizm obsługi wyjątków w języku C++ i jego znaczenie dla niezawodności oprogramowania; zna sposób obsługi wyjątków systemowych i programowych, a także zunifikowane podejście do wyjątków obu rodzajów, zna bibliotekę standardową C++ i rozumie sposób obsługi dynamicznych struktur danych (wektory, listy, kolejki, mapy) w bibliotece STL. IME1A_W10 Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Wynik testu zaliczeniowego
M_W002 zna ogólną organizację procesu tworzenia i rozwoju oprogramowania; zna wiodące techniki i narzędzia typu CASE wspierające ten proces, zna podstawowe założenia koncepcji architektury systemu opartej na modelu (MDA), zna własności i rolę języka UML w tym kontekście IME1A_W10 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium
M_W003 zna i rozumie strukturę modelu systemu informatycznego w języku UML 2.*, zna i rozumie przeznaczenie wybranych diagramów języka UML - przypadków użycia, sekwencji, klas obiektów, maszyny stanowej, czynności i interfejsu użytkownika, zna stosowane symbole i ich znaczenie IME1A_W10 Kolokwium
M_W004 zna i rozumie podstawowe obiektowe wzorce projektowe (Singleton, Multipleton, Iterator, Obserwator, Stan, Composite) IME1A_W10 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium
M_W005 zna podstawowe cykle życia systemów i metodyki projektowe, zna podstawowe metody uruchamiania i testowania systemów informatycznych IME1A_W10 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Kolokwium
Umiejętności: potrafi
M_U001 potrafi dokonać analizy problemu i zaplanować ogólny przebieg jego rozwiązania w postaci systemu informatycznego, dobrać technologie i narzędzia jego realizacji IME1A_U14 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Wykonanie projektu
M_U002 potrafi zbudować model systemu informatycznego w języku UML, wykorzystując diagramy przypadków użycia, sekwencji, klas i obiektów, maszyny stanowej i czynności, potrafi dobrać i zastosować wzorce projektowe odpowiednio do rozwiązywanego problemu, potrafi zastosować zasady obiektowego podejścia do tworzenia oprogramowania IME1A_U14 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu
M_U003 potrafi dokonać symulacji modelu w środowisku udostepnianym przez stosowane narzędzia (IBM Rhapsody lub inne), potrafi zrealizować uruchamianie i testowanie systemu różnymi metodami (logowanie danych, debugger, profiler, asercje, kod testujący, automatyczne narzędzia testujące) IME1A_U14 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Wykonanie projektu
M_U004 Potrafi zaimplementować złożony algorytm w języku C++ , używając właściwych konstrukcji języka IME1A_U14 Wynik testu zaliczeniowego,
Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne: jest gotów do
M_K001 potrafi zaplanować działania zmierzające do realizacji złożonego projektu systemu informatycznego IME1A_K05 Wykonanie projektu
M_K002 potrafi pracować samodzielnie i w małych zespołach nad realizacja zadania informatycznego IME1A_K04 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu
Liczba godzin zajęć w ramach poszczególnych form zajęć:
SUMA (godz.)
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
126 42 0 70 14 0 0 0 0 0 0 0
Matryca kierunkowych efektów uczenia się w odniesieniu do form zajęć i sposobu zaliczenia, które pozwalają na ich uzyskanie
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Forma zajęć dydaktycznych
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
Wiedza
M_W001 zna i rozumie zasady obiektowego podejścia do tworzenia programowania, zna i rozumie ogólną strukturę programu obiektowego w języku C++, zna i rozumie pojęcie klasy (jej przeznaczenie, składniki i ich dostępność, notację w języku C++) i obiektu, zna i rozumie pojęcie klasy abstrakcyjnej; zna i rozumie pojęcie klasy pochodnej, jej znaczenie w procesie rozwoju oprogramowania, zastosowanie i sposób definiowania (w tym na podstawie abstrakcyjnej klasy bazowej, z implementacją mechanizmu polimorfizmu), zna i rozumie funkcje operatorowe, ich przeznaczenie, sposoby definiowania i zalety stosowania, zna i rozumie mechanizm funkcji i klas szablonowych, jego zastosowania i notację, zna i rozumie strumieniowe operatory << i >>, w tym sposób ich definiowania dla dowolnych klas i strumieni, zna i rozumie statyczne składniki klasy, zaprzyjaźnienia i klasy wewnętrzne, zna i rozumie mechanizm obsługi wyjątków w języku C++ i jego znaczenie dla niezawodności oprogramowania; zna sposób obsługi wyjątków systemowych i programowych, a także zunifikowane podejście do wyjątków obu rodzajów, zna bibliotekę standardową C++ i rozumie sposób obsługi dynamicznych struktur danych (wektory, listy, kolejki, mapy) w bibliotece STL. + - + + - - - - - - -
M_W002 zna ogólną organizację procesu tworzenia i rozwoju oprogramowania; zna wiodące techniki i narzędzia typu CASE wspierające ten proces, zna podstawowe założenia koncepcji architektury systemu opartej na modelu (MDA), zna własności i rolę języka UML w tym kontekście + - + + - - - - - - -
M_W003 zna i rozumie strukturę modelu systemu informatycznego w języku UML 2.*, zna i rozumie przeznaczenie wybranych diagramów języka UML - przypadków użycia, sekwencji, klas obiektów, maszyny stanowej, czynności i interfejsu użytkownika, zna stosowane symbole i ich znaczenie + - + + - - - - - - -
M_W004 zna i rozumie podstawowe obiektowe wzorce projektowe (Singleton, Multipleton, Iterator, Obserwator, Stan, Composite) + - + + - - - - - - -
M_W005 zna podstawowe cykle życia systemów i metodyki projektowe, zna podstawowe metody uruchamiania i testowania systemów informatycznych + - + + - - - - - - -
Umiejętności
M_U001 potrafi dokonać analizy problemu i zaplanować ogólny przebieg jego rozwiązania w postaci systemu informatycznego, dobrać technologie i narzędzia jego realizacji - - + + - - - - - - -
M_U002 potrafi zbudować model systemu informatycznego w języku UML, wykorzystując diagramy przypadków użycia, sekwencji, klas i obiektów, maszyny stanowej i czynności, potrafi dobrać i zastosować wzorce projektowe odpowiednio do rozwiązywanego problemu, potrafi zastosować zasady obiektowego podejścia do tworzenia oprogramowania - - + + - - - - - - -
M_U003 potrafi dokonać symulacji modelu w środowisku udostepnianym przez stosowane narzędzia (IBM Rhapsody lub inne), potrafi zrealizować uruchamianie i testowanie systemu różnymi metodami (logowanie danych, debugger, profiler, asercje, kod testujący, automatyczne narzędzia testujące) - - + + - - - - - - -
M_U004 Potrafi zaimplementować złożony algorytm w języku C++ , używając właściwych konstrukcji języka - - - - - - - - - - -
Kompetencje społeczne
M_K001 potrafi zaplanować działania zmierzające do realizacji złożonego projektu systemu informatycznego - - - + - - - - - - -
M_K002 potrafi pracować samodzielnie i w małych zespołach nad realizacja zadania informatycznego - - - + - - - - - - -
Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 287 godz
Punkty ECTS za moduł 10 ECTS
Udział w zajęciach dydaktycznych/praktyka 126 godz
Przygotowanie do zajęć 70 godz
przygotowanie projektu, prezentacji, pracy pisemnej, sprawozdania 14 godz
Samodzielne studiowanie tematyki zajęć 75 godz
Egzamin lub kolokwium zaliczeniowe 2 godz
Szczegółowe treści kształcenia w ramach poszczególnych form zajęć (szczegółowy program wykładów i pozostałych zajęć)
Wykład (42h):

Wykład dotyczy zagadnień:

  • obiektowe programowanie w języku C++: dziedziczenie, polimorfizm, szablony funkcji i klas, funkcje operatorowe, obsługa sytuacji wyjątkowych typu systemowego i programowego, algorytmy i dynamiczne struktury danych, biblioteka standardowa C++
  • inżynieria oprogramowania jako dziedzina
  • procesy inżynierii oprogramowania
  • narzędzia CASE
  • modelowanie systemów w języku UML wraz z dyskusją przykładu kompletnego systemu
  • diagramy przypadków użycia
  • diagramy klas i obiektów
  • diagramy zachowania i stanu
  • metodyki realizacji systemów
  • obiektowe wzorce projektowe
  • inżynieria wahadłowa z wykorzystaniem narzędzi
  • metody testowania oprogramowania

Ćwiczenia laboratoryjne (70h):

Ćwiczenia laboratoryjne obejmują:

  • zapoznanie się z wybranym systemem kontroli wersji oprogramowania (Git)
  • zapoznanie się z wybranym systemem wspierającym modelowanie i testowanie systemów (IBM Rhapsody)
  • indywidualna praca studentów nad wspólnie realizowanym przykładem modelu systemu informatycznego w języku UML, z wykorzystaniem diagramów przypadków użycia, sekwencji, klas i obiektów, maszyny stanowej i czynności
  • uruchomienie i symulację modelu w środowisku IBM Rhapsody
  • implementacja wybranych operacji za pomocą kodu w języku C++ zgodnie ze scenariuszami zdefiniowanymi na etapie analizy wymagań. Odbywa się to w środowisku Eclipse/C++
  • testowanie z użyciem logowania danych, asercji
  • testowanie jednostek (klas) z użyciem kodu testującego wygenerowanego automatycznie (JUnit)
  • automatyczne testowanie w środowisku IBM Rhapsody z użyciem diagramów sekwencji
    Na każdym etapie prac stosowany jest system kontroli wersji Git wraz z platformą GitLab do przechowywania kolejno tworzonych artefaktów.

Ćwiczenia projektowe (14h):

Ćwiczenia projektowe obejmują wykonanie indywidualnie lub w grupach 2-osobowych modelu UML prostego programu zorganizowanego obiektowo. Przykładowe tematy:

  • Obsługa złożonego urządzenia (pralka, bankomat, odtwarzacz plików muzycznych, itp.)
  • System rezerwacji połączeń lotniczych i sprzedaży biletów
  • Komis samochodowy
  • Wypożyczalnia (książek, filmów, itp.)
    Po zakończeniu modelowania następuje implementacja wybranych operacji za pomocą kodu w języku C++ zgodnie ze scenariuszami zdefiniowanymi na etapie analizy wymagań. Odbywa się to w środowisku Eclipse/C++. Następnym zadaniem jest uruchomienie i symulacja modelu w środowisku IBM Rhapsody, a następnie przygotowanie przypadków testowych i przetestowanie wybranych aspektów systemu.

Pozostałe informacje
Metody i techniki kształcenia:
  • Wykład: Treści prezentowane na wykładzie są przekazywane w formie prezentacji multimedialnej w połączeniu z klasycznym wykładem tablicowym wzbogaconymi o pokazy odnoszące się do prezentowanych zagadnień.
  • Ćwiczenia laboratoryjne: W trakcie zajęć laboratoryjnych studenci samodzielnie rozwiązują zadany problem praktyczny, dobierając odpowiednie narzędzia. Prowadzący stymuluje grupę do refleksji nad problemem, tak by otrzymane wyniki miały wysoką wartość merytoryczną.
  • Ćwiczenia projektowe: Studenci wykonują zadany projekt samodzielnie, bez większej ingerencji prowadzącego. Ma to wykształcić poczucie odpowiedzialności za pracę w grupie oraz odpowiedzialności za podejmowane decyzje.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

Warunkiem zaliczenia ćwiczeń laboratoryjnych jest wykonanie zadań zleconych w trakcie zajęć i zaliczenie testu znajomości języka C++ i UML.
Warunkiem zaliczenia ćwiczeń projektowych jest wykonanie projektu i przedstawienie go do oceny, połączone z uzasadnieniem zastosowanych rozwiązań.
Warunkiem dopuszczenia do egzaminu jest uzyskanie pozytywnych ocen za ćwiczenia laboratoryjne i projektowe.

Zasady udziału w zajęciach:
  • Wykład:
    – Obecność obowiązkowa: Nie
    – Zasady udziału w zajęciach: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego.
  • Ćwiczenia laboratoryjne:
    – Obecność obowiązkowa: Tak
    – Zasady udziału w zajęciach: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu. Zaliczenie modułu jest możliwe po zaliczeniu wszystkich zajęć laboratoryjnych.
  • Ćwiczenia projektowe:
    – Obecność obowiązkowa: Tak
    – Zasady udziału w zajęciach: Studenci wykonują prace praktyczne mające na celu uzyskanie kompetencji zakładanych przez syllabus. Ocenie podlega sposób wykonania projektu oraz efekt końcowy.
Sposób obliczania oceny końcowej:

Średnia ważona z oceny ćwiczeń laboratoryjnych (30 ), projektu (40) i egzaminu (30%).

Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

Samodzielne wykonanie zaległych zadań i przedstawienie do oceny.

Wymagania wstępne i dodatkowe, z uwzględnieniem sekwencyjności modułów :

Znajomość podstaw informatyki, umiejętność sprawnego programowania w języku C

Zalecana literatura i pomoce naukowe:
  • Stroustrup B.: Język C++. Warszawa, WNT 2002
  • Gregoire M., Professional C++, Third Edition, John Wiley & Sons, Inc., 2014
  • Booch G., Rumbaugh J., Jacobson I.: UML – przewodnik użytkownika. WNT, Warszawa 2002
  • Gamma E., Helms R., Johnson R., Vlissides J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995
  • Miękina L.: Inżynieria Oprogramowania, UWND AGH, Kraków, 2009, SU 1707
  • Binder R.: Testowanie systemów obiektowych . Warszawa, WNT 2003
Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Miękina L.: Inżynieria Oprogramowania, UWND AGH, Kraków, 2009, SU 1707

Informacje dodatkowe:

Brak