Spis treści



Zaproszenie na obronę pracy doktorskiej


DZIEKAN i RADA WYDZIAŁU ELEKTROTECHNIKI, AUTOMATYKI, INFORMATYKI i INŻYNIERII BIOMEDYCZNEJ AKADEMII GÓRNICZO-HUTNICZEJ im. ST. STASZICA W KRAKOWIE
zapraszają na
publiczną dyskusję nad rozprawą doktorską

mgra Adriana Nowaka
WYKORZYSTANIE TRANSFORMACJI GRAFOWYCH DO WYKLUCZANIA KONFLIKTÓW W CZASIE REFAKTORYZACJI PROWADZONEJ W ŚRODOWISKU ROZPROSZONYM
Termin: 24 września 2013 roku o godz. 10:00
Miejsce: pawilon C-2, sala 431
Al. Mickiewicza 30, 30-059 Kraków
PROMOTOR: Dr hab. Leszek Kotulski, prof. AGH - Akademia Górniczo-Hutnicza
RECENZENCI: Dr hab. Andrzej Bielecki, prof. AGH – Akademia Górniczo-Hutnicza
Dr hab. inż. Marek Skomorowski, prof. UJ - Uniwersytet Jagielloński
Z rozprawą doktorską i opiniami recenzentów można się zapoznać
w Czytelni Biblioteki Głównej AGH, al. Mickiewicza 30



Streszczenie

Wykorzystanie transformacji grafowych do wykluczania konfliktów w czasie refaktoryzacji prowadzonej w środowisku rozproszonym

mgr Adrian Nowak

Promotor: dr hab. Leszek Kotulski, prof. nadzw. AGH
Dyscyplina: Informatyka


Złożoność systemów informatycznych, konieczność ich ciągłego rozwoju i pielęgnacji, a przy tym kwestie zapewnienia jakości i odpowiedniej wydajności pracy zespołów programistów-projektantów, powodują iż zapanowanie nad projektami oraz prowadzenie prac rozwojowych jest zadaniem bardzo trudnym. Taki stan rzeczy skłania do poszukiwania odpowiednich metodyk tworzenia i pielęgnacji oprogramowania oraz do opracowywania coraz to efektywniejszych sposobów pracy i współpracy członków zespołów, a co za tym idzie poszukiwania nowych możliwości rozwoju środowisk programistycznych. Refaktoryzacja, która z definicji ma podnosić jakość projektu, będąc podstawowym elementem takich nowoczesnych metodyk jak programowanie ekstremalne czy Scrum zakładających iteracyjne tworzenie oprogramowania, jest techniką wspomagająca zadanie pierwsze. Pozwala przygotować oprogramowanie na przyszłe rozszerzenia, czyni go łatwiejszym do analizy, pozwala wyszukać błędy czy wreszcie usprawnić programowanie. W pracy uznając refaktoryzację za kluczową technikę zdefiniowano środowisko wspomagające współpracę członków zespołów projektowych.

Podstawową motywacją w prowadzonych badaniach była obserwacja, iż oprogramowanie jest tworzone i rozwijane przez zespoły ludzi, które są najczęściej rozproszone geograficznie. Projektanci i programiści pracują na własnej kopii oprogramowania w swoim lokalnym środowisku, często nie tylko bez wiedzy o modyfikacjach wprowadzanych przez innych ale także o samych członkach zespołu. Zarządzanie wprowadzaniem równoległych zmian oraz wsparcie ludzi przeprowadzających te zmiany jest fundamentalną kwestią podczas budowy i rozbudowy złożonych systemów dużej skali. Tymczasem okazuje się, iż brak jest narzędzi wspomagających przeprowadzanie refaktoryzacji w środowisku rozproszonym przyczyniających się tym samym do redukcji kosztów jej wprowadzania. Dostępne systemy zarządzania konfiguracją (ang. Software Configuration Management - SCM) stawiając na uniwersalność, wykorzystują wyłącznie techniki łączenia tekstów przez co są niezależne od języka programowania, lecz nie są w stanie wykorzystać żadnych informacji o przekształcanej strukturze. Powoduje to, że już przy najprostszych przekształceniach refaktoryzujących wprowadzanych równolegle przez dwóch programistów (np. przesunięcie zmiennej składowej między klasami i jednoczesna zmiana jej nazwy przez inną osobę) po scaleniu techniką łączenia tekstów pojawiają się poważne problemy.

