Nazwa przedmiotu:
Wiarygodność systemów komputerowych
Koordynator przedmiotu:
Janusz Sosnowski
Status przedmiotu:
Fakultatywny dowolnego wyboru
Poziom kształcenia:
Studia II stopnia
Program:
Informatyka
Grupa przedmiotów:
Przedmioty techniczne - zaawansowane
Kod przedmiotu:
WSK
Semestr nominalny:
4 / rok ak. 2012/2013
Liczba punktów ECTS:
4
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
Udział w wykładach 15 x 2 godz. = 30 godz. Prygotowanie sie do kolejnych wykładów: 15 godz. Udzial w konsultvcjach zwązanych z reazlizacja projektu 5 godz Przegląd wskazanej literatury 10 godz. Realizacja projektu 45 godz. przygotowanie do kolokwiów 10 godz. Łaczny nakład prcay studenta 115 godz.
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
Wykłady 30 godz. Projekt 15 godz cfo odpowiada ok., 3 ECTS
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
45 godz realizacji projektu co ospowiada ok 1 ECTS
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia0h
  • Laboratorium0h
  • Projekt15h
  • Lekcje komputerowe0h
Wymagania wstępne:
Ogólna wiedza z akresu architektury komputerów, układów cyfrowych oraz programowania
Limit liczby studentów:
24
Cel przedmiotu:
Wykład poświęcony jest szeroko rozumianej tematyce wiarygodności systemów komputerowych. Obejmuje ona zagadnienia testowania, diagnostyki, technik tolerowania i maskowania błędów, analizy niezawodności, bezpieczeństwa itp. Słuchacze zostaną zapoznani z istotą problemów dotyczących wyżej wymienionych aspektów systemów komputerowych. Będą one omawiane na poziomie sprzętu, oprogramowania oraz systemowym. Wykład jest ilustrowany przykładami rozwiązań stosowanych w praktyce. Zdobyta wiedza będzie przydatna nie tylko dla analizy wiarygodności systemów informatycznych ale w również w projektowaniu takich systemów. W ramach projektu studenci wykorzystują wybrane metody do rozwiązywania konkretnych problemów.
Treści kształcenia:
Treść wykładu: Podstawowe koncepcje i definicje. Klasyfikacja i statystyki błędów w sprzęcie i oprogramowaniu. Cechy wiarygodności systemów komputerowych: diagnozowalność, bezpieczeństwo, dostępność, wydajność, odpowiedzialność i niezawodność. Problemy wiarygodności w kontekście typowych zastosowań (systemy przemysłowe, bankowe, telekomunikacyjne, administracyjne, medyczne i inne). Testowanie systemów komputerowych. Modele błędów (funkcjonalne, strukturalne, fizyczne, statyczne, dynamiczne). Testowanie sprzętowe i programowe. Generacja pobudzeń, analiza wyników (analizator sygnatur, kompakcja). Algorytmy testowania podstawowych bloków funkcjonalnych komputerów (pamięci RAM, procesory, bloki arytmetyczne, itp.), metody deterministyczne i pseudoprzypadkowe. Układy łatwotestowalne (DFT, ścieżka testująca, ścieżka cykliczna i krawędziowa, IEEE 1149, P1500, itp.) oraz samotestujące się (techniki BIST). Przegląd mechanizmów ułatwiających testowanie w komercyjnych układach VLSI, SoC i komercyjnych komputerach. Problem efektywność testowania. Oprogramowanie diagnostyczne Diagnostyka systemowa. Modele i strategie diagnostyki scentralizowanej i rozproszonej (model PMC, KH, KRH itp.). Lokalizacja i identyfikacja błędów, rejestracja i analiza błędów. Przegląd oprogramowania diagnostycznego w systemach komercyjnych (proste programy typu POST oraz zaawansowane programy diagnostyczne), problem integracji z technikami DFT, HBIST i SBIST. Diagnostyka i serwis zdalny. Testowanie programów Strategie testowania oprogramowania (testowanie funkcjonalne, strukturalne i pseudoprzypadkowe).Modele niezawodnościowe bazujące na monitorowaniu procesu testowania: modele skoñczone (JM, GO, Schneidewinda, S-shape G-O itp.) i nieskończone. Miary dokładności modeli. Pośrednia analiza niezawodności (miary złożoności programów, miary pokrycia strukturalnego: c-użycie, p-użycie, pokrycie bloków, decyzji, itp.). Przykłady wyników oraz analiz dla wybranych rzeczywistych projektów. Metody porównawcze (Mills, Cai) oraz techniki wstrzykiwania błędów (mutacja programów). Architektura i oprogramowanie systemów odpornych na błędy Techniki oparte na redundancji układowej (aktywna, bierna, hybrydowa), informacji, algorytmicznej, czasowej i programowej. Redundancja masowa i częściowa. Problem tolerowani katastrof. Systemy samosprawdzalne oraz samonaprawialne oraz rekonfigurowalne (fail-stop, fail-silent, fail-bounded). Programowanie wielowersyjne i alternatywne. Techniki oparte na głosowaniu (problem Bizantyjski, głosowanie akceptacyjne, optymalne itp.). Programy z wbudowanymi mechanizmami detekcji błędów (asercje). Programowa obsługa błędów (odtwarzanie wsteczne i omijanie błędów - backward, forward error recovery). Punkty kontrolne (checkpoints) i ich rozkład w programach: technika z pamięcią notatnikową, punkty kontrolne w systemach rozproszonych (efekt domina). Techniki kopiowania i odtwarzania informacji (pełne, inkrementalne, różnicowe, kopiowanie migawkowe, rozdzielone, dwufazowe). Zintegrowane tolerowanie błędów sprzętu i oprogramowania (np. RB/1/1, NSCP/2/2, NVP1/1). Tolerowanie błędów w systemach komercyjnych: serwery typu RAS, systemy klastrowe, rozproszone i zwirtualizowane, niezawodne centra danych (tablice RAID, pamięci wirtualne), systemy wbudowane (dla przemysłu samochodowego, telekomunikacji, medycyny itp.). Monitorowanie bieżącej pracy systemu (programowe i sprzętowe, technika SMART) oraz predykcja awarii. Procedury prewencyjne (error scrubbing, software rejuvenation) Projektowanie systemów bezpiecznych Analiza sytuacji i zdarzeń krytycznych (drzewa błędów). Mechanizmy sprzętowe zapewniające bezpieczne zachowanie się systemu. Podsumowanie. Metody analizy wiarygodności. Kierunki rozwoju dziedziny wiarygodności (aspekty techniczne, prawne itp.) Zakres projektu: Projekt obejmuje zadania dotyczące wybranych zagadnień z zakresu wykładu w celu pogłębienia zdobytej wiedzy i jej praktycznego zastosowania. Ponadto udostępniane będą specjalizowane narzędzia wspomagające analizę wiarygodności systemów itp. Akceptowane sa również propozycje studentów np. skorelowanie projektu z innymi projektami realizowanymi przez studenta w ramach pracowni problemowej lub dyplomowej.
Metody oceny:
Zaliczenie odbywa się na podstawie 2 kolokwiów oraz zaliczenia projektu. Za oba kolokwia można uzyskać łącznie maksymalnie K = 80 pkt. a za projekt P = 40 pkt. Warunkiem zaliczenia jest uzyskanie K>40 oaz P>20.
Egzamin:
nie
Literatura:
1. J. Sosnowski, Testowanie i niezawodność systemów komputerowych, Akademicka Oficyna Wydawnicza, EXIT 2005 2.. Materiały dodatkowe opracowane lu wskazane przez wykładowcę
Witryna www przedmiotu:
http://www.elka.pw.edu.pl/
Uwagi:

Efekty uczenia się

Profil praktyczny - umiejętności

Efekt Wpisz opis
Opracowanie procedur projektowania systemów spełniajacych wybrane wymagania wiarygodności (w zakresie sprzetu i oprogramowania)
Weryfikacja: projekt
Powiązane efekty kierunkowe:
Powiązane efekty obszarowe:

Profil ogólnoakademicki - wiedza

Efekt Wpisz opis
Wskazanie rozwiązań z różnymi formami redundancji układwej, programowej i czasowej oraz ocena ich efektywności
Weryfikacja: kolokwium, projekt
Powiązane efekty kierunkowe:
Powiązane efekty obszarowe: