Dinamička evolucija aspektno orijentiranih programa

Autor: Katić, Marija
Přispěvatelé: Fertalj, Krešimir
Jazyk: angličtina
Rok vydání: 2013
Předmět:
Popis: The aspect-oriented programming paradigm (AOP) has gained popularity for developing software in recent years, as it provides mechanisms to isolate orthogonal, so-called cross-cutting concerns into separate modules (i.e. parts of a program). At the same time there is an increase in the number of systems that need to provide non-interrupted and reliable service during updating. Software evolution refers to activities for software updating. Most of the existing evolving mechanisms are not dynamic, since they require the system to halt and restart before the changes take place. Therefore, there has been an increase in the research for better mechanisms in the field of dynamic software evolution recently. Although AOP concepts have been recognized as very promising approach for achieving dynamic software evolution, their application has not been completely researched yet. More importantly, there is a lack of adequate support for dynamic evolution of programs written with use of AOP i.e. aspect-oriented software. This dissertation presents a new model of dynamic evolution of aspect-oriented software. The model is based on the aspect oriented mechanisms (static and dynamic) and accounts for subsequent updates (i.e. updates in the presence of prior updates). It also includes the results of a systematic analysis taken on aspect-oriented programming features that must be considered when modelling solutions for dynamic software evolution. The goal of the model is to free a programmer of activities related to dynamic software evolution and provide possibilities for dynamic evolution through preparation of updates at the source code level. That is why the model describes four processes of dynamic software evolution: (1) identification of differences between two versions of aspect-oriented programs, (2) generation of dynamic updates, (3) analysis of dynamic updates, and (4) update deployment. Algorithms that support these processes are introduced. The realization of such a model is elaborated through a developed prototype and an evaluation on real aspect-oriented program examples. The results showed that aspect-oriented program does not need to be prepared in advance in order to be dynamically updated which means programmer can be isolated from the dynamic evolution process. On the other hand, while having control over all changes in aspect-oriented program at the source code level, an updater can control and adjust the whole process of update preparation and deployment. Furthermore, dynamic updates are not always feasible and not all program constructs can be changed easily (class definition, class hierarchy). Paradigma aspektno orijentiranog programiranja (AOP) svoju popularnost stječe zahvaljujući novim mehanizmima za specifikaciju i izolaciju ortogonalnih ponašanja dijelova programa (crosscutting concerns) u zasebne module koji se zovu aspekti. Stoga se aspektno orijentirani program sastoji od dva dijela: osnovni kod (base code) i aspektni kod (aspect code). Mehanizmi za izolaciju ortogonalnih ponašanja mogu se realizirati za vrijeme prevođenja to jest statički ili za vrijeme izvođenja programa to jest dinamički, što čini osnovnu razliku između dvije vrste aspekata. Statički aspekti upliću se u osnovni kod za vrijeme prevođenja programa, dok se dinamički aspekti upliću u osnovni kod za vrijeme izvođenja programa. Također, u posljednje vrijeme sve je veći broj sustava programske potpore koji moraju kontinuirano pružati pouzdanu uslugu. Osim bankarskih sustava, sustava za kontrolu zračnog prometa, vojnih sustava, i slično, u posljednje vrijeme sve je veći broj i online trgovina (eBay, Amazon). Isključivanje takvih sustava radi postupaka ažuriranja programa, primjerice prema novim zahtjevima korisnika, dovodi do brojnih sigurnosnih i financijskih problema. Evolucija programa je područje istraživanja koje se bavi aktivnostima koje podupiru promjene programa. Većina postojećih mehanizama za evoluciju programa su statički što znači da zahtijevaju prestanak rada i ponovno pokretanje programa. Ipak, kontinuirano pružanje pouzdane usluge prilikom statičke evolucije moguće je osigurati izgradnjom redundantne infrastrukture. S obzirom da takva izgradnja predstavlja dodatne troškove sklopovske opreme, programskih licenci i održavanja, prirodno se nameće pitanje dinamičke evolucije programa. Dinamička evolucija odnosi se na postavljanje programa na posljednju verziju bez prestanka rada. Nešto manji problem za dinamički tipizirane programske jezike (Smaltalk, Erlang), dinamičku evoluciju za statički tipizirane jezike (Java, C#) puno je teže ostvariti zbog sigurnosnih restrikcija samog modela jezika. Stoga je sve više istraživanja za boljim mehanizmima dinamičke evolucije programa za statički tipizirane jezike, uključujući i ovo istraživanje. Većina istraživanja dinamičkog ažuriranja odnosi se na programe pisane objektno-orijentiranim ili proceduralnim programskim jezicima, dok ažuriranje aspektno orijentiranih programa, to jest objektnih programa koji sadrže aspekte, nije istraženo. Iako postoje istraživanja primjene dinamičkih aspekata za dinamičko ažuriranje objektnih programa, nedostaju istraživanja primjene dinamičkih aspekata za dinamičko ažuriranje programa koji sadrže statičke aspekte. Ovaj rad predstavlja model dinamičke evolucije aspektno orijentiranih programa. Model se temelji na statičkim i dinamičkim aspektno orijentiranih mehanizmima te uzima u obzir sva buduća ažuriranja na već ažurirani program u izvođenju. Rad također uključuje i rezultate sistematske analize provedene nad svojstvima aspektno orijentiranog programiranja koja se moraju uzeti u obzir pri modeliranju rješenja dinamičke evolucije aspektno orijentiranih programa. Rad sadrži jedanaest poglavlja. Uvodno poglavlje iznosi problem dinamičke evolucije aspektno orijentiranih programa, cilj istraživanja, znanstvene doprinose te strukturu rada. Drugo poglavlje sadrži definicije i opise glavnih koncepata aspektno orijentiranog programiranja i evolucije programske potpore. Aspektno-orijentirano programiranje razmatra se s dva stajališta: koristi koje unosi u programiranje i sa stajališta realizacije mehanizama za izolaciju ortogonalnih ponašanja. Također, prikazan je konceptualni model aspektno orijentiranih programa. Evolucija programske potpore razmatra sa stajališta statičke i dinamičke evolucije. Treće poglavlje daje pregled stanja u području istraživanja dinamičke evolucije programske potpore. Dinamička evolucija razmotrena je sa stanovišta proceduralnog i objektno orijentiranog programiranja. Izneseno je nekoliko pristupa dinamičkom ažuriranju zasnovanih na aspektno orijentiranom programiranju te je za jedan od pristupa dan prikaz dinamičkih ažuriranja. Četvrto poglavlje procjenjuje načine dinamičke evolucije aspektno orijentiranih programa ovisno o statičkoj i dinamičkoj implementaciji. S obzirom da dinamički aspekti ne predstavljaju osnovni problem pri evoluciji aspektno orijentiranih programa, u ovom poglavlju dani su razlozi zašto je potrebno posebno razmotriti dinamičku evoluciju aspektno orijentiranih programa sa statičkim aspektima. Za dinamičku evoluciju programa primjenom generiranih ažuriranja temeljem verzija programa potrebno je analizirati kako evolucija osnovnog koda utječe na evoluciju aspektnog koda. Stoga su promjene programa razmotrene s obzirom na dva dijela aspektnog programa: osnovni i aspektni kod. Peto poglavlje predlaže novi model dinamičke evolucije aspektno orijentirane programske potpore. Postavlja se skup zahtjeva na model te je dan pregled faza procesa dinamičke evolucije: identifikacija promjena, generiranje ažuriranja, analiza promjena i ugradnja promjena. Budući da se komponenta za ugradnju promjena odnosi na već postojeći sustav, ugradnja promjena ukratko je opisana u ovom poglavlju. Šesto poglavlje opisuje klasifikaciju promjena aspektno orijentiranog programa, prijedlog prikaza aspektno orijentiranog programa usmjerenim grafovima te algoritme za identifikaciju promjena između dvije verzije programa. Sedmo poglavlje iznosi prijedlog opisivanja promjena između korištene i zadnje verzije programa za dinamičko ažuriranje. Promjene su prikazane kao kombinacija dinamičkih i statičkih aspekata na razini programskog koda čime se pojednostavljuje prilagođavanje sadržaja ažuriranja te zadržava struktura aspektno orijentiranog programa (osnovni kod - aspektni kod). Ovo poglavlje prikazuje i algoritam za generiranje dinamičkih ažuriranja zasnovan na usporedbi verzija programa. U osmom poglavlju razmatra se inkrementalno ažuriranje, daje prijedlog konceptualnog modela dinamičkih ažuriranja te opisuje algoritam za generiranje inkrementalnih dinamičkih ažuriranja. Deveto poglavlje opisuje prototip sustava dinamičke evolucije aspektno orijentiranih programa ugrađenog nad predloženim modelom opisanim u petom poglavlju. Prikazana je arhitektura prototipa. Deseto poglavlje prikazuje rezultate evaluacije predloženog modela dinamičke evolucije nad stvarnim aspektno orijentiranim programima. Evaluacija se sastoji od verifikacije dinamičkih ažuriranja, evaluacije jednakih mogućnosti generiranja ažuriranja bez obzira na usporedbe različitih parova verzija te vremena izvođenja najzahtjevnijih algoritama. Zaključak se osvrće na rezultate doktorskog rada, uključujući pouke, ograničenja predloženog rješenja te mogućnosti daljnjeg istraživanja.Ovaj rad iznosi model dinamičke evolucije aspektno orijentiranih programa čiji je cilj eliminacija bilo kakvih prilagodbi programa za buduća ažuriranja. Programer tijekom pisanja programa ne mora prilagođavati program za buduća ažuriranja. Dinamička ažuriranja mogu se generirati na razini programskog koda temeljem razlika između dvije verzije programa: verzije u izvođenju i najnovije verzije. Rad prikazuje algoritme koji podržavaju proces generiranja i ugradnje dinamičkih ažuriranja. Rezultati su pokazali da prikaz ažuriranja na razini programskog koda može unaprijediti ugradnju dinamičkih ažuriranja. Ažuriranja prikazana na razini programskog koda omogućuju njihovo jednostavnije pregledavanje i eventualno prilagođavanje prije same ugradnje. Rezultati također pokazuju da dinamička ažuriranja nisu uvijek jednostavno provediva. Primjerice definicije razreda ili hijerarhija razreda ne mogu se jednostavno promijeniti. S obzirom da se ovaj rad oslanja na gotovi sustav za ugradnju ažuriranja, predstavljena ažuriranja ograničena su mogućnostima korištenog sustavom. Pokazano je kako se može napraviti dinamička evolucija modula (metode, konstruktori, svojstva) sa statičkim aspektima. Iako dinamičko ažuriranje programa u odnosu na statičko može biti zanimljivo iz nekoliko razloga: eliminira redundantnu infrastrukturu te osigurava očuvanje stanja programa (sva stanja varijabli su očuvana), još nije pravi konkurent statičkom ažuriranju zbog brojnih problema realizacije koji se moraju riješiti prije nego bi se moglo koristiti u praksi.
Databáze: OpenAIRE