Abstract | Software maintenance requires a software update that causes unavailability during the update. Software downtime introduces costs in business processes and can negatively affect critical processes, such as the software controlling bank transactions or traffic systems. One of the solutions to provide software updating without interruption is Dynamic Software Updating (DSU). However, there are several challenges in dynamic software updating. It is necessary to detect changes between versions of the program, apply them dynamically, and ensure the program's correct operation and stable performance. Aspect programming (AOP - Aspect Oriented Programming) by cross-cutting concerns allows modification of object-oriented programs, making it convenient to describe program changes. Furthermore, dynamic AOP (DAOP) allows program changes at run time, but currently available solutions contain limitations in the form of supported changes, such as changing the class hierarchy. Meanwhile, the state correctness of the dynamically updated program can be compromised, known as the occurrence of runtime phenomena. By detecting runtime phenomena, such program states can be prevented. Furthermore, a dynamically updated program may cause performance degradation due to an additional layer that allows dynamic updating. Therefore, dynamic updating implies the need to evaluate and compare the performance in order to use solutions that minimally affect execution performance. In object-oriented programming, a class is the main construct and relationship between classes in the form of inheritance abstracts the software domain. Therefore, changes between program versions and runtime phenomena are considered from the class hierarchy perspective. Consequently, an extended DAOP model is proposed that extends the set of supported changes to class hierarchy and changes related to the class hierarchy. Furthermore, program analysis is used to detect and estimate runtime phenomena based on the changes between different program versions. In addition, the proposed methodology for performance evaluation of the various approaches is used to detect the impact on computer resources. The prototype system is developed by implementing the proposed update model with runtime phenomena detection. Prototype evaluation is performed by several experiments, validating the proposed approach in terms of efficiency, applicability, and performance. Efficiency is evaluated by generated trees, whereas open-source programs are used for empirical analysis of supported changes to evaluate applicability. Moreover, a variant of the \textit{Snake} game is developed, with two update versions used as a use case example to validate the model. As for performance evaluation, the prototype system and currently available approaches are compared using the proposed methodology implemented as a benchmark tool. |
Abstract (croatian) | Održavanje softvera zahtjeva ažuriranje softvera koje uzrokuje nedostupnost tijekom ažuriranja. Nedostupnost softvera uvodi troškove u poslovnim procesima i može negativno utjecati na kritične procese, poput softvera koji kontrolira bankovne transakcije ili sustav koji kontrolira promet. Dinamičko ažuriranje softvera (Dynamic Software Updating) jedno je od rješenja za ažuriranje softvera bez prekida rada. Međutim, postoji nekoliko izazova u dinamičkom ažuriranju softvera. Potrebno je detektirati promjene između verzija programa i primijeniti ih dinamički. Tijekom i nakon dinamičkog ažuriranja potrebno je osigurati ispravan rad programa i stabilne performance. Slijedom toga, programiranje pomoću aspekata (AOP – Aspect Oriented Programming) omogućuje horizontalnu modifikaciju objektno-orijentiranih programa, što ga čini prikladnim za opisivanje promjena programa. Nadalje, dinamički AOP (DAOP – Dynamic AOP) omogućuje promjene programa tijekom izvođenja, ali trenutno dostupna rješenja sadrže ograničenja u obliku podržanih promjena, poput promjene hijerarhije klasa. S druge strane, ispravnost stanja dinamički ažuriranog programa može biti narušena, što je poznato kao nastanak fenomena izvođenja. Detektiranjem fenomena izvođenja takva stanja se mogu spriječiti. Nadalje, dinamički ažurirani program može uzrokovati pogoršanje performanci izvođenja zbog dodatnog sloja koji omogućuje dinamičko ažuriranje. Stoga dinamičko ažuriranje podrazumijeva potrebu za evaluacijom i usporedbom performanci, kako bi se koristila rješenja koja minimalno utječu na performance izvođenja. U objektno orijentiranom programiranju klasa je glavna konstrukt i odnos između klasa u obliku nasljeđivanja predstavlja apstrakciju softverske domene. Stoga se promjene između verzija programa i fenomena izvođenja razmatraju iz perspektive hijerarhije klasa. Slijedom toga, predložen je prošireni DAOP model koji proširuje skup podržanih promjena hijerarhijom klasa i promjenama povezanim s hijerarhijom klasa. Nadalje, analiza programa koristi se za detektiranje i procjenu fenomena izvođenja na temelju promjena između različitih verzija programa. Uz to, predložena metodologija za evaluaciju performanci različitih pristupa koristi se za određivanje utjecaja na računalne resurse. Prototipni sustav razvijen je primjenom predloženog modela ažuriranja s detekcijom fenomena izvođenja. Evaluacija prototipa izvodi se u nekoliko eksperimenata, vrednujući predloženi pristup u smislu učinkovitosti, primjenjivosti i performanci. Učinkovitost se procjenjuje generiranim stablima, dok se programi otvorenog koda koriste za empirijsku analizu podržanih promjena za evaluaciju primjenjivosti. Nadalje, razvijena je inačica igre Snake, s dvije verzije ažuriranja koje se koriste kao primjer za provjeru valjanosti modela. Za evaluaciju performanci, prototipni sustav i trenutno dostupni pristupi uspoređuju se pomoću predložene metodologije koja je implementirana kao alat za mjerenje. |