Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FAST Master's Defense (UA)

FAST Master's Defense (UA)

A master's defense slides for a FAST meta-modeling project. (Ukrainian)

Yuriy Tymchuk

June 11, 2013
Tweet

More Decks by Yuriy Tymchuk

Other Decks in Science

Transcript

  1. ПОТРЕБА У ПРОЕКТІ FAST • Обчислення метрик • Перевірка правил

    • Виявлення дуплікації • Візуалізація (альтернативне відображення) • Перетворення між мовами • І більше…
  2. ЗАГАЛЬНА МОДЕЛЬ FAST FASTBehaviouralEntity 0..* statements 0..1 parentStatementBlock FASTStatement FASTNamedEntity

    name : String 0..* parameters 0..* localVariables FAMIXBehaviouralEntity 0..1 fastNamedBehaviouralEntity 0..1 famixBehaviouralEntity FAMIXNamedEntity 0..* fastNamedEntities 0..1 famixNamedEntity FASTNamedBehaviouralEntity name : String FASTExpression 0..1 parentBehaviouralEntity 0..1 parentExpression** 0..1 parentStatement** FASTStatementBlock 0..1 parentBehaviouralEntity 0..1 statementBlock FASTVariableExpression 0..1 parentVariableExpression 0..1 variable FASTLiteral signature : string
  3. FAST ДЛЯ SMALLTALK FASTBehaviouralEntity 0..* statements 0..1 parentStatementBlock FASTVariableExpression FASTLiteral

    signature : String FASTMessageSend kind selector isUnary() isBinary() isKey() cascaded() receiver() FASTStatement 0..1 parentExpression 0..* arguments FASTAssignmentExpression 0..1 parentAssignmentExpression 0..1 variable FASTExpression 0..1 parentStatement 0..1 expression FASTArrayExpression FASTCascade 0..1 parentCascade 0..* messages 0..1 parentExpression 0..1 concreteReceiver 0..1 parentExpression 0..1 block FASTSmalltalkReturnStatement FASTSmalltalkExpressionStatement 0..1 parentStatement 0..1 expression 0..1 parentExpression 0..1 expression FASTNamedEntity name : String 0..* parameters 0..* localVariables 0..1 parentVariableExpression 0..1 variable FASTBlockDefinition FAMIXBehaviouralEntity 0..1 fastNamedBehaviouralEntity 0..1 famixBehaviouralEntity FAMIXNamedEntity 0..* fastNamedEntities 0..1 famixNamedEntity FASTNamedBehaviouralEntity name : String FASTNumberLiteral value : Number FASTCharacterLiteral value : Object FASTStringLiteral value : String FASTSymbolLiteral value : Object FASTArrayLiteral FASTByteArrayLiteral 0..* contents 0..* contents FASTBlockExpression 0..1 parentExpression 0..* contents FASTBooleanLiteral value : Boolean FASTUndefinedLiteral 0..1 parentExpression 0..1 receiver 0..1 parentBehaviouralEntity FAMIXInvocation 0..1 messageSend 0..1 invocation FASTStatementBlock 0..1 parentBehaviouralEntity 0..1 statementBlock
  4. FAST ДЛЯ JAVA FASTBehaviouralEntity 0..* statements 0..1 parentStatementBlock FASTStatement FASTNamedEntity

    name : String 0..* parameters 0..* localVariables FAMIXBehaviouralEntity 0..1 fastNamedBehaviouralEntity 0..1 famixBehaviouralEntity FAMIXNamedEntity 0..* fastNamedEntities 0..1 famixNamedEntity FASTNamedBehaviouralEntity name : String FASTExpression 0..1 parentBehaviouralEntity StatementBlock 0..1 parentBehaviouralEntity 0..1 statementBlock FASTVariableExpression 0..1 parentVariableExpression 0..1 variable FASTLiteral signature : string FASTJavaExpressionStatement FASTJavaReturnStatement 0..1 parentStatement 0..1 expression 0..1 parentStatement 0..1 expression FASTWhileStatement 0..1 parentStatement 0..1 condition 0..1 parentStatement 0..1 body FASTVariableDeclarationStatement FASTVariableDeclarator 0..1 parentStatement 0..* declarators 0..1 variable 0..1 initializer FASTJavaIntegerLiteral FASTJavaBooleanLiteral FASTJavaStringLiteral FASTInfixOperation 0..1 parentExpression 0..1 leftOperand 0..1 parentExpression 0..1 rightOperand
  5. РОЗПІЗНАВАННЯ СИМВОЛІВ #middleOf:and: b a sum ^st st := sum

    + a b / sum 2 middleOf: a and: b | sum | sum := a + b. ^ sum / 2
  6. РЕЗУЛЬТАТ • Базова модель FAST, концепція створення моделей дерев коду

    • Повна реалізація FAST для Smalltalk • Часткова реалізація FAST для Java • Завантажувачі моделей для Smalltalk та Java • Алгоритм обч. цикломатичної складності (підтведж. для 2х мов) • Алгоритм розпізнання символів (підтведж. для 2х мов) • Прототипи алгоритмів для генерування коду на базі моделі та візуалізації моделі • Інтеграція з моделлю FAMIX • Інтеграція з інструментами середовища Moose
  7. ПОДАЛЬША РОБОТА • Rafael Durelli в RMoD: генерація коду з

    моделі FAST • Benjamin Arezki підчас GSoC: повна реалізація FAST для Java
  8. ПОДАЛЬШЕ ВИКОРИСТАННЯ • Компанія Synectique для вирішення проблем клієнтів •

    SCG Bern для своїх дослідження • Prof. Tewfik Ziadi для візуалізації вихідного коду програм