background image

Jakość oprogramowania

 Co to jest oprogramowanie?

 Specyfika produktu programowego

 Modele jakości oprogramowania

 Kryteria jakości oprogramowania

 Metryki jakości

background image

Co to jest oprogramowanie?

Oprogramowanie to efekt pracy ludzkiego umysłu, 
obejmuj
ący programy, procedury, zasady i wszelkie 
dokumenty zwi
ązane, dotyczące obsługiwania 
systemu przetwarzania danych

ISO 2382-1:1984

Wyrób programowy to kompletny zestaw 
programów komputerowych, procedur, danych i 
dokumentów związanych, dostarczany 
użytkownikowi.

Jednostka programowa to dowolna część wyrobu 
programowego identyfikowalna podczas 
konkretnego etapu opracowywania.

background image

Software vs. Hardware (1)

Oprogramowanie stanowi algorytmiczny zapis 
zło
żonych procesów ekonomicznych, społecznych, 
technologicznych, itp. (produkt niematerialny)

Zmiany w oprogramowaniu wydają się być łatwiejsze 
(zmiana kodu jest łatwiejsza ni
ż naprawa sprzętu)

Wiele problemów sprzętowych rozwiązuje się przez 
modyfikacje oprogramowania (np. poprzez 
aktualizacj
ę sterowników urządzenia)

background image

Software - Hardware (2)

Oprogramowanie jest często elementem 
integruj
ącym system lub wiele systemów, co 
zwi
ększa jego złożoność

Oprogramowanie odpowiada najczęściej za te 
elementy systemu, które kontaktuj
ą się 
bezpo
średnio z użytkownikiem i przez to jest 
nara
żone na zmiany wymagań i krytykę użytkownika

Wytwarzanie oprogramowania jest stosunkowo 
młod
ą dyscypliną – stąd niewielu menedżerów 
rozumie i docenia potrzeb
ę zapewnienia jakości 
tworzonego oprogramowania

background image

Software - Hardware (3)

Dyscypliny związane z oprogramowaniem nie są 
ugruntowane w naukach naturalnych - brak jest 
technik testowania i projektowania (nie ma do tego 
uniwersalnych instrukcji)

Oprogramowanie jest w całości wymyślane przez 
ludzi, st
ąd jego jakość zależy w dużej mierze od 
jako
ści „twórców”

Oprogramowanie nie ma postaci materialnej  
dlatego charakteryzuje si
ę inną krzywą 
niezawodno
ści:

background image

Niezawodność oprogramowania

Czas

Intensywność uszkodzeń

produkty materialne

oprogramowanie

Dojrzewanie

Stabilizacja

Zużycie

background image

Jakość oprogramowania

Jakość oprogramowania to ogół cech i właściwości 
programu decyduj
ących o jego zdolności do 
zaspokojenia stwierdzonych lub przewidywanych 
potrzeb u
żytkownika

ISO 9000-3

Jakość oprogramowania to stopień w jakim 
oprogramowanie posiada po
żądaną kombinację 
cech

IEEE 610.12

background image

Jakość oprogramowania

Jakość oprogramowania to:

jakość wymagań +

jakość projektu + 

jakość wykonania +

jakość użytkowania +

background image

Kryteria jakości oprogramowania

Jest wiele modeli jakości oprogramowania, np. 

Model McCall’a (1977)

Model Boehm’a (1978)

Model FURPS

Model Dromey’a

Inne

Opisują one kryteria jakości jako postulowane cechy, 
które powinno posiada
ć oprogramowanie wysokiej 
jako
ści. 

Modele te dotyczą głownie produktów końcowych - 
programów.

background image

Pionierskie modele jakości oprogramowania

Do pionierskich modeli jakości oprogramowania, na 
których bazuje wi
ększość późniejszych modeli, 
nale
żą modele McCall'a i Boehm'a.

Jako pierwsze nakierowały one uwagę na potrzebę 
współpracy między użytkownikiem a developerem, 
poprzez wskazanie konkretnych czynników jakości, 
odzwierciedlających wspólne priorytety użytkowników 
i developerów oprogramowania.

