Materiały do wykładu "Jakość oprogramowania" - e

Transkrypt

Materiały do wykładu "Jakość oprogramowania" - e
Jakość Oprogramowania
czyli
co zrobić aby program nie tylko działał
ale robił to co chcą użytkownicy
Materiały przygotowane w ramach projektu „Uruchomienie unikatowego kierunku studiów
Informatyka Stosowana odpowiedzią na zapotrzebowanie rynku pracy” ze środków Programu
Operacyjnego Kapitał Ludzki współfinansowanego ze środków Europejskiego Funduszu Społecznego
nr umowy UDA – POKL.04.01.01-00-011/09-00
Początki są zawsze trudne…
Właściciela Tulskiej Fabryki Broni, Korniłowa Białogłazowabić batem i zesłać na roboty do Monastyru ponieważ
podlec ośmielił się dostarczyć Wojsku Ruskiemu muszkiety złej jakości. Niech Nadzorcy Wojskowi i ich pomocnicy
pilnie baczą, jak kontrola pieczęć stawia. Jeśli będą mieli wątpliwości, sami niech sprawdzają przez przegląd i
strzelanie z dwóch muszkietów co miesiąc. Strzelać mają dopóki się nie zepsują. Jeżeli pomimo to wojsko dostanie
złą broń psującą się podczas bitwy, nie oszczędzając bić batami:
–Właściciela fabryki 25 batów i karę pieniężną po jednym czerwieńcu od każdej sztuki,
–Nadzorcę uczynić pisarzem, a jego pomocnika pozbawić niedzielnej porcji wódki na okres jednego roku.
– Nowemu właścicielowi Fabryki Broni, Demidowowi Nakazuję urządzać nadzorcom i ich pomocnikom
pomieszczenia nie gorsze niż jemu samemu. Jeżeli będą gorsze, niech się Demidownie uraża, każę obciąć mu głowę
Podpisano
Pan na Piotrogrodzie
Piotr I Wielki
Car Wszechrusi
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
2
Zamiast wprowadzenia:
Jakość? Co to jest?
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
3
Plan wykładu
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
4
Plan wykładu
• Pojęcie jakości i zarządzania jakością
• Jakość oprogramowania:
– Właściwości opisujące jakość: ISO 9126/250xx
• Zarządzanie jakością oprogramowania:
– Jakość procesów wg. ISO i CMM
• Błędy:
– Zapobieganie, wykrywanie, lokalizacja
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
5
JAKOŚĆ -PODSTAWOWE POJĘCIA
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
6
Garść definicji…
• zdolność do zaspokajania potrzeb danego
użytkownika
• zgodność z wzorcem, normami lub modelem
• dający się wyodrębnić zespół cech istotny dla
danego produktu lub usługi [Juran]
• zgodność z wymaganiami [Crosby]
• stopień jednorodności i niezawodności produktu
przy możliwie niskich kosztach i maksymalnym
dopasowaniu do wymagań rynku [Deming]
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
7
Garść definicji…
• ogół cech i właściwości produktu lub usługi,
które decydują o zdolności produktu lub usługi
do zaspokajania potrzeb [ISO 8402]
• zdolność produktu, systemu lub procesu – o
określonym zestawie właściwości, do spełniania
wymagań klienta i wymagań stron
zainteresowanych [ISO 9000:2000]
• Jakość jest to relacja między potrzebami i
oczekiwaniami, a własnościami produktu
[Mazur]
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
8
Elementy definicji
Relacja pomiędzy właściwościami, a
oczekiwaniami, potrzebami i wymaganiami:
-Podejście deskrypcyjne: zdolność do zaspokojenia
-Podejście wartościujące: stopień zaspokojenia
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
9
Rodzaje Jakości:
• Jakość techniczna
– Jakość typu
• Właściwości prototypu, „koncepcji produktu”
– Jakość wykonania
• Przy produkcji seryjnej
• Jakość marketingowa
– profil sensoryczny
• sposób w jaki produkt czy usługa jest postrzegany przez
konsumenta
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
10
Zarządzanie jakością
• Proces zarządzania jakością jest sekwencją
celowych i świadomych działań podejmowanych
w celu utrzymania lub wzmocnienia pozycji
rynkowej poprzez uzyskanie i utrzymanie wysokiej
jakości produktu.
• Fazy zarządzania jakością:
–
–
–
–
planowanie /określenie celów i sposobów działania/
organizowanie /ramy działania/
realizacji /uruchomienie/
kontrola i ocena /sterowanie/
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
11
Systemy zarządzania jakości
• kontrola techniczna
– bierna kontrola restrykcyjna (produktu)
• kontrola jakości
– czynna kontrola odbiorczo-profilaktyczna
(produktu)
• sterowanie jakością
– kontrola procesu
• kompleksowe zarządzanie jakością (TQM)
– zarządzanie przez jakość
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
12
Oprogramowanie jako produkt
JAKOŚĆ OPROGRAMOWANIA
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
13
Specyfika oprogramowania jako
produktu
• niematerialny:
– program komputerowy jako taki nie jest
produktem materialnym
• unikalny:
– każdy program komputerowy jest produktem
jednostkowym, poszczególne egzemplarze to
wierne (identyczne) kopie
• abstrakcyjny:
– jest zapisem pewnego modelu rzeczywistości
• złożony
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
14
Abstrakcyjny charakter
oprogramowania
Rzeczywistość
obserwacja
Zasady i
schematy
Schemat procesu
pozyskiwania
wiedzy
uogólnienie
eksperyment
Weryfikacja
modelu
Model
sytuacji
Modelowanie
Rzeczywistość
Schemat procesu
tworzenia
oprogramowania
Model
Eksploatacja
Implementacja
Oprogramowanie
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
15
Odwzorowanie rzeczywistości
Specjaliści z danej
dziedziny
Model
Definiowany i rozumiany
przez
Kod Źródłowy +
Struktury Danych
Kod Wykonywalny
+ Dane
Projektanci,
programiści,...
Rozumiany i wykonywany
przez
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
KOMPUTER
Jakość oprogramowania
16
Model Dromey’a
• Zasady dekompozycji:
– każdy program jest zbudowany z jednostek
– jednostki mogą być proste i złożone
– każda jednostka złożona jest zbudowana z jednostek
prostych
– jednostki proste są definiowane na bazie podstawowych
konstrukcji języków programowania
– podział na jednostki jest podziałem hierarchicznym i
wielopoziomowym
– różnego rodzaju dane zarówno proste jak i złożone, które
są przekazywane pomiędzy jednostkami programu oraz
które są dostarczane do programu lub przez niego
generowane są traktowane jako osobne jednostki proste
lub złożone
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
17
Model Dromey’a
• Jednostki proste są bezkontekstowe
• Jednostki złożone mogą zależeć od dziedziny
wykorzystania
• Jednostki, ich struktura oraz wzajemne
współdziałanie określają właściwości
oprogramowania czyli sposób zachowania się
oprogramowania
• Właściwości oprogramowania:
– właściwości rzeczywiste (mierzalne)
– właściwości abstrakcyjne
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
18
Struktura oprogramowania
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
19
Podział funkcjonalny jednostek
złożonych
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
20
Właściwości oprogramowania
• właściwości niskiego poziomu – właściwości
pierwotne
– mają charakter techniczny
– opisują zarówno jednostki proste jak i złożone
– można na nie wpływać bezpośrednio
• właściwości wysokiego poziomu – właściwości
określające jakość
– opisują tylko jednostki złożone
– są odzwierciedleniem punktu widzenia
użytkownika
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
21
Właściwości oprogramowania
Relacja między elementami modelu
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
22
Właściwości pierwotne
• Mają charakter techniczny, dzielą się na:
– właściwości ogólne
• opisują jednostki proste i złożone
– właściwości specyficzne
• opisują tylko jednostki proste
• Można na nie wpływać bezpośrednio
• Widoczne na poziomie „kodu”
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
23
Właściwości pierwotne
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
24
Właściwości pierwotne – przykład
jednostka prosta
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
25
Właściwości pierwotne – przykład
jednostka złożona
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
26
Właściwości wysokiego poziomu
• Podział funkcjonalny
– właściwości użytkowe
• Funkcja-Wykonywana-Przez-Program(DANE) →WYNIK
– właściwości techniczne
• Funkcja-Wykonywana-Przez-Użytkownika(PROGRAM)
→WYNIK
• Inne podziały:
– specyficzne dla produktu
– specyficzne dla języka programowania
– specyficzne dla obszaru zastosowania
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
27
Właściwości wysokiego poziomu
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
28
Właściwości wysokiego poziomu –
przykład jednostka prosta
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
29
Właściwości wysokiego poziomu –
przykład jednostka prosta
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
30
Główne problemy
• Identyfikacja jednostek strukturalnych
– Wiele języków oprogramowania, różna struktura
• Identyfikacja właściwości
– Co determinuje jakość? Na co zwracać uwagę?
• Identyfikacja i kwantyfikacja relacji między
właściwościami pierwotnymi i właściwościami
wysokiego poziomu
– Brak modelu formalnego zawęża zakres metod
• Mierzenie właściwości
– Czy da się określić zależności na poziomie ilościowym?
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
31
Mierzenie jakości
ISO 9126 / ISO 25010
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
32
Od ISO 9126 do ISO 250nn
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
33
ISO 9126 - Model jakości
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
34
ISO 9126 - Model jakości
• Właściwości techniczne (wewnętrzne i zewnętrzne):
– 6 kategorii (podzielonych na 27 podkategorii)
• Właściwości użytkowe:
– 4 kategorie (podzielne na 15 podkategii)
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
35
ISO 9126 - Właściwości techniczne
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
36
ISO 9126 - Właściwości użytkowe
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
37
ISO 9126 - Typy miar (metryk)
• Metryki typu A/B
– np. Dokładność obliczeniowa (Computational accuracy) X=A/B, gdzie A- liczba funkcji, które są
zaimplementowane zgodnie z wymaganiami dokładności, B - liczba wszystkich funkcji, co do
których zostały określone wymagania dokładności
• Metryki typu 1-A/B
– np. Adekwatność funkcjonalna (Functional adequacy) Porównać liczbę funkcji odpowiednich
do wykonania określonych zadań względem liczby funkcji ocenianych, X=1-A/B gdzie A- liczba
funkcji, w których wykryto problemy przy ocenie, B- liczba ocenianych funkcji
• Metryki typu T
– np. Łatwość uczenia się (Learnability) X=T, gdzie T- średni czas, jaki zajmuje użytkownikowi
nauczenie się korzystania z programu
• Metryki typu A/T
– np. Dokładność (Accuracy) Przeprowadzić serię testów typu blackbox i policzyć przypadki, w
których wyniki różniły się od rozsądnie oczekiwanych w stopniu nieakceptowalnym, X=A/T
gdzie, A- liczba przypadków, w których wyniki różniły się od oczekiwanych w stopniu
nieakceptowalnym, T - czas badania
• Inne metryki
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
38
ISO 14598 – proces oceny jakości
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
39
ISO 9126 i ISO 14598
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
40
ISO 9126 i ISO 14598 - problemy
• Dwie odrębne serie częściowo się dublujące
• Brak całościowego postrzegania jakości (np.
nie obejmuje wymagań funkcjonalnych)
• Niezbędne zewnętrzne przewodniki do
skutecznego wykorzystania
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
41
Struktura ISO 250XX
• Software product Quality Requirements and Evaluation (SQuaRE)
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
42
Modele jakości ISO 25010
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
43
Mapowanie do ISO 250XX
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
44
Właściwości techniczne (ISO 250XX)
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
45
Właściwości użytkowe (ISO 250XX)
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
46
A co z wymaganiami?
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
47
Struktura wymagań jakościowych
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
48
Od produktu do procesu…
ZARZĄDZANIE JAKOŚCIĄ PROCESU
WYTWÓRCZEGO
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
49
Zarządzanie jakością procesu
wytwórczego
• Planowanie
– określenie celów i sposobów działania
• Organizowanie
– ramy działania
• Realizacja
– uruchomienie
• Kontrola i ocena
– sterowanie
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
50
Aby się nie wydawało że to łatwe…
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
51
CMM – Capability Maturity Model
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
52
CMM – Struktura modelu
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
53
Hierarchia elementów
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
54
Podnoszenie poziomu dojrzałości
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
55
Poziomy dojrzałości
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
56
Poziomy dojrzałości – wizja działania
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
57
Poziomy dojrzałości – wizja działania
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
58
Do czego zmierzamy…
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
59
ACQ / DEV / SVC CMM
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
60
ISO 15504 - Software Process Improvement
and Capability Determination (SPICE)
• 1993 - Software Process Improvement and Capability
Evaluation – początek prac
• 1994 - Software Process Improvement and Capability
Determination – zmiana nazwy
• 2000 – pierwsza publikowana wersja (DTR)
• 2004 – publikacja pierwszych części normy
• Prace nad kolejnymi częściami normy ciągle trwają
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
61
ISO 15504 – Information technology –
Proces assessment
•
•
•
•
•
•
•
•
•
•
ISO/IEC 15504-1:2004 — Part 1: Concepts and vocabulary
ISO/IEC 15504-2:2003/cor 1: 2004 — Part 2: Performing an assessment
ISO/IEC 15504-3:2004 — Part 3: Guidance on performing an assessment
ISO/IEC 15504-4:2004 — Part 4: Guidance on use for process
improvement and process capability determination
ISO/IEC 15504-5:2012 — Part 5: An exemplar Process Assessment Model
ISO/IEC TR 15504-6:2013 — Part 6: An exemplar system life cycle process
assessment model ( oparty na ISO/IEC 12207:2008 - Systems and software
engineering - Software life cycle processes)
ISO/IEC TR 15504-7:2008 — Part 7: Assessment of organizational maturity
(oparty na ISO/IEC 15288:2008 - Systems and software engineering System life cycle processes)
ISO/IEC PDTR 15504-8:2012 — Part 8: An exemplar process assessment
model for IT service management
ISO/IEC TS 15504-9:2011 — Part 9: Target process profiles
ISO/IEC TS 15504-10:2011 — Part 10: Safety extension
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
62
ISO 15504 - struktura
• Dwa podstawowe wymiary:
– Wymiar procesu (process dimention) podzielony na 5 kategorii
•
•
•
•
•
customer/supplier
engineering
supporting
management
organization
– Wymiar kompetencji (capability dimention) podzielony na 6
poziomów kompetencji (im wyższy tym lepiej)
•
•
•
•
•
•
5
4
3
2
1
0
Optimizing process
Predictable process
Established process
Managed process
Performed process
Incomplete process
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
63
ISO 15504 - struktura
• Kompetencje procesu (process capability) są mierzone w oparciu o 9
atrybutów procesu (process atributes)
–
–
–
–
–
–
–
–
–
1.1 Process Performance
2.1 Performance Management
2.2 Work Product Management
3.1 Process Definition
3.2 Process Deployment
4.1 Process Measurement
4.2 Process Control
5.1 Process Innovation
5.2 Process Optimization
• Każdy atrybut procesu jest oceniany w 4 stopniowej skali:
–
–
–
–
N - Not achieved (0 - 15%)
P - Partially achieved (>15% - 50%)
L - Largely achieved (>50%- 85%)
F - Fully achieved (>85% - 100%)
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
64
Atrybuty procesu
i poziomy kompetencji
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
65
Proces oceny
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
66
ISO 15504 – kategorie procesów
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
67
Poziomy kompetencji
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
68
Wybrane normy ISO mające zastosowanie
w Inżynierii Oprogramowania
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
69
Wykorzystanie w praktyce – co, gdzie i jak?
• Stosowanie standardów należy zacząć od ich zrozumienia –
wdrażanie tylko dla wdrożenia (certyfikatu) nie da
pożądanych rezultatów
• Najczęściej popełniane błędy:
– Brak całościowego spojrzenia i próby punktowego wdrażania (na
poziomie pojedynczych jednostek organizacyjnych lub
projektów, bez wsparcia i zaangażowanie reszty organizacji)
– Wybieranie pojedynczych elementów ze standardów i pomijanie
części działań (wybiórcze stosowanie)
– Próby wdrażania standardów „dosłownie” bez ich dostosowanie
do organizacji i jej specyfiki – każda norma zawiera zasady jej
dostosowania do specyfiki organizacji z zachowaniem zgodności
z normą (nie jest to tożsame z wybiórczym stosowaniem)
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
70
BŁĘDY – JAK ICH UNIKNĄĆ
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
71
Co to jest błąd?
•
•
•
•
•
„Błąd oprogramowania to usterka programu komputerowego powodująca jego
nieprawidłowe działanie, wynikająca z błędu człowieka na jednym z etapów tworzenia
oprogramowania, zwykle podczas tworzenia kodu źródłowego, lecz niekiedy także na
etapie projektowania” (wikipedia - pl)
„A software bug is an error, flaw, failure, or fault in a computer program or system that
causes it to produce an incorrect or unexpected result, or to behave in unintended ways.
Most bugs arise from mistakes and errors made by people in either a program's source
code or its design, or in frameworks and operating systems used by such programs, and a
few are caused by compilers producing incorrect code” (wikipedia – ang)
„A software bug is a problem causing a program to crash or produce invalid output. The
problem is caused by insufficient or erroneous logic. A bug can be an error, mistake,
defect or fault, which may cause failure or deviation from expected results. Most bugs are
due to human errors in source code or its design” (techopedia – ang)
Potocznie „niezgodność ze specyfikacją”, „niezgodność z wymaganiami, oczekiwaniami,
potrzebami klienta”, … Błąd jest postrzegany jako przeciwieństwo jakości (co pozwala
wykorzystać definicję jakości oprogramowania do zdefiniowanie błędu”)
Niezależnie od formalnej definicji błędu, nikt ich nie chce (!)
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
72
Błędy: źródła i rodzaje
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
73
Błędy – trochę statystyki
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
74
Błędy: co możemy zrobić?
• Zapobieganie:
– Najtańsze i najbardziej efektywne, ale najtrudniejsze do
realizacji
– Środowisko pracy
– Metody pracy (np. Cleanroom)
– Wykorzystanie gotowego kodu (ang. reuse)
• Wykrywanie błędów
– Metody statyczne, dynamiczne, formalne i nieformalne
• Lokalizacja błędów
– Krokowe wykonanie programu (debuging)
– Śledzenie symboliczne
• Poprawianie błędów
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
75
Wykrywanie błędów: metody nieformalne
• Charakterystyka:
– nazwa pochodzi od tego, że nie wykorzystują
formalizmów matematycznych
– opierają się na subiektywnej ocenie i rozumieniu osób
uczestniczących w działaniach
– można z nich korzystać praktycznie we wszystkich
fazach projektu (wyjątkiem jest test Turinga)
• Przykłady:
– Audyt wewnętrzny i zewnętrzny
– Inspekcje i Przeglądy
– Test Turinga
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
76
Audyt wewnętrzny i zewnętrzny
• Celem jest ocena stanu, głównie w zakresie formalnej
zgodności z założonymi normami i celami.
• Przeważnie prowadzony jest po zakończeniu prac lub we
wcześniej zaplanowanych Punktach Kontrolnych.
• Obejmuje całość procesów i produktów w projekcie
• Przykładowy zakres audytu:
– Ustawa o Rachunkowości
– Ustawa o Ochronie Danych Osobowych
– Rekomendacja D GINB: Zasady Zarządzania Ryzykiem w
Bankowości Elektronicznej (opracowane przez Komitet
Bazylejski)
– norma BS 7799 (ISO 17799)
– metodologia COBIT
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
77
Inspekcje i Przeglądy
• Opierają się na zasadzie zorganizowanych
spotkań z precyzyjnie zaplanowanym
przebiegiem i rolą wszystkich uczestników.
– Inspekcje:
• dotyczą konkretnych zagadnień
• uczestniczą w nich tylko osoby bezpośrednio związane z
wytworzeniem produktu oraz zapewnieniem jakości
– Przeglądy (walkthrough,review):
• mają szerszy zakres
• uczestniczą również osoby z kierownictwa projektu oraz
spoza projektu np. przedstawiciele klienta
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
78
Inspekcja Fagana
• Założenia ogólne:
– ma na celu znalezienie błędów w dowolnym rezultacie /produkcie/
prac projektowym (cel)
– kontroli podlega każdy produkt każdej pojedynczej operacji procesu
tworzenia, dla której zdefiniowane są kryteria zakończenia (zasady
uruchamiania inspekcji)
– zakres kontroli zależy od rodzaju produktu i wewnętrznych standardów
w zakresie tworzenia oprogramowania (uwarunkowania organizacyjne
–dostosowanie)
– cały proces podlega stałej kontroli i ocenie niezależnego zespołu ZJ
(SQA) celem uniknięcia niepożądanych zjawisk takich jak rutyna
• Rodzaje inspekcji wg. produktów podlegających procesowi:
– wymagania systemowe, wymagania funkcjonalne, projekt architektury,
projekt szczegółowy, kod źródłowy, plan testów, realizacja testów
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
79
Elementy (etapy) inspekcji Fagana (wg. NASA)
• Kryteria wejściowe
• Stany realizacji:
– planowanie: weryfikacja kryteriów wejściowych, skład produktu,
skład zespołu, harmonogram i zasady dystrybucji wyników
– wykonanie: przygotowanie, spotkanie, dodatkowe spotkanie,
klasyfikacja błędów
– trzecia godzina: z założenia inspekcja trwa do 2 godzin –trzecia
godzina jest wyjątkiem i stanowi odrębny stan
– poprawki: kontrola realizacji wyników i ewentualna ponowna
inspekcja
– zakończenie: warunki zamknięcia inspekcji
• Dostosowanie (ang. customization)
• Wymagania szkoleniowe
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
80
Inspekcja Fagana: skład zespołu
• autorzy produktu
• moderatorzy (kierują inspekcją)
• prezenter (przedstawia produkt i dostarcza danych
dodatkowych)
• rejestrator (dokumentuje proces)
• eksperci (osoby zajmujące się tym samym co autorzy, ale
spoza projektu)
• przedstawiciele zespołów z poprzedniego i następnego
etapu prac
• przedstawiciele zespołu integracyjnego
• przedstawiciele zespołów pracujący nad produktami
powiązanymi („styki”)
• przedstawiciele użytkowników
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
81
Inspekcja Fagana - rezultaty
• NASA
– spadek liczby błędów wykrywanych w fazie integracji
o 30-90%, przy wskaźnikuROI na poziomie 7:1
• IBM
– dwukrotne zwiększenie wydajności /liczonej w KLOC/
– spadek gęstości błędów o 2/3
– koszt inspekcji to 15% kosztów projektu, przy
jednoczesnym zmniejszeniu kosztów projektu o 25%
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
82
Test Turinga
• Stosowny głównie w zagadnieniach związanych z
symulacją komputerową
• Zasady wykonania:
– Grupa ekspertów otrzymuje dwa zestawy danych:
rzeczywiste i będące wynikiem symulacji
– ich zadanie polega na rozpoznaniu źródła danych,
znalezieniu ewentualnych różnic i wskazaniu przyczyny
ich powstania
– niemożność poprawnego rozpoznania źródła danych,
oznacza pozytywne zakończenie testu
• Sprawdza głównie model symulacyjny, a nie samo
oprogramowanie
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
83
Wykrywanie błędów – metody formalne
• Charakterystyka:
– oparte na formalnych modelach matematycznych (stąd
nazwa)
– najrzadziej stosowane, choć uważane za najskuteczniejsze,
ze względu na bardzo wysokie koszty ich użycia
– wykorzystywane przeważnie w tzw. zastosowaniach
krytycznych
• Przykłady:
–
–
–
–
–
indukcja matematyczna
dedukcja logiczna
rachunek Lambda
rachunek predykatów
dowód poprawności
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
84
Wykrywanie błędów – metody statyczne
• Charakterystyka
– są ukierunkowane na badanie modeli statycznych i kodu
źródłowego
– nie wymagają uruchamiania programu, choć dopuszczają
wyobrażenie sobie jego pracy
– powszechnie stosowane
• Przykłady:
–
–
–
–
–
–
–
analiza syntaktyczna (np. kompilator)
analiza semantyczna
analiza sterowania
analiza danych
analiza strukturalna
rachunek symboliczny
brazowanie przyczynowo-skutkowe
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
85
Wybrane metody statyczne
• Analiza syntaktyczna:
– składnia języka,
– zgodność ze standardami kodowania
• Analiza sterowania:
–
–
–
–
analiza wywołań
analiza procesów równoległych
analiza przepływu sterowania
analiza stanów
• Analiza danych:
– analiza przepływu danych
– analiza zależności między danymi
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
86
Wykrywanie błędów – metody dynamiczne
• Charakterystyka
– podstawą metod dynamicznych jest uruchomienie
oprogramowania oraz analiza sposobu i skutków
jego działania
– mogą wymagać ingerencji w kod źródłowy lub/i
wykonywania programu w specjalnym środowisku
– są powszechnie stosowane, choć często w sposób
nieformalny
– wykrywają błędy w gotowym produkcie
– potocznie utożsamiane z testowaniem
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
87
Rodzaje testów
• testy strukturalne (white, glass-box)
– dane testowe muszą być tak dobrane aby sprawdzona była
każda możliwa ścieżka wykonania programu (w tym
procedury obsługi błędów)
• testy wartości specjalnych
– dane testowe muszą obejmować wszystkie graniczne
wartości danych wejściowych, w tym wartości błędne
• testy funkcjonalne (black-box)
– sprawdzają zgodność pomiędzy danymi wejściowymi,
danymi wyjściowymi a wartościami oczekiwanymi –
kluczowym problemem jest konstrukcja zbioru danych
testowych, o jakości testów decyduje nie liczba danych ale
ich jakość, w tym ich rozkład, wartości graniczne /analiza
czułości/
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
88
Rodzaje testów
• testy alfa
– testy prowadzone przez zespół projektowy mające symulować
normalną eksploatację oprogramowania
• testy beta
– testy prowadzone przez osoby z poza zespołu projektowego mające
symulować normalną eksploatację oprogramowania
• testy akceptacyjne
– test mający na celu odpowiedzieć na pytanie czy oprogramowania
spełnia założenia specyfikacji wymagań i użytkowników –stanowi
postawę akceptacji oprogramowania przez użytkownika: sposób
przeprowadzenia testów akceptacyjnych powinien być zawarty w
umowie
• testy zgodności
– test zgodności z zewnętrznymi normami, np. certyfikacja producenta
S.O. czy mechanizmów bezpieczeństwa
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
89
Rodzaje testów
• testy eksploatacyjne
– uruchomienie oprogramowania w docelowym środowisku
eksploatacyjnym (symulacja działania), przy jednoczesnym zachowaniu
dotychczasowych sposobów działania
• testy modułowe i integracyjne
– testy pojedynczych (lub grupy) modułów oprogramowania
• testy częściowe
– testy wybranych elementów funkcjonalnych oprogramowania
• testy wydajnościowe
– monitorowanie pracy programu, wykorzystania środowiska, czasów
przetwarzania, komunikacji z otoczeniem
• krokowe wykonanie kodu
• śledzenie symboliczne
– monitorowanie wartości zmiennych, wyrażeń (z lub bez modyfikacji
kodu)
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
90
Rodzaje testów
• testy wstępujące
– realizowane wg. zasady od szczegółu do ogółu,
wykorzystywane głównie w trakcie tworzenia
oprogramowania
• testy zstępujące
– realizowane wg. zasady od ogółu do szczegółu,
wykorzystywane głównie do lokalizacji błędów
• testy porównawcze
– polegają na porównaniu wyników pracy dwóch lub
większej liczby programów o identycznej lub zbliżonej
funkcjonalności , metoda wykorzystywana również w
trakcie eksploatacji jako tzw. metoda plebiscytu
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
91
Wykorzystanie metod dynamicznych
• Metody dynamiczne działają na różnych
poziomach: od pojedynczych fragmentów
kodu źródłowego do całego systemu
• Żadna pojedyncza metoda nie pozwala na
realizację postawionych celów – konieczne jest
planowane wykorzystywanie co najmniej kilku
z nich
• Systematyczne (sformalizowane) podejście do
wykorzystywanie tych metod pozwala uniknąć
wielu błędów i zapewnia ich efektywność
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
92
Zasady testowania
• Proces testowania powinien obejmować następujące
etapy:
– określenie rodzaju testu, warunków i sposobu jego
przeprowadzenia oraz zasad interpretacji wyników
– przygotowanie środowiska testowego
– przygotowanie danych testowych
• liczba danych testowych /dane wejściowe i wynikowe/
• warunki brzegowe
– przeprowadzenie testów
– analiza wyników
• Każdy etap powinien być formalnie zaplanowany, brak
któregoś z elementów może podważyć sensowność i
wyniki całego procesu
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
93
Zasady testowania
• Testów nie powinien przeprowadzać twórca
kodu – jego wiedza na temat produktu może
wpłynąć na ich efektywność
• Etap, w którym programista sprawdza
działanie swojego kodu, bezpośrednio po jego
napisaniu nie jest traktowane jako testowanie
– jest to uruchamianie kodu
• Aby uniknąć wpływu programisty na testy, w
niektórych metodach zakłada się, że nie ma on
prawa nawet kompilować własnego kodu
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
94
Testowanie - posumowanie
„Celem testowania nie jest wykazanie że
program nie ma błędów, lecz wręcz
przeciwnie, wykazanie że program zawiera
błędy.”
„Nieważne jakich metod używasz, ważne żeby
nie było błędów – tak, ale brak metody
kontroli już sam w sobie jest błędem”
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
95
Podsumowanie
Efektywne wykorzystanie metod unikania,
wykrywania i lokalizacji błędów możliwe jest
tylko wtedy, gdy wykorzystujemy właściwie
dobrany zestaw tych metod i metody te są
integralną częścią całego procesu tworzenia
oprogramowania, mającą silne oparcie w
strukturze organizacji.
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
96
DZIĘKUJE ZA UWAGĘ
Materiały zostały przygotowane w oparciu o wiele źródeł internetowych. Większość
schematów i rysunków w języku angielskim jest wzorowane lub oparte na materiałach
dostępnych w Internecie
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
97
Literatura
• G.J.Myers at all, „Sztuka testowania
oprogramowania”, HELION 2005
• R.Pawlak, „Testowanie oprogramowania”,
HELION 2014
• Normy ISO (250xx i 15504)
• Standard CMMI (www.cmu.sei.com)
(C) Uniwersytet Ekonomiczny w Krakowie (autor: Dariusz Dymek)
Jakość oprogramowania
98

Podobne dokumenty