Model jakościowy
W swojej książce „Zawód tester” Radosław Smilgin podaje trzy metody charakteryzowania oprogramowania; wg ISO/IEC 25010, The Test Eye oraz wg Jamesa Bacha. Oczywiście metod kategoryzowania i opisywania oprogramowania jest o wiele więcej, ale nie chodzi o to przecież, by wymieniać je wszystkie. W tym poście skupimy się na tej zaproponowanej przez ISO (International Organization for Standardization), jako na najlepiej wyczerpującej zagadnienie i najbardziej kompleksowej.
Pamiętajmy, że wersja charakterystyki wg ISO/IEC 25010 jest uaktualnioną wersją opisu ISO/IEC 9126-1. Nie zdziwcie się zatem, jeśli w jakimś artykule czy na portalu zetkniecie się z poprzednią wersją charakterystyki, ponieważ wciąż funkcjonuje i przez wielu traktowana jest jako wyznacznik.
Opis oprogramowania wg International Organization for Standardization opiera się na zagadnieniu jakości. Model jakościowy dostarcza listę cech, które bierze się pod uwagę przy ocenie i kategoryzacji atrybutów oprogramowania.
Jak powinniśmy rozumieć jakość?
Jakość systemu to nic innego, jak stopień, w jakim spełnia on określone wymagania zainteresowanych stron, a tym samym zapewnia wartość. Potrzeby tych stron (wymienić tu można chociażby funkcjonalność, bezpieczeństwo czy wydajność) są dokładnie tym, co jest reprezentowane w modelu jakościowym. Model określa jakość produktu, przypisując go do jednej z ośmiu charakterystyk i ich podtypów.
Przedstawiamy nasze tłumaczenie i analizę charakterystyki oprogramowania wg modelu jakościowego.
Charakterystyka jakości oprogramowania
Funkcjonalna przydatność (Functional Suitability)
Czy produkt ma wartościowe funkcje?
Reprezentuje stopień, w jakim produkt lub system realizuje funkcje, które odpowiadają zarówno na określone, jak i domyślne potrzeby oprogramowania, gdy jest używane w określonych warunkach.
Podtypy:
- Funkcjonalna kompletność (Functional completeness) – stopień, w którym zestaw funkcji pokrywa wszystkie określone zadania i cele użytkownika końcowego
- Funkcjonalna poprawność (Functional correctness) – zakres, w jakim oprogramowanie zapewnia poprawne wyniki w obrębie wymaganego stopnia dokładności
- Funkcjonalna stosowność (Functional appropriateness) – poziom, w jakim funkcje ułatwiają wykonanie sprecyzowanych zadań i celów
Wydajność (Performance efficiency)
Czy produkt jest wystarczająco skuteczny?
Określa efektywność oprogramowania w stosunku do ilości zasobów zużytych w określonych warunkach.
Podtypy:
- Zachowanie w czasie (Time behaviour) – stopień, w jakim spełnione są wymagania dotyczące czasu reakcji, czasu przetwarzania i przepustowości systemu podczas wykonywania funkcji
- Wykorzystanie zasobów (Resource utilization)- określenie, w jakiej mierze zasoby spełniają postawione przed nimi wymagania, podczas wykonywania funkcji
- Zdolność (Capacity) – zakres, w jakim maksymalne wartości graniczne parametrów oprogramowania spełniają wymagania
Zgodność (Compatibility)
Jak skutecznie produkt działa z innymi oprogramowaniami i środowiskami?
Wyraża, w jakim zakresie oprogramowanie lub jego komponent jest w stanie wymienić informacje z innymi oprogramowaniami, lub komponentami, lub wykonać określone funkcje, przy współużytkowaniu tego samego środowiska sprzętowego lub programowego.
Podtypy:
- Współistnienie (Co-existence) – poziom, w jakim produkt może skutecznie wykonywać określone funkcje, dzieląc wspólne środowisko i dostępne zasoby z innymi produktami, bez ujemnego wpływu na żaden z nich
- Interdyscyplinarność (Interoperability) – określenie, w jakiej mierze dwa albo więcej systemów lub komponentów może wymieniać informacje i korzystać z tych wymienionych
Użyteczność (Usability)
Czy produkt jest łatwy w użyciu?
Określa w jakim stopniu dane oprogramowanie może być wykorzystywane przez konkretnych użytkowników do wykonania określonych celów, zachowując poziom efektywności, wydajności i satysfakcji w uzgodnionym kontekście użytkownika.
Podtypy:
- Rozpoznawalność odpowiedniości (Appropriateness recognizability) – szacuje poziom, w jakim użytkownicy mogą rozpoznać, czy dany produkt lub system spełnia ich potrzeby
- Zdolność do nauki (Learnability) – formułuje stopień, w jakim dane oprogramowanie może być wykorzystywane przez sprecyzowanych użytkowników w celu osiągnięcia określonego stopnia wiedzy o korzystaniu z oprogramowania, zachowując poziom skuteczności, wydajności, wolności od ryzyka i satysfakcji
- Operatywność (Operability) – zakres, w jakim oprogramowanie dysponuje atrybutami ułatwiającymi obsługę i kontrolę
- Ochrona przed błędem użytkownika (User error protection) – określa, jak bardzo system chroni użytkowników przed popełnianiem błędów
- Estetyka interfejsu (User interface aesthetics) – poziom, w jakim interfejs użytkownika zapewnia przyjemną i satysfakcjonującą interakcję
- Dostępność (Accessibility) – miara, w jakiej oprogramowanie może być używane przez możliwie największą grupę użytkowników, jednocześnie pozostając zgodnym z obowiązującymi standardami dostępności
Niezawodność (Reliability)
W jakim stopniu można zaufać sprawności produktu?
Informuje o wymiarze, w jakim oprogramowanie wykonuje określone funkcje w danych warunkach i w konkretnym czasie.
Podtypy:
- Dojrzałość (Maturity) – określa stopień, w jakim oprogramowanie spełnia wymagania dotyczące niezawodności w ramach normalnej eksploatacji
- Dostępność (Availability) – zakres, w jakim oprogramowanie jest zdatne do użycia, gdy zajdzie taka potrzeba
- Odporność (Fault tolerance)- poziom, w jakim oprogramowanie jest zdolne do działania zgodnie z przeznaczeniem mimo obecności błędów sprzętowych lub w samym oprogramowaniu
- Umiejętność odzyskiwania (Recoverability) – zdolność do przywrócenia pożądanego stanu systemu po wystąpieniu przerwy lub awarii oprogramowania
Bezpieczeństwo (Security)
Czy produkt jest chroniony przed niechcianym użyciem?
Określa, w jakim stopniu oprogramowanie chroni informacje i dane, tak by osoby, inne produkty lub inne systemy posiadały taki stopień dostępu do nich, który jest odpowiedni do ich rodzajów i poziomów autoryzacji.
Podtypy:
- Poufność (Confidentiality) – informuje o poziomie zapewnienia o tym, że dane są dostępne tylko dla osób upoważnionych do dostępu
- Spójność (Integrity) – w jakim stopniu oprogramowanie uniemożliwia nieautoryzowany dostęp do danych lub ich modyfikację
- Niezaprzeczalność (Non-repudiation) – zakres, w jakim oprogramowanie udowadnia, że działania lub zdarzenia miały miejsce, by nie mogły zostać potem odrzucone
- Odpowiedzialność (Accountability) – jak bardzo działania jednostki mogą być unikatowo powiązane z jednostką
- Autentyczność (Authenticity) – stopień, w jakim można dowieść tożsamości podmiotu lub zasobu
Utrzymywalność (Maintainability)
Czy produkt jest podatny na zmiany i testowalny?
Ta charakterystyka określa stopień, w jakim możliwa jest skuteczna i wydajna modyfikacja systemu w celu poprawy lub dostosowania do zmian w środowisku oraz do wymagań.
Podtypy:
- Modułowość (Modularity) – szacuje, jak bardzo zmiana jednego komponentu oprogramowania ma wpływ na funkcjonowanie całości oraz na inne komponenty
- Możliwość ponownego użycia (Reusability) – wskazuje na możliwość wykorzystania jednego komponentu w więcej niż jednym systemie lub w tworzeniu innych komponentów
- Możliwość analizowania (Analysability) – określenie możliwości wykonania skutecznej i wydajnej pracy, która umożliwia ocenę wpływu na produkt lub system zamierzonej zmiany na jedną, lub więcej jego składowych albo w celu zdiagnozowania produktu pod kątem braków lub przyczyn awarii, albo w celu określenia fragmentu wymagającego modyfikacji
- Zdolność do zmian (Modifiability) – informuje, do jakiego stopnia można wprowadzać zmiany w oprogramowaniu w sposób skuteczny i efektywny, bez wywołania błędów lub pogorszenia jego jakości
- Testowalność (Testability) – właściwość oprogramowania informująca o możliwościach jego walidacji po wprowadzeniu zmian
Przenaszalność (Portability)
Czy produkt można skutecznie przenieść?
Ta analiza definiuje, w jakim mierze w sposób skuteczny i wydajny, oprogramowanie może zostać przeniesione z jednego środowiska do innego.
Podtypy:
- Przystosowalność (Adaptability) – poziom, w jakim dany produkt może być skutecznie dostosowany do innych albo zmiennych urządzeń, oprogramowań, lub innych środowisk operacyjnych, bądź użytkowych
- Instalowalność (Installability) – stopień, w jakim oprogramowanie może zostać pomyślnie zainstalowane lub odinstalowane w określonym kontekście
- Wymienność (Replaceability) – informuje, jak skutecznie jedno oprogramowanie może zostać zastąpione przez inne w danym kontekście, przy jednoczesnym zachowaniu wyznaczonych celów
Jak widzicie, charakterystyka oprogramowania bazująca na modelu jakościowym zaproponowana przez ISO/IEC jest obszerna i szczegółowa. Nowe opisy bezpieczeństwa i zgodności, których brakowało w wersji 9126-1, sprawiły, że charakterystyka jest łatwiejsza do zastosowania w życiu. Pamiętajcie, że nie chodzi o to, by to wszystko zapamiętać i wykuć na blachę – to nie klasówka 😉 Ważne, by mieć pojęcie o środowisku w którym się funkcjonuje i umieć się sprawnie po nim poruszać.