Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Sztuka wytwarzania oprogramowania

Informacje ogólne

Kod przedmiotu: 103A-INxxx-ISP-SWO
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Sztuka wytwarzania oprogramowania
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Informatyka techniczna - obieralne )-Inżynieria internetu rzeczy-inż.-EITI
( Metody wytwarzania oprogramowania )-Informatyka-inż.-EITI
( Przedmioty obieralne )-Automatyka i robotyka-inż.-EITI
( Przedmioty obieralne )-Inżynieria internetu rzeczy-inż.-EITI
( Przedmioty podstawowe )-Inteligentne systemy-mgr.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 4.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

SWO

Numer wersji:

1

Skrócony opis:

Przedmiot ma na celu nauczenie podstaw technik i dobrych praktyk stosowanych w przemysłowym wytwarzaniu oprogramowania. Nacisk położony jest na pracę projektanta kodu i programisty rozbudowanego systemu informatycznego, ale zakres przedmiotu wykracza poza rozwiązywanie problemów programistycznych, ukazując kodowanie jako element większej całości. Student po zakończeniu zajęć będzie mógł wykazać się wiedzą z zakresu stosowanych rozwiązań inżynieryjnych i metodyk pracy wykorzystywanych w procesie wytwarzania i utrzymania złożonych systemów informatycznych. Zdobędzie umiejętności z zakresu ustandaryzowanego rozwiązywania częstych problemów inżynieryjnych, oceny jakości kodu i metod jej poprawy, pracy nad istniejącym kodem oraz technik stosowanych dla długofalowego utrzymania wysokiej wiarygodności i jakości oprogramowania. Zapozna się z różnorodnymi narzędziami i kompleksowymi środowiskami wspomagającymi proces wytwarzania oprogramowania oraz technikami pracy w zespole programistycznym.

Pełny opis:

Przedmiot ten ma na celu nauczenie podstaw technik i dobrych praktyk stosowanych w przemysłowym wytwarzaniu oprogramowania. Nacisk położony jest na pracę projektanta kodu i programisty rozbudowanego systemu informatycznego, ale zakres przedmiotu wykracza poza rozwiązywanie problemów programistycznych, ukazując kodowanie jako element większej całości. Student po zakończeniu przedmiotu będzie mógł wykazać się wiedzą z zakresu stosowanych rozwiązań inżynieryjnych i metodyk pracy wykorzystywanych w procesie wytwarzania i utrzymania złożonych systemów informatycznych. Student zdobędzie umiejętności z zakresu ustandaryzowanego rozwiązywania częstych problemów inżynieryjnych, oceny jakości kodu i metod jej poprawy, pracy nad istniejącym kodem oraz technik stosowanych dla długofalowego utrzymania wysokiej wiarygodności i jakości oprogramowania. Student zapozna się także z różnorodnymi narzędziami i kompleksowymi środowiskami wspomagającymi proces wytwarzania oprogramowania oraz technikami pracy w zespole programistycznym.



Treść wykładu

  1. Wprowadzenie (2 godz.)
    Regulamin i informacje o przedmiocie. Potok wytwarzania oprogramowania - powtórzenie i rozwinięcie, od edytora, poprzez repozytorium kodu do narzędzi do ciągłego integrowania i dostarczania oprogramowania (CI/CD). Omówienie typowych narzędzi, git, Jenkins.
  2. Styl kodowania (4 godz.)
    Techniki pracy w zespole programistów (rewizje kodu i mentor), rola testów w procesie wytwarzania oprogramowania, testy jednostkowe. Zaawansowane techniki stosowane w programowaniu obiektowym - SOLID. Czysty kod (Clean Code, Lean Development). Tworzenie oprogramowania w oparciu o testy (TDD).
  3. Obiektowe wzorce projektowe (4 godz.)
    Zalety stosowania wzorców projektowych i poprawne ich aplikowania. Antywzorce. Omówienie wzorców: kompozyt, most, fabryki, singleton, obserwator, model-widok-kontroler, dekorator, adapter, iterator, strategia, wizytator, wielometoda, komenda, fasada i inne.
  4. Współbieżne wzorce projektowe (6 godz.)
    Stosowanie wzorców do rozwiązywania problemów współbieżnych. Asynchroniczność a wielowątkowość i zrównoleglenie wykonania. Pętla zdarzeń, asynchroniczna obsługa urządzeń i asynchroniczne przetwarzanie danych. Skalowalność. Komunikacja międzywątkowa i międzyprocesowa.
  5. Monitorowanie aplikacji (1 godz.)
    Logowanie i śledzenie pracy programu. Automatyczne reagowanie na błędy.
  6. Analiza aplikacji (2 godz.)
    Debugowanie, profilowanie i badanie uruchomionej aplikacji. Automatyzacja wykrywania problemów czasu wykonania.
  7. Analiza kodu (2 godz.)
    Analiza statyczna kodu, metryki kodu, pomiar pokrycia, ocena jakości kodu i testów.
  8. Refaktoring (4 godz.)
    Wykrywanie “zapachów” kodu, techniki poprawy jakości kodu. Utrzymywanie dużych projektów i praca z kodem zastanym.
  9. Systemy heterogeniczne (2 godz.)
    Tworzenie aplikacji, gdzie różne moduły są implementowane w różnych językach programowania, przykład - łączenie Pythona i C++, Javy i C++, R i C++. Różne techniki łączenia systemów, problemy architektoniczne i techniczne.
  10. Zasoby internetowe (1 godz.)
    Konferencje i czasopisma poświęcone programowaniu, standardy języków programowania. Umiejętne wykorzystanie dostępnych zasobów.



