Разработка программного обеспечения, ориентированного на функции (FOSD), является общей парадигмой для генерации программного обеспечения, где модель линейки продуктов представляет собой кортеж 0-арных и 1-арных функций (преобразований программ). На этой странице обсуждается более абстрактная концепция моделей линеек продуктов (PL**2), называемых метамоделями, и линеек продуктов линеек продуктов, называемых мета-метамоделями (PL**3), а также другие абстрактные концепции.
Метамодель — это модель, экземпляры которой являются моделями. [1] Модель GenVoca линейки продуктов — это кортеж, компоненты которого являются функциями (0-арными или 1-арными функциями). Расширение (также известное как дельта или уточнение) модели — это «мета-функция», которая представляет собой кортеж дельт, которые могут изменять существующую линейку продуктов, изменяя существующие функции и добавляя новые функции. В качестве простого примера рассмотрим модель GenVoca M, которая содержит три функции ac:
Предположим, что метамодель MM содержит три метапризнака AAA-CCC, каждый из которых представляет собой кортеж с одним нетождественным признаком:
где 0 — нулевой признак. Модель M строится путем добавления метапризнаков MM, где + — операция композиции (см. FOSD ).
ММ моделирует продуктовую линейку продуктовых линеек (ПЛ**2). То есть, различные выражения ММ соответствуют моделям GenVoca различных продуктовых линеек.