Tilbake til søkeresultatene

IKTPLUSS-IKT og digital innovasjon

Co-Evolution of Software Languages and Language Processors

Alternativ tittel: Koevolusjon av programvarespråk og språkverktøy

Tildelt: kr 7,2 mill.

Programvarespråk er fundamentale for utviklingen av programvare. De brukes til å uttrykke programmer, algoritmer og data på en presis og konsis måte, og brukes for kommunikasjon mellom programmør/datamaskin, datamaskin/datamaskin og programmør/programmør. I tillegg baserer all moderne programutvikling seg på at man bygger lag på lag med APIer (biblioteker eller programmeringsgrensesnitt), som i seg selv er programvarespråk og kan analyseres fra samme perspektiv. Både programvare og språk endrer og utvikler seg over tid, og lever gjerne veldig lenge. Vårt moderne samfunn er fremdeles avhengig av programvare og programvarespråk utviklet på 50- og 60-tallet, og å ikke kunne tilpasse seg endringer kan ha veldig reelle konsekvenser. For å gjøre det enklere å oppnå endring og fleksibilitet er moderne programutvikling stadig mer avhengig av avanserte utviklingsverktøy. Slike språkverktøy håndterer oversetting, formattering, editering, visualisering, analyse, migrasjon og evolusjon av programvare. Etterhvert som programvarespråkene utvikler seg og er oppdatert for å holde tritt med tiden, må man gjøre tilsvarende koevolusjonære endringer i verktøyene for at de skal holde seg oppdaterte. I dette prosjektet prøver vi å takle dette problemet, ved å utvikle teknikker og verktøy for koevolusjon av programvarespråk og språkverktøy. Vi går forbi «state of the art» med å takle et bredere spekter av endringer (inkludert semantiske endringer i språket), og et bredere spekter av språkimplementasjonsteknologi (blant annet generelle programmeringsspråk). For å oppnå dette, trenger vi en radikalt ny tilnærming. I stedet for å satse på full automatisering for veldig begrensede teknologier, bruker vi heller en blanding av teknikker, inkludert automatiske, preventative og assistive teknikker, og baserer forskingen på empiriske studier av koevolusjon i virkelige systemer. Et viktig aspekt ved utviklingsverktøy som kan assistere ved programvare(ko)evolusjon er i hvilken grad utviklerne er i stand til å benytte seg av og forstå konsekvensene av assistansen, og i hvilken grad verktøyet faktisk støtter opp om oppgaver som utviklerne trenger å utføre. Vi har derfor studert bruken og forståelsen av slike refaktoreringsverktøy blant profesjonelle programmører i industrien. Denne undersøkelsen gjøres i samarbeid med University of British Columbia, Canada. Utover dette validerer vi resultatene ved å bygge prototyper og anvende dem i case studies, og lar resultatene forme den videre forskningen, i en iterativ og inkrementell forskningsprosess.

Software languages play a fundamental role in the development of software. They are used to express programs, algorithms and data, and are used to communicate such things precisely and concisely, for both programmer/computer, computer/computer and programmer/programmer. Both software and software languages tend to change or evolve over time, and live for a long time. Modern society still relies on software and software languages developed in the 50s and 60s. As part of the effort to enable change and flexibility, modern software engineering is increasingly reliant on tool support. Such language processors deal with translating, formatting, editing, visualising, analysing, migrating and evolving software. As languages evolve, corresponding co-evolutionary changes must be made to the language processors to keep them up to date. With this project we aim to tackle this problem, by developing techniques and tools for co-evolving software languages and software language processors. We go beyond the state of the art, in tackling a wider range of changes (including semantic changes), and a wider range of implementation technology (including general-purpose languages). To achieve this, a radically new approach is needed. Instead of focusing on achieving full automation for very limited technologies, we will employ a mix of techniques, including automated, preventative and assistive techniques, and base our research on empirical studies of co-evolution in real systems. We will validate our results by building prototypes and applying them to cases, and manage risk through an iterative and incremental research process. The project will have a strong international connection to the leading research groups in software evolution, software language technology and software transformations. The PI has a long track record in language design and engineering, and has practical experience in tackling rapid language evolution.

Publikasjoner hentet fra Cristin

Ingen publikasjoner funnet

Ingen publikasjoner funnet

Aktivitet:

IKTPLUSS-IKT og digital innovasjon