Zakres laboratorium

  1. Zapoznanie się z podstawowymi narzędziami. Zaawansowane wykorzystanie narzędzia git. Obsługa przygotowanego potoku. Praca w parach i rewizja kodu.
  2. Przygotowanie własnego projektu i środowiska dla niego. Zestawienie potoku CI/CD dla projektu, z testami i walidacją.
  3. Profilowanie i debugowanie złożonej aplikacji. Poszukiwanie przyczyn błędów i wykrywanie miejsc potencjalnej optymalizacji.
  4. Refaktoring istniejącego kodu. Praca z zastanym kodem. Walidacja działania z wykorzystaniem istniejącego potoku.



Zakres laboratorium

  1. Zapoznanie się z podstawowymi narzędziami. Zaawansowane wykorzystanie narzędzia git. Obsługa przygotowanego potoku. Praca w parach i rewizja kodu.
  2. Przygotowanie własnego projektu i środowiska dla niego. Zestawienie potoku CI/CD dla projektu, z testami i walidacją.
  3. Profilowanie i debugowanie złożonej aplikacji. Poszukiwanie przyczyn błędów i wykrywanie miejsc potencjalnej optymalizacji.
  4. Refaktoring istniejącego kodu. Praca z zastanym kodem. Walidacja działania z wykorzystaniem istniejącego potoku.



Wymagania wstępne

  1. Wymagany - Projektowanie obiektowe 103B-INxxx-ISP-PROI
  2. Wymagany - Object oriented programming 103B-INxxx-ISP-EOOP
Literatura:

  1. Andrew Hunt, David Thomas, „Pragmatyczny programista. Od czeladnika do mistrza”, Helion 2014.
  2. Robert C. Martin, „Czysty kod. Podręcznik dobrego programisty”, Helion 2010.
  3. Robert C. Martin, „Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów”, Helion 2013.
  4. Erich Gamma et al., „Wzorce projektowe”, Helion 2010.
  5. Martin Fowler, „Refaktoryzacja. Ulepszanie struktury istniejącego kodu”, Helion 2011.
Metody i kryteria oceniania:

Sprawdzanie założonych efektów kształcenia realizowane jest przez:

  • ocenę umiejętności i wiedzy wykazanych w trakcie realizacji zadań laboratoryjnych,
  • ocenę wiedzy wykazanej na dwóch kolokwiach pisemnych.

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. letni" (w trakcie)

Okres: 2024-02-19 - 2024-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 120 miejsc więcej informacji
Wykład, 30 godzin, 120 miejsc więcej informacji
Koordynatorzy: Konrad Grochowski, Robert Nowak
Prowadzący grup: Michał Chwesiuk, Konrad Grochowski, Katarzyna Nałęcz-Charkiewicz, Robert Nowak, Krystian Radlak, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. zimowy" (zakończony)

Okres: 2023-10-01 - 2024-02-18
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 48 miejsc więcej informacji
Wykład, 30 godzin, 48 miejsc więcej informacji
Koordynatorzy: Konrad Grochowski, Robert Nowak
Prowadzący grup: Michał Chwesiuk, Konrad Grochowski, Robert Nowak, Krystian Radlak, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. letni" (zakończony)

Okres: 2023-02-20 - 2023-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 120 miejsc więcej informacji
Wykład, 30 godzin, 120 miejsc więcej informacji
Koordynatorzy: Konrad Grochowski, Robert Nowak
Prowadzący grup: Michał Chwesiuk, Konrad Grochowski, Katarzyna Nałęcz-Charkiewicz, Robert Nowak, Krystian Radlak, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. zimowy" (zakończony)

Okres: 2022-10-01 - 2023-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 40 miejsc więcej informacji
Wykład, 30 godzin, 40 miejsc więcej informacji
Koordynatorzy: Konrad Grochowski, Robert Nowak
Prowadzący grup: Michał Chwesiuk, Konrad Grochowski, Robert Nowak, Krystian Radlak, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2021/2022 - sem. letni" (zakończony)

Okres: 2022-02-23 - 2022-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 120 miejsc więcej informacji
Wykład, 30 godzin, 120 miejsc więcej informacji
Koordynatorzy: Konrad Grochowski, Robert Nowak
Prowadzący grup: Michał Chwesiuk, Konrad Grochowski, Robert Nowak, Krystian Radlak, Maciej Szymkowski, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2021/2022 - sem. zimowy" (zakończony)

Okres: 2021-10-01 - 2022-02-22
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 36 miejsc więcej informacji
Wykład, 30 godzin, 36 miejsc więcej informacji
Koordynatorzy: Konrad Grochowski, Robert Nowak
Prowadzący grup: Michał Chwesiuk, Konrad Grochowski, Robert Nowak, Krystian Radlak, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2020/2021 - sem. letni" (zakończony)

Okres: 2021-02-20 - 2021-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 15 godzin, 120 miejsc więcej informacji
Wykład, 30 godzin, 120 miejsc więcej informacji
Koordynatorzy: Konrad Grochowski, Robert Nowak
Prowadzący grup: Michał Chwesiuk, Konrad Grochowski, Robert Nowak, Krystian Radlak, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Politechnika Warszawska.
pl. Politechniki 1, 00-661 Warszawa tel: (22) 234 7211 https://pw.edu.pl kontakt deklaracja dostępności USOSweb 7.0.0.0-7 (2024-03-18)