Projektowanie oprogramowania
Wyk ad
ł
Weryfikacja i Zatwierdzanie
In ynieria Oprogramowania
ż
Kazimierz Michalik
Agenda
●
Weryfikacja i zatwierdzanie
–
Testowanie oprogramowania
●
Zarządzanie
–
Zarządzanie personelem
–
Szacowanie kosztu oprogramowania
–
Zarządzanie jakością
–
Ulepszanie procesu
●
Ewolucja ...
Agenda
●
Ewolucja
–
Systemy odziedziczone
–
Modyfikacja oprogramowania
–
Restrukturyzacja oprogramowania
–
Zarządzanie konfiguracjami
Weryfikacja i zatwierdzanie
●
Co to jest weryfikacja?
●
Czym się różni od zatwierdzania?
●
Z czego wynika przewaga kontroli nad testowaniem?
●
Jak wykrywać defekty w programie podczas kontroli?
●
Jaka jest wzajemna relacja kontroli i testowania?
●
Co to jest analiza statyczna – jak jej używać jako
istotnego elementu weryfikacji?
●
Jaka jest istota metodologii Cleanroom?
Weryfikacja a zatwierdzanie
Zatwierdzanie:
–
Czy budujemy odpowiedni produkt?
(CO budujemy?)
vs
Weryfikacja:
–
Czy budujemy produkt odpowiednio?
(JAK to budujemy?)
Weryfikacja a zatwierdzanie
Weryfikacja:
–
Czy oprogramowanie zgodne ze specyfikacją?
–
Zaczyna się od weryfikacji wymagań
–
Trwa przez wszystkie czynności procesu tworzenia
oprogramowania
Weryfikacja a zatwierdzanie
Zatwierdzanie:
–
Podobny okres trwania
–
Bardziej ogólny proces
–
Czy oprogramowanie spełnia oczekiwania klienta?
(nie tylko czy spełnia formalne wymagania)
Weryfikacja i zatwierdzanie
●
Metody sprawdzania i analizy systemu:
–
Kontrole oprogramowania (inspekcje)
●
Sprawdzanie dokumentacji, diagramów
●
Analizy kodu
●
Nie potrzeba działającego programu
–
Testowanie oprogramowania
●
Dotyczy wykonywalnej wersji systemu
●
Oparte na uruchamianiu programu
Kontrola i testowanie
Kontrola:
●
Bada źródła systemu (model, kod)
●
Jest tańsze niż testowanie
●
Wykrywa więcej błędów
–
Nieformalna kontrola ponad 60%
–
Formalna (matematyczna) ponad 90%
●
Wiele różnych defektów można wykryć w czasie jednej
kontroli
●
Uwzględniają wielokrotne użycie wiedzy dziedzinowej
●
Pozwalają wykazać jakościowe cechy programu
Kontrola i testowanie
Testowanie:
●
Jest jedyną metodą możliwą do zastosowania na
poziomie całego systemu
●
Pozwala na zatwierdzenie dynamicznego stanu systemu
●
Pozwala ocenić niezawodność systemu, analizę
efektywności, zatwierdzenie interfejsu użytkownika.
●
Pozwala zweryfikować zgodność z oczekiwaniami
użytkownika
Proces kontroli
Powinien być przeprowadzony przez zespół przynajmniej 4
osób. Role w zespole:
●
Autor/właściciel – odpowiada za usunięcie znalezionych
defektów
●
Kontroler – znajduje błędy, pominięcia, niespójności
●
Czytelnik – interpretuje kod w trakcie spotkania kontrolnego
●
Pisarz – odnotowuje rezultaty spotkania kontrolnego
●
Przewodniczący/moderator – zarządza procesem i ułatwia
kontrolę, informuje naczelnego moderatora o wynikach
procesu.
●
Naczelny moderator – odpowiada za ulepszanie procesu
kontroli, aktualizację list kontrolnych, standardy
Automatyczna analiza statyczna
Wykorzystuje narzędzia programowe, które przeglądają
kod źródłowy programu i wykrywają potencjalne usterki i
anomalie.
●
Analiza przepływu sterowania
●
Analiza użycia danych
●
Analiza interfejsu
●
Analiza przepływu informacji
●
Analiza ścieżek
Automatyczna analiza statyczna
Analiza statyczna najlepiej sprawdza się w językach bez
ścisłej kontroli typów
●
C (w mniejszym stopniu C++)
●
FORTRAN
●
języki interpretowalne bez ścisłych typów
●
Najbardziej znanym jest LINT (unix/linux, język C)
Metoda Cleanroom
●
Podstawą jest unikanie defektów oprogramowania dzięki
rygorystycznej kontroli
1) Specyfikacja formalna
2)Tworzenie przyrostowe
3)Programowanie strukturalne
4)Weryfikacja statyczna
5)Testowanie statystyczne systemu.
Zarządzanie
●
Zarządzanie personelem
●
Szacowanie kosztu oprogramowania
●
Zarządzanie jakością
●
Ulepszanie procesu
Zarządzanie personelem
●
Personel to najważniejsze dobro firmy
●
Złe zarządzanie personelem jest podstawową przyczyną
niepowodzeń
●
Menedżerowie muszą
–
ludzi motywować
–
planować i organizować pracę
–
dbać by praca była wykonana rzetelnie
Szacowanie kosztu
oprogramowania
Różne metody:
●
Metoda delficka – wspólne oszacowanie niezleżnych
ekspertów
●
Model COCOMO II – na podstawie rozmiaru
oprogramowania
●
Use Case Points – w oparciu i specyfikacje wymagań
●
Gra Planistyczna – klient wybiera w oparciu o
szacowanie dostawcy oprogramowania
Szacowanie kosztu
oprogramowania
Jakie są miary kosztu oprogramowania?
●
SLOC (source lines of code)
●
Czas (osobo-godziny)
●
Pieniądze ($$)
●
http://csse.usc.edu/tools/COCOMOII.php
Systematyczne podejście do
planowania
1.Szacowanie rozmiaru
(SLOC lub inne metryki)
2.Szacowanie pracochłonności
Na podstawie metryki przy pomocy dostępnych modeli
zamienia się rozmiar na pracochłonność.
3.Szacowanie harmonogramu
Posiadając wymaganą pracochłonność oraz dostępne
zasoby (ludzkie) można zaplanować harmonogram
wykonania.
Metoda delficka
●
Koniec lat 40-tych
●
Kilku niezależnych ekspertów szacuje rozmiar według
wspólnej metryki
●
Następnie należy dojść do konsensusu
Metoda delficka
1. Indywidualna analiza dokumentacji
2. Dyskusja w grupie nt. Analizy
3. Głosowanie oszacowania (tajne)
4. Opracowanie raportów przez moderatora
5. Dyskusja ekspertów nt. wyników (bez podawania
oszacowań)
6. Oszacowanie końcowe lub powtórzenie procedury
Oszacowanie = (Pesymista + 4*Średnia + Optymista)/6
Ewolucja
Systemy odziedziczone
Modyfikacja oprogramowania
Restrukturyzacja oprogramowani
Zarządzanie konfiguracjami