Kostky programu FOSD - FOSD program cubes

v vývoj softwaru zaměřeného na funkce, kostky programu pro vývoj softwaru zaměřeného na funkce (Kostky programu FOSD) jsou n-rozměrná pole funkcí (transformace programu), která představují n-rozměrné produktové řady. A program je složení funkcí: základní program je rozšířen o přírůstky funkčnosti programu, tzv funkce, vytvořit komplexní program. A softwarová produktová řada (SPL) je skupina souvisejících programů. Typická produktová řada má F0 jako základní program a F1..Fn jako funkce, které by mohly být přidány k F0. Různé skladby funkcí přinášejí různé programy. Let + označuje operaci složení funkce. Program P v SPL může mít následující výraz:

  P = F8 + F4 + F2 + F1 + F0

To znamená, že P rozšiřuje program F0 s funkcemi F1, F2, F4a F.8 v tomto pořadí.

Můžeme přepracovat P, pokud jde o projekci a kontrakci jednorozměrného pole. Pojďme Fi = [F0 .. Fn] označuje řadu funkcí používaných produktovou řadou. Projekce Fi eliminuje nepotřebné funkce a přináší kratší pole (říkejte tomu) Gi. Kontrakce Gi součty každý Gi v určitém pořadí, čímž se získá skalární výraz. Výraz pro P se stává:

    P =  Fi

kde hodnoty indexu dosahují projekce a součtu je kontrakce pole. Tato myšlenka zobecňuje n-rozměrná pole, která modelují vícerozměrné produktové řady.

Vícerozměrné produktové řady

2-D produktová řada (nebo kostka)

A vícerozměrná produktová řada je popsán několika vzájemně se ovlivňujícími sadami funkcí.[1][2][3][4]Jako základní 2D příklad je snadné vytvořit produktovou řadu kalkulaček, kde varianty nabízejí různé sady operací. Další variace může nabídnout kalkulačkám odlišná rozhraní frontendů, jedna bez grafického uživatelského rozhraní, druhá s grafickým uživatelským rozhraním Java, třetí s webovým grafickým uživatelským rozhraním. Tyto varianty interagují: každá reprezentace grafického uživatelského rozhraní odkazuje na konkrétní operaci kalkulačky, takže každou funkci grafického uživatelského rozhraní nelze navrhnout nezávisle na její funkci kalkulačky. Takový design vede k matici: sloupce představují přírůstky funkčnosti kalkulačky a řádky představují různá rozhraní frontend. Taková matice M je zobrazena vpravo: sloupce umožňují spárování základních funkcí kalkulačky (základní) s volitelnými logaritmickými / exponenciálními (lx) a trigonometrickými (td) funkcemi. Řádky umožňují jednomu spárovat základní funkce s nofront-end (core), s volitelným grafickým uživatelským rozhraním (gui) a webovými (web) front-endy.

Prvek M.ij implementuje interakci prvku sloupce i a prvku řádku j. Například prvek s názvem cb je základní program, který implementuje základní funkce kalkulačky. Element gb přidává kód, který zobrazuje základní funkce jako GUI; element wb přidává kód, který zobrazuje základní funkce prostřednictvím webu. Podobně prvek ct přidává trigonometrický kód k funkcím základní kalkulačky; elements gt a wt přidat kód pro zobrazení trigonometrické funkce jako GUI a webové rozhraní.

Kalkulačka je jednoznačně specifikována dvěma sekvencemi funkcí: jedna sekvence definuje funkce kalkulačky, druhá front-end. Například kalkulačka C, která nabízí základní i spouštěcí funkce ve webovém formátu, je definována výrazem:

  C = Mcb + M.ct + M.wb + M.hm  =  Mij
Poznámka: Každá dimenze je souborem základních programů a funkcí. Ne všechny jejich skladby mají smysl. A celovečerní model definuje legální kombinace funkcí. Každá dimenze by tedy měla svůj vlastní model funkcí. Je možné, že vybrané prvky podél jedné dimenze mohou vylučovat nebo vyžadovat prvky podél jiných dimenzí. V každém případě tyto modely funkcí definují legální kombinace funkcí ve vícerozměrné produktové řadě.

Kostky

