FAST Master's Defense (UA)

FAST Master's Defense (UA)

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

9847702de1f7f19db8c3e158325baa8e?s=128

Yuriy Tymchuk

June 11, 2013
Tweet

Transcript

  1. РОЗШИРЕННЯ ФУНКЦІОНАЛЬНОСТІ МОДЕЛІ FAMIX ДЛЯ ПОБУДОВИ АБСТРАКТНИХ ДЕРЕВ КОДУ JAVA–

    ТА SMALLTALK–ПРОГРАМ Юрій Тимчук
  2. ПРО ЩО РОБОТА?

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

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

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

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

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

  8. MOOSE

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

  10. FAMIX AST

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

    • Виявлення дуплікації • Візуалізація (альтернативне відображення) • Перетворення між мовами • І більше…
  12. ЗАГАЛЬНА МОДЕЛЬ 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
  13. 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
  14. 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
  15. РОЗПІЗНАВАННЯ СИМВОЛІВ #middleOf:and: b a sum ^st st := sum

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

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

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

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

    SCG Bern для своїх дослідження • Prof. Tewfik Ziadi для візуалізації вихідного коду програм
  20. ДОСТУП ДО ПРОЕКТУ • MIT License! • http://www.smalltalkhub.com/#!/~YuriyTymchuk/FAST • https://github.com/Uko/FAST

    • https://ci.inria.fr/moose/job/FAST-On-Moose/