Jakość oprogramowania
Co to jest oprogramowanie?
Specyfika produktu programowego
Modele jakości oprogramowania
Kryteria jakości oprogramowania
Metryki jakości
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.
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)
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
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:
Niezawodność oprogramowania
Czas
Intensywność uszkodzeń
produkty materialne
oprogramowanie
Dojrzewanie
Stabilizacja
Zużycie
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
Jakość oprogramowania
Jakość oprogramowania to:
jakość wymagań +
jakość projektu +
jakość wykonania +
jakość użytkowania +
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.
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.
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ść
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
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
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)
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)
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)
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)
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?
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
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?