Nazwa przedmiotu:
Technologia Wytwarzania Oprogramowania
Koordynator przedmiotu:
Anna DEREZIŃSKA
Status przedmiotu:
Obowiązkowy
Poziom kształcenia:
Studia I stopnia
Program:
Informatyka
Grupa przedmiotów:
Przedmioty techniczne
Kod przedmiotu:
TWO
Semestr nominalny:
6 / rok ak. 2018/2019
Liczba punktów ECTS:
4
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
120 godzin Bilans nakładu pracy studenta : - udział w wykładach: 15 x 2 godz. = 30 godz., - przygotowanie do kolejnych wykładów i realizacji laboratorium (przejrzenie materiałów z wykładu i dodatkowej literatury, konsultacje): 10 godzin (w tym 1 godz. konsultacji) - realizacja zadań laboratoryjnych: (15h zajęć laboratoryjnych, oraz obejmuje także zapoznanie się z instrukcjami laboratoryjnymi, przygotowanie programów i ich testów oraz modeli przed laboratoriami, przygotowanie rozwiązań zadań, dokończenie zadań po laboratorium oraz przygotowanie kolejnych sprawozdań, recenzję pracy innego studenta, uzgodnienia zadań pomiędzy członkami zespołu), 15 + (15+25+10) = 65 - przygotowanie do 2 kolokwiów i 2 kartkówek (rozwiązanie zadań przedkolokwialnych, udział w konsultacjach, przygotowanie materiałów na kolokwia): 15 godz. (w tym 1 godz. konsultacji)
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
30 + 15 + 1 + 1 = 47 godz., co odpowiada ok. 1.5-2 punktom ECTS
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
65 godzin co odpowiada ok. 2-2.5 punktom ECTS.
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia0h
  • Laboratorium15h
  • Projekt0h
  • Lekcje komputerowe0h
