Nazwa przedmiotu:
Zaawansowane metody wytwarzania oprogramowania
Koordynator przedmiotu:
Rajmund Kożuszek
Status przedmiotu:
Fakultatywny dowolnego wyboru
Poziom kształcenia:
Studia II stopnia
Program:
Informatyka
Grupa przedmiotów:
Przedmioty techniczne - podstawowe
Kod przedmiotu:
ZMWO
Semestr nominalny:
3 / rok ak. 2021/2022
Liczba punktów ECTS:
4
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
1. liczba godzin kontaktowych – 49 godz., w tym obecność na wykładach 26 godz., obecność na seminariach 4 godz. obecność na spotkaniach projektowych 11 godz. obecność podczas zaliczania projektów 2 godz., obecność na warsztatach 4 godz., obecność na konsultacjach (do seminarium, projektów, sprawdzianów) 2 godz., 2. praca własna studenta – 68 godz., w tym przygotowanie do seminariów 10 godz., przygotowanie projektów 40 godz., przygotowanie do wykładów i sprawdzianów 18 godz. Łączny nakład pracy studenta wynosi 117 godz., co odpowiada 4 pkt. ECTS.
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
1,68 pkt. ECTS, co odpowiada 49 godz. kontaktowym
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
1,95 pkt. ECTS, co odpowiada 2 godz. zaliczania projektów plus 40 godz. przygotowania projektów plus 11 godzin spotkań projektowych plus 4 godz. warsztatów
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia15h
  • Laboratorium0h
  • Projekt15h
  • Lekcje komputerowe0h
Wymagania wstępne:
Student zna języki programowania oraz elementarne struktury danych i biblioteki. Student potrafi pisać i uruchamiać programy komputerowe, w tym w co najmniej jednym języku obiektowym. Student posiada podstawową wiedzę i umiejętności z inżynierii oprogramowania, w tym z inżynierii wymagań, modelowania i projektowania oprogramowania, weryfikacji i pielęgnacji oprogramowania.
Limit liczby studentów:
24
Cel przedmiotu:
Ukształtowanie wśród studentów zrozumienia konieczności zapewnienia wysokiej jakości oprogramowania. Zapoznanie z nowoczesnymi technikami produkcji oprogramowania wysokiej jakości. Rozwój umiejętności w zakresie projektowania i implementacji oprogramowania wysokiej jakości.
Treści kształcenia:
Wykład: Wprowadzenie (2) Przedstawienie celu i zakresu przedmiotu oraz sprawy organizacji zajęć. Cechy oprogramowania wysokiej jakości. Normy jakości oprogramowania. Metryki oprogramowania (2) Metryki obiektowe wpływające na jakość i złożoność projektu oraz procesu testowania. Metryki Chindamber-Kemerer, MOOD, Bashir-Goehl. Nowoczesne metody wytwarzania i ewolucji oprogramowania (8) Wytwarzanie zorientowane aspektowo (AOD). Identyfikacja aspektów i ich przeplatanie (ang. weaving). Języki programowania aspektowego (C++ i Java) i ich kompilatory. Slicing kodu - odmiany slicingu, zastosowania. Refaktoryzacja kodu, wykrywanie i usuwanie "brzydkich zapachów" np. duplikaty kodu, długie metody, duże klasy, złożone instrukcje warunkowe. Przekształcenia refaktoryzacyjne. Weryfikacja poprawności refaktoryzacji - projektowanie zgodne z umową (ang. design by contract) warunki wstępne i końcowe, niezmienniki, testowanie jednostkowe, regresyjne. Refaktoryzacja kodu do wzorców projektowych. Testowanie(6) Test Driven Development. Automatyzacja testowania. Testy jednostkowe. Testy z użyciem obiektów zastępczych (mock objects). Testowanie oparte o wyrocznie i testowanie bez wyroczni. Testowanie mutacyjne, kombinatoryczne. Testowanie interfejsów graficznych i aplikacji internetowych. Testowanie oprogramowania mobilnego, oprogramowania w chmurach, oprogramowania wbudowanego. Kryteria testowania, ocena jakości testów. Testowanie a specyfikacje formalne. Generacja testów z modeli, specyfikacji i kodu. Nowe podejścia do projektowania oprogramowania (4) MDE (Model Driven Engineering) - wytwarzanie oparte na modelach. Meta-modelowanie, hierarchia OMG. Profile UML. MDA (Model Driven Architecture) - model niezależny od platformy (PIM) i model zależny platformowo (PSM). Transformacje modeli (standard QVT - Query View Transformation), łączenie modeli. Formalne metody specyfikacji oprogramowania (2) Podstawowe mechanizmy, operatory, przykłady specyfikacji, zastosowania. Transformacje specyfikacji formalnych do kodu. Sprawdziany (2) Projekt: Programowanie aspektowe Metryki, Analiza statyczna kodu, Wykrywanie zapachów w kodzie, Refaktoryzacja kodu, Testowanie refaktoryzowanego kodu Wybrane zagadnienia testowania. Seminaria: Wybrane problemy wytwarzania i testowania oprogramowania, nowoczesne metody i narzędzia. Warsztaty – zajęcia zintegrowane MDE (Model Driven Engineering) – tworzenie metamodelu, budowa modeli zgodnych z metamodelami, transformacje modeli, testowanie transformacji
Metody oceny:
Liczebność zespołów na zajęciach projektowych: 8-12 studentów. Warsztaty: 2 spotkania po 2 godziny, maksymalnie 16 osób na zajęciach Seminaria: 2 spotkania po 2 godziny, 10-16 studentów w grupie
Egzamin:
nie
Literatura:
1. M. Fowler i inni: Refaktoryzacje. Ulepszanie struktury istniejącego kodu, WNT 2006 2. S.H. Kan: Metryki i modele w inżynierii jakości oprogramowania, PWN 2006 3. A. Roman: Testowanie i jakość oprogramowania. Modele, techniki, narzędzia, PWN 2017 4. A. Harry: Formal Methods Fact File VDM and Z, Wiley 1996 5. Aspect-Oriented Software Development web site - http://www.aosd.net 6. J. Kerievsky: Refaktoryzacja do wzorców projektowych, Helion, 2005 7. Specyfikacje OMG (MDA, MOF, UML, QVT) http://www.omg.org/ 8. Materiały wykładowcy, aktualne publikacje i materiały z Internetu Literatura uzupełniająca: • L. Maciaszek : Practical Software Engineering, Pearson 2005 • M. Flower i inni: Architektura systemów zarządzania przedsiębiorstwem, Wzorce projektowe, Helion 2005 • J.Z.Gao, H.-S.J. Tsao, Ye Wu: Testing and quality Assurance for Component Based Software, Artech House 2003 • B. Wiszniewski, B. Bereza-Jarociński: Teoria i praktyka testowania programów, PWN 2006 • G. Kiczales and others: Aspect-Oriented Programming, Proceedings of the European Conference on Object-Oriented Programming (ECOOP), Finland, LNCS 1241 • http://www.mockobjects.com/ • R.V. Binder: Testowanie systemów obiektowych. Modele, wzorce, narzędzia, WNT 2003
Witryna www przedmiotu:
https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103A-INxxx-MSP-ZMWO
Uwagi:
(-)

Efekty uczenia się