Model McCall'a wyróżnia 3 główne perspektywy 
definiujące jakość produktu: możliwość wprowadzania 
zmian, adaptacyjność w różnych środowiskach, 
możliwe do wykonania operacje. Perspektywy te stały 
się fundamentem dla wszystkich modeli jakości.

background image

Kryteria jakości oprogramowania

(charakterystyka jakości zewnętrznej i wewnętrznej)

Jakość oprogramowania można opisać od strony 
cech wpływaj
ących na jego jakość „techniczną” 
(jako konkretnego produktu) a zarazem po
średnio 
(„przy okazji”) wpływaj
ących na zadowolenie 
u
żytkownika.

Funkcjonalność

Niezawodność

Użyteczność 

Skuteczność

Pielęgnowalność (utrzymywalność) 

Przenośność 

background image

Funkcjonalność

Charakterystyki szczegółowe:

odpowiedniość

wpływa na odpowiedniość produktu dla danego zastosowania 
i obecność w produkcie określonego zbioru funkcji

dokładność

wpływa na poprawność i zgodność rezultatów ze specyfikacją

Integralność (współdziałanie)

wpływa na zdolność do współpracy z systemem i innymi 
programami

zgodność

wpływa na zgodność z przyjętymi normami, przepisami, itp.

bezpieczeństwo

wpływa na zdolność zabezpieczenia danych i programów 
przed niepowołanym dostępem

background image

Niezawodność

Charakterystyki szczegółowe:

dojrzałość

wpływa na ilość pojawiających się błędów i defektów w 
działaniu programu

odporność

wpływa na zdolność zachowania określonego poziomu 
działania w sytuacji awaryjnej

Odtwarzalność (odzyskiwalność)

wpływa na zdolność do odtworzenia określonego poziomu 
działania bezpośrednio po zajściu sytuacji awaryjnej

background image

Użyteczność

Charakterystyki szczegółowe:

zrozumiałość

wpływa na wysiłek niezbędny do poznania koncepcji i logiki 
użytkowania programu

(np. kwestia jasnego wyjaśnienia użytkownikowi do czego 
służą poszczególne elementy programu)

prostota

wpływa na wysiłek niezbędny do nauczenia się programu

(np. kwestia przejrzystego interfejsu)

operatywność

wpływa na wysiłek niezbędny do operowania i sterowania 
programem

(np. kwestia uporządkowanego interfejsu)

background image

Skuteczność

Charakterystyki szczegółowe:

Przepustowość (czas reakcji)

wpływa na czasy odpowiedzi i przetwarzania podczas 
wykonywania funkcji

(np. kwestia optymalności zastosowanych algorytmów)

zasobochłonność

wpływa na ilość i czas wykorzystania zasobów w trakcie 
wykonywania funkcji

(np. kwestia czyszczenia niepotrzebnych danych 
pomocniczych z pamięci)

background image

Pielęgnowalność

Charakterystyki szczegółowe:

analizowalność

wpływa na wysiłek potrzebny do dokonania analizy przyczyn błędów 
lub identyfikacji komponentów do wymiany

(np. kwestia dokładnej obsługi wyjątków)

modyfikowalność

wpływa na wysiłek potrzebny do dokonania modyfikacji

(np. kwestia modułowości programu)

Stabilność

wpływa na poziom ryzyka związanego z efektami ubocznymi 
modyfikacji

(np. czy naprawienie jednego błędu nie spowoduje innego)

testowalność

wpływa na wysiłek potrzebny do walidacji zmodyfikowanego 
oprogramowania (jak bardzo skomplikowane jest sprawdzenie 
poprawności działania całego programu)

background image

Przenośność

Charakterystyki szczegółowe:

adaptowalność

wpływa na zdolność adaptacji programu dla różnych środowisk bez 
stosowania dodatkowych działań poza niezbędnymi (np. czy działanie 
programu jest możliwe w różnych systemach operacyjnych)

instalowalność

wpływa na wysiłek potrzebny do zainstalowania oprogramowania w 
określonym środowisku (np. czy klient będzie musiał sam dochodzić jak 
zainstalować program)

koegzystencja

Wpływa na współistnienie jednego rodzaju oprogramowania z innym 
oprogramowaniem w tym samym środowisku (np. czy działanie jednego 
programu nie zaburzy działania innego)

zgodność

