Program av en programvara produktlinje kan syntetiseras genom att komponera funktioner som implementerar någon enhet av programfunktionalitet. I de flesta produktlinjer är endast vissa kombinationer av funktioner meningsfulla; funktionsmodeller uttrycker de höga domänbegränsningar som styr funktionens kompatibilitet. Produktlinjeutvecklare står också inför problemet med säker sammansättning - oavsett om varje produkt som tillåts av en funktionsmodell är typsäker när den kompileras och körs. För att studera problemet med säker sammansättning presenterar vi Lightweight Feature Java (LFJ), en förlängning av Lightweight Java med stöd för funktioner. Vi definierar ett begränsningsbaserat typsystem för LFJ och bevisar dess sundhet med hjälp av en fullständig formalisering av LFJ i Coq. I LFJ innebär ljudstyrka att varje sammansättning av funktioner som uppfyller skrivbegränsningarna kommer att generera ett välformat LJ-program. Om begränsningarna i en funktionsmodell innebär dessa skrivbegränsningar är alla program som tillåts av funktionsmodellen typsäkra.
Typsystemet för Lightweight Feature Java (LFJ) REF ligger närmast vårt förslag.
A machine-checked model of safe composition
{'venue': "FOAL '09", 'journal': None, 'mag_field_of_study': ['Computer Science']}