Charakterystyka oprogramowania

Tagi: 0

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

zgoda ręce stół

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
security kursor ekran łapka

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ć.

DYSKUSJA

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

wypróbuj

Zarejestruj się i zacznij działać!