Wymagania wstępne:
Wiedza i umiejętności z przedmiotów Programowanie Obiektowe (np. C++, Java lub C#) oraz Inżynieria Oprogramowania - lub równoważne. Zakłada się, że studenci posiadają podstawową wiedzę z zakresu programowania obiektowego, projektowania obiektowego i strukturalnego, UML.
Limit liczby studentów:
50
Cel przedmiotu:
- rozszerzenie i pogłębienie wiedzy i umiejętności z dziedziny inżynierii oprogramowania. - ukształtowanie oceny różnych procesów i artefaktów inżynierii oprogramowania w kategoriach technologicznych, ekonomicznych i społecznych - zapoznanie z wybranymi problemami i metodami ich rozwiązywania dotyczącymi: specyfikacji i zarządzania wymaganiami, specyfikacji kontraktowych oraz specyfikacji formalnych, testowania i inspekcji oprogramowania, zapewnienia wysokiej jakości i niezawodności oprogramowania, pomiarów procesu i produktu, ewolucji oprogramowania, zarządzania projektami.
Treści kształcenia:
Wprowadzenie (1h). Problematyka jakości w produkcji oprogramowania. Ekonomiczne i społeczne aspekty inżynierii oprogramowania. Konsekwencje przeciekania błędów. Inżynieria wymagań(4h). Model Sommerville'a-Sayera, praktyki inżynierii wymagań, zbieranie, specyfikacja i weryfikacja wymagań, standardy, zarządzanie zmianami. Specyfikacje wymagań w SySML. Specyfikacja kontraktowa modeli obiektowych (4h) - projektowanie z wykorzystaniem kontraktów (ang. design by contract), język OCL, niezmienniki klas i stanów, warunki początkowe i końcowe operacji, precyzyjne modele klas i stanów UML Specyfikacje formalne (2h). Specyfikacje formalne, rodzaje, zastosowanie, specyfikacje algebraiczne. Projektowanie z użyciem wielokrotnym (1h). Linie produkcyjne, Komponenty - wykorzystanie, tworzenie, katalogowanie. Wzorce projektowe (2) Idea stosowania wzorców. Wzorce strukturalne (adapter, dekorator, proxy), czynnościowe (strategia, stan, obserwator), kreacyjne (wirtualny konstruktor, fabryka abstrakcyjna), przykłady, narzędzia. Weryfikacja i walidacja oprogramowania (4h). Testowanie ukierunkowane na wyszukiwanie defektów- strukturalne i funkcjonalne (klasy równoważności, pokrycia kodu, testowanie ścieżek), testowanie integracyjne, obiektowe, inne. Porównanie kryteriów testowania. Określanie wyroczni. Narzędzia wspomagające. Inspekcje kodu, listy kontrolne. Zasady łatwo-testowalnego oprogramowania. Przykłady. Wiarygodność oprogramowania (2h). Miary niezawodności, modele niezawodnościowe, metody podnoszenia niezawodności oprogramowania Metryki oprogramowania (1h). Miary oprogramowania strukturalnego i obiektowego. Metryki obiektowe projektu i klas. Metryki a złożoność testowania. Jakość oprogramowania i procesów wytwórczych (1h). Modele i standardy jakości produktów i procesów, modele ISO 9126, SQuaRE, ISO 25000, Ocena i doskonalenie procesów wytwórczych, ISO 9000, CMMI Wybrane problemy zarządzania (3h). Zapewnienie jakości i zarządzanie jakością, miary DRE, Zarządzanie ryzykiem. Planowanie i kontrola, wykresy kontrolne. Lekkie metodyki, programowanie ekstremalne XP, SCRUM. Zespół projektowy, Zasady skutecznej pracy indywidualnej i zespołowej, People-CMM, budowanie zespołu bazujące na rolach, zarządzanie kompetencjami. Ewolucja oprogramowania(2h). Pielęgnowanie i modyfikacja oprogramowania Koszty. Zarządzanie zmianami; narzędzia wspomagające, zarządzanie wersjami CVS. Systemy odziedziczone. Inżynieria ponowna (wsteczna) Refaktoryzacja kodu. Zakres laboratorium: Celem laboratorium jest utrwalenie znajomości zasad projektowania i programowania obiektowego, oraz praktyczne zapoznanie się czynnościami z różnych etapów procesu tworzenia oprogramowania. Podczas zajęć laboratoryjnych studenci poznają także możliwości różnych narzędzi CASE wspierających poszczególne zadania inżynierii oprogramowania oraz elementy pracy zespołowej. Lab1, 2 - specyfikacja i zarządzanie wymaganiami Określenie wymagań (cechy systemu, wymagania udziałowców, ograniczenia, wymagania funkcjonalne) Atrybuty wymagań (priorytety, wymagania nadrzędne i potomne, zależności pomiędzy wymaganiami różnych typów). Specyfikacja przypadków użycia z uwzględnieniem warunków początkowych i końcowych. Uzgodnienie wymagań w obrębie zespołu. Wymiana specyfikacji wymagań pomiędzy studentami. Przygotowanie recenzji dla specyfikacji wymagań wg cech IEEE 830. Lab 3-5 - projektowanie obiektowe z wykorzystaniem wzorców projektowych, precyzyjne modelowanie ze specyfikacją kontraktów (OCL), transformacje modelu do kodu i implementacja wybranych części systemu Lab 6 - testowanie Określenie pokrycia kodu. Tworzenie testów dla niepokrytego kodu. Minimalizacja zbioru testów dla zadanych kryteriów testowania. Lab 7 - rezerwowy dla ww zadań
Metody oceny:
- rezultaty sprawdzianów audytoryjnych Spr1 i Spr2 - rozwiązywanie zadań na wykładzie dla wybranych zagadnień - rezultaty kartkówek na laboratorium Kart1 i Kart2 - ocena pracy laboratoryjnej (prezentacji i dyskusji cząstkowych wyników, spójności danych w ramach zespołu, efektywności poprawy elementów zadań, sprawozdań z ostatecznymi wynikami, dyskusji wyników końcowych) - ocena pracy domowej (recenzji)
Egzamin:
nie
Literatura:
[1] I. Sommerville: Inżynieria oprogramowania, WNT 2003 , [2] R. S. Pressman, Praktyczne podejście do inżynierii oprogramowania, WNT 2004, [3] D. Leffingwell, D. Widrig: Zarządzanie wymaganiami, WNT 2003 [4] B. Bruegge, A.H. Dutoit: Inżynieria oprogramowania w ujęciu obiektowym, UML, wzorce projektowe i Java, Helion 2011 [5] B. Meyer Programowanie zorientowane obiektowo, Helion 2005/8 [6] S.Wrycza, B. Marcinkowski Język inżynierii systemów SysML. Architektura i zastosowanie, Profile UML 2.x w praktyce. Helion 2010 [7] J. Warmer, A. Kleppe: OCL Precyzyjne modelowanie w UML, WNT 2003 [8] A. Shaloway, J.R. Trott: Projektowanie zorientowane obiektowo – wzorce projektowe, Helion 2001 (wyd. 1), Helion 2005 (wyd. 2) [9] E.Gamma, R.Helm, R.Johnson, J.Vlissides, Wzorce projektowe, WNT 2005, II wyd. WNT 2008, Helion 2010 [10] R. Patton: Testowanie oprogramowania, Micom 2002 [11] B.Wiszniewski, B. Bereza-Jarociński, Teoria i praktyka testowania programów, PWN 2006
Witryna www przedmiotu:
http://studia.elka.pw.edu.pl/
Uwagi:
Uwagi realizacyjne: do realizacji zajęć laboratoryjnych konieczne jest posiadanie profesjonalnych, licencjonowanych narzędzi CASE do zarządzania wymaganiami, projektowania, testowania, ...

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Charakterystyka IOP2_W01
Student, który zaliczył przedmiot, posiada podstawową wiedzę na temat: metod specyfikacji i zarządzania wymaganiami
Weryfikacja: Ocena wyników Spr1, Lab1-2
Powiązane charakterystyki kierunkowe: K_W04, K_W13
Powiązane charakterystyki obszarowe: I.P6S_WK, I.P6S_WG
Charakterystyka IOP2_W02
Student, który zaliczył przedmiot, posiada podstawową wiedzę na temat: projektowania modeli obiektowy z wykorzystaniem wzorców projektowych
Weryfikacja: Ocena wyników Spr1, Spr2, Lab3-5
Powiązane charakterystyki kierunkowe: K_W13
Powiązane charakterystyki obszarowe: I.P6S_WG
Charakterystyka IOP2_W03
... na temat: specyfikacji kontraktów (niezmienników, warunków początkowych i końcowych) dla modeli obiektowych w języku OCL
Weryfikacja: Ocena wyników Spr1, Spr2, Lab3-5, Kart1
Powiązane charakterystyki kierunkowe: K_W13
Powiązane charakterystyki obszarowe: I.P6S_WG
Charakterystyka IOP2_W04
na temat: prostych miar niezawodności, metryk oprogramowania, jakości oprogramowania, jakości zbiorów testów i procesów wytwarzania oprogramowania
Weryfikacja: Ocena wyników Spr2, Kart2
Powiązane charakterystyki kierunkowe: K_W13
Powiązane charakterystyki obszarowe: I.P6S_WG
Charakterystyka IOP2_W05
.. na temat wybranych specyfikacji formalnych
Weryfikacja: Ocena wyników Spr1, Spr2,
Powiązane charakterystyki kierunkowe: K_W13
Powiązane charakterystyki obszarowe: I.P6S_WG
Charakterystyka IOP2_W06
...na temat: metod weryfikacji statycznej i dynamicznej oprogramowania, kryteriów testowania dla wybranych strategii testowania,
Weryfikacja: Ocena wyników Spr1, Spr2, Kart2, Lab6
Powiązane charakterystyki kierunkowe: K_W13
Powiązane charakterystyki obszarowe: I.P6S_WG
Charakterystyka IOP2_W07
... na temat: ekonomicznych i społecznych konsekwencji dla wybranych zagadnień organizacji pracy i zarządzania wytwarzaniem oprogramowania
Weryfikacja: Ocena wyników Spr1, Spr2
Powiązane charakterystyki kierunkowe: K_W04, K_W05, K_W13, K_W15
Powiązane charakterystyki obszarowe: I.P6S_WK, III.P6S_WK.o, I.P6S_WG, III.P6S_WG.o
Charakterystyka IOP2_W08
... na temat: ewolucji oprogramowania
Weryfikacja: Ocena wyników Spr2
Powiązane charakterystyki kierunkowe: K_W15, K_W13
Powiązane charakterystyki obszarowe: I.P6S_WG, III.P6S_WG.o

Profil ogólnoakademicki - umiejętności

Charakterystyka IOP2_U01
Student, który zaliczył przedmiot potrafi: opracować specyfikację wymagań, ocenić jakość takiej specyfikacji, wskazać podstawowe ekonomiczne i społeczne konsekwencje dla wybranych zagadnień organizacji pracy i zarządzania wytwarzaniem oprogramowania, oceny jakości oprogramowania, ewolucji oprogramowania
Weryfikacja: Ocena wyników Spr1, Lab1-2, Ocena recenzji
Powiązane charakterystyki kierunkowe: K_U14, K_U21
Powiązane charakterystyki obszarowe: I.P6S_UW, III.P6S_UW.3.o, III.P6S_UW.4.o
Charakterystyka IOP2_U02
Student, który zaliczył przedmiot potrafi: zaprojektować model obiektowy z wykorzystaniem wzorców projektowych; zaprojektować model obiektowy z określeniem prostych kontraktów (niezmienników, warunków początkowych i końcowych) w danym języku specyfikacji; zaimplementować program na podstawie takich modeli z wykorzystaniem narzędzi CASE
Weryfikacja: Ocena wyników Spr1, Spr2, Kart1, Lab3-5,. Rozwiązywanie zadań na wykładzie
Powiązane charakterystyki kierunkowe: K_U13, K_U15, K_U21
Powiązane charakterystyki obszarowe: I.P6S_UW, III.P6S_UW.4.o, III.P6S_UW.3.o
Charakterystyka IOP2_U03
Student, który zaliczył przedmiot potrafi: obliczyć proste miary niezawodności i metryki oprogramowania
Weryfikacja: Ocena wyników Spr2, Kart2, Rozwiązywanie zadań na wykładzie
Powiązane charakterystyki kierunkowe: K_U02
Powiązane charakterystyki obszarowe: I.P6S_UW, III.P6S_UW.1.o, III.P6S_UW.2.o
Charakterystyka IOP2_U04
Student, który zaliczył przedmiot potrafi: zmodyfikować i zastosować proste specyfikacje formalne (specyfikacje algebraiczne)
Weryfikacja: Ocena wyników Spr1, Spr2 Rozwiązywanie zadań na wykładzie
Powiązane charakterystyki kierunkowe: K_U01, K_U14
Powiązane charakterystyki obszarowe: I.P6S_UW, III.P6S_UW.2.o, III.P6S_UW.3.o, III.P6S_UW.4.o
Charakterystyka IOP2_U06
Student, który zaliczył przedmiot potrafi: wykorzystać różne kryteria testowania dla wybranych strategii testowania, poprawić zbiór testów wykorzystując narzędzie do badania pokrycia kodu
Weryfikacja: Ocena wyników Spr2, Kart2, Lab6 Rozwiązywanie zadań na wykładzie
Powiązane charakterystyki kierunkowe: K_U21, K_U02, K_U19
Powiązane charakterystyki obszarowe: III.P6S_UW.4.o, I.P6S_UW, III.P6S_UW.1.o, III.P6S_UW.2.o, III.P6S_UW.3.o
Charakterystyka IOP2_U07
Student, który zaliczył przedmiot potrafi: określić priorytety wymagań
Weryfikacja: Ocena wyników Spr1, Lab1-2, recenzji
Powiązane charakterystyki kierunkowe: K_UK04
Powiązane charakterystyki obszarowe: I.P6S_UO
Charakterystyka IOP2_U08
Student, który zaliczył przedmiot potrafi: pracować indywidualnie i w zespole przyjmujac różne role
Weryfikacja: Ocena wyników Spr2, Lab1-2, Lab3-5
Powiązane charakterystyki kierunkowe: K_UK03
Powiązane charakterystyki obszarowe: I.P6S_UO

Profil ogólnoakademicki - kompetencje społeczne

Charakterystyka IOP2_K01
Student, który zaliczył przedmiot potrafi: wskazać podstawowe ekonomiczne i społeczne konsekwencje dla wybranych zagadnień organizacji pracy i zarządzania wytwarzaniem oprogramowania, określenia wymagań, oceny jakości oprogramowania, ewolucji oprogramowania
Weryfikacja: Ocena wyników Spr1, Spr2
Powiązane charakterystyki kierunkowe: K_K02
Powiązane charakterystyki obszarowe: I.P6S_KK, I.P6S_KR