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. РОЗШИРЕННЯ ФУНКЦІОНАЛЬНОСТІ МОДЕЛІ
    FAMIX ДЛЯ ПОБУДОВИ АБСТРАКТНИХ
    ДЕРЕВ КОДУ JAVA– ТА SMALLTALK–ПРОГРАМ
    Юрій Тимчук

    View full-size slide

  2. ПРО ЩО РОБОТА?

    View full-size slide

  3. СТАТИЧНИЙ АНАЛІЗ
    ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

    View full-size slide

  4. НАВІЩО АНАЛІЗУВАТИ?

    View full-size slide

  5. АНАЛІЗ П/З
    Розробка
    Оцінка

    View full-size slide

  6. ОЦІНКА КОДУ

    View full-size slide

  7. АЛЬТЕРНАТИВНЕ
    ПРЕДСТАВЛЕННЯ
    Складність
    системи
    Карта
    розподілу
    Інше…

    View full-size slide

  8. FAMIX
    М М М
    Пакет
    Клас Клас
    ? ?
    ?

    View full-size slide

  9. ПОТРЕБА У ПРОЕКТІ FAST
    • Обчислення метрик
    • Перевірка правил
    • Виявлення дуплікації
    • Візуалізація (альтернативне відображення)
    • Перетворення між мовами
    • І більше…

    View full-size slide

  10. ЗАГАЛЬНА МОДЕЛЬ 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

    View full-size slide

  11. 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

    View full-size slide

  12. 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

    View full-size slide

  13. РОЗПІЗНАВАННЯ СИМВОЛІВ
    #middleOf:and:
    b
    a
    sum
    ^st
    st
    :=
    sum +
    a b
    /
    sum 2
    middleOf: a and: b
    | sum |
    sum := a + b.
    ^ sum / 2

    View full-size slide

  14. РОЗПІЗНАВАННЯ СИМВОЛІВ
    b
    a
    sum
    #middleOf:and:
    b
    a
    sum
    ^st
    st
    :=
    sum +
    a b
    /
    sum 2

    View full-size slide

  15. РЕЗУЛЬТАТ
    • Базова модель FAST, концепція створення моделей дерев коду
    • Повна реалізація FAST для Smalltalk
    • Часткова реалізація FAST для Java
    • Завантажувачі моделей для Smalltalk та Java
    • Алгоритм обч. цикломатичної складності (підтведж. для 2х мов)
    • Алгоритм розпізнання символів (підтведж. для 2х мов)
    • Прототипи алгоритмів для генерування коду на базі моделі та
    візуалізації моделі
    • Інтеграція з моделлю FAMIX
    • Інтеграція з інструментами середовища Moose

    View full-size slide

  16. ПОДАЛЬША РОБОТА
    • Rafael Durelli в RMoD: генерація коду з моделі FAST
    • Benjamin Arezki підчас GSoC: повна реалізація FAST для Java

    View full-size slide

  17. ПОДАЛЬШЕ ВИКОРИСТАННЯ
    • Компанія Synectique для вирішення проблем клієнтів
    • SCG Bern для своїх дослідження
    • Prof. Tewfik Ziadi для візуалізації вихідного коду програм

    View full-size slide

  18. ДОСТУП ДО ПРОЕКТУ
    • MIT License!
    • http://www.smalltalkhub.com/#!/~YuriyTymchuk/FAST
    • https://github.com/Uko/FAST
    • https://ci.inria.fr/moose/job/FAST-On-Moose/

    View full-size slide