Kryteria, które widzi użytkownik

W dniu, kiedy piszę te słowa, odbyła się światowa prapremiera nowej trylogii "Wojen gwiezdnych". Przypomniała mi ona scenę z bitwy o lodową planetę Hoth. Mój syn był wtedy młodym rycerzem Yedi, który bronił Dobrej Strony Mocy przed Lordem Vaderem reprezentowanym przez mojego chrześniaka. Właściwa bitwa, która rozegrała się na podwórku, nie dotyczyła jednak "słusznych wartości", ale koloru światła emitowanego przez używane w walce miecze laserowe.

W dniu, kiedy piszę te słowa, odbyła się światowa prapremiera nowej trylogii "Wojen gwiezdnych". Przypomniała mi ona scenę z bitwy o lodową planetę Hoth. Mój syn był wtedy młodym rycerzem Yedi, który bronił Dobrej Strony Mocy przed Lordem Vaderem reprezentowanym przez mojego chrześniaka. Właściwa bitwa, która rozegrała się na podwórku, nie dotyczyła jednak "słusznych wartości", ale koloru światła emitowanego przez używane w walce miecze laserowe.

L. Vader twierdził, że tylko kolor czerwony zapewnia właściwą skuteczność. Luke ripostował, że kolor zielony lepiej maskuje się w trawie. Ostatecznie stanęło na kolorze błękitnym, jako najbardziej odpowiednim dla krajobrazu gwiezdnych starć.

Młodzi mistrzowie Yedi nauczyli mnie jednego. Właściwy dobór kryteriów jakości jest rzeczą najwyższej wagi, gdy zależy od niego wojna lub pokój.

Kryteria jakości oprogramowania

Czy spotkali już Państwo na swojej drodze program wysokiej jakości? Windows? Word, WordPerfect, ChiWriter? A może wysłużony WordStar? Co sprawiło, że w naszej pamięci zachowały się wspomnienia o kilku "kultowych programach" z historii rozwoju systemów informatycznych, a o innych nie? Każdy z tych programów miał przecież nie tylko zalety, lecz także wady. Co więc decydowało o jego jakości? Prostota, niezawodność, zgodność tego, co na ekranie, z tym, co na wydruku, funkcjonalność, szybkość, cena, moda?

Wydawać by się mogło, że łatwo można sformułować jedno uniwersalne kryterium jakości produktu: produkt musi być zgodny ze specyfikacją i satysfakcjonować klienta. W praktyce takie stwierdzenie niewiele mówi, szczególnie gdy specyfikacja jest złożona, dotyczy zarówno aspektów użytkowych, jak i technicznych, struktury, zakresu, spójności, zwartości, a ponadto każdy klient jest inny. Rzeczywistość niezwykle trudno ująć w jednej uniwersalnej formule. Można natomiast opisywać ją za pomocą różnych "widoków" w różnych "perspektywach". Jedna rzecz może być np. użyteczna tylko z pewnego punktu widzenia, z innego - już nie. Oznacza to, że ocena zgodności produktu z wymaganiami, a więc ocena jego jakości, także musi odbywać się w wielu wymiarach. Wymiary, wg których oceniamy produkty, nazywamy kryteriami (cechami, atrybutami) jakości. Odnoszą się one do mierzalnych lub niemierzalnych cech (charakterystyk) produktu, które pozwalają na wartościowanie go jakościowo. Aby ocenić jakość oprogramowania, należy więc zdefiniować kryteria, względem których będziemy ją oceniać, oraz ustalić metodę pomiaru ich spełnienia. Nie trzeba dodawać, że każdy z nas zrobi to na własny sposób, a nawet jeśli pewne kryteria się powtórzą, to i tak dla każdego będą miały inne znaczenie i wagę.

Było wiele prób określenia reprezentatywnego zestawu kryteriów jakości opisujących oprogramowanie. Jedną z bardziej udanych jest model McCalla, który w najróżniejszych mutacjach jest szeroko cytowany w literaturze.

McCall dzieli kryteria jakości na trzy grupy:

- związane z działaniem programu, czyli jego zachowaniem wobec otoczenia

- związane z modyfikowalnością programu, czyli jego przystosowaniem do zmian zachowania

- związane z przenośnością programu, czyli zdolnością do adaptacji w zmiennym otoczeniu.

Model McCalla posłużył także do opracowania międzynarodowej normy ISO 9126. Jest ona mało znana w środowisku informatyków, a szkoda, gdyż niezwykle precyzyjnie i konkretnie definiuje 6 podstawowych kryteriów jakości oprogramowania: funkcjonalność, niezawodność, użyteczność, wydajność, pielęgnowalność, przenośność. Opisują one jakość oprogramowania od strony cech, które chce w nim widzieć użytkownik. Powinny więc stanowić główne wytyczne dla procesu projektowania przyszłego systemu (tabela 2).

