Model oceny jakości implementacji wzorców projektowych mgr inż. Rafał Wojszczyk Promotor: prof. dr hab. inż. Volodymyr Khadzhynov Promotor pomocniczy: dr inż. Piotr Ratuszniak Politechnika Koszalińska 1
Agenda 1. geneza i problem badawczy, 2. metoda oceny jakości implementacji wzorców projektowych, 3. weryfikacja, 4. wnioski i kierunki dalszych badań. 2
Geneza oprogramowanie pudełkowe Oprogramowanie Internetowe Okienkowe Dedykowane Pudełkowe ZUS, Banki Duże dla profesjonalistów Małe Microsoft Adobe Użytkowe Autorskie, dla biznesu WinRAR Total Commander Fakturowanie Zarządzanie hotelem Zarządzanie gabinetem dentystycznym. 3
Geneza kontrakt pomiędzy wytwórcą a odbiorcą Wytwórca Kontrakt Odbiorca Funkcjonalności Możliwość dalszej rozbudowy Niezależne od pracowników Możliwie łatwe modyfikacje Funkcja 1 Funkcja 2 Funkcja n Konkurencyjność Zmiany w prawie Funkcjonalności Wzorce projektowe Wzorce architektury Komponenty i biblioteki 4
Geneza realizacja kontraktu Wytwórca Odbiorca Wytwórca Wzorzec 1 Wzorzec 2 Wzorzec n Odbiorca 5
Geneza koszt rozbudowy Ingerencja w istniejący kod A1 - budowa B1 nowa funkcja C1 nowa funkcja czas A2 - budowa B2 nowa funkcja C2 nowa funkcja czas Implementacja wzorców projektowych 6
Geneza wzorzec Strategia Pochodzi z katalogu wzorców autorstwa: E. Gamma, R. Helm, R. Johnson, J. Vlissides, Inne popularne wzorce: Singleton, Polecenie, Fabryka Cel: zgrupowanie rodziny algorytmów (np. różne rodzaje sortowania) i ich zamienne wykorzystywanie 7
Geneza doświadczenie zawodowe Implementacja wzorców projektowych Początek budowy aplikacji Ingerencja w istniejący kod Rozwój aplikacji Dalszy rozwój aplikacji 2007 2010 2013 2018 Okres zatrudnienia 8
Geneza zła jakość implementacji wzorców Wytwórca Wzorzec 1 Wzorzec 2 Wzorzec n Odbiorca Implementacja wzorców projektowych Ingerencja w istniejący kod A3 - budowa B3 nowa funkcja C3 nowa funkcja Zła jakość implementacji wzorców 9
Geneza definicja jakości Jakość to stopień, w jakim moduł, system lub proces spełnia określone wymagania, potrzeby lub oczekiwania [IEEE 610] Jakość to stopień, w jakim implementacja wzorca projektowego (fragment kodu źródłowego) spełnia określone oczekiwania - redukcja kosztów rozbudowy 3. Występuje wzorzec i brak kosztów związanych z ingerencją w istniejący kod 2. Występuje wzorzec (spełnia cel) i wysokie koszty związane z ingerencją w istniejący kod 1. Brak wzorca, ale fragmenty implementacji przypominają wzorzec, pozorna implementacja 0. Brak wzorca 10
Geneza poszukiwane rozwiązanie Cechy wzorców Kod programu 3 stopień 2 stopień 1 stopień? 11
Geneza alternatywne rozwiązania Rodzaj Przykłady metod Dokładność pozwalająca na ocenę 3 stopnia jakości Modele jakości FRUPS, CUPRIMDA, ISO9126, Bohem Koszt użycia dopuszczalny w zwinnych zespołach Metryki oprogramowania CK, MOOD, R. Martin Wyszukiwanie wystąpień Weryfikacja kodu Tsantalis, Kirasić, SinghRao, Deluca, Grzanek, Rasool, Węgrzynowicz Blewit (Spine) Porównywanie do modeli Nicholson (Lepus2), Mechlitz 12
Geneza przykład metody Lepus2 Graficzna reprezentacja wzorca Polecenie zgodna z Lepus2, źródło A. H. Eden: Codecharts Wymaga obszernej dokumentacji projektowej Nie uwzględnia m. in. modyfikatorów dostępu, konwencji nazewnictwa 13
Geneza - problem Dane: kod źródłowy, miejsca występowania wzorców, szablony przykładowych wzorców Ograniczenia: paradygmat programowania obiektowego, oprogramowanie pudełkowe, wzorce z katalogu E. Gammy, brak dokumentacji projektowej, koszt użycia metody dopuszczalny w zwinnych zespołach Poszukiwana jest metoda oceny jakości implementacji wzorców projektowych? Cechy wzorców Kod programu 3 stopień 2 1 stopień stopień? 14
Geneza istotne cechy kodu i wzorców Cechy kodu programu Paradygmat programowania obiektowego: rodzaje danych, modyfikatory ogólne, modyfikatory dostępu, elementy składowe, parametry i treść metod, Paradygmat programowania obiektowego Cechy wzorców projektowych Paradygmat programowania obiektowego Własności ważne dla programistów: konwencje nazewnictwa, warianty wzorców Własności liczbowe: głębokość drzewa dziedziczenia, współczynnik ukrycia metod Cechy wzorców Mieszane reprezentacje Kod programu?? 3 2 1 stopień stopień stopień 15
Rozwiązanie Model oceny jakości implementacji wzorców projektowych Kod programu Cechy wzorców Model programu komputerowego (MP) Model wzorca projektowego (MW) Model metryk (MM) 16 Podział zgodny z ISO 9126
Teza Model wykorzystujący paradygmat programowania obiektowego do formalizacji kodu programu oraz Model programu komputerowego mieszane reprezentacje do szablonów wzorców projektowych, Model metryk umożliwia budowę metody oceny jakości implementacji wzorców projektowych, która pozwala uzyskiwać wyniki oceny z lepszą dokładnością i nie większym kosztem niż jest to możliwe przy pomocy alternatywnych metod. 17
Metoda 1 Etap budowa modelu wzorca i metryk 2 Etap budowa modelu programu 3 Etap - ocena Występuje jednorazowo Występuje wielokrotnie w trakcie każdej iteracji 18
Metoda Etap 1 budowa modelu wzorca i metryk 3? 2 1 Diagram klas wzorca Strategia 0 Model Wzorca (cechy/charakterystyki): ch 1 = (deklaracja interfejsu, M 1 ) ch 2 = (deklaracja operacji, M 2 ) ch 3 = (realizacja interfejsu, M 3 ) ch 4 = (implementacja Operacji, M 4 ) ch 5 = (kontekst implementacji, M 5 ) ch 6 = (inicjalizacja i wybór, M 6 ) Model Metryk dla charakterystyka 1 (ch 1 ): 3 jeżeli MET, brak, public, Strategy, interface m 1,1 = 2 jeżeli MET, abstract, public, Strategy, class 1 jeżeli MET, brak, public, Strategy, class 3 jeżeli MET = 1 2 jeżeli 2 MET 10 m 1,2 = 1 jeżeli MET > 11 0 jeżeli MET = 0 Gdzie: MET zbiór metod w danym typie 19
Metoda Etap 2 budowa modelu programu public abstract class SortStrategy t 1 =(Ø, Ø, MET 1, abstract, public, SortStrategy, class) { public abstract void Sort(IList collection); } met 1,1 =(PM 1,1, void, 0, CM 1,1, abstract, public, Sort) pm 1,1,1 =(Ilist, collection) public class QuickSort : SortStrategy t 2 =(Ø, Ø, MET 2, Ø, public, QuickSort, class) { public override void Sort(IList collection) {} } met 2,1 =(PM 2,1, void, 0, CM 2,1, override, public, Sort) public class BubbleSort : SortStrategy { public override void Sort(IList collection) {} } 20 t 3 =(Ø, Ø, MET 2, Ø, public, BubbleSort, class)
Metoda Etap 3 ocena Model oceny jakości implementacji wzorców projektowych t 1 =(Ø, Ø, MET 1, abstract,,) met 1,1 =(PM 1,1, void, 0, CM 1,1 ) pm 1,1 =(Ilist, collection) Model programu komputerowego (MP) t 2 =(Ø, Ø, MET 2, Ø, public,,) met 2,1 =(PM 2,1, void, 0, CM 2,1, ) t 3 =(Ø, Ø, MET 3, Ø, public,,) t 4 =(Ø, Ø, MET 4, Ø, public,,) t 5 =(Ø, Ø, MET 5, Ø, public,,) Model Wzorca (cechy/charakterystyki): ch 1 = (deklaracja interfejsu, M 1 ) Model wzorca projektowego (MW) ch 2 = (deklaracja operacji, M 2 ) ch 3 = (realizacja interfejsu, M 3 ) ch 4 = (implementacja Operacji, M 4 ) ch 5 = (kontekst implementacji, M 5 ) ch 6 = (inicjalizacja i wybór, M 6 ) Model Metryk dla charakterystyka 1 (ch 1 ): 3 jeżeli MET, brak, public,, 2 jeżeli MET, abstract, public,, m 1,1 = m 1,2 = Model 1 jeżeli MET, brak, metryk public,, 3 jeżeli MET (MM) = 1 2 jeżeli 2 MET 10 1 jeżeli MET > 11 0 jeżeli MET = 0 3 2 1 0 21
Metoda algorytm oceny Start x = 1 mp y = pnastępny element odpowiadający ch x mp y = pierwszy element odpowiadający ch x N Wylicz(ch x.metryki, mp y ) Zapisz wyniki oceny Czy ostatni element mp odpowiadaj ący ch x? T Legenda: ch x dowolna charakterystyka x numer charakterystyki mp y dowolny element z MP (jeśli x=1 to mp y = rdzeń wzorca) CH zbiór charakterystyk ch x.metryki metryki w danej ch x = x + 1 N Czy x = CH? T Stop 22
Metoda wyliczanie wyników t 1 =(Ø, Ø, MET 1, abstract, public, SortStrategy, class) 3, (MET, brak, public, Strategy, interface) m 1,1 = 2, MET, abstract, public, Strategy, class 1, MET, brak, public, Strategy, class 3, MET = 1 2, 2 MET 10 m 1,2 = 1, MET > 11 0, MET = 0 Wynik oceny (m 1,1, t 1, 2), (m 1,2, t 1, 3) IF fragment modelu programu = fragment modelu metryk THEN wynik = stopień jakości IF abstract = brak AND class = interface THEN 3 IF abstract = abstract AND class = class THEN 2 23
Metoda poprawa jakości implementacji wzorców 2 Etap budowa modelu programu 3 Etap - ocena Występuje wielokrotnie w trakcie każdej iteracji 24
Metoda - podsumowanie Model oceny jakości implementacji wzorców projektowych (MP, (MW, MM)) Wzorzec projektowy WP to zbiór charakterystyk tego wzorca: Zbiór metryk MET = {met p p = 1,, met} MP = (MO, MD, RT, SK, K, RI, T, P, W, M, ES, PM, CM, IT). MO WP= nw {abstract, = {chconst, k k new, = override, 1,, k} partial, readonly, sealed, static, virtual, unsafe, default}, Metryka met każda charakterystyka p to dwójka postaci: met ch k to trójka p = g(f postaci: m,n (x,y), IWF k,l ), gdzie: g to Program funkcja komputerowy interpretująca to zbiór wynik typów z T funkcji = {t i i = f zgodnie 1,, t}, zatem z interpretacją t i = (P i, W i, M i, 3 mo wyników i, md i, nazwa funkcji ch k i =, rt i (IWF) (nazwa ), oraz: k, EL k, kr k ), (t 2 Zbiór Zbiór i.rt funkcji elementów classoceny t i.rt F EL interface) F = P i, W i, M i Ø k to {f m,n podzbiór (x,y) m = szczegółowych 1,, rf, n=1,, if}, elementów, gdzie: rf to (t i.rt = interface) P i = Ø które liczba rodzajów, 1 (t i.rt dekomponują if to liczba = interface) M i.mo charakterystykę, funkcji, f = Ø, W i.mo m,n n-ta funkcja = Ø EL k = m-tego {el k,l rodzaju, l = 1,, x el} to Zbiór Element dowolny pól P i zawartych byt elz w i-tym t: P i = {p i,j j=1,, p}, zatem p i,j = (tp i,j, i,j, md0 i,j, nazwa i,j ) k,l to MP, dwójka y to dowolny postaci: zbiór el lub wystąpienie k,l = (nazwaz k,l, modelu met p ), Itd. referencyjnego lub funkcji matematycznych 25
Weryfikacja środowisko akademickie Student Wzorzec 1 Wzorzec 2 Wzorzec n + Strategia Student 1 3,5 rbh Student 2 5,5 rbh Student 3 7 rbh Student Wzorzec 1 Wzorzec 2 Wzorzec n + Strategia Student 1 2 rbh Student 2 4 rbh Student 3 6 rbh Zysk Średnio 28% 26
Weryfikacja środowisko komercyjne 1 Etap budowa modelu wzorca i metryk 2 Etap budowa modelu programu 3 Etap - ocena przy współpracy z Quick-Solutions, wykorzystanie metody w trakcie pracy zespołu programistów, wzorce: Polecenie, Fabryka, Singleton. Oszczędność 14 rbh (20 rbh bez użycia metody, 6 rbh po użyciu metody), Oszczędność około 20% czasu pracy jednego pracownika w jednej iteracji. 27
Koszt użycia w podziale na etapy [ujk] Weryfikacja koszt użycia 1 Etap budowa modelu wzorca i metryk Występuje jednorazowo 28 2 Proponowana metoda Spine Lepus2 2 4 0,1 Wynik proponowana metoda jest mniej kosztowna w użyciu: Symulacja kosztu użycia [ujk] 14 12 10 8 6 4 2 0 0,1 0,5 2 Etap budowa modelu programu Iteracja 1 Iteracja 2 Iteracja 3 Iteracja 4 0,8 3,1 2,2 3 Etap - ocena 45 57 % - sumaryczne zestawienie kosztów, Występuje wielokrotnie w trakcie każdej iteracji 60 61 % - symulacja użycia przez jeden rok.
Weryfikacja - dokładność Analiza porównawcza wybranych metod na przykładzie wzorców Singleton i Strategia. Wynik metoda jest dokładniejsza: Liczba ocenianych cech [szt] 25-57 % w przypadku wzorca Singleton, 30-68 % w przypadku wzorca Strategia. 30 25 20 15 10 5 Proponowana metoda Spine Lepus Mechlitz 0 Singleton Strategia 29
Wnioski Internetowe Oprogramowanie Okienkowe Obniżony koszt rozbudowy oprogramowania o 20% Dokładność większa o 25% Koszt użycia niższy o 45% Dedykowane Pudełkowe ZUS, Banki Duże dla profesjonalistów Małe Microsoft Adobe Użytkowe Autorskie, dla biznesu WinRAR Total Commander Fakturowanie Zarządzanie hotelem Zarządzanie gabinetem dentystycznym. 30
Wyniki badań 1. opracowano model dla wybranych wzorców projektowych oraz procedurę budowy nowych modeli, 2. pracowano nową metodę oceny jakości implementacji wzorców projektowych, 3. pozytywnie zweryfikowano metodę: zweryfikowano możliwość wykorzystania przez zwinny zespół wytwórczy, przynosi oszczędność w pracach programistycznych. 31
Niedostatki MP MW MM Zastosowanie wyłącznie do programów obiektowych Koszt 1 etapu budowa modelu wzorca i metryk (m 1,1, t 1, 2), (m 1,2, t 1, 3) 32
Kierunki dalszych badań Ewaluacja: nowe wzorce, inna klasa oprogramowania, automatyzacja metody i komercjalizacja, inne kryteria oceny, rozszerzenie modelu o dodatkowe reprezentacje: umożliwiające dynamiczną analizę oprogramowania (program w trakcie działania), oparte na ontologiach, rozmycie metryk, ekstrakcja wiedzy ukrytej z dobrych praktyk. 33
Wykaz publikacji 1/4 Rafał Wojszczyk, Piotr Stola, Method of quality assessment of the implementation of design patterns used in production, w: Advances in Intelligent Systems and Computing, Springer International Publishing, 2018/2019 przyjęte do druku. Rafał Wojszczyk, The Experiment with Quality Assessment Method Based on Strategy Design Pattern Example, w: Advances in Intelligent Systems and Computing, Vol. 656, strony od 103 do 112, Springer International Publishing, 2018. Rafał Wojszczyk, Quality Assessment of Implementation of Strategy Design Pattern, w: Advances in Intelligent Systems and Computing, Vol. 620, strony od 37 do 44, Springer International Publishing, 2018. Rafał Wojszczyk, Włodzimierz Khadzhynov, The Process of Verifying the Implementation of Design Patterns - Used Data Models, w: Advances in Intelligent Systems and Computing, Vol. 521, strony od 103 do 116, Springer International Publishing, 2017. 34
Wykaz publikacji 2/4 Rafał Wojszczyk, Piotr Ratuszniak, Trudności w implementacji wzorców projektowych w małych zespołach programistycznych, w: Przedsiębiorstwo we współczesnej gospodarce teoria i praktyka, no. 2/2017, strony od 189 do 201, Wydawnictwo Politechniki Gdańskiej, ISSN 2084-6495 Gdańsk 2017. Daniel Czyczyn-Egird, Rafał Wojszczyk, Determining the popularity of design patterns used by programmers based on the analysis of questions and answers on stackoverflow.com Social Network, w: Communications in Computer and Information Science, vol. 608, strony od 421 do 433, Springer International Publishing, 2016. Rafał Wojszczyk, Robert Wójcik, The Model of Quality Assessment of Implementation of Design Patterns, w: Advances in Intelligent Systems and Computing, vol. 474, strony od 515 do 524, Springer International Publishing, 2016. Rafał Wojszczyk, Włodzimierz Khadzhynov, Wykorzystanie modeli danych do weryfikacji implementacji wzorców projektowych, w: Zeszyty Naukowe Wydziału Elektroniki i Informatyki nr 10, strony od 193 do 209, Wydawnictwo Uczelniane Politechniki Koszalińskiej, ISSN 1897-7421, Koszalin 2016. 35
Wykaz publikacji 3/4 Daniel Czyczyn-Egird, Rafał Wojszczyk, Zastosowanie technik eksploracji danych na przykładzie badania popularności wzorców projektowych w serwisie społecznościowym Stackoverflow.com, w: Zeszyty Naukowe Wydziału Elektroniki i Informatyki nr 10, strony od 81 do 94, Wydawnictwo Uczelniane Politechniki Koszalińskiej, ISSN 1897-7421, Koszalin 2016. Rafał Wojszczyk, Włodzimierz Khadzhynov, Data Models in the Verification of the Singleton Pattern, w: Journal of Theoretical and Applied Computer Science, vol. 9, no. 3/2015, Szczecin 2016. Rafał Wojszczyk, Model oceny jakości implementacji wzorców projektowych w oprogramowaniu, w: Innowacje w zarządzaniu i inżynierii produkcji, Tom II, strony od 300 do 309, Oficyna Wydawnicza Polskiego Towarzystwa Zarządzania Produkcją, Opole 2016. 36 Rafał Wojszczyk, The model and function of quality assessment of implementation of design patterns, w: Applied Computer Science, Vol. 11, No. 3, strony od 45 do 56, Politechnika Lubelska, ISSN 1895-3735, Lublin 2015.
Wykaz publikacji 4/4 Rafał Wojszczyk, Weryfikacja poprawności implementacji struktury wzorców projektowych w oparciu o model referencyjny, w: Od procesów do oprogramowania: badania i praktyka, strony od 73 do 83, Zeszyty Rady Naukowej Polskiego Towarzystwa Informatycznego, ISBN 978-83-60810-73-6, Warszawa 2015. Rafał Wojszczyk, Koncepcja hybrydowej metody do oceny jakości zaimplementowanych wzorców projektowych, w: Zeszyty Naukowe Wydziału Elektroniki i Informatyki nr 7, strony od 17 do 26, Wydawnictwo Uczelniane Politechniki Koszalińskiej, ISSN 1897-7421, Koszalin 2015. Rafał Wojszczyk, Pozyskiwanie struktury obiektowej z kodu zarządzanego przy wykorzystaniu metod inżynierii odwrotnej, w: Inżynieria oprogramowania: badania i praktyka, strony od 199 do 213, Zeszyty Rady Naukowej Polskiego Towarzystwa Informatycznego, ISBN 978-83-63919-15-3, Warszawa 2014. Rafał Wojszczyk, Porównanie sposobów reprezentacji wzorców projektowych, w: Modele inżynierii teleinformatyki 9, strony od 133 do 145, Wydawnictwo Uczelniane Politechniki Koszalińskiej, ISSN 2353-6535, Koszalin 2014. Rafał Wojszczyk, Zestawienie metryk oprogramowania obiektowego opartych na statycznej analizie kodu źródłowego, w: Zarządzanie projektami i modelowanie procesów, strony od 95 do 107, Zeszyty Rady Naukowej Polskiego Towarzystwa Informatycznego, ISBN 978-83-7518-599-7, Warszawa 2013. 37
Model oceny jakości implementacji wzorców projektowych mgr inż. Rafał Wojszczyk dziękuję za uwagę 38