Ryzyko nakładania się zmian rośnie szczególnie podczas wykonywania refaktoryzacji za sprawą ich nieograniczonego zasięgu (poza ramy pakietów i modułów). Sytuacja komplikuje się dodatkowo, kiedy wprowadzanych zmian jest setki. Co więcej błędy wykrywane są dość późno, bowiem dopiero kiedy ostatni członek zespołu udostępnia swoje modyfikacje. Niebezpieczeństwa takie zmuszają członków zespołu do wzmożonego zaangażowania podczas procesu łączenia zmian co powoduje, że w praktyce w sposób sztuczny ogranicza się możliwość przeprowadzania refaktoryzacji lub wręcz jej zabrania. Komfort pracy w takich warunkach jest wątpliwy; zachodzi również sprzeczności takiego podejścia z paradygmatem programowania zwinnego.

W rozprawie sformułowano tezę, iż możliwe jest opracowanie metod i systemu dla automatycznego wspomagania refaktoryzacji, który:



W celu uzasadnienia tezy zaprojektowany został system rozproszony DRE -Distributed Refactoring Environment dedykowany dla wspomagania refaktoryzacji prowadzonej w środowisku rozproszonym. Nadrzędnym zadaniem systemu jest zarządzanie wprowadzaniem równoległych zmian refaktoryzujących. System musi zadbać o utrzymanie spójności oprogramowania, nawet gdy równolegle podjęte decyzje prowadzą do konfliktu. W drugiej kolejności, system musi starać się zminimalizować koszt (po stronie zespołów projektowych) rozwiązywania konfliktów, w sytuacjach gdy mechanizm synchronizacji nie będzie w stanie wykluczyć ich całkowicie. Koncepcja systemu zakłada również, że mogą występować duże odstępy czasowe pomiędzy momentem rozpoczęcia lokalnej operacji, a momentem decyzji o zatwierdzeniu wprowadzonych zmian z repozytorium (zatwierdzenia łańcuch refaktoryzacji).

W pracy wykazano, iż w oparciu o repozytorium grafowe, bazujące na EDG grafach, modyfikowane pod kontrolą opracowanej gramatyki grafowych SPO i diagramów sterujących wywodem, jesteśmy w stanie zbudować wydajne środowisko pracy dla zespołów projektantów-programistów. Zaproponowane rozwiązanie może zostać wykorzystane jako główny element nowoczesnego, zintegrowanego środowiska rozproszonego do tworzenia oprogramowania.

Wprowadzony w pracy model opisu oprogramowania jest mocniejszy opisowo niż diagramy klas UML oraz posiada potencjał rozszerzenia dla dedykowanych zastosowań. Zyskujemy przede wszystkim możliwość analizy i wnioskowania, a także ujęcia dynamiki – dzięki reprezentacji operacji na wyższym poziomie abstrakcji oraz znajomości ich semantyki, można formalne opisać modyfikacje oraz ewolucję oprogramowania.

Zaprojektowane środowisko DRE jest w stanie wykluczyć konflikty na poziomie elementarnych refaktoryzacji i zapobiegać kolizjom operacji przy równoległym wprowadzaniu łańcuchów refaktoryzacji. Okazuje się całkowicie wystarczające do eliminacji konfliktów, których przyczyną była utrat identyfikacji komponentów – pozwala rozwiązywać takie problemy w sposób automatyczny.

Wprowadzone w pracy metody synchronizacji budowania lokalnych łańcuchów refaktoryzacji z jednej strony pozwalają zachować niezależność działań zespołu, a z drugiej informują pozostałych projektantów o potencjalnych kolizjach natychmiast po zatwierdzeniu łańcucha refaktoryzacji przez jednego z nich, a nie dopiero po zakończeniu pracy przez wszystkich uczestników współbieżnej refaktoryzacji. W sytuacjach spornych środowisko zapewniać będzie szybkie informowanie oraz możliwość prowadzenia negocjacji.


Autoreferat



Pełna wersja autoreferatu AN_autoreferat.pdf



Ważniejsze publikacje autora rozprawy

- A. Nowak, M. Skrzypek, R. Schaefer „Octopus – the platform for intelligent parallel computations”, Artificial Intelligence Methods, 13-15 listopad 2002, Gliwice

- L. Kotulski, A. Nowak „Wykorzystanie gramatyk grafowych do kontroli migracji mobilnych agentów”, Inżynieria wiedzy i systemy ekspertowe, Oficyna wydawnicza Politechniki Wrocławskiej, pp 319-325, 2003, Wrocław

- L. Kotulski, A. Nowak „Graph repository as a core of environment for distributed software restructuring and refactoring”, Proceedings of the 24th IASTED International Multi-Conference Software Engineering, pp 356-360, 14-16 luty, 2006, Innsbruck, Austria

- L. Kotulski, A. Nowak „Formalizing Software Refactoring in the Distributed Environment by aedNLC Graph Grammar”, Lecture Notes CS as SET06 IFIP Conference paper, 2006, Warszawa

- L. Kotulski, A. Nowak „Refactoring Merging Environment Supported by Graph Transformations”, Proceedings of the IASTED International Multi-Conference Software Engineering, 12-14 luty, 2008, Innsbruck, Austria