zgodność z przyjętymi standardami, normami, przepisami, itp. odnoszącymi 
się do przenośności

zastępowalność

wpływa na zdolność i wysiłek niezbędny do zastosowania programu zamiast 
określonego oprogramowania w danym środowisku (np. dany program może 
być tańszym substytutem innego programu)

background image

Przykładowe zagadnienia dla charakterystyk jakości 

zewnętrznej i wewnętrznej

Charakterystyka

Pytania

Funkcjonalność

1. Czy oprogramowanie realizuje zadania w odpowiedni sposób?
2. Czy uzyskane rezultaty są zgodne z oczekiwaniami?
3. Czy system współdziała z innymi systemami?
4. Czy oprogramowanie posiada skuteczne mechanizmy autoryzacji?

Niezawodność

1. Czy oprogramowanie potrafi odpowiednio zareagować na wystąpienie błędu?
2. Czy oprogramowanie kontynuuje pracę oraz daje możliwość odzyskania informacji po 

wystąpieniu błędu?

3. Czy większość błędów została wykryta i usunięta podczas rozwoju oprogramowania?

Użyteczność

1. Czy użytkownik uważa oprogramowanie za łatwe w obsłudze?
2. Czy użytkownik szybko uczy się obsługi oprogramowania?
3. Czy obsługa systemu wymaga dużego wysiłku użytkownika?
4. Czy interfejs jest przyjazny użytkownikowi?

Skuteczność

1. Jak szybko oprogramowanie reaguje na polecenia użytkownika?
2. W jaki sposób oprogramowanie wykorzystuje zasoby?

Utrzymywalność

1. Czy łatwo jest zdiagnozować błędy?
2. Czy zmodyfikowanie oprogramowania sprawia trudności?
3. Czy wprowadzenie zmian wpływa na dotychczasową funkcjonalność?
4. Czy łatwo jest przetestować oprogramowanie?

Przenaszalność

1. Czy oprogramowanie może zostać przeniesione do innego środowiska?
2. Czy oprogramowanie jest zgodne ze standardami dotyczącymi przenaszalności?
3. Czy dane oprogramowanie może zastąpić inne?
4. Czy instalacja oprogramowania sprawia trudności?

background image

Kryteria jakości oprogramowania

(charakterystyka jakości użytkowej)

Jakość oprogramowania można również opisać patrząc tylko 
oczami u
żytkownika, czyli od strony cech bezpośrednio 
wpływaj
ących przede wszystkim na stosunek użytkownika do 
programu.

Wydajność

Czy program umożliwia użytkownikowi realizację 
zaplanowanych celów

Produktywność

Jak bardzo program zwiększa produktywność użytkownika

Bezpieczeństwo

Czy użytkownik czuje się bezpiecznie i komfortowo

Satysfakcja

Czy użytkownik jest zadowolony z korzystania z programu

background image

Kryteria jakości oprogramowania

(charakterystyka jakości użytkowej)

Charakterystyka

Pytanie

Wydajność

1. Ile z założonych celów jest osiągane?
2. Jaka jest częstotliwość pojawienia się błędu?
3. Jaki procent z całkowitej ilości rozpoczętych działań zostaje doprowadzony do końca?

Produktywność

1. Ile czasu zajmuje wykonanie określonej czynności, przetworzenie informacji 
wejściowej przez oprogramowanie?
2. Jak produktywni są użytkownicy oprogramowania (liczba zadań ukończonych w danej 
jednostce czasu)?
3. Jakie koszty generują użytkownicy wykorzystujący oprogramowanie?
4. Jaka jest wydajność użytkownika w porównaniu z wydajnością eksperta?

Bezpieczeństwo

1. Czy wykorzystanie danego oprogramowania ma wpływ na zdrowie i komfort pracy 
użytkownika?
2. Jak często oprogramowanie powoduje straty finansowe?
3. Jaka jest częstotliwość awarii systemu?

Satysfakcja

1. W jakim stopniu użytkownik jest usatysfakcjonowany korzystaniem z 
oprogramowania?
2. W jakim stopniu możliwości oprogramowania satysfakcjonują jego użytkownika?
3. Jaka liczba potencjalnych użytkowników zdecyduje się wykorzystać dane 
oprogramowanie?