Identyfikacja zdarzeń w przypadkach użycia
Transkrypt
Identyfikacja zdarzeń w przypadkach użycia
Politechnika Poznańska Wydział Informatyki Identyfikacja zdarzeń w przypadkach użycia mgr inż. Jakub Jurkiewicz Streszczenie rozprawy doktorskiej Promotor: dr hab. inż. Jerzy Nawrocki Promotor pomocniczy: dr inż. Mirosław Ochodek Poznań 2013 1. Wstęp Zbieranie wymagań jest jedną z faz w procesie wytwarzania oprogramowania. Można wyróżnić dwa rodzaje wymagań: funkcjonalne oraz pozafunkcjonalne. Wymagania funkcjonalne opisują funkcjonalne możliwości tworzonego systemu, podczas gdy wymagania pozafunkcjonalne prezentują ograniczenia oraz oczekiwania dotyczące wydajności, bezpieczeństwa, użyteczności, itp. Wymagania są bardzo istotne w procesie tworzenia systemów IT. Dane prezentowane przez Standish Group [3] wskazują, że 20% projektów IT kończy się całkowitą porażką, a prawie 50% ma problemy z dostarczeniem tworzonego systemu na czas i w ramach planowanego budżetu. Według wspomnianego raportu niska jakość wymagań oraz rozszerzający się zakres wymagań to dwie najważniejsze przyczyny wyżej wymienionych problemów. Te obserwacje potwierdzają również inne badania [6, 12, 19]. Jednym ze sposobów zapisu wymagań są scenariusze, które opisują interakcje między aktorami, a w szczególnym przypadku między aktorem – użytkownikiem, a tworzonym systemem. Można wyróżnić dwa główne rodzaje scenariuszy: narracyjne oraz dialogowe. Scenariusze narracyjne opisują wykorzystanie systemu w rzeczywistych sytuacjach [7] i przedstawiają one wizję tworzonego systemu. Takie scenariusze opisują tło i kontekst wykorzystania systemu oraz często opisują konkretne sytuacje interakcji między użytkownikami systemu. Scenariusze narracyjne nie wykorzystują ściśle określonej struktury, przedstawiają one system z bardzo wysokiego punktu widzenia, często pomijając szczegóły, dlatego też nie mogą być bezpośrednio wykorzystywane przez programistów. 2 Najbardziej znanym sposobem zapisu scenariuszy dialogowych są przypadki użycia, zaproponowane przez Jacobsona [10]. Przypadki użycia mają 3-stopniową strukturę: nazwa przedstawia cel, który chce osiągnąć aktor; scenariusz główny jest sekwencją kroków przedstawiających interakcję między aktorami; zdarzenia prezentują możliwe odchylenia od scenariusza głównego, które mogą prowadzić do alternatywnych scenariuszy interakcji. Taki rodzaj scenariuszy pozwala przedstawić więcej szczegółów dotyczących tworzonego systemu. Niska kompletność zdarzeń może powodować dodatkowe koszty wytwarzania oprogramowania [17]. Niestety brakuje badań dotyczących efektywności identyfikacji zdarzeń. Z obserwacji wynika, że zdarzenia są identyfikowane przed analityków za pomocą podejścia ad hoc. Do tej pory nie zaproponowano również metod pozwalających na automatyczną identyfikację zdarzeń. Jedyną zbliżoną metodą jest metoda zaproponowana przez Sutcliffe’a i in. [18], ograniczona jest ona jednak do identyfikacji naruszeń wymagań pozafunkcjonalnych oraz wymaga znaczącego wkładu ze strony analityka. 1.1 Cel i zakres pracy Główny cel pracy to znalezienie odpowiedzi na następujące pytania badawcze: • Czy możliwa jest automatyczna identyfikacja zdarzeń w przypadkach użycia? • Jaka byłaby skuteczność takiego podejścia? W celu znalezienia odpowiedzi na te pytania, praca przedstawia: • Metodę automatycznej identyfikacji zdarzeń w przypadkach użycia. 3 • Eksperymentalną ocenę skuteczności oraz wydajności zaproponowanej metody automatycznej identyfikacji zdarzeń w przypadkach użycia. • Porównanie skuteczności oraz wydajności zaproponowanej metody oraz metody ręcznych przeglądów ukierunkowanych na identyfikację zdarzeń w przypadkach użycia. Przypadki użycia zapisywane są za pomocą języka naturalnego, dlatego też proponowana metoda automatyczna musi być w stanie analizować przypadki użycia z wykorzystaniem metod i narzędzi przetwarzania języka naturalnego. Zakłada się, że rozprawa nie ma na celu rozwijanie metod i technik przetwarzania języka naturalnego, a jedynie wykorzystanie istniejących metod w celu analizy tekstów przypadków użycia. Dodatkowo, zakłada się, że analizowane przypadki użycia zapisane są w języku angielskim i narzędzia do przetwarzania tego języka będą wykorzystywane. 2. Przypadki użycia jako sposób zapisu wymagań Przypadki użycia zostały zaproponowane przez Ivara Jacobsona w latach 80-tych XX wieku, a w pełni opisane w 1992 roku [11] jako część obiektowego podejścia do wytwarzania oprogramowania. Przypadki użycia występują w dwóch wersjach: diagramowej i tekstowej. Diagramy przypadków użycia są częścią języka modelowania UML [15]. Rysunek 1. przedstawia przykładowy diagram przypadków użycia. Diagramy przypadków użycia przedstawiają wyłącznie ogólną informację o aktorach oraz ich celach, dlatego też wykorzystuje się tekstowe przypadki użycia, które pozwalają na przekazanie większej ilości informacji. 4 Rysunek 1 Tekstowe przypadki użycia składają się z trzech głównych części: • nazwy, która przedstawia cel aktora; • scenariusza głównego, który prezentuje interakcję między aktorami, interakcja ta powinna prowadzić do celu określonego w nazwie przypadku użycia; • sekcji zawierającej scenariusze wyjątkowe oraz alternatywne – sekcja ta opisuje dodatkowe sposoby osiągnięcia celu przez aktora oraz sytuacje wyjątkowe, które mogą wystąpić podczas wykonywania scenariusza głównego. Przykład tekstowego przypadku użycia przedstawiony jest na Rysunku 2. Rozprawa skupia się na zdarzeniach, które powodują przerwania scenariusza głównego (np. Podany kod PIN jest niepoprawny z przykładu podanego na Rysunku 2). Informacje o zdarzeniach nie są widoczne na diagramach przypadków użycia, z tego powodu w rozprawie brane są pod uwagę wyłącznie tekstowe przypadki użycia. Należy zauważyć, że przypadki użycia zapisywane są w języku naturalnym. Pozwala to na łatwiejsze zrozumienie wymagań przez uczestników projektów, którzy nie znają terminologii z dziedziny IT. Wadą wykorzystania języka naturalnego jest jednak trudność w automatycznej analizie. Nie ma żadnej narzuconej składni przypadków 5 użycia, istnieją jednak pewne tzw. dobre praktyki [4,8], które pozwalają na tworzenie przypadków użycia wysokiej jakości. Rysunek 2 3. Proste metody zapewnienia jakości przypadków użycia Jak wspominano wcześniej wysoka jakość przypadków użycia może być zapewniona poprzez stosowanie tzw. dobrych praktyk. Takie praktyki zostały zaproponowane m.in. przez Adolpha i in. [4]. Pogwałcenie tych praktyk można nazwać przykrymi zapachami. Rozprawa przedstawia propozycję metod wykrywania przykrych zapachów w przypadkach użycia przy wykorzystaniu narzędzi przetwarzania języka naturalnego, takich jak Standford Parser [2] oraz 6 OpenNLP [1]. Zaproponowane metody są w stanie automatycznie wykrywać następujące przykre zapachy: Za długi lub za krótki przypadek użycia. Jest zalecane [4], aby scenariusze główne przypadków użycia miały miały między 3 a 9 kroków. Zaproponowana metoda opiera się na liczeniu kroków przypadków użycia. Powtarzające się akcje w sąsiadujących krokach. Według Adolpha i in. [4] każdy krok scenariusza głównego powinien prowadzić interakcję do przodu. W przypadku, jeśli podobne akcje (np. kroki „2. Użytkownik wprowadza nazwę ulicy.“, „3. Użytkownik wprowadza numer domu“, „4. Użytkownik wprowadza kod pocztowy“) występują w następujących po sobie krokach to może to niepotrzebne wydłużać scenariusz główny. W takim przypadku kroki powinny być złączone w jeden krok (np. „2. Użytkownik podaje dane adresowe“). Sposób detekcji tego przykrego zapachu opiera się na sprawdzeniu, czy w następujących po sobie krokach powtarza się aktor (jako podmiot) oraz akcja (jako orzeczenie). Niespójne nazewnictwo. W literaturze można spotkać wiele konwencji nazywania przypadków użycia. Ciężko jest określi, która konwencja jest najlepsza, ważne jednak, aby wybrana konwencja stosowana była konsekwentnie w całej specyfikacji wymagań. W celu wykrywania tego przykrego zapachu sprawdzana jest spójność formy czasownika, który występuje w nazwie przypadku użycia. Zbyt skomplikowana struktura kroku. Według Adolpha i in. [4] zdania występujące w krokach przypadku użycia powinny być proste i powinny 7 składać się z trzech elementów: podmiotu, orzeczenia i dopełnienia. Użycie tak prostej struktury utrudnia popełnienie błędu gramatycznego i pozwala łatwiej zrozumieć dany krok. W celu detekcji tego przykrego zapachu sprawdzane są liczby podmiotów, orzeczeń i dopełnień. Jeśli któraś z tych liczb jest większa niż jeden to zakładane jest wystąpienie przykrego zapachu. Brak aktora. W każdym kroku powinien być jasno określony wykonawca – aktor. Brak aktora powoduje, że krok może być zinterpretowany na wiele sposobów. W celu identyfikacji tego przykrego zapachu sprawdzane jest wystąpienie podmiotu w kroku wraz ze sprawdzeniem, czy podmiot jest zdefiniowany w słowniku aktorów w danej specyfikacji wymagań. Używanie złych form czasowników oraz czasów. Dobre praktyki mówią, że kroki przypadków użycia powinny być zapisywane w czasie Present Simple oraz w aktywnej formie czasownika. Detekcja tego przykrego zapachu opiera się na sprawdzeniu czasu oraz formy orzeczenia występującego w kroku. Używanie technicznego żargonu. Wykorzystanie w przypadkach użycia słownictwa pochodzącego z dziedziny IT może skutkować brakiem zrozumienia wymagań przez udziałowców projektu. W związku z tym pisząc przypadki użycia powinniśmy unikać wykorzystywania technicznego żargonu. Metoda wykrywania tego przykrego zapachu opiera się na przygotowanym słowniku terminów IT oraz sprawdzaniu, czy słowa występujące w kroku występują jednocześnie w słowniku. 8 Kroki warunkowe. Różne scenariusze interkacji między aktorem a system zależą od wielu warunków, naturalne więc wydaje się wykorzystywanie struktury „jeśli warunek to akcja“. Jednak struktura przypadków użycia jest tak zbudowana, że wszelkie warunki powinny trafić do sekcji scenariuszy alternatywnych, a w scenariuszu głównym powinna się znaleźć jedynie interkacja prowadząca do osiągnięcia celu przez aktora. Sprawia to, że przypadek użycia jest łatwiejszy w czytaniu oraz interpretacji. W celu wykrywania tego przykrego zapachu, sprawdzane jest występowanie słów takich jak „if“, „whether“, „when“. W celu zbadania skuteczności zaproponowanych metod został przeprowadzony eksperyment z wykorzystaniem typowej specyfikacji wymagań opartej na przypadkach użycia [5]. Zaproponowane metody osiągnęły następujące wyniki [13]: • Dokładność (ang. accuracy) = 0.99 • Precyzja (ang. precision) = 0.80 Przeprowadzony eksperyment pozwala stwierdzić, że zaproponowane metody mogą pomóc w skutecznej identyfikacji przykrych zapachów w przypadkach użycia, a co za tym idzie mogą się przyczynić do podniesienia jakości tworzonych przypadków użycia. 4. Ręczna metoda identyfikacji zdarzeń w przypadkach użycia W celu dokonania pełnej oceny automatycznej metody identyfikacji zdarzeń w przypadkach użycia, skuteczność i wydajność podejścia opartego na ręcznych przeglądach musiała zostać również zbadana. W 9 literaturze brakuje jednak metod służących identyfikacji zdarzeń, dlatego też została zaproponowana metoda oparta na metodzie analizy ryzyka systemów krytycznych HAZOP [16]. 4.1. Wprowadzenie do metody HAZOP HAZOP (Hazard and Operability Study) to ustrukturalizowana technika identyfikacji i analizy ryzyka w istniejących lub projektowanych procesach i systemach. Pierwotnie metoda ta była przeznaczona do analizy instalacji chemicznych. Później została zaadopotowana również do innych dziedzin, w tym do analizy komputerowych systemów krytycznych. HAZOP angażuje grupę multidyscyplinarnych ekspertów, którzy używają słów kluczowych analizują poszczególne elementy systemu, w celu wykrycia ryzyka (ang. hazard). Wyróżnia się dwa rodzaje słów kluczowych: pierwszorzędne odnoszą się do atrybutów (np. temperatura, ciśnienie) i zależne są od rodzaju analizowanej instalacji/systemu; drugorzędne to stała lista słów, które wskazują na ryzyka (np. NO, MORE). Biorąc pod uwagę fragment instalacji, zespół ekspertów interpretuje pary słów kluczowych i przy pomocy burzy mózgów próbuje zidentyfikować jak najwięcej czynników ryzyka (np. para ciśnienieMORE może być zinterpretowana jako zbyt duże ciśnienie w probówce, co może powodować stan zagrożenia w instalacji chemicznej). Na koniec analizy powstaje raport ze wskazaniem zidentyfikowanych czynników ryzyka oraz planowanymi akcjami eliminującymi dany czynnik. 4.2. Metoda H4U Metoda H4U (HAZOP for Use Cases) oparta jest na słowach kluczowych, które są fundamentem metody HAZOP. H4U wykorzystuje 10 te same drugorzędne słowa kluczowe co metoda HAZOP. Natomiast pierwszorzędne słowa kluczowe dostosowane są do dziedziny jaką są przypadki użycia. Następujące pierwszorzędne słowa kluczowe są wykorzystane w metodzie H4U: • Dane wejściowe i wyjściowe • Dane przechowywane w systemie • Czas Eksperci analizą scenariusze główne przypadków użycia krok po kroku i za pomocą par słów kluczowych identyfikują jak największa liczbę możliwych zdarzeń, które mogą wystąpić w analizowanych krokach. 4.3. Eksperymentalna ocena metody H4U Zostały przeprowadzone dwa eksperymenty, których celem była ocena skuteczności oraz wydajności metody H4U. W eksperymentach metoda H4U była porównywana z podejściem ad hoc, w którym uczestnicy nie korzystają z żadnej konkretnej metody, a jedynie starają się zindetyfikować jak największą liczbę zdarzeń czytając scenariusze główne przypadków użycia. Eksperyment nr 1 przeprowadzony był z osiemnastoma studentami specjalności Inżynieria Oprogramowania na Politechnice Poznańskiej. Eksperyment nr 2 przeprowadzony był z osiemdziesiącioma czterama pracownikami poznańskich firm IT. Zadaniem uczestników eksperymentów była identyfikacja zdarzeń w typowej specyfikacji opartej na przypadkach użycia [5]. Następujące miary zostały wykorzystane do oceny badanych metod: Wydajnosc( p) = l.krokow( p) [kroki /min] T 11 € gdzie: • p to uczestnik eksperymentu; • l.krokow(p) to liczba kroków przeanalizowanych przez kandydata p; • T to całkowity czas poświęcony na analizę specyfikacji (stała: 60 minut). odleglosc( p ) ∑ l.zdarzen( p,s) Dokladnosc = s=1 odleglosc( p ) ∑ l.Zdarzen(s) s=1 gdzie: • p to uczestnik eksperymentu; € • odleglosc(p) to najdalszy krok w specyfikacji przeanalizowany przez uczestnika p; • l.zdarzen(p,s) to liczba unikalnych zdarzeń zidentyfikowanych dla kroku s przez uczestnika p; • l.Zdarzen(p) to liczba unikalnych zdarzeń zidentyfikowanych dla kroku s przez wszystkich uczestników eksperymentów. Wyniki eksperymentu Tabela 1 zawiera statystykę opisową eksperymentu nr 1, gdzie grupa G1 to grupa wykorzystująca podejście ad hoc, a grupa G2 to grupa korzystająca z metody H4U. Uczestnik 1 2 3 4 5 6 7 Wydajność [kroki/min] G1 G2 2,63 0,35 1,83 0,12 2,58 0,40 2,65 0,50 1,40 0,45 1,95 0,33 2,62 1,35 Dokładność G1 0,25 0,22 0,18 0,09 0,13 0,09 0,25 G2 0,36 0,44 0,26 0,22 0,26 0,34 0,31 12 8 9 Min Mediana Średnia arytm. Max 2,60 1,85 1,40 2,58 2,23 2,65 1,17 1,07 0,12 0,45 0,64 1,35 Tabela 1 0,14 0,19 0,09 0,18 0,17 0,25 0,05 0,12 0,05 0,26 0,26 0,44 Testowanie hipotez statystycznych W celu porównania wyników metody H4U oraz podejścia ad hoc następujące hipotezy statystyczne zostały zbadane: 1. H a 0 : ΘWydajnosc(G1) = ΘWydajnosc(G 2) hipoteza alternatywna: H a1 : ΘWydajnosc(G1) ≠ ΘWydajnosc(G 2) 2. € H b 0 : µDokladnosc(G1) = µDokladnosc(G 2) hipoteza€alternatywna: H b1 : µDokladnosc(G1) < µDokladnosc(G 2) W celu € sprawdzenia hipotezy dotyczącej wydajności został wykorzystany test Wilcoxona, a w celu sprawdzenia hipotezy dotyczącej dokładności € test t-Studenta. W obu testach poziom istotności został ustalony na 0.05. W wyniku przeprowadzenia procedury testującej obie hipotezy zerowe zostały odrzucone. Tabela 2 zawiera statystyka opisową eksperymentu nr 2, gdzie grupa G1 to grupa wykorzystująca podejście ad hoc, a grupa G2 to grupa korzystająca z metody H4U. 13 Uczestnik 1 2 3 4 5 6 7 8 9 10 11 12 13 §4 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Min Mediana Średnia arytm. Max Wydajność [kroki/min] G1 G2 2,18 2,32 2,07 0,85 2,20 0,38 2,12 2,02 0,68 1,97 2,17 0,78 1,90 0,68 0,87 0,38 2,23 1,07 2,30 1,35 2,07 2,07 0,68 0,48 2,22 1,07 2,07 0,48 2,02 0,97 2,20 0,38 2,28 0,42 2,02 0,48 2,17 0,68 1,90 0,55 1,07 0,78 2,02 0,78 2,18 0,78 1,97 1,90 1,60 1,48 1,43 1,83 2,02 1,17 0,42 0,48 0,55 1,07 0,87 0,68 2,08 2,22 2,17 0,85 0,42 0,38 2,05 0,82 1,77 1,04 2,30 2,32 Tabela 2 Dokładność G1 0,19 0,04 0,13 0,13 0,14 0,16 0,11 0,21 0,09 0,24 0,08 0,22 0,09 0,15 0,25 0,28 0,07 0,14 0,22 0,15 0,03 0,07 0,21 0,18 0,12 0,11 0,05 0,15 0,20 0,26 0,11 0,12 0,03 0,14 0,15 0,28 G2 0,13 0,36 0,45 0,05 0,03 0,23 0,09 0,08 0,10 0,28 0,11 0,23 0,07 0,22 0,19 0,14 0,23 0,09 0,35 0,18 0,26 0,17 0,36 0,14 0,08 0,07 0,31 0,26 0,14 0,15 0,23 0,30 0,03 0,17 0,26 0,45 14 Testowanie hipotez statystycznych W celu porównania wyników metody H4U oraz podejścia ad hoc następujące hipotezy statystyczne zostały zbadane: 1. H c 0 : ΘWydajnosc(G1) = ΘWydajnosc(G 2) hipoteza alternatywna: H c1 : ΘWydajnosc(G1) ≠ ΘWydajnosc(G 2) 2. € H d 0 : µDokladnosc(G1) = µDokladnosc(G 2) hipoteza€alternatywna: H d1 : µDokladnosc(G1) < µDokladnosc(G 2) W wyniku € procedury testowania statystycznego obie hipotezy zerowe zostały odrzucone. € Podsumowanie wyników eksperymentów Wyniki przeprowadzonych eksperymentów prowadzą do następujących wniosków: • Maksymalna średnia dokładność identyfikacji zdarzeń w obu przeprowadzonych eksperymentach wynosi 0,26. Pokazuje to, że zadanie identyfikacji zdarzeń nie jest łatwe i że jest duże zapotrzebowanie na nowe metody oraz narzędzia ukierunkowane na pomoc w identyfikacji zdarzeń; • Zaproponowana metoda H4U może pomóc w osiągnięciu większej kompletności zdarzeń w przypadkach użycia w porównaniu do podejścia ad hoc; • Metoda H4U pomaga podnieść kompletność zdarzeń, jednak wymaga ona znacznie więcej czasu niż podejście ad hoc. 15 5. Automatyczna identyfikacja zdarzeń w przypadkach użycia W celu poprawy dokładności oraz wydajności identyfikacji zdarzeń w przypadkach użycia została zaproponowana metoda automatyczna, której zadaniem jest wygenerowanie jak największej liczby możliwych zdarzeń dla danego zbioru scenariuszy głównych. Metoda automatyczna zakłada, że specyfikacja wymagań oparta na przypadkach użycia składa się z następujących elementów: • opisu aktorów, którzy biorą udział w przypadkach użycia; • opisu obiektów informacyjnych, którymi operują aktorzy; • przypadków użycia (do automatycznej identyfikacji zdarzeń wystarczające są scenariusze główne). Abstrakcyjny model kroku przypadku użycia Metoda automatyczna zakłada, kroki przypadków użycia pisane są w sposób prosty zgodnie z zasadą SVO (ang. Subject-Verb-Object). W ten sposób dzięki analizie za pomocą dostępnych narzędzi przetwarzania języka naturalnego możliwa jest automatyczna identyfikacja aktorów, obiektów informacyjnych oraz aktywności, które występują w kroku. Następujące abstrakcyjne byty mogą występować w krokach: • Aktor – abstrakcyjny byt, który wykonuje akcje w kroku. Wyróżniamy dwa typy aktorów: SYSTEM – reprezentuje budowany system; USER – reprezentuje jednego z użytkowników końcowych (jest zdefiniowany w specyfikacji wymagań). • Aktywność – jest to akcja zainicjowana przez aktora, która operuje na obiekcie informacyjnym. Na podstawie analizy istniejących 16 przypadków użycia zostało zidentyfikowanych 10 abstrakcyjnych typów aktywności i są one zaprezentowane w Tabeli 3. • Obiekty infomacyjne – reprezentują obiekty, na których wykonywane są aktywności. Na podstawie analizy istniejących przypadków użycia zostały zaproponowane właściwości, które mogą być przypisane obiektom informacyjnym. Właściwości te podzielone są na dwie grupy: AFP (ang. Activity-Free Properties) oraz ASP (Activity-Sensitive Properties). Te pierwsze nie zależą od aktywności wykonywanych na danym obiekcie informacyjnym, te drugie natomiast zależą od tych aktywności. Tabela 4. zawiera zaproponowane właściwości obiektów informacyjnych. Abstrakcyjny typ aktywności ADD ENTER LINK READ UPDATE DELETE SELECT VALIDATE CONFIRM DISPLAY Przykład kroku użycia Autor dodaje nowy artykuł Autor wprowadza tytuł artykułu Autor łączy komentarz z artykułem Autor przegląda dostępne artykuły Autor zmienia tytuł artykuły Autor usuwa artykuł Autor wybiera artykuł System sprawdza wprowadzony tytuł Autor zatwierdza zmiany, System prezentuje dostępne artykuły Tabela 3 Właściwość Przykład AFP SET COMPOUND AT_LEAST NO_MORE_THAN REMOTE LONG_LASTING dla aktywności X TIMEOUTABLE dla aktywności X Artykuł Karta kredytowa (składa się z nazwiska właściciela, numeru, daty ważności, itp.) Uczestnicy (których musi być nie mniej niż 10) Uczestnicy (których nie może być więcej niż 50) Karta kredytowa (której dane trzymane są w zdalnym/zewnętrznym systemie) ASP Faktura (której eksport danych może trwać długi czas) Przetarg (na który przyjmowanie niosków ma określony termin) Tabela 4 17 Dodatkowo wyróżnia się abstrakcyjne typy zdarzeń, które mogą występować w przypadkach użycia. Zostało zaproponowanych 19 abstrakcyjnych typów zdarzeń, zaprezentowane są one w Tabeli 5. Abstrakcyjny typ zdarzenia WrongData TooLittleLeft Incomplete AlreadyExist ConnectionProblem TooMuchSelected NoObjectSelected AlreadySelected TooLittleSelected DoesNotExist LackOfConfirmation NoDataDefined WantsToInterrupt TooLateForDoingThis WantsToWithdraw NoDataProvided LateConfirmation TooEarlyForDoingThis TooMuchDataProvided Przykład Numer ISBN jest niepoprawny. Saldo konta bankwego jest równe zero. Nie został podany numer ISBN książki. Książka z podanym numerem ISBN już istnieje w systemie. Nie można się było połączyć z operatorem karty kredytowej. Zaznaczono zbyt wiele książek Nie zaznaczono żadnej książki. Zaznaczone książki były już wybrane. Wybrano zbyt mało książek. Podany artykuł nie istnieje. Autor nie potwierdził operacji usuwania. Nie zdefiniowano żadnych książek. Autor anuluje operację eksportu danych. Termin na dodawanie podań minął. Nie znaleziono w badanej bazie przypadków użycia Nie znaleziono w badanej bazie przypadków użycia Nie znaleziono w badanej bazie przypadków użycia Nie znaleziono w badanej bazie przypadków użycia Nie znaleziono w badanej bazie przypadków użycia Tabela 5 Reguły identyfikacji zdarzeń Zostały zaproponowane dwie reguły wnioskowania o zdarzeniach w przypadkach użycia. Następujące elementy występują w regułach: • R – reprezentuję rolę (abstrakcyjny aktor) • A – reprezentuje abstarkcyjny typ aktywności • O – reprezentuje obiekt informacyjny 18 • P – reprezentuje właściwość obiektu informacyjnego • S – reprezentuje krok, dla którego identyfikowane są zdarzenia • E – reprezentuje abstrakcyjny typ zdarzeń • Observed – to skończony zbiór aksjomatów w postaci <R,A,P,E>. Każdy akcjomat oznacza, że aktywność A wykonywana przez aktora R na obiekcie informacyjnym mającym właściwość P może prowadzić do wystąpienia zdarzenia E. Zaproponowane elementy zbioru Observed zaprezentowane są w Tabeli 6 (komórki z gwiazdką oznaczają, że dany aksjomat jest ważny niezależnie od właściwości obiektu informacyjnego). • AFP - to funkcja, której dziedziną jest skończony zbiór obiektów informacyjnych, a zbiorem wartości jest zbiór właściwości obiektu informacyjnego. Prosta reguła identyfikacji zdarzeń zakłada, że właściwości obiektów informacyjnych zależą wyłącznie od obiektów informacyjnych, a nie od aktywności na nich wykonywanych. Prosta reguła identyfikacji zdarzeń ma następującą postać: S =< R, A,O >,P ∈ AFP(O),< R, A,P, E >∈ Observed S →◊E Złożona reguła identyfikacji zdarzeń bierze pod uwagę właściwości obiektów informacyjnych, które zależą nie tylko od samych € obiektów informacyjnych, ale również od aktywności, które są na nich wykonywane. Reguła ta wykorzystuje funkcję ASP, która dla obiektu informacyjnego zwraca skończony zbiór par <P,A>, gdzie P oznacza właściwość, a A oznacza aktywność dla, której właściwość P jest prawdziwa. Złożona reguła identyfikacji zdarzeń ma następującą postać: 19 S =< R, A,O >,< P, A >∈ ASP(O),< R, A,P, E >∈ Observed S →◊E Aktor (R) Aktywność (A) USER USER USER USER USER SYSTEM USER USER USER USER USER USER USER USER USER SYSTEM ENTER ENTER ENTER ENTER ENTER DISPLAY SELECT SELECT SELECT SELECT DELETE READ LINK SELECT CONFIRM ADD ENTER LINK READ UPDATE DELETE SELECT VALIDATE CONFIRM DISPLAY ADD ENTER LINK READ UPDATE DELETE SELECT VALIDATE CONFIRM DISPLAY € USER Właściwość Obiekty Informacyjnego (P) SET COMPOUND SET REMOTE AT_LEAST SET SET SET NO_MORE_THAN * * * * AT_LEAST * LONG_LASTING Ty zdarzenia (E) WrongData Incomplete AlreadyExists ConnectionProblem TooLittleLeft NoDataDefined NoDataDefined AlreadySelected TooMuchSelected NoObjectSelected DoesNotExist DoesNotExist Incomplete TooLittleSelected LackOfConfirmation WantsToInterrupt TIMEOUTABLE TooLateForDoingThis Tabela 6 Generowanie opisów zdarzeń Przedstawione reguły identyfikacji zdarzeń pozwalają na identyfikację akstrakcyjnych typów zdarzeń. W celu wygenerowania 20 właściwych opisów zdarzeń, które mogą być umieszczone bezpośrednio w specyfikacji wymagań zostało wykorzystane narzędzie do generowania języka naturalnego (ang. NLG – Natural Language Generation) SimpleNLG [9]. Eksperymentalna ocena automatycznej identyfikacji zdarzeń Metody zaprezentowane w tym rozdziale zostały zaimplementowane w prototypowym narzędziu. Narzędzie to opiera się na edytorze przypadków użycia UC Workbench [14]. Prototyp został wykorzystany do zidentyfikowania możliwych zdarzeń w scenariuszach głównych tej samej specyfikacji, która była wykorzystana przy ocenie metod ręcznych. W celu oceny dokładności oraz wydajności automatycznej identyfikacji zdarzeń zostały wykorzystanane takie samie miary jak w przypadku ocen metod ręcznych. Tabela 7. przedstawia wyniki przeprowadzonych eksperymentów. Co istotne, po pierwszej automatycznej identyfikacji zdarzeń okazało się, że zbiór Observed można poszerzyć o dodatkowe elementy, dzięki czemu dokładność prototypu podniosła się z początkowego poziomu 0.73 do 0.89. Dokładność Wydajność Jak Prototyp H4U Max Ad hoc Max (0.73) 0.89 10.8 0.44 2.32 0.28 2.65 widać H4U średnia 0.26 0.85 Tabela 7 z przeprowadzonych ekperymentów Ad hoc średnia 0.18 2.58 metoda automatyczna pozwala na osiągnięcie wysokiej skuteczności (0.89) przy wysokiej wydajności (analiza 10.8 kroków na minutę). 21 Dodatkowo został przeprowadzony ekperyment oparty na założeniach testu Turinga. Celem eksperymentu było sprawdzenie, czy jakość językowa wygenerowanych automatycznie zdarzeń jest na odpowiednio wysokim poziomie. W tym celu uczestnicy eksperymentu (studenci Inżynierii Oprogramowania) zostali poproszeni o ocenę par zdarzeń, każda para zawierała zdarzenie wygenerowane przez prototyp oraz zdarzenie zaproponowane przez człowieka w poprzednich eksperymentach (oba zdarzenia dotyczyły tego samego kroku). Zadaniem uczestników eksperymentu była ocena, które ze zdarzeń wydaje się bardziej poprawne językowo. Eksperyment pokazał, że uczestnicy nie byli w stanie odróżnić zdarzeń wygenerowanych przez narzędzie od zdarzeń zaproponowanych przez człowieka. 6. Podsumowanie W rozprawie doktorskiej zaprezentowano oraz porównano dwie metody identyfikacji zdarzeń w przypadkach użycia, metodę ręcznych przeglądów H4U oraz metodę automatyczną. Obie metody zostały porównane w sposób eksperymentalny. Najważniejsze wnioski z przeprowadzonych badań: • Zdarzenia w przypadkach użycia można traktować jak ryzyka w systemach czasu rzeczywistego. Bazując na tym założeniu, została zaproponowana metoda H4U, która pozwala skuteczniej identyfikować zdarzenia niż podejście ad hoc. • Ręczne metody identyfikacji zdarzeń nie pozwalają na osiągnięcie wysokiej dokładności w identyfikacji zdarzeń (maksymalna dokładność na poziomie 0.45, a maksymalna średnia na poziomie 0.26). 22 • Została zaproponowana metoda automatycznej identyfikacji zdarzeń w przypadkach użycia. Metoda została zaimplementowana w postaci prototypowego narzędzia z wykorzystaniem narzędzia i technik NLP oraz NLG. Prototyp był w stanie osiągnąć dokładność na poziomie 0.89 przy analizowaniu ponad 10 kroków na minutę. 23 Bibliografia [1] OpenNLP homepage http://opennlp.apache.org, dostępne: 4th June 2013. [2] The Stanford Parser: A http://nlp.stanford.edu/software/lex-parser.shtml, 2013. statistical parser dostępne: 4th June [3] Chaos: A recipe for success, 2004. Technical report, Standish Group, 2004. [4] S. Adolph, P. Bramble, A. Cockburn, and A. Pols. Patterns for Effective Use Cases. Addison-Wesley, 2002. [5] B. Alchimowicz, J. Jurkiewicz, M. Ochodek, and J. Nawrocki. Building benchmarks for use cases. Computing and Informatics, 29(1):27–44, 2010. [6] David Baccarini, Geoff Salm, and Peter E. D. Love. Management of risks in information technology projects. Industrial Management and Data Systems, 104(4):286–295, 2004. [7] John M. Carroll, Mary Beth Rosson, George Chin, Jr., and Jürgen Koenemann. Requirements development in scenario-based design. IEEE Trans. Softw. Eng., 24(12):1156–1170, December 1998. [8] A. Cockburn. Writing Effective Use Cases. Addison-Wesley Boston, 2001. [9] Albert Gatt and Ehud Reiter. Simplenlg: a realisation engine for practical applications. In Proceedings of the 12th European Workshop on Natural Language Generation, ENLG ’09, pages 90–93, Stroudsburg, PA, USA, 2009. Association for Computational Linguistics. [10] I. Jacobson. Concepts for modeling large real time systems. Royal Institute of Technology, Dept. of Telecommunication Systems-Computer Systems, 1985. 24 [11] I. Jacobson, M. Christerson, P. Jonsson, and G. Övergaard. ObjectOriented Software Engineering: A Use Case Driven Approach. Addison Wesley Longman, Inc, 1992. [12] Leon A. Kappelman, Robert McKeeman, and Lixuan Zhang. Early warning signs of it project failure: The dominant dozen. EDPACS, 35(1):1–10, January 2007. [13] K. Krawiec, J. Stefanowski, Uczenie maszynowe i sieci neuronowe, Wydawnictwo Politechniki Poznańskiej 2004 [14] J. Nawrocki and Ł. Olek. UC Workbench - A tool for writing use cases. In 6th International Conference on Extreme Programming and Agile Processes, volume 3556 of Lecture Notes in Computer Science, pages 230–234. Springer-Verlag, June 2005. [15] OMG. OMG Unified Modeling LanguageTM(OMG UML), superstructure, version 2.3, May 2010. [16] F. Redmill, M. Chudleigh, J. Catmur. System safety : HAZOP and software HAZOP. Wiley, 1999. [17]George E. Stark, Paul W. Oman, Alan Skillicorn, Alan Ameele.An examination of the effects of requirements changes on software maintenance releases. Journal of Software Maintenance, 11(5):293–309, 1999. [18] Alistair Sutcliffe, Neil Maiden, Shailey Minocha, Darrel Manuel. Supporting scenario-based requirements engineering. IEEE Transactions on Software Engineering, 24(12), December 1998. [19] K. T. Yeo Critical failure factors in information system projects. International Journal of Project Management, 20(3):241–246, April 2002. 25