Licencja
Methods of Detecting Spatio-Temporal Patterns in Software Development Processes
Abstrakt (PL)
W inżynierii oprogramowania antywzorce projektowe to często występujące błędne rozwiązania typowych problemów programistycznych lub architektonicznych, zwykle utożsamiane z pewnymi strukturami w kodzie źródłowym programu. Liczne analizy pokazują wpływ występowania antywzorców na wyższą liczbę błędów i większe koszty utrzymania systemu. Dlatego metody wykrywania i eliminowania antywzorców stanowią istotny kierunek badań. Większość dotychczasowych badań poświęcona była wyszukiwaniu konkretnych obszarów kodu źródłowego, które same stanowią wystąpienie określonego antywzorca. W niniejszej rozprawie natomiast wprowadzono pojęcie reguł czasowo-przestrzennych, które, między innymi, mogą być użyte do wskazania, w których rejonach kodu źródłowego mogą wystąpić antywzorce w przyszłości. Daje to możliwość przeciwdziałania powstawaniu nowych antywzorców, zanim jeszcze zostaną one wprowadzone do kodu źródłowego. Reguły czasowo-przestrzenne w procesie wytwarzania oprogramowania oparte są o pojęcia: relacji przestrzennej, która odpowiada konkretnym zależnościom wyrażonym w jawnych konstrukcjach języka oprogramowania, oraz relacji czasowej, związanej z kolejnością wprowadzania przez programistów zmian do kodu źródłowego. W rozprawie przedstawiono efektywną metodę adaptacyjnego wyliczania tych relacji w toku procesu rozwoju oprogramowania. Przydatność zaproponowanej teorii została empirycznie potwierdzona przez eksperymenty wykonane na repozytoriach kodu siedmiu systemów typu open-source.
Abstrakt (EN)
In software engineering design anti-patterns are commonly used bad solutions for a recurring problem in software design. They are frequently equated with specific structures in the program source code. Ample evidence shows a correlation between existence of anti-patterns and bad properties of the system, such as higher number of defects or higher maintenance and development costs. Therefore, methods of identifying and eliminating design anti-patterns are vital. A common approach to the problem is to find the exact areas in the source code which constitute specific anti-patterns. In this thesis we introduce the concept of spatio-temporal rules, which, among other applications, can be used to predict in which areas of the source code one can expect some anti-patterns to occur in the future. It enables one to prevent introducing new anti-patterns into the source code. Spatio-temporal rules are based on two concepts: The concept of a spatial relation, which corresponds to certain dependencies expressed by specific constructs in the programming language, and the concept of a temporal relation, which relates to the order in which changes are implemented in the source code. An efficient adaptive method of computing these relations along with the software development process is presented in the thesis. The proposed method was experimentally validated with the use of data from version control systems of a few popular open-source projects.