Konserwacja oprogramowania - z punktu widzenia klienta jest to eksploatacja, z punktu widzenia producenta faza konserwacji Konserwacja oprogramowania to wprowadzanie modyfikacji.
Klasy modyfikacji:
Modyfikacje poprawiające (usuwają błędy z oprogramowania, poprawa błędów popełnionych w każdej fazie tworzenia oprogramowania)
Modyfikacje ulepszające (poprawiają jakość oprogramowania poprzez poprawę wydajności funkcji, ergonomii interfejsu użytkownika, przejrzystości raportów)
Modyfikacje dostosowujące
(dostosowują oprogramowanie do zmian zachodzących w środowisku jego pracy (zmiany wymagań użytkownika, przepisów prawnych dotyczących dziedziny problemu, organizacyjne po stronie klienta, sprzętu i oprogramowania systemowego)
Słownik Danych - DD (Data Dictionary) - repozytorium wszystkich terminów (składników modeli : wejść, wyjść, obiektów itd.) używanych w projekcie, w szczególności zawiera definicje wszystkich atrybutów użytych w opisach typów obiektów i relacji.
Elementy składni: = składa się; + i; ( ) opcja; { } iteracja; [ ] wybranie jednej z wielu możliwości; | separator alternatyw w formule [ ];
* * początek/koniec komentarza; @ identyfikator (pole kluczowe
Przykład: zamówienie = nazwa_klie + adres_klie + {towar}; płeć = {M|K}
Bilansowanie modelu strukturalnego DFD, ERD, STD, Specyfikacja procesu, DD, modelują różne aspekty systemu. W celu zachowania spójności opisu i usunięcia błędów konieczne jest wzajemne zbilansowania wszystkich przekrojów projektu.
DFD względem DD: - każdy przeplyw i każdy skłąd danych musi być w DD; - każdy element danych i każdy skłąd danych zdefiniowany w DD musi mieć miejsce na DFD.
DFD względem specyfikacji procesów: - każdy proces musi być powiązany z DFD niżzego poziomu lub specyfikacją procesu, lub obie możliwości; - każda specyfikacja procesu jest powiązana z procesem najniższego poziomu; - wejścia w wyjścia muszą korelować ze sobą (na przykład przepływ wychodzący ze składu musi być interpretowany w specyfikacji jak instrukcja READ/GET, przepływ wychodzący jak WRITE/DISPALY)
Specyfikacja procesu względem DFD i DD każde odwołanie do danych w specyfikacji musi spełniać reguły: - musi być dopasowane do nazwy przepływu albo składu danych, podwiązanego do opisywanego procesu;
- jest terminem lokalnym zdefiniowanym wewnątrz tej specyfikacji; - jest komponentem dla przepływu albo składu danych podwiązanego do procesu;
DD względem DFD i specyfikacji procesów: - każde wejście do DD musi mieć odniesienie w specyfikacji lub innym wejściu do słownika danych
ERD względem DFD i specyfikacji procesów: - skład danych na DFD musi odpowiadać typowi obiektu albo relacji, albo kombinacji typu obiektu i relacji (obiekt asocjacyjny) na ERD; - nazwy obiektów na ERD oraz nazwy składów danych muszą sobie odpowiadać (skład danych -> KLIENCI, ERD -> KLIENT); - wejście do DD odnosi się jednocześnie do DFD i ERD (KLIENCI = { KLIENT}; - generowanie lub usuwanie wystąpienia każdego obiektu i relacji muszą mieć miejsce wewnątrz procesu
DFD względem STD: - każdy proces sterowania na DFD jest związany z STD w ten sposób, że STD jest specyfikacją tego procesu; - każdy warunek na STD musi odpowiadać wchodzącemu przepływowi sterowania do procesu sterowania związanego z przedmiotowym STD; - każda akcja na STD musi odpowiadać wychodzącemu przepływowi sterowania z procesu sterowania związanego z STD
Analiza drzew błędów - podstawowa technika zwiększania bezpieczeństwa:
- korzeniem drzewa jest jedna z rozważanych niebezpiecznych sytuacji
- wierzchołkami są pośrednie sytuacje; - unikanie niebezpieczeństwa polega na unikaniu jego przyczyn (unikanie błędów podczas implementacji „wierzchołków” drzewa, zlecenie realizacji „wierzchołków” doświadczonym programistom, stosowanie technik programowania n-wersyjnego, szczególnie dokładne testowanie „wierzchołków” )
Testowanie – proces sprawdzania/oceny czy produkt lub jego część jest „dobra” Atestowanie (walidacja) – testowanie zgodności systemu z rzeczywistymi potrzebami użytkownika Weryfikacja – testowanie zgodności systemu z wymaganiami określonymi w specyfikacji Błąd – niepoprawna konstrukcja w programie, mogąca prowadzić do niewłaściwego działania
Błędne wykonanie – niepoprawne działanie programu w trakcie jego pracy
Fazy testowania systemu (patrz model typu V)
- testy modułu, - testy systemu, - testy akceptacji (testy alfa, testy beta)
Testy statystyczne S
chemat wykonania:
1. losowa konstrukcja danych wejściowych zgodnych z rozkładem prawdopodobieństwa tych danych
2. określenie wyników poprawnego działania systemu na tych danych
3. uruchomienie systemu oraz porównanie wyników działania z poprawnymi
wynikami
4. gotowe
Niektóre cechy: - testowanie systemu w typowych sytuacjach - możliwość automatyzacji („brutalna siła”)
Miary niezawodności oprogramowania: - prawdopodobieństwo błędnego wykonania podczas realizacji transakcji; - częstotliwość występowania błędnych wykonań (liczba/godz) ; - średni czas między błędnymi wykonaniami; - dostępność. Miary niezawodności pozwalają oszacować koszty konserwacji!
Niezawodność = Niezawodność początkowa * exp (-C * Liczba testów)
Testy funkcjonalne :
- system traktowany jako czarna skrzynka, która w nieznany sposób realizuje wymagane funkcje;
- dane wejściowe dzielone są na klasy, w których działanie powinno być podobne sprawdzamy działanie funkcji dla:
- wszystkich dopuszczalnych warunków wejściowych i opcji;
- danych na granicach dziedzin wejściowych;
- danych na granicach dziedzin wynikowych;
- danych dla granic funkcjonalnych;
- danych niepoprawnych, niespodziewanych i destrukcyjnych
Zasady wyboru testowanych funkcji i danych wejściowych: - możliwość wykonania funkcji jest ważniejsza niż jakość wykonania;- funkcje systemu znajdujące się w poprzedniej wersji są istotniejsze niż nowo wprowadzone;
- typowe sytuacje są ważniejsze niż wyjątki
Testy strukturalne - zakładają znajomość sposobu implementacji testowanych funkcji
Wybrane kryteria doboru danych wejściowych: - kryterium pokrycia wszystkich instrukcji (każda instrukcja wykonana co najmniej raz);
- kryterium pokrycia instrukcji warunkowych (każdy warunek instrukcji warunkowej został co najmniej raz spełniony i raz niespełniony)
Dobór danych wejściowych dla pętli:
- tak, aby nie została wykonana żadna iteracja pętli (lub minimalna liczba); - tak, aby została wykonana maksymalna liczba iteracji;
- tak, aby została wykonana przeciętna liczba iteracji