Jump to content

Кермет

Kermeta — язык моделирования и программирования. [1] для разработки метамоделей .

Язык Кермета был инициирован Франком Флери в 2005 году в рамках Трискелла команды IRISA (объединившей исследователей INRIA , CNRS , INSA и Университета Ренна 1).

Язык Kermeta заимствует концепции из таких языков, как MOF , OCL и QVT , а также из BasicMTL, языка преобразования моделей, реализованного в 2004 году в команде Triskell Д. Войтишеком и Ф. Фондементом. Он также вдохновлен предыдущим опытом работы с MTL, первым языком трансформации, созданным Triskell, и языком действий Xion для UML .

Название Kermeta является аббревиатурой от «Метамоделирование ядра» и отражает тот факт, что язык задуман как ядро ​​для (мета)моделирования. Созвучие этого имени на бретонском языке является намеренным отражением местоположения команды Трискелла в Бретани.

Kermeta и ее платформа выполнения под Eclipse в настоящее время доступны в версии 2.0.4. [2] выпущен в 2012 году. Он с открытым исходным кодом , под лицензией Eclipse Public License .

Философия

[ редактировать ]

Kermeta — это язык моделирования и аспектно-ориентированного программирования . Его базовая метамодель соответствует стандарту EMOF . Он предназначен для написания программ, которые также являются моделями, для написания преобразований моделей (программ, преобразующих одну модель в другую), для написания ограничений на эти модели и для их выполнения. Цель этого модельного подхода состоит в том, чтобы добавить дополнительный уровень абстракции поверх уровня «объекта» и, таким образом, рассматривать данную систему как набор концепций (и экземпляров концепций), которые образуют явно связное целое, которое можно будет позвоните модели.

Таким образом, Кермета приносит:

  • все концепции EMOF, используемые для спецификации модели.
  • реальная концепция модели, точнее типа модели (Джим Стил).
  • конкретный синтаксис, который хорошо подходит для написания моделей и метамоделей.
  • две парадигмы: объект и модель.
  • мост к Eclipse ECore формализму

Характеристики

[ редактировать ]

Основными характеристиками языка кермета являются:

  • императив : традиционные структуры контроля
  • объектно-ориентированный : множественное наследование, позднее связывание
  • модельно-ориентированный : первоклассные концепции ассоциаций и композиции
  • аспектно-ориентированный : интегрируйте простой, но мощный ткач для простых задач метамоделирования. Произвольное сложное плетение достигается с помощью специального композитора, написанного на кермете. Это позволяет программистам расширять существующие метамодели. Специально для того, чтобы добавить к ним поведение, вплетая поведенческую семантику (операционную или трансляционную).
  • проектирование по контракту : операции поддерживают пред- и пост-условия, классы используют инварианты.
  • функционал : функции и лямбда-выражения первого класса
  • статически типизированный: универсальность классов и операций, типов функций...
  • полный самоанализ : полная модель программы доступна во время выполнения.

Синтаксис

[ редактировать ]

Любопытный читатель найдет дополнительную информацию на сайте Kermeta .

Пример (Кермета 1.4)

[ редактировать ]
 package fsm;
 
 require kermeta
 
 using kermeta::standard
 
 class FSM
 {
    attribute ownedState : set State[0..*]#owningFSM
    reference initialState : State[1..1] 
    reference currentState : State 
 
    /**
     * Print the FSM on the standard output
     */
    operation printFSM() is do
        self.ownedState.each 
        { s | 
            stdio.writeln("State : " + s.name)
            s.outgoingTransition.each 
            { t | 
                stdio.writeln("  Transition : " + t.source.name + 
                "-(" + t.input + "/" + t.output + ")->" + t.target.name)
            }
        }
    end
 }
 
 class State {
    attribute name : String
    reference owningFSM : FSM#ownedState
    attribute outgoingTransition : set Transition[0..*]#source
    reference incomingTransition : set Transition[0..*]#target
    
    operation step(c : String) : String is do
        // Get the valid transitions
        var validTransitions : Collection<Transition> 
        validTransitions :=    outgoingTransition.select { t | t.input.equals(c) }
        // Check if there is one and only one valid transition
        if validTransitions.empty then raise "No Transition!" end
        if validTransitions.size > 1 then raise "Non Determinism" end
        // fire the transition
        result := validTransitions.one.fire
    end
 }
 
 class Transition 
 {
    reference source : State[1..1]#outgoingTransition
    reference target : State[1..1]#incomingTransition
    attribute output : String
    attribute input : String
    
    operation fire() : String is do
        // update FSM current state
        source.owningFSM.currentState := target
        result := output
    end
 }

См. также

[ редактировать ]
  1. ^ Мюллер, Пьер-Ален; Флери, Франк; Жезекель, Жан-Марк (2005). «Вплетение исполняемости в объектно-ориентированные метаязыки» . Языки и системы инженерного моделирования, управляемые моделями . Конспекты лекций по информатике. Том. 3713. стр. 264–278. дои : 10.1007/11557432_19 . ISBN  978-3-540-29010-0 . S2CID   2824834 .
  2. ^ Войтисек, Дидье. «Выпущена версия 2.0.4!» . Проверено 3 декабря 2012 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 578eb28c7287c53f90c1385082cb37f4__1693893660
URL1:https://arc.ask3.ru/arc/aa/57/f4/578eb28c7287c53f90c1385082cb37f4.html
Заголовок, (Title) документа по адресу, URL1:
Kermeta - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)