Obecně platí, že krychle je n-rozměrné pole. Hodnost krychle je její rozměrnost. Skalár je krychle s hodnocením 0, vektor je krychle s hodnocením 1 a matice s hodnocením 2. Následující tenzorová notace: počet indexů, které má krychle, určuje svou hodnost. Skalární S je hodnost 0 (nemá žádné indexy), Vk je vektor (hodnost1), Mij je matice (pořadí 2), Cijk je kostka (hodnost 3).

Program kostky jsou n-rozměrná pole funkcí (transformace programu), která představují n-rozměrné produktové řady. Hodnoty podél každé osy krychle označují buď základní program, nebo prvek, který by mohl zpracovat základní program. Hodnost produktové řady je hodnost její kostky.

Poznámka: programové kostky jsou inspirovány tenzory a datové kostky v databázích. Primární rozdíl je v tom, že prvky datové krychle jsou číselné hodnoty, které se přidávají během kontrakce krychle; prvky programové krychle jsou transformace, které se skládají. Oba používají tenzor notace a terminologie.

Program v n-rozměrném SPL je jednoznačně specifikován n posloupnostmi prvků S1..Sn, jeden na dimenzi design programu je skalární (výraz), který je tvořen (1) promítáním krychle jeho nepotřebných prvků a (2) kontrakcí výsledné kcube na skalární:

  P =  K.i1... in

Program generace vyhodnocuje skalární výraz, aby vytvořil program P.

Zajímavou vlastností návrhu krychle je to, že pořadí, ve kterém jsou dimenze kontrahovány, nezáleží - jakákoli permutace dimenzí během kontrakce má za následek odlišný skalární výraz (tj. Jiný design programu), ale všechny výrazy produkují stejnou hodnotu (program). Například další výraz (design) k vytvoření kalkulačky C contractdimensions v opačném pořadí, než je její původní specifikace:

  C = Mcb + M.wb + M.ct + M.hm

Nebo obecněji:

  P =  K.i1... in
Poznámka: Základní vzory krychle jsou a komutativní diagram, takový, že existuje exponenciální počet cest od prázdného programu 0 do programu P. Každá cesta označuje konkrétní kontrakci krychle a odpovídá jedinečnému přírůstkovému designu P. Mezi tyto cesty patří agregace krychlí, které kontraktují kostky pomocí různé dimenzionální objednávky.

Význam kostek programu spočívá v tom, že poskytuje strukturovaný způsob, jak vyjadřovat a vytvářet vícerozměrné modely SPL. Dále poskytuje škálovatelné specifikace. Pokud má každá dimenze hodnoty k, vyžaduje n-krychle specifikace programu podmínky O (kn), na rozdíl od O (kn) prvky krychle, které by jinak musely být identifikovány a poté složeny. Kostky obecně poskytují kompaktní způsob zadávání složitých programů.

Aplikace

The problém s výrazem (EP; aka problém rozšiřitelnosti) je zásadním problémem v programovacích jazycích zaměřených na typové systémy, které mohou do programu přidávat nové třídy a metody typově bezpečným způsobem.[5][6][7][8]Je to také zásadní problém vícerozměrného designu SPL. Problém výrazů je příkladem SPL úrovně 2. Následující aplikace buď vysvětlují / ilustrují problém výrazů, nebo ukazují, jak se přizpůsobuje produktovým řadám velkých programů. EP je opravdu SPL ~ 30 řádkových programů; níže uvedené aplikace ukazují, jak se tyto nápady rozšiřují na programy> 30 000 řádků (a 103 zvětšení velikosti).

Taky, Fosd metamodely lze považovat za speciální případy programových kostek.

Reference

  1. ^ „Generování produktových řad produktových rodin“ (PDF).
  2. ^ „Vylepšení a vícerozměrné oddělení obav“ (PDF).
  3. ^ „Škálování postupného zdokonalování“ (PDF).
  4. ^ „Hodnocení podpory funkcí v pokročilých modularizačních technologiích“ (PDF).
  5. ^ „Uživatelem definované typy a procedurální datové struktury jako doplňkové přístupy k abstrakci dat“.
  6. ^ „Objektově orientované programování versus abstraktní datové typy“ (PDF).
  7. ^ „Problém s výrazem“.
  8. ^ „Syntéza objektově orientovaného a funkčního designu na podporu opětovného použití“.