Zapewnienie jakości

Zarządzanie jakością w aspekcie praktycznym i operacyjnym ma na celu zapewnienie zgodności produktu z wymaganiami. Stopień ich spełnienia jest określany na podstawie przyjętych kryteriów jakości. Jednym z podstawowych zadań przy projektowaniu produktu jest więc ustalenie konkretnego zestawu kryteriów, służących ocenie (mierzeniu) i analizowaniu w trakcie realizacji produktu, które na koniec staną się podstawą do odbioru produktu i jego akceptacji przez użytkownika. Stwierdzenie, że chcemy mieć produkt wysokiej jakości, jeszcze nic nikomu nie mówi, a właściwie, żeby być w zgodzie z prawdą, każdemu mówi co innego. O zapewnieniu jakości możemy mówić dopiero wtedy, gdy wiemy, co zapewnić, a to "co" daje się opisać mierzalną metryką.

Według definicji ISO 9000: "Zapewnienie jakości są to wszystkie zaplanowane i systematyczne działania, niezbędne do uzyskania i utrzymania odpowiedniego stopnia wiarygodności, że wyrób lub usługa spełnią ustalone wymagania jakościowe". Zapewnienie jakości leży więc w obszarze między wymaganiami użytkownika a tym, co w rzeczywistości powstaje. Wymaga z jednej strony określania celu, jaki stoi przed nami, z drugiej - dołożenia wszelkich starań, aby krzywe oczekiwań i rzeczywistości kiedyś (najlepiej przed dotarciem produktu na rynek) się przecięły.

Planowanie jakości

Wszelkie działania projakościowe powinny być zaplanowane. W przypadku zapewnienia jakości oprogramowania jest to szczególnie istotne, gdyż powszechną praktyką w firmach informatycznych jest zarzucanie tych działań w sytuacji zagrożenia przekroczeniem terminów. Plan jakości jest narzędziem, które ma zabezpieczyć nas przed podobnymi sytuacjami. W odróżnieniu od polityki jakości jest szczegółowym zapisem działań, mających na celu wdrożenie ogólnych postanowień sformułowanych jako polityka firmy w kontekście konkretnego produktu/projektu. Chodzi o stworzenie dokumentacji wyszczególniającej specyficzne sposoby, środki i kolejność postępowania związane z jakością wyrobu, usługi, umowy lub przedsięwzięcia.

Plan jakości powinien zawierać m.in.

- opis sposobu realizacji polityki jakości firmy

- opis systemu zapewnienia jakości, czyli jego struktury, podziału odpowiedzialności, procedur i potrzebnych zasobów

- zestaw przyjętych kryteriów jakości i metryk służących do ich monitorowania i oceny

- przyjęte standardy, normy, wytyczne itp.

- plan działań weryfikacyjnych i walidacyjnych w trakcie projektu

- plan przeglądów projektu (audytów)

- ustalenie kryteriów jakościowych dla wszystkich produktów projektu, tzw. quality gates

- plan i procedurę obsługi sytuacji wyjątkowych, szczególnych i losowych

- opis warunków współpracy z klientem i kooperantami gwarantujących wysoką jakość.

Za realizację planu jakości są odpowiedzialni wszyscy pracownicy "stykający" się z produktem.

Nadzorowanie jakości

Realizacja produktu przynosi wiele danych, które trzeba gromadzić, przechowywać i analizować w celu sprawdzenia, czy zakładany plan jakości jest realizowany. Pozytywne czy negatywne wyniki kontroli jakości są po analizie źródłem decyzji, które zmierzają do:

- dokumentowania działań

- podjęcia działań korekcyjnych

- śledzenia ich realizacji

- weryfikacji ich skuteczności.

Powyższe działania powinny być skutecznie wspierane przez przemyślany system jakości, a ponieważ nie da się stworzyć idealnego projektu za pierwszym razem, doskonalenie jakości produktu i systemu wytwórczego staje się jednym z ważniejszych zadań każdego pracownika.

Jak zapewniać jakość?

Do podstawowego zestawu metod wspierających zapewnienie jakości należą:

- inżynieria wymagań

- metodyka projektowania

- weryfikacja i walidacja

- inne narzędzia.

Inżynieria wymagań

Ze względu na to, że współczesne definicje jakości zawsze są ukierunkowane na klienta, nie da się wytworzyć produktu wysokiej jakości bez właściwego rozpoznania wymagań. W jednym z następnych odcinków cyklu zaprezentujemy skuteczną metodę związania wymagań z kryteriami jakości.

Metodyka projektowania

Metodyka projektowania jest zapisem poszczególnych kroków, metod, technik i niezbędnych narzędzi, aby ze specyfikacji wymagań powstał działający system. Innymi słowy opisuje proces transformacji wymagań na inną (wykonywalną) postać. Stałą troską służb zapewnienia jakości powinno być to, aby w trakcie działań wynikających z procesu nie stracić nic z zakładanych cech jakościowych produktu. Metodyczność realizacji projektu, oparta na doświadczeniu twórców metodyki, ma to gwarantować.

