FOSD 프로그램 큐브
FOSD program cubes![]() |
기능 지향 소프트웨어 개발에서 기능 지향 소프트웨어 개발 프로그램 큐브(FOSD 프로그램 큐브)는 n차원 제품 라인을 나타내는 기능(프로그램 변환)의 n차원 배열입니다.프로그램은 기능의 구성입니다.기본 프로그램은 기능이라고 불리는 프로그램 기능의 증분으로 인해 복잡한 프로그램을 생성합니다.SPL(소프트웨어 제품 라인)은 관련 프로그램 패밀리입니다.일반적인 제품 라인에는 기본 프로그램으로 F가 있고01, F가 있습니다.F에 추가할0 수 있는 피쳐로서 F를 선택합니다n.기능의 구성에 따라 다른 프로그램이 생성됩니다.+ 는 피쳐 합성 조작을 나타냅니다.SPL의 프로그램 P는 다음과 같은 식을 가질 수 있습니다.
P = F8 + F42 + F10 + F
즉, P는 기능1 F2, F4, F8, F 순으로 프로그램0 F를 확장합니다.
1차원 배열의 투영 및 수축 측면에서 P를 다시 주조할 수 있습니다.F = [F0..]로 하자i.F]는n 제품 라인이 사용하는 기능의 배열을 나타냅니다.F를i 투영하면 불필요한 기능이 제거되고 짧은 배열(이것을 G라고 부릅니다i)이 생성됩니다.G의i 축소는 각 G를i 특정 순서로 가산하여 스칼라식을 생성한다.P의 표현은 다음과 같습니다.
P = ( ,,, 4,) { _ { i= ( 8 ) } i
여기서 인덱스 값은 예측을 수행하고 합계는 어레이 수축입니다.이 아이디어는 다차원 제품군을 모델링하는 n차원 배열로 일반화되어 있습니다.
다차원 제품 라인
다차원 제품 라인은 여러 개의 상호 작용 [1]피쳐 세트로 설명됩니다.[2] [3] [4] 기본적인 2D 예시로 계산기의 제품군을 쉽게 만들 수 있습니다. 이 제품군은 다양한 연산을 제공합니다.다른 종류에서는 계산기에 다른 프레젠테이션 프런트 엔드를 제공할 수 있습니다.하나는 GUI가 없고, 다른 하나는 Java GUI가 있으며, 다른 하나는 Web GUI가 있습니다.이러한 차이는 상호 작용합니다.각 GUI 표현은 특정 계산기 동작을 참조하기 때문에 각 GUI 기능을 계산기 기능과 독립적으로 설계할 수 없습니다.이러한 설계는 행렬로 이어집니다. 열은 계산기 기능의 증분을 나타내며 행은 서로 다른 프리젠테이션 프런트 엔드를 나타냅니다.이러한 행렬 M은 오른쪽에 표시되어 있습니다. 열을 사용하면 기본 계산기 기능(기본값)과 옵션 로그/표기(lx) 및 삼각(td) 기능을 쌍으로 구성할 수 있습니다.행을 사용하면 프런트 엔드(코어) 없이 코어 기능을 페어링할 수 있습니다.옵션의 GUI(GUI)와 Web 베이스(Web) 프론트 엔드도 사용할 수 있습니다.
요소ij M은 열 특징 i와 행 특징 j의 상호작용을 실시한다.예를 들어 cb라는 이름의 요소는 계산기의 핵심 기능을 구현하는 기본 프로그램입니다.요소 gb는 핵심 기능을 GUI로 표시하는 코드를 추가하고 요소 wb는 웹을 통해 핵심 기능을 표시하는 코드를 추가합니다.마찬가지로 요소 ct는 핵심 계산기 기능에 삼각 코드를 추가합니다. 요소 gt 및 wt는 GUI 및 웹 프런트 엔드로 삼각 기능을 표시하는 코드를 추가합니다.
계산기는 두 가지 기능 시퀀스에 의해 고유하게 지정됩니다. 하나는 계산기 기능을 정의하고 다른 하나는 프런트 엔드를 정의합니다.예를 들어 웹 형식으로 기본 및 트리거 기능을 모두 제공하는 계산기 C는 다음과 같이 정의됩니다.
C = Mcb + Mctwb + M + Mwt = ( e , e) , ( e , d) \ _ { i= ( , ) , j = ( , ) } ij
- 주의: 각 차원은 기본 프로그램 및 기능의 집합입니다.그들의 모든 작곡이 의미 있는 것은 아니다.피쳐 모델은 피쳐의 법적 조합을 정의합니다.따라서 각 차원에는 고유한 피쳐 모델이 있습니다.한 치수를 따라 선택된 피쳐가 다른 치수를 따라 피쳐를 제외하거나 필요로 할 수 있습니다.어떤 경우에도 이러한 기능 모델은 다차원 제품 라인에서 기능의 법적 조합을 정의합니다.
큐브
일반적으로 입방체는 n차원 배열입니다.큐브의 순위는 그 차원입니다.스칼라는 랭크 0의 세제곱, 벡터는 랭크 1의 세제곱, 매트릭스는 랭크 2입니다.다음 텐서 표기법: 입방체가 가지고 있는 지수 수는 그 순위를 나타냅니다.스칼라 S는 랭크 0(인덱스 없음), V는k 벡터(랭크 1), M은ij 매트릭스(랭크 2), C는ijk 큐브(랭크 3)이다.
프로그램 큐브는 n차원 제품 라인을 나타내는 함수(프로그램 변환)의 n차원 배열입니다.큐브의 각 축에 따른 값은 기본 프로그램 또는 기본 프로그램을 상세히 기술할 수 있는 기능을 나타냅니다.제품 라인의 순위는 큐브의 순위입니다.
- 주의: 프로그램 큐브는 데이터베이스의 텐서와 데이터 큐브에서 영감을 얻습니다.주요 차이점은 데이터 큐브 요소는 큐브 축소 중에 추가된 숫자 값이고 프로그램 큐브 요소는 구성된 변환입니다.둘 다 텐서 표기법과 용어를 사용한다.
n차원 SPL 내의 프로그램은 특징 S의1 n개의 시퀀스에 의해 일의로 지정된다.Sn, 한 차원당 1개씩.프로그램의 설계는 (1) 불필요한 요소의 입방체를 투영하고 (2) 결과 kcube를 스칼라로 수축시킴으로써 형성되는 스칼라(식)이다.
P = _ } =i1...in K
프로그램 생성은 프로그램 P를 생성하기 위해 스칼라 식을 평가하고 있습니다.
입방체 설계의 흥미로운 특성은 치수가 축소되는 순서는 중요하지 않다는 것이다. 수축 중에 치수의 배열은 다른 스칼라 식(즉, 다른 프로그램 설계)을 낳지만, 모든 식은 동일한 값(프로그램)을 낳는다.예를 들어, 계산기 C를 생산하기 위한 다른 표현식(설계)은 원래의 규격과 반대 순서로 치수를 축소한다.
C = Mcb + Mwb + Mct + Mwt
또는 보다 일반적으로:
P = \_{}=i1...in K
- 주의: 기본 큐브 설계는 교환 다이어그램으로, 빈 프로그램 0에서 프로그램 P로의 경로가 기하급수적으로 존재합니다.각 경로는 큐브의 특정 축소를 나타내며 P의 고유한 증분 설계에 대응한다.이러한 경로에는 서로 다른 차원 순서를 사용하여 큐브를 축소하는 큐브 집약이 포함됩니다.
프로그램 큐브의 중요성은 SPL의 다차원 모델을 표현하고 구축하는 구조화된 방법을 제공한다는 것입니다.또한 확장 가능한 사양을 제공합니다.각 차원이 k개의 값을 갖는다면, 프로그램의 n큐브 사양은 O(kn) 큐브 요소가 아닌 O(kn) 항을 필요로 한다.일반적으로 큐브를 사용하면 복잡한 프로그램을 쉽게 지정할 수 있습니다.
적용들
표현식 문제(EP; 확장성 문제)는 새로운 클래스 및 메서드를 프로그램에 [5][6][7][8]타입 세이프 방식으로 추가할 수 있는 타입 시스템을 목표로 하는 프로그래밍 언어의 근본적인 문제입니다.이는 다차원 SPL 설계에서도 근본적인 문제입니다.이 표현 문제는 랭크2의 SPL의 예입니다.다음 응용 프로그램은 표현 문제를 설명/설명하거나 대형 프로그램의 제품군으로 확장되는 방법을 보여 줍니다.EP는 실제로는 최대 30라인의 프로그램 SPL입니다.아래의 어플리케이션에서는, 이러한 아이디어가 어떻게 30,000라인 이상의 프로그램(크기 10 증가3)으로 확장되는지를 나타내고 있습니다.
또한 FOSD 메타모델은 프로그램 큐브의 특별한 경우로 볼 수 있습니다.
레퍼런스
- ^ "Generating Product-Lines of Product-Families" (PDF).
- ^ "Refinements and Multi-Dimensional Separation of Concerns" (PDF).
- ^ "Scaling Step-Wise Refinement" (PDF).
- ^ "Evaluating Support for Features in Advanced Modularization Technologies" (PDF).
- ^ "User-defined types and procedural data structures as complementary approaches to data abstraction".
- ^ "Object-Oriented Programming versues Abstract Data Types" (PDF).
- ^ "The Expression Problem".
- ^ "Synthesizing Object-Oriented and Functional Design to Promote Re-Use".