FOSD origami - FOSD origami
tento článek vyžaduje pozornost odborníka na výpočetní techniku nebo informatiku.Prosince 2009) ( |
Programování zaměřené na funkce nebo Feature Oriented Software Development (FOSD) je obecným paradigmatem pro syntéza programu v softwarových produktových řadách. Přečtěte si prosím Programování zaměřené na funkce stránka, která vysvětluje, jak je model FOSD domény n-ticí funkcí 0-ary (nazývané hodnoty) a sadou 1-ary (unárních) funkcí zvaných funkce. Tato stránka pojednává o vícerozměrných zobecnění modelů FOSD, které jsou důležité pro kompaktní specifikace složitých programů.
Origami
Základní zobecnění metamodelů je origamiZákladní myšlenkou je, že design programu nemusí být reprezentován jediným výrazem; lze použít více výrazů.[1][2][3] To zahrnuje použití více ortogonálních modelů GenVoca.
- Příklad: Nechť T je model nástroje, který má funkce P (parse), H (sklizeň), D (doclet) a J (přeložit do Javy). P je hodnota a zbytek jsou unární funkce. Nástroj T1, který analyzuje soubor napsaný v jazyce jazyka Java a překládá jej do čisté Javy, je modelován pomocí: T1 = J • P. A nástroj podobný T javadocu T2 analyzuje soubor v jávském dialektu, sklízí komentáře a převádí sklizené komentáře na stránku HTML: T2 = D • H • P. Takže nástroje T1 a T2 patří mezi produkty produktové řady T.
- Jazykový model L popisuje rodinu (produktovou řadu) jávských dialektů. Zahrnuje funkce: B (Java 1.4), G (generika), S (State machines). B je hodnota a zbytek jsou unární funkce. Takže dialekt Java L1, který má generika (tj. Java 1.5), je: L1 = G • B. A dialekt Java L2, který má jazykovou podporu pro státní stroje, je: L2 = S • B. Takže dialekty L1 a L2 patří mezi produkty produktové řady L.
- Popsat nástroj podobný javadocu (E) pro dialekt Javy se stavovými automaty vyžaduje dva výrazy: ten, který definuje funkčnost nástroje pro E (pomocí modelu T) a jeho dialekt Java (pomocí modelu L):
E = D • H • P - rovnice nástroje E = S • B - rovnice jazyka
- Modely L a T jsou ortogonální modely GenVoca: jeden vyjadřuje strukturovanou strukturu nástroje E a druhý strukturovanou strukturu jeho vstupního jazyka. Všimněte si, že modely T a L opravdu jsou abstraktní v následujícím smyslu: implementace jakékoli funkce T skutečně závisí na dialektu nástroje (vyjádřeno L) a (symetricky) implementace jakékoli funkce L skutečně závisí na funkčnosti nástroje (vyjádřeno T). Jediným způsobem, jak by bylo možné implementovat E, je znalost obou rovnic T a L.
Nechť U = [U1, U2, ..., Un] být GenVoca modelem n funkcí a W = [W1, ... Žm] být modelem GenVoca m funkcí. Vztah mezi dvěma ortogonálními modely U a W je matice UW, nazývaná anMatice Origami, kde každý odpovídá prvku v U a každý sloupec odpovídá prvku v W. Vstup UWij je funkce, která implementujekombinace funkcí Ui a wj.
- Poznámka: UW je tenzorový produkt U a W (tj. UW = U × W).
- Příklad. Připomeňme modely T = [P, H, D, J] a L = [B, G, S]. Matice Origami TL je:
- kde PB je hodnota, která implementuje syntaktický analyzátor pro Javu, PG je unární funkce, která rozšiřuje syntaktický analyzátor Java tak, aby analyzoval generika, a PS je unární funkce, která rozšiřuje syntaktický analyzátor Java tak, aby analyzoval specifikace stavu stroje. HB je unární funkce, která implementuje sklízeč komentářů k Java kódu. HG je unární funkce, která implementuje kombajn komentářů k obecnému kódu, a HS je unární funkce, která implementuje kombajn komentářů ke specifikacím státního stroje atd.
Chcete-li zjistit, jak se k syntéze programu používá více rovnic, zvažte opět modely U a W. Program F je popsán dvěma rovnicemi, jednou na model. Rovnici pro F můžeme napsat dvěma různými způsoby: odkazováním na prvky podle názvu nebo podle jejich indexové polohy, například:
—U výraz F —W výraz F.
Model UW definuje, jak jsou implementovány modely U a W. Syntetizační program F zahrnuje promítání UW nepotřebných sloupců a řádků a agregaci (a.k.a. kontrakce tenzoru ):
Základní vlastnost origami matic, tzv ortogonalita, je to, že nezáleží na pořadí, v jakém jsou smluvní rozměry. Ve výše uvedené rovnici nezáleží na sčítání napříč dimenzí U (index i) jako první nebo dimenzí W (index j). Ortogonalita je samozřejmě vlastnost, kterou je třeba ověřit. Byly vyvinuty efektivní (lineární) algoritmy k ověření, že matice origami (nebo tenzory / n-dimenzionální pole) jsou ortogonální.[4] Význam ortogonality spočívá v konzistenci pohledu. Agregace (uzavírání smluv) podél určité dimenze nabízí „pohled“ na program. Různé pohledy by měly být konzistentní: pokud někdo opraví kód programu v jednom pohledu (nebo prokáže vlastnosti programu v jednom pohledu), měla by správnost těchto oprav nebo vlastností platit ve všech pohledech.
Obecně může být produkt produktové řady reprezentován n výrazy, od n ortogonální a abstraktní Modely GenVoca G.1 ... G.n. Origamimatrix (nebo krychle nebo tenzor) je n-rozměrné pole A:
Produkt H této produktové řady je vytvořen vyloučením zbytečných řádků, sloupců atd. Z A a agregací (kontrakcí) n-krychle do skaláru:
- Příklad. Vyvolejte program E a model T = [P, H, D, J]. E = D • H • P = T2• T1• T0. Podobně reprezentace E v modelu L = [B, G, S] je E = S • B = L2• L0. Syntéza E daného modelu Origami TL hodnotí následující výraz: .
Aplikace
Existuje několik aplikací produktové řady vyvinutých pomocí Origami. Mezi ně patří:
- Sada nástrojů AHEAD a rozšiřitelné předprocesory Java
- Problém s výrazem nebo problém s rozšiřitelností
- Vylepšení a vícerozměrné oddělení obav
Je třeba dodat více aplikací.