(2004). Eksperymentalne porównanie inspekcji UML
Transkrypt
(2004). Eksperymentalne porównanie inspekcji UML
Wersja postprint artykułu opublikowanego na VI Krajowej Konferencji Inżynierii Oprogramowania. KKIO'2004, Gdańsk, 5-8 października 2004, Wydawnictwo WNT, str. 269-284. Eksperymentalne porównanie inspekcji UML-HAZOP z przeglądem niestrukturalnym Aleksander Jarzębowicz, Janusz Górski Katedra Inżynierii Oprogramowania Politechnika Gdańska {olek, jango}@eti.pg.gda.pl Streszczenie Artykuł opisuje eksperyment przeprowadzony w warunkach akademickich, z udziałem studentów Politechniki Gdańskiej. Celem eksperymentu było porównanie dwóch technik przeglądowych: inspekcji opartej na metodzie UML-HAZOP oraz zwykłego przeglądu niestrukturalnego. W ramach porównania obu technik dokonano oceny ich skuteczności i wydajności. Metodę UML-HAZOP poddano ponadto dodatkowej ocenie uczestników za pomocą anonimowych ankiet. W rozdziale przedstawiono plan i przebieg eksperymentu oraz uzyskane w nim wyniki, poprzedzone wprowadzeniem do tematyki przeglądów i inspekcji oraz skróconym omówieniem metody UML-HAZOP. 1. Wprowadzenie Cel każdego przedsięwzięcia informatycznego można w ogólny sposób zdefiniować jako dostarczenie, w ramach ustalonych ograniczeń czasowych i budżetowych, produktu spełniającego potrzeby i oczekiwania klienta. W praktyce niewiele przedsięwzięć osiąga jednak ten cel. Świadczą o tym statystyki pokazujące liczbę projektów przekraczających zaplanowany budżet lub harmonogram, wytwarzających produkty nie spełniające stawianych im wymagań, bądź też po prostu przerywanych w trakcie realizacji z powodu niezadowalających rezultatów. Jednym z czynników wpływających na taki stan rzeczy są błędy popełniane we wczesnych etapach prac wytwórczych (pozyskiwanie wymagań, analiza, projektowanie). Wynikiem tych błędów jest obecność w dokumentacji projektowej, w szczególności we wczesnych reprezentacjach systemu, różnego rodzaju anomalii: od defektów projektowych polegających na niewłaściwym odwzorowaniu problemu bądź jego rozwiązania, poprzez przekroczenie zakresu metryk lub heurystyk przyjmowanych za optymalne, aż do naruszenia specyficznych atrybutów systemu np. bezpieczeństwa lub ochrony. Nie wykryta anomalia przenoszona jest do kolejnych reprezentacji systemu, a jej usunięcie w każdym kolejnym etapie wytwarzania wymaga coraz większych nakładów czasowych i finansowych. Problemu tego można w znacznym stopniu uniknąć poprzez wprowadzenie dodatkowych działań ukierunkowanych na wykrywanie anomalii w dokumentacji 2 Aleksander Jarzębowicz, Janusz Górski wczesnych etapów cyklu wytwarzania, zanim zostanie ona wykorzystana jako podstawa dalszych prac. Wskazane jest więc opracowanie metod wspierających analityka sprawdzającego dokumentację pod kątem obecności anomalii. Widoczna jest tu potencjalna przydatność metod opartych na idei inspekcji. Spośród dokumentacji opracowywanej w projektach informatycznych, szczególnie interesującym obszarem zastosowań usystematyzowanych metod wykrywania anomalii są różnego rodzaju modele wyposażone w reprezentację graficzną i co najmniej częściowo sformalizowaną składnię. Wśród przykładów można wymienić modele obiektowe (statyczne, dynamiczne), relacyjne, czy też ontologie. Mogą one powstawać w bardzo wczesnych etapach procesu wytwarzania, zaś w porównaniu z innymi elementami dokumentacji (np. specyfikacją wymagań) charakteryzują się lepiej określoną strukturą i składnią, co umożliwia precyzyjniejsze określenie kryteriów i zasad analizy. W ramach badań prowadzonych przez autorów podjęte zostały działania ukierunkowane na opracowanie nowej metody inspekcji, dedykowanej wykrywaniu anomalii w modelach z reprezentacją graficzną. W dotychczasowych pracach skoncentrowano się na modelach obiektowych, wyrażonych w notacji UML i na defektach projektowych, które stanowią najpowszechniejszą klasę anomalii, dotyczącą praktycznie każdego przedsięwzięcia informatycznego. W wyniku tych prac powstała metoda UML-HAZOP, której skrócony opis przedstawiono w podrozdziale 3. Zaproponowane w ramach tej metody rozwiązania obejmują m.in. metodę budowy list kontrolnych, propozycje konkretnych list, strukturę procesu analizy oraz informatyczny system wspomagający. Takie propozycje, jak zresztą wszystkie z zakresu inżynierii oprogramowania, powinny zostać poddane walidacji na drodze eksperymentalnej. Jest to tym bardziej istotne, że intencją autorów jest opracowanie metody przydatnej w praktyce, możliwej do łatwego zastosowania w rzeczywistych przedsięwzięciach informatycznych. Pewne działania związane z eksperymentalną walidacją metody zostały przeprowadzone we wcześniejszych etapach prac nad metodą UML-HAZOP. Wykonano cztery studia przypadków polegające na analizie modeli systemów pochodzących z rzeczywistych, zakończonych implementacją projektów informatycznych [GOJA2002]. We wszystkich studiach przypadków znalezione zostały istotne anomalie obecne w modelach. Eksperymenty te miały jednak pewne ograniczenia. Po pierwsze, analizy modeli prowadzone były zawsze przez osoby o wysokim stopniu znajomości metody, w związku z czym nie uwzględniano kwestii nakładów na naukę metody oraz jej subiektywnego odbioru przez nowego, „niewtajemniczonego” użytkownika. Po drugie, otrzymywane podczas eksperymentów wyniki miały charakter wartości bezwzględnych, co uniemożliwiało ocenę w porównaniu z innymi technikami zapewniania jakości. Ze względu na powyższe ograniczenia, postanowiono przeprowadzić działania walidacyjne innego typu, o charakterze kontrolowanych eksperymentów: z udziałem większej liczby uczestników, podzielonych na dwie grupy i polegające na przeprowadzeniu przez uczestników analiz uprzednio przygotowanych modeli dwiema różnymi metodami (w tym UML-HAZOP). Oprócz porównania opracowywanej metody z innymi pod względem wybranych charakterystyk, eksperymenty w takiej formule dają również możliwość zgromadzenia danych dotyczących kwestii stosowania UMLHAZOP przez niedoświadczonych użytkowników. W pierwszej tego typu próbie zdecydowano się przyjąć przy porównaniu za punkt odniesienia zwykły przegląd, bez zdefiniowanej struktury działania ani określonych kategorii poszukiwanych defektów. Eksperymentalne porównanie inspekcji UML-HAZOP z przeglądem niestrukturalnym 3 Eksperyment przeprowadzono w całości w warunkach akademickich, co może rodzić wątpliwości co do adekwatności jego wyników, jednakże tego typu doświadczenia również mogą dostarczać interesujących rezultatów [WGJN2002]. Dodatkowo należy wspomnieć, że uczestnikami eksperymentu byli studenci V roku informatyki specjalności „Inżynieria Systemów i Bazy Danych”, których umiejętności z zakresu inżynierii oprogramowania można uznać za porównywalne do kompetencji pracowników przemysłu. 2. Przeglądy i inspekcje Szeroko rozumiane techniki przeglądowe posiadają już stosunkowo długą historię w dziedzinie wytwarzania oprogramowania. Po raz pierwszy zaproponowane zostały w 1976 roku przez Michaela Fagana [FAGA1976]. Rezultatem szybko zauważonej skuteczności i opłacalności tego podejścia, był widoczny w kolejnych latach rozwój różnych wariantów technik przeglądowych, zróżnicowanych pod względem zakresu, celu i struktury organizacyjnej, wśród których znalazły się m.in. [FRWE1990]: przeglądy (ang. technical review), inspekcje (ang. inspection), przeglądy-prezentacje (ang. walkthrough), przeglądy rotacyjne (ang. round-robin review). Wszystkie one bazowały jednak na jednej podstawowej zasadzie mówiącej, że najtrudniej jest zauważyć własne błędy, w związku z czym warto do ich poszukiwania zatrudnić innych. Przeglądy i inspekcje opierają się na podobnym procesie. Proces ten został zilustrowany na rys. 1, na którym dodatkowo zaznaczono zakres przeprowadzonego eksperymentu. Proces rozpoczyna spotkanie inicjujące, mające na celu zapoznanie uczestników z przedmiotem analizy, zmotywowanie ich oraz, jeśli zachodzi taka potrzeba, przeszkolenie w zakresie stosowanej techniki przeglądowej. Podczas analizy indywidualnej każdy z uczestników zapoznaje się z kontrolowanym produktem oraz dodatkową dokumentacją i rejestruje wykryte defekty. Analiza grupowa ma formę spotkania całego zespołu, na którym uczestnicy zgłaszają znalezione wcześniej defekty, omawiają je, a także próbują znaleźć nowe w trakcie spotkania. Rezultaty analizy grupowej przekazywane są właścicielowi (na ogół autorowi) kontrolowanego produktu, który na tej podstawie dokonuje jego korekty. Następnie ma miejsce sprawdzenie czy korekta usunęła wszystkie defekty. Z uwagi na fakt, iż w procesie uczestniczy kilka osób i pochłania on pewne zasoby, musi on podlegać planowaniu i zarządzaniu. Mimo podobieństw, pomiędzy przeglądem a inspekcją występują jednak dość znaczne różnice. Można powiedzieć, że inspekcja stanowi dalece sformalizowaną wersję przeglądu, opartą na statystycznej kontroli procesu i powstałą w wyniku dążeń do optymalizacji efektywności. Formalizacja procesu obejmuje następujące aspekty [GIGR1993]: • Sterowanie uwagą inspektorów poprzez przypisanie ich do określonych ról oraz wykorzystanie list kontrolnych zawierających sugestie poszukiwanych defektów; • Uzupełnienie procesu o etapy otwarcia i zamknięcia, w których na podstawie ściśle określonych, mierzalnych kryteriów (np. gęstości defektów) podejmuje się decyzje, odpowiednio o dopuszczeniu dokumentu do inspekcji oraz o zamknięciu inspekcji połączonym z przekazaniem poprawionego produktu; Aleksander Jarzębowicz, Janusz Górski 4 • • Narzucenie ściślej określonej struktury procesu (np. kolejność studiowania dokumentów) oraz związanych z nią parametrów liczbowych (np. tempo studiowania wyrażone liczbą stron na godzinę studiowania); Zbieranie w każdym etapie metryk i wykorzystywanie ich do ciągłej optymalizacji zarówno procesów inspekcji, jak i procesów wytwórczych danej firmy. ZAKRES EKSPERYMENTU Planowanie Spotkanie inicjujące Analiza indywidualna Analiza grupowa Korekta Sprawdzenie korekty Zarządzanie Rys. 1. Ogólny schemat procesu przeglądu i inspekcji z zaznaczonym zakresem eksperymentu 3. Metoda UML-HAZOP Jednym ze sposobów opracowania nowej metody wykrywania anomalii jest skorzystanie z istniejących rozwiązań i ich adaptacja do rozpatrywanego obszaru problemowego. Do rozwiązań takich należy metoda HAZOP (ang. Hazard and Operability Study) [UKMD2000], oparta na idei inspekcji, stosowana pierwotnie w dziedzinie bezpieczeństwa (ang. safety) systemów. Jej celem jest wykrywanie szczególnego rodzaju anomalii prowadzących do sytuacji, w których system zagrozi swojemu środowisku. Metoda UML-HAZOP [GOJA2002] skupia się na innym typie anomalii – defektach projektowych i stworzona została konkretnie z myślą o modelach UML. Wykorzystuje oryginalne podejście HAZOP, adaptując kluczowe mechanizmy tego podejścia: sposób tworzenia list kontrolnych oparty na słowach kluczowych i systematykę procesu analizy modelu. Eksperymentalne porównanie inspekcji UML-HAZOP z przeglądem niestrukturalnym 5 Rys. 2. Metoda konstrukcji list kontrolnych UML-HAZOP Sama idea konstrukcji list kontrolnych jest prosta (patrz rys. 2.). Notacja UML zawiera szereg elementów przeznaczonych do wyrażania różnych aspektów modelowanego systemu np. klasy, przypadki użycia, asocjacje, generalizacje. Elementy charakteryzowane są przez zdefiniowane dla nich w UML atrybuty. Z użyciem tych elementów w modelowaniu wiążą się zwykle pewne typowe dla nich defekty. Do wygenerowania możliwie kompletnej listy defektów dla danego elementu, metoda wykorzystuje zestaw słów kluczowych HAZOP. Słowa kluczowe mają za zadanie w sposób ogólny sugerować wszelkie potencjalne błędy i odchylenia od prawidłowego stanu, np. NO oznacza kompletny brak czegoś, co powinno się znaleźć w modelu, OTHER THAN – inny stan, odmienny od prawidłowego, PART OF – prawidłowy stan jest osiągnięty jedynie częściowo, LESS – zbyt niska wartość liczbowa w stosunku do prawidłowej itd. Zestawienie poszczególnych słów kluczowych z poszczególnymi atrybutami danego elementu daje sugestie defektów odnoszących się do tego elementu. Na przykładzie pokazanym na rysunku, wybranym elementem, dla którego poszukiwane są defekty jest asocjacja (ang. association). Asocjacja posiada szereg atrybutów takich jak nazwa, liczność każdego z jej końców, agregacja i kilka innych. Rysunek pokazuje przykładowe zestawienie atrybut-słowo kluczowe: odniesienie słowa kluczowego OTHER THAN do atrybutu aggregation daje w efekcie sugestię defektu polegającego na użyciu niewłaściwego typu agregacji. Nie wszystkie takie zestawienia dają sensowny rezultat, jednak te wartościowe, które po nadaniu odpowiedniej interpretacji sugerują defekty rzeczywiście często zdarzające się w modelach, zostają włączone do listy kontrolnej dotyczącej danego elementu UML. Zakres metody można określić jako te elementy, dla których opracowane zostały listy kontrolne. Z powodu pewnych uwarunkowań związanych z genezą oryginalnego HAZOPu, metoda UML-HAZOP obecnie koncentruje się na elementach mających charakter połączeń np. związkach w diagramach klas. Systematyka procesu analizy polega na tym, że w danym modelu będącym przedmiotem inspekcji, po kolei analizowane są wszystkie obecne w nim elementy, których dotyczy zakres metody. Do każdego z tych elementów stosowana jest odpowiednia dla jego typu lista kontrolna, a zadanie analityka polega na odnotowaniu, czy defekty sugerowane przez poszczególne pozycje listy rzeczywiście mają miejsce dla tego konkretnego elementu. 6 Aleksander Jarzębowicz, Janusz Górski Dotychczasowe prace nad metodą UML-HAZOP obejmowały opracowanie m.in.: metody budowy list kontrolnych, konkretnych list kontrolnych dla wybranych elementów, struktury procesu inspekcji oraz informatycznego systemu wspomagającego. System wspomagający pozwala na wczytanie modelu systemu stworzonego w narzędziu CASE i automatyczne wygenerowanie list kontrolnych dla tych jego elementów, które mieszczą się w zakresie metody. Udostępnia również funkcjonalność pozwalającą użytkownikowi prowadzącemu analizę modelu na zaznaczanie w uprzednio automatycznie wygenerowanych listach kontrolnych wykrytych przez niego defektów. System został opracowany jako narzędzie jest zorientowane na pracę grupową – opiera się na architekturze klient-serwer i jest dostępny za pośrednictwem Internetu. Dokładny opis metody UML-HAZOP można znaleźć w [GOJA2002], zaś opis narzędzia wspomagającego metodę w [GJLM2003]. 4. Opis eksperymentu 4.1 Cel eksperymentu Najistotniejszym celem eksperymentu było porównanie inspekcji opartej na metodzie UML-HAZOP ze zwykłym przeglądem. Porównanie miało obejmować wybrane charakterystyki, takie jak skuteczność i wydajność, które z kolei miały zostać obliczone na podstawie danych liczbowych zebranych bezpośrednio z eksperymentu: czasu analizy oraz liczby i rodzaju wykrytych defektów. Poza samym porównaniem charakterystyk obu technik, spodziewano się uzyskać odpowiedzi na interesujące pytania: • Czy brak sterowania uwagą uczestnika nie obniża skuteczności przeglądu? • Czy formalizacja i listy kontrolne nadmiernie nie ograniczają uczestnika inspekcji? • Czy potencjalnie większa dokładność inspekcji rekompensuje jej większy koszt? Drugi cel stanowiło zebranie subiektywnych ocen osób z grupy posługującej się metodą UMLHAZOP, dotyczących stopnia trudności nauki metody oraz jej przydatności w projekcie informatycznym. Podobnym ocenom (choć w mniejszym zakresie) miało zostać poddane narzędzie wspomagające metodę. 4.2. Przedmiot eksperymentu Realizacja sformułowanych powyżej celów wymagała praktycznego zastosowania obu porównywanych technik przeglądowych do określonej, uprzednio wybranej dokumentacji projektowej. Analizie poddano diagram klas UML. Wybór diagramu (i dodatkowej, związanej z nim dokumentacji) musiał uwzględniać następujące ograniczenia: • rozmiar – czas niezbędny do zapoznania z dokumentacją i jej analizy nie mógł przekraczać kilku godzin, co wynikało z zewnętrznych ograniczeń eksperymentu; Eksperymentalne porównanie inspekcji UML-HAZOP z przeglądem niestrukturalnym • • 7 zrozumiałość – dokumentacja dotycząca bardzo specyficznej, skomplikowanej dziedziny problemowej mogłaby być zbyt trudna do opanowania, co z kolei prowadziłoby do sytuacji, w której uczestnik szuka defektów w dokumentacji, której nie rozumie i, w konsekwencji, do bezsensownych wyników eksperymentu; poprawność – podlegający analizie diagram klas mógł, a nawet powinien, zawierać defekty, jednak dokumentacja dodatkowa, stanowiąca punkt odniesienia nie mogła być sprzeczna, niekompletna lub obarczona innymi błędami. Wybrano system zrealizowany przez zespół studentów podczas projektów grupowych i przeznaczony do obsługi rozliczeń pomiędzy centralą telefoniczną a jej abonentami. Produkty tego projektu grupowego (zarówno działający system, jak i cała dokumentacja projektowa) były przeznaczone dla Podyplomowego Studium Inżynierii Oprogramowania prowadzonego na Politechnice Gdańskiej i służyły jako materiał szkoleniowy, ilustrujący kolejne etapy cyklu wytwarzania i powstające w nich artefakty. Edukacyjne przeznaczenie dokumentacji wymuszało na zespole projektowym jej staranne opracowanie. Te właściwości, w połączeniu ze stosunkowo niewielkim rozmiarem systemu, stanowiły argumenty przemawiające za decyzją o jego wyborze do wykorzystania w eksperymencie. Równie istotna jak pozyskanie odpowiedniej dokumentacji, była kwestia doboru uczestników eksperymentu. Ze względu na konieczność biegłej znajomości zagadnień modelowania obiektowego, w grę wchodzili jedynie studenci dwóch ostatnich lat. Wybrano grupę studentów V roku (15 osób) specjalności prowadzonej w Katedrze Inżynierii Oprogramowania. 4.3. Przebieg eksperymentu Eksperyment został przeprowadzony w październiku 2003 roku. W jego realizacji można wyróżnić kilka odrębnych etapów. Kolejność etapów oraz związane z nimi najważniejsze produkty i dane wejściowe przedstawiono na rys.3. Szczegółowe opisy poszczególnych etapów znajdują się w podrozdziałach 4.3.1 - 4.3.6. Aleksander Jarzębowicz, Janusz Górski 8 Dokumentacja źródłowa Plan eksperymentu Materiały szkoleniowe PRZYGOTOWANIA Dokumentacja projektowa Ankiety PRZETWORZENIE I ANALIZA WYNIKÓW SZKOLENIE STUDIOWANIE DOKUMENTACJI Dokumentacja do analizy ANKIETOWANIE ANALIZA I REJESTRACJA DEFEKTÓW Rejestry defektów Pomiary czasu Rys.3. Przebieg eksperymentu 4.3.1. Przygotowania Etap ten obejmował szeroki zakres czynności związanych ze szczegółowym planowaniem oraz z przygotowaniem zasobów takich jak: infrastruktura (pomieszczenia, sprzęt komputerowy, podstawowe oprogramowanie), narzędzia, dokumentacja. Dokumentacja udostępniana uczestnikom składała się z następujących części: • Dokumentacja źródłowa – służąca do zapoznania uczestników z kontekstem i wymaganiami wobec systemu będącego przedmiotem eksperymentu oraz stanowiąca punkt odniesienia pozwalający stwierdzić co jest defektem, a co nie; • Dokumentacja do analizy – diagram klas (wraz z opisem), w którym uczestnicy mieli poszukiwać defektów. Jako podstawa dokumentacji źródłowej przyjęta została specyfikacja wymagań systemowych. Był to dokument liczący 52 strony, napisany w języku angielskim. Cała specyfikacja, z uwagi na dużą objętość nie nadawała się do bezpośredniego zastosowania w eksperymencie, dlatego też sporządzono jej skróconą wersję. Z oryginalnej specyfikacji usunięto część zawartości (testy akceptacyjne, wymagania dot. procesu wytwórczego, dodatki) dbając jednocześnie o zapewnienie spójności pozostawionych informacji. W rezultacie tych zabiegów zredukowano objętość dokumentu do 21 stron. Dokumentację przeznaczoną do analizy stanowił diagram klas UML, będący produktem fazy analizy projektu wytwórczego. Najpierw diagram ten poddano pewnym nieznacznym modyfikacjom, nie zmieniającym jednak istotnych właściwości modelu (usunięcie klas kontenerowych). Następnie przeprowadzona została jego analiza pod kątem obecnych defektów. Ponieważ podstawowym Eksperymentalne porównanie inspekcji UML-HAZOP z przeglądem niestrukturalnym 9 obiektem badań eksperymentu były defekty z zakresu wykrywalności metody UML-HAZOP, przeprowadzono kompletną inspekcję z wykorzystaniem tej metody. Dodatkowo sprawdzono defekty spoza zakresu metody i zarejestrowano wykryte. Niestety, sprawdzenie to miało dość pobieżny charakter; nie przeprowadzono kompletnego przeglądu, co jak się potem okazało miało duże znaczenie dla wyników eksperymentu. Następnie wykonano zasiewanie defektów – do już obecnych w diagramie defektów dodano nowe; część mieszczącą się w zakresie UML-HAZOP, część spoza zakresu. Ostatecznie dokumentacja do analizy liczyła 16 stron i składała się z samego diagramu oraz opisu występujących w nim klas (raport wygenerowany przez narzędzie Select Enterprise). Sam diagram liczył 16 klas i 16 związków. 4.3.2. Szkolenie Szkolenie zostało przeprowadzone na tydzień przed główną częścią eksperymentu i składało się z trzech części. Podczas pierwszej części, wspólnej dla wszystkich, przedstawiono podstawowe informacje dotyczące przeglądów i inspekcji oraz poinformowano uczestników o celach eksperymentu, jego planie i poczynionych założeniach (np. praca indywidualna, bez wymiany informacji). Ponadto, uczestnicy zostali podzieleni na dwie grupy: przeglądu (8 osób) i inspekcji (7 osób). Podział ten przeprowadzono z myślą o równomiernym rozkładzie sił i kompetencji w obu grupach. Kierowano się przy nim, z braku lepszego obiektywnego kryterium, średnią ocen uzyskiwanych przez studentów podczas wcześniejszych lat studiów. Dalsze szkolenia przebiegały już oddzielnie w poszczególnych grupach. W grupie inspekcji przedstawiono ideę i podstawowe mechanizmy metody UML-HAZOP, a także konkretne listy kontrolne (z których mieli korzystać podczas eksperymentu). Uczestnicy przeszli również krótkie przeszkolenie dotyczące korzystania z narzędzia wspomagającego metodę. Przekazane informacje zostały zaraz potem wykorzystane praktycznie: przeprowadzono inspekcję niewielkiego przykładowego diagramu z użyciem narzędzia wspomagającego (początkowo wspólnie całą grupą, następnie zaś każdy z uczestników dokończył ją na własnym komputerze). Całe szkolenie zajęło w sumie ok. 45 min. W grupie przeglądu szkolenie było znacznie krótsze (15 min.). Zadanie tych uczestników miało polegać (jak zostali poinformowani) na wyszukiwaniu wszelkich możliwych defektów obecnych na diagramie, bez narzuconej systematyki procesu ani określonych kategorii defektów, których należy poszukiwać. Z uwagi na niewielkie doświadczenie uczestników w stosowaniu technik przeglądowych przedstawiono im jednak dla ułatwienia różne rodzaje defektów jakie mogą występować w diagramach klas i na jakie warto zwrócić uwagę. Nie miało to jednak charakteru obligatoryjnych reguł. 4.3.3. Studiowanie dokumentacji Studiowanie dokumentacji źródłowej (wspomnianej już skróconej specyfikacji wymagań) zostało wprowadzone jako odrębny etap z dwóch powodów. Po pierwsze, aby zagwarantować, że przeglądy i inspekcje zostaną wykonane w sposób kompletny. Bez wyróżnienia tego etapu, uczestnicy mogliby źle podzielić swój czas i za bardzo skupić się na studiowaniu, tym samym zbyt późno rozpoczynając rejestrację defektów. W efekcie przegląd lub inspekcja została by wykonana jedynie częściowo. Drugim powodem była chęć precyzyjniejszego pomiaru czasu potrzebnego każdej z grup na samą czynność analizy i rejestracji defektów. 10 Aleksander Jarzębowicz, Janusz Górski Każdy z uczestników otrzymał kopię dokumentacji źródłowej w postaci papierowej. Możliwe było zaznaczanie wybranych fragmentów, nanoszenie notatek itp. Praca odbywała się w trybie indywidualnym, bez konsultacji pomiędzy uczestnikami. Czas potrzebny na przestudiowanie dokumentacji oszacowany został uprzednio na 2 godziny, co okazało się nadmiarowe. Po 100 min., gdy wszyscy zadeklarowali, że zaznajomili się z dokumentacją w wystarczającym stopniu, etap studiowania został zamknięty. 4.3.4. Analiza i rejestracja defektów Etap ten odbył się bezpośrednio po etapie studiowania, nie licząc krótkiej przerwy. Uczestnicy dopiero teraz otrzymali dokumentację do analizy (nadal mieli również do dyspozycji dokumentację źródłową). Ich zadanie polegało na wykryciu i zarejestrowaniu defektów obecnych w diagramie (nie poszukiwano defektów w opisie diagramu). Grupa przeglądów mogła analizować diagram w sposób dowolny, bez jakiejkolwiek narzuconej formalizacji. Wykryte defekty odnotowywane były przez uczestników w plikach Worda z gotowymi do wypełnienia tabelami o następujących polach: Nr defektu - automatyczna numeracja, nie wypełniana przez użytkowników; Miejsce występowania – element diagramu, którego dotyczy defekt (konkretna klasa, związek itp.), o ile możliwe jest wyszczególnienie pojedynczego elementu; Klasyfikacja – znaczenie defektu w opinii uczestnika: poważny lub drugorzędny; Opis defektu – wyjaśnienie, na czym polega znaleziony defekt. Grupa inspekcji korzystała z narzędzia wspomagającego UML-HAZOP, wypełniając wygenerowane przez narzędzie listy kontrolne. Oprócz opisu defektu zaznaczana była również jego klasyfikacja (poważny, drugorzędny). Uczestnicy mieli wyraźnie powiedziane, że należy skupić się na defektach sugerowanych przez listy kontrolne. Mogli jednak rejestrować dostrzeżone defekty spoza zakresu (w plikach z tabelami). Etap ten miał wyznaczoną górną granicę czasu, taką samą dla obu grup i wynoszącą 140 min. Uczestnicy mieli jednak możliwość wcześniejszego zakończenia analizy: w grupie inspekcji, gdy wypełnione zostaną wszystkie listy kontrolne, w grupie przeglądów, w momencie gdy od 15 min. nie znaleziono żadnego nowego defektu (i przeanalizowano cały diagram). Rzeczywisty czas analizy każdego z uczestników został zarejestrowany. 4.3.5. Ankietowanie Etap ankietowania miał miejsce tydzień po analizie i rejestracji defektów. Uczestnicy otrzymali do wypełnienia krótkie, anonimowe ankiety. Ankiety dla dwóch grup częściowo się różniły. Większość pytań miała odpowiedzi do wyboru (5 możliwości), w niektórych należało udzielić odpowiedzi opisowej. Pytania można podzielić na kilka kategorii: • Pytania o organizację eksperymentu (obie grupy) – miały na celu ustalenie, czy nie popełniono błędów mogących wpłynąć na wynik eksperymentu; • Pytania o listy kontrolne (obie grupy) – badały opinię użytkowników na temat list kontrolnych: czy są pomocne, czy też nadmiernie ograniczające; Eksperymentalne porównanie inspekcji UML-HAZOP z przeglądem niestrukturalnym • • 11 Pytania o metodę UML-HAZOP (tylko grupa inspekcji); Pytania o narzędzie wspomagające UML-HAZOP (tylko grupa inspekcji); Ankieta przeznaczona dla grupy inspekcji zawierała łącznie 12 pytań, zaś ankieta dla grupy przeglądu 7 pytań. 4.3.6. Przetworzenie i analiza wyników Wyniki uzyskane bezpośrednio z eksperymentu obejmowały: zarejestrowane defekty (wraz z klasyfikacją znaczenia każdego z nich), czas analizy każdego uczestnika oraz opinie zebrane w ankietach. Ich przetworzenie i analiza obejmowały następujące kroki: • weryfikacja zasadności defektów zarejestrowanych przez uczestników; • zebranie wyników każdego uczestnika w formie nadającej się do analizy i wygenerowanie dla nich statystyk (wartości średnie, odchylenia standardowe); • obliczenie i porównanie opartych na danych charakterystyk; • zbadanie, jak klasyfikowane były poszczególne rodzaje defektów; • analiza wyników ankiet; 5. Wyniki Zanim przedstawione zostaną uzyskane wyniki, warto najpierw omówić kwestię defektów obecnych w analizowanym diagramie. Ich całkowita liczba oraz podział z uwagi na trzy kryteria (pochodzenie, wykrywalność przez UML-HAZOP, wiedza o ich istnieniu przed eksperymentem) zostały ukazane na rys. 4. Szczególnego omówienia wymaga podział ze względu na kryterium trzecie. Podczas stanowiącej pierwszy krok przetwarzania wyników weryfikacji zarejestrowanych defektów okazało się, że w diagramie znajduje się znacznie więcej defektów niż wiadome to było organizatorom eksperymentu. Ten brak wiedzy wynikał ze wspomnianego już faktu, że skupiono się przede wszystkim na defektach z zakresu wykrywalności UML-HAZOP i nie przeprowadzono kompletnej analizy dla defektów spoza tego zakresu. Defekty te mogły jednak być (i były) wykrywane przez uczestników z grupy przeglądu. Organizatorzy spodziewali się, że uczestnicy mogą wykryć nieznane wcześniej defekty, lecz ich liczba przekroczyła wcześniejsze oczekiwania. Wyniki eksperymentu dotyczące liczby wykrytych defektów oraz zmierzonego czasu analizy zawarte zostały w tabeli 1. Otrzymane wyniki stanowiły spore zaskoczenie. Po pierwsze, wbrew przewidywaniom przegląd zaowocował wykryciem większej liczby defektów niż miało to miejsce w przypadku inspekcji. Po drugie, czas analizy był znacznie dłuższy dla przeglądów, podczas gdy wydawać by się mogło, że inspekcja ze swoją formalizacją procesu powinna być bardziej czasochłonna. Aleksander Jarzębowicz, Janusz Górski 12 Defekty obecne: Defekty znane: 57 37 Wszystkie defekty: 72 Defekty zasiane: Defekty nieznane: 15 35 Defekty z zakresu UML-HAZOP: Defekty spoza zakresu UML-HAZOP: 26 46 Rys.4. Klasyfikacja defektów zawartych w analizowanym diagramie. Tabela 1. Wyniki eksperymentu Przegląd Inspekcja Wartość średnia Odchyl. standard. Wartość średnia Odchyl. standard. Liczba zarejestrowanych defektów 27,8 12,0 20,4 9,4 Liczba potwierdzonych defektów 20,9 10,0 13,0 8,6 Liczba potwierdzonych defektów z zakresu UML-HAZOP 6,1 3,5 11,6 6,7 Czas analizy i rejestracji (w min.) 132,9 3,5 97,9 16,8 Wyjaśnienie tych zaskakujących rezultatów wymaga bliższego przyjrzenia się realiom eksperymentu. Uczestnicy inspekcji koncentrowali się zgodnie z poleceniem na defektach wskazywanych przez listy kontrolne. Listy te pokrywały swoim zakresem jedynie część klas defektów (te dotyczące połączeń), stąd uczestnicy ci po prostu nie mieli możliwości znalezienia defektów spoza zakresu, których jak się okazało było w modelu znacznie więcej. Relatywnie krótki czas analizy wynikał zaś z zasugerowanej zasady kończenia inspekcji po wypełnieniu wszystkich list kontrolnych. Grupa przeglądu miała natomiast wolną rękę zarówno w kwestii rodzaju poszukiwanych defektów, jak również chwili zakończenia analizy. Uczestnicy z tej grupy potraktowali postawione przed nimi zadanie bardzo ambitnie; wykorzystali niemal cały dany im do dyspozycji czas i (jak zaobserwowali nadzorujący eksperyment) przepracowali go bardzo intensywnie. Mając w przydzielonym diagramie bardzo wiele możliwych do znalezienia defektów, uzyskali dobre rezultaty. Dla defektów z zakresu UML-HAZOP uzyskiwali jednak znacznie słabsze wyniki niż ich koledzy (trzeci wiersz tabeli 1). Tabela 1 pokazuje również różnicę pomiędzy liczbą wszystkich zgłoszeń defektów przez uczestników a liczbą tych, które podczas weryfikacji potwierdzono jako zasadne. Jak widać, uczestnicy często sygnalizowali obecność defektów, tam gdzie w rzeczywistości ich nie było (wiersze 1 i 2). Eksperymentalne porównanie inspekcji UML-HAZOP z przeglądem niestrukturalnym 13 Zebrane dane (liczba defektów, czas) posłużyły jako podstawa do obliczenia dwóch następujących charakterystyk obu technik przeglądowych: • Skuteczność – iloraz liczby defektów znalezionych i liczby wszystkich defektów, • Wydajność – iloraz liczby znalezionych defektów do czasu analizy. 0,6 0,5 0,4 Skuteczność 0,3 0,2 0,1 0 Przegląd Inspekcja (w stos. do wszystkich defektów) Inspekcja (w stos. do defektów z zakresu) Rys. 5. Porównanie skuteczności przeglądu i inspekcji 10 9 8 7 6 5 4 3 2 1 0 Wydajność (defekt/godz.) Przegląd Przegląd (defekty z zakresu UMLHAZOP) Inspekcja Rys. 6. Porównanie wydajności przeglądu i inspekcji Dla obliczenia skuteczności inspekcji UML-HAZOP należy poczynić pewne dodatkowe założenie: co jest rozumiane przez „liczbę wszystkich defektów”? Można ją rozumieć w kontekście albo jedynie defektów z zakresu tej metody, albo też wszystkich defektów obecnych w diagramie. W pierwszym przypadku byłaby to liczba 26, w drugim 72 (patrz rys.4). Dla przeglądu, który nie ma ograniczenia zakresu, nie ma wątpliwości, że należy tu przyjąć liczbę 72. Z kolei dla wydajności uwzględniono dodatkowo wydajność przeglądu dla defektów mieszczących się w zakresie UMLHAZOP (za podstawę obliczeń przyjęto część czasu analizy proporcjonalną do udziału defektów z zakresu wśród wszystkich defektów modelu). Zbiorcze charakterystyki (uśrednione dla wszystkich uczestników) przedstawiono na rysunkach 5 i 6. Warto zauważyć, że zarejestrowana (w kategoriach bezwzględnych) skuteczność obu technik jest stosunkowo niska – przeciętny uczestnik przeglądu znalazł mniej niż 1/3 defektów, a uczestnik inspekcji połowę. W kwestii wydajności korzystniej wypadł przegląd; dłuższy czas analizy został w jego przypadku odpowiednio zrównoważony przez większą liczbę wykrytych defektów. Aleksander Jarzębowicz, Janusz Górski 14 Dla inspekcji przeprowadzona została dodatkowo analiza jakościowa, mająca na celu ustalenie, na ile jej rezultaty wynikają z samych właściwości metody, na ile zaś są zależne od kompetencji i spostrzegawczości inspektorów. Dla szczegółowo zdefiniowanej metody inspekcji pożądane byłoby uniezależnienie jej w jak największym stopniu od indywidualnych cech osób, które jej używają. Eksperyment pokazał jednak że metoda nie posiada takiej niezależności. Część defektów w ogóle nie została wykryta przez żadnego z uczestników. W niektórych przypadkach występowały dodatkowe problemy: uczestnicy identyfikowali element diagramu, w którym obecny był defekt, ale nie do końca poprawnie go wskazywali lub proponowane poprawki nie rozwiązywały do końca problemu, bądź też defekt był zgłaszany przy innym punkcie listy kontrolnej niż powinien. Prowadzona przez uczestników klasyfikacja defektów pod względem ich znaczenia pozwoliła na wyciągnięcie ogólniejszych wniosków co do tego, jakie klasy defektów uznawane są za posiadające największe znaczenie. Oczywiście, decyzje co do klasyfikacji były zróżnicowane w zależności od przekonań danego uczestnika, a także od charakteru i miejsca występowania każdego konkretnego defektu. Możliwe było jednak dostrzeżenie pewnych prawidłowości i podział klas defektów na 4 grupy (rys. 7). - brakujące klasy - brakujące związki - błędne związki POWAŻNE - błędne liczności - błędne atrybuty związków - błędne operacje - brakujące atrybuty - błędne agregacje - brakujące operacje - nieadekwatne nazwy DRUGORZĘDNE Rys. 7. Klasyfikacja klas defektów wg znaczenia (na podstawie opinii uczestników). Dodatkowe źródło informacji do przeanalizowania stanowiły ankiety wypełnione przez uczestników eksperymentu. Pierwsza grupa pytań dotyczyła organizacji eksperymentu (np. czy czas poszczególnych etapów nie był zbyt krótki, czy dokumentacja źródłowa była wystarczająca do zrozumienia kontekstu systemu, czy szkolenie było wystarczające). Odpowiedzi uczestników były w tym zakresie pozytywne tzn. nie stwierdzili oni występowania niedociągnięć organizacyjnych, które utrudniłyby im wykonanie zadań. Wśród celów eksperymentu znalazła się chęć uzyskania odpowiedzi na pytania, czy formalizacja procesu poszukiwania defektów np. poprzez listy kontrolne jest korzystna z punktu widzenia uczestników. W związku z tym ankietowani zostali poproszeni o opinię również w tej sprawie. Rezultaty przedstawiono na rys. 8. (lewa połowa rysunku pokazuje pytanie i rozkład odpowiedzi dla grupy przeglądów, prawa dla grupy inspekcji). Uczestnicy z grupy przeglądu mieli w ankiecie możliwość wpisania, jakie środki sterowania uwagą uznają za najbardziej przydatne. Większość z nich wymieniła listy kontrolne. W ankietach grupy inspekcji znajdowała się dodatkowa grupa pytań dotycząca metody UMLHAZOP i wspomagającego ją narzędzia. Odpowiedzi na dwa spośród tych pytań zostały zamieszczone na rys. 9. Uczestnicy mogli dodatkowo wpisywać propozycje modyfikacji zarówno metody jak i narzędzia. Niektóre uwagi dotyczące narzędzia okazały się przydatne i zostaną uwzględnione przy jego rozbudowie. Eksperymentalne porównanie inspekcji UML-HAZOP z przeglądem niestrukturalnym Czy w Twoim odczuciu przegląd byłby skuteczniejszy gdyby sterowano uwagą uczestników (np. poprzez listy kontrolne, narzuconą system atykę procesu przeglądu)? 15 Czy w Twoim odczuciu wykorzystanie list kontrolnych stanowi nadm ierne ograniczenie dla uczestnika inspekcji? z decy dow anie tak z decy dow anie tak rac z ej tak trudno pow iedz ieć trudno pow iedz ieć rac z ej nie rac z ej nie z decy dow anie nie Rys. 8. Opinie ankietowanych na temat list kontrolnych. Jak oceniasz stopień trudności opanowania (nauki) metody UML-HAZOP? Jak oceniasz przydatność metody do wykrywania defektów w modelach obiektowych? raczej w ysoki raczej duża średni średnia raczej niski raczej mała Rys.9. Opinie ankietowanych na temat metody UML-HAZOP. 6. Wnioski W kategoriach bezwzględnych (ogólna liczba wykrytych defektów) porównanie dwóch technik wypadło na korzyść przeglądu, co wynikało w znacznej mierze z warunków eksperymentu, a w szczególności z rozkładu defektów w analizowanym diagramie, których większość znajdowała się poza zakresem metody UML-HAZOP. Natomiast w swoim zakresie inspekcja UML-HAZOP uzyskała znacznie lepszą skuteczność przy wydajności bardzo zbliżonej do wydajności przeglądu. Takie rezultaty, zwłaszcza w zestawieniu z faktem, jak klasyfikowane były przez uczestników różne rodzaje defektów, sugerują potrzebę pilnego rozszerzenia zakresu metody, tak aby uwzględniała ona również inne klasy poważnych defektów modeli. Wyniki dotyczące nauki i stosowania samej metody UML-HAZOP wskazały na pewne trudności w posługiwaniu się metodą przez niedoświadczonych użytkowników. Mimo, że uczestnicy inspekcji uznali szkolenie poświęcone tej metodzie za wystarczające, to w świetle opinii na temat trudności jej Aleksander Jarzębowicz, Janusz Górski 16 nauki oraz zaobserwowanych problemów w prawidłowej identyfikacji defektów, pożądane wydaje się opracowanie bardziej wyczerpujących procedur szkoleniowych oraz bardziej komunikatywne sformułowanie sugestii defektów w listach kontrolnych. W przyszłości planowane jest przeprowadzenie kolejnych eksperymentów pozwalających porównać opracowywaną metodę z innymi technikami przeglądowymi (np. z konkretnymi metodami inspekcji modeli obiektowych), bądź też oszacować w jaki sposób zmiany list kontrolnych i struktury procesu metody wpływają na jej skuteczność i wydajność. Szczególnie interesujący do zbadania wydaje się również problem skali: jak wypadnie analogiczne porównanie dla znacznie większego modelu, trudniejszego do pełnego opanowania przez analityka. Podziękowania: Autorzy pragną podziękować Januszowi Czai, Rafałowi Leszczynie, Jakubowi Milerowi i Marcinowi Olszewskiemu za pomoc w przygotowaniu i nadzorowaniu eksperymentu oraz studentom V roku informatyki, specjalności „Inżynieria Systemów i Bazy Danych” za uczestnictwo w eksperymencie. Bibliografia [FAGA1976] [FRWE1990] [GIGR1993] [GJLM2003] [GOJA2002] [UKMD2000] [WGJN2002] Fagan, M., Design and Code Inspections to Reduce Errors in Program Development, IBM Systems Journal 8, 1976. Freeedman D., Weinberg G., Handbook of Walkthroughs, Inspections, and Technical Reviews: Evaluating Programs, Projects, and Products (Third Edition), Dorset House, 1990. Gilb T., Graham D., Software Inspections, Addison-Wesley, 1993. Górski J., Jarzębowicz A., Leszczyna R., Miler J., Olszewski M., Tool support for detecting defects in object-oriented models, Proc. of 10th International Multi-Conference on Advanced Computer Systems, 22-24 X 2003, Międzyzdroje. Górski J., Jarzębowicz A., Wykrywanie anomalii w modelach obiektowych za pomocą metody UML-HAZOP, IV Krajowa Konferencja Inżynierii Oprogramowania, 16-18 X 2002. UK Ministry of Defence, Defence Standard 00-58, HAZOP Studies on Systems Containing Programmable Electronics (Part 1&2), Issue 2, 2000. Wojciechowski A., Gawron L., Jagielski M., Nawrocki J., Eksperymentalna ocena dwóch podejść do przeglądu artefaktów programowych. IV Krajowa Konferencja Inżynierii Oprogramowania, 16-18 X 2002. Wersja postprint artykułu opublikowanego na VI Krajowej Konferencji Inżynierii Oprogramowania. KKIO'2004, Gdańsk, 5-8 października 2004, Wydawnictwo WNT, str. 269-284.