Bez względu na to, czy dany typ aplikacji projektuje się wg istniejącej metodyki, czy wewnętrznych procedur i schematów danego zespołu projektowego, należy zwrócić uwagę na następujące działania:

- planowanie działań, odpowiedzialności, wykorzystania zasobów

- strukturę projektu ułatwiającą wymianę informacji

- przygotowanie wymagań

- opracowanie kryteriów odbioru produktów projektu

- zaplanowane, udokumentowane i niezależne przeglądy projektu

- wyniki prac (specyfikacje), przeglądów, błędów, niezgodności itd.

- procedury zarządzania zmianami.

Weryfikacja i walidacja

Walidacja jest procesem oceny oprogramowania, przeprowadzanym na zakończenie procesu produkcyjnego (lub fazy) w celu sprawdzenia, czy jest ono wolne od wad (błędów) i niezgodności. Weryfikacja natomiast to proces określenia, czy produkt danej fazy (zadania, czynności) produkcyjnej spełnia wymagania postawione w fazie poprzedniej. Koncentruje się na znalezieniu tych błędów i niezgodności, które mogą stać się przyczyną wad produktu końcowego. Weryfikacja i walidacja dotyczą wszelkich produktów poszczególnych faz cyklu wytwórczego, a nie tylko ostatecznej postaci programu: wymagań, specyfikacji, projektu, implementacji (kodu programu), konfiguracji, zmiany itp.

Można wyróżnić następujące sposoby weryfikacji i walidacji oprogramowania:

Przeglądy techniczne oprogramowania. Są formą testowania oprogramowania "na sucho" i mogą przebiegać w różny sposób:

przeglądy wzajemne - nieformalne przeglądy prezentacji, których celem jest akceptacja danej postaci produktu;

Inspekcje (przeglądy, recenzje) - sformalizowane i dokumentowane przeglądy wyników pracy, których celem jest znalezienie błędów i problemów oraz podjęcie działań zmierzających do ich usunięcia;

Audyty - niezależne, formalne i udokumentowane przeglądy produktów i procesów, których celem jest ocena i wskazanie kierunków poprawy procesów produkcyjnych oraz produktów.

Testowanie oprogramowania

Forma przeglądu technicznego wykonywalnej specyfikacji programu. Jest procesem wykonywania programu z intencją znalezienia błędu. (Testowaniu będzie poświęcony następny odcinek cyklu.)

Dowodzenie poprawności

Kierunek przyszłościowy, choć już dzisiaj w wielu sytuacjach, gdzie oprogramowanie bezpośrednio jest odpowiedzialne za bezpieczeństwo lub utrzymanie życia ludzkiego, wymaga się, aby fragmenty kodu, które implementują krytyczne algorytmy, były objęte formalnymi metodami dowodzenia ich poprawności.

Symulacje i prototypowanie

Prototyp w praktyce inżynierskiej jest wygodnym (a czasem jedynym) narzędziem do zebrania doświadczeń z "realnego świata". Bardzo dobrze służy też do konfrontacji idei i oczekiwań użytkownika z rzeczywistością. Wczesne zidentyfikowanie rzeczywistych wymagań i oczekiwań zwiększa prawdopodobieństwo akceptacji końcowej postaci produktu.

Śledzenie wymagań

Zestaw technik skupiających się na szczegółowym i udokumentowanym śledzeniu wymagań użytkownika od momentu ich powstania, przez analizę, projekt, implementację i testowanie, z nadzieją, że ta "troskliwa obecność" przyczyni się do najlepszego ich zrealizowania.

Inne narzędzia

Inne narzędzia, wśród których można wymienić histogramy, diagramy Pareto, diagramy "rybich ości", analiza FMEA, statystyczna kontrola procesów itd., będą szczegółowo opisane w jednym z następnych odcinków cyklu.

Podsumowanie

Zapewnienie jakości jest procesem zarządzania zgodnością wymagań z ich rzeczywistą realizacją. Aby było skuteczne, konieczne jest precyzyjne zdefiniowanie celów jakościowych (punktu dojścia), narzędzi, zasobów, systemu wytwórczego (punktu wyjścia), a także nadzorowanie wszystkich sytuacji, które mogą stać się przeszkodą na drodze do celu. W zapewnianiu jakości można korzystać z wielu metod, technik i narzędzi, które oddziałują na system wytwórczy we wszystkich jego fazach. Należy podkreślić znaczenie działań prewencyjnych, które są podstawowym sposobem obniżenia kosztów późniejszej kontroli i odbioru produktu końcowego.

Tomasz Byzia jest konsultantem w InfoViDE.


TOP 200