Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

FAST Master's Defense (UA)

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 20 Publicité

Plus De Contenu Connexe

Plus par Yuriy Tymchuk (12)

Plus récents (20)

Publicité

FAST Master's Defense (UA)

  1. 1. РОЗШИРЕННЯ ФУНКЦІОНАЛЬНОСТІ МОДЕЛІ FAMIX ДЛЯ ПОБУДОВИ АБСТРАКТНИХ ДЕРЕВ КОДУ JAVA– ТА SMALLTALK–ПРОГРАМ Юрій Тимчук
  2. 2. ПРО ЩО РОБОТА?
  3. 3. СТАТИЧНИЙ АНАЛІЗ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
  4. 4. НАВІЩО АНАЛІЗУВАТИ?
  5. 5. АНАЛІЗ П/З Розробка Оцінка
  6. 6. ОЦІНКА КОДУ
  7. 7. АЛЬТЕРНАТИВНЕ ПРЕДСТАВЛЕННЯ Складність системи Карта розподілу Інше…
  8. 8. MOOSE
  9. 9. FAMIX М М М Пакет Клас Клас ? ??
  10. 10. FAMIX AST
  11. 11. ПОТРЕБА У ПРОЕКТІ FAST • Обчислення метрик • Перевірка правил • Виявлення дуплікації • Візуалізація (альтернативне відображення) • Перетворення між мовами • І більше…
  12. 12. ЗАГАЛЬНА МОДЕЛЬ FAST FASTBehaviouralEntity 0..* statements 0..1 parentStatementBlock FASTStatement FASTNamedEntity name : String 0..* parameters 0..* localVariables FAMIXBehaviouralEntity0..1 fastNamedBehaviouralEntity 0..1 famixBehaviouralEntity FAMIXNamedEntity0..* 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. 13. FAST ДЛЯ SMALLTALKFASTBehaviouralEntity 0..* statements 0..1 parentStatementBlock FASTVariableExpression FASTLiteral signature : String FASTMessageSend kind selector isUnary() isBinary() isKey() cascaded() receiver() FASTStatement 0..1parentExpression 0..* arguments FASTAssignmentExpression 0..1parentAssignmentExpression 0..1variable FASTExpression 0..1 parentStatement 0..1 expression FASTArrayExpression FASTCascade 0..1parentCascade 0..* messages 0..1 parentExpression 0..1 concreteReceiver 0..1parentExpression 0..1 block FASTSmalltalkReturnStatement FASTSmalltalkExpressionStatement 0..1 parentStatement 0..1 expression 0..1parentExpression 0..1 expression FASTNamedEntity name : String 0..* parameters 0..* localVariables 0..1parentVariableExpression 0..1variable FASTBlockDefinition FAMIXBehaviouralEntity 0..1fastNamedBehaviouralEntity 0..1famixBehaviouralEntity FAMIXNamedEntity 0..*fastNamedEntities 0..1famixNamedEntity FASTNamedBehaviouralEntity name : String FASTNumberLiteral value : Number FASTCharacterLiteral value : Object FASTStringLiteral value : String FASTSymbolLiteral value : Object FASTArrayLiteral FASTByteArrayLiteral 0..*contents 0..* contents FASTBlockExpression 0..1parentExpression 0..* contents FASTBooleanLiteral value : Boolean FASTUndefinedLiteral 0..1parentExpression 0..1 receiver 0..1 parentBehaviouralEntity FAMIXInvocation 0..1messageSend 0..1invocation FASTStatementBlock 0..1 parentBehaviouralEntity 0..1 statementBlock
  14. 14. FAST ДЛЯ JAVA FASTBehaviouralEntity 0..* statements 0..1 parentStatementBlock FASTStatement FASTNamedEntity name : String0..* parameters 0..* localVariables FAMIXBehaviouralEntity 0..1fastNamedBehaviouralEntity 0..1famixBehaviouralEntity FAMIXNamedEntity 0..*fastNamedEntities 0..1famixNamedEntity FASTNamedBehaviouralEntity name : String FASTExpression 0..1 parentBehaviouralEntity StatementBlock 0..1 parentBehaviouralEntity 0..1 statementBlock FASTVariableExpression0..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. 15. РОЗПІЗНАВАННЯ СИМВОЛІВ #middleOf:and: b a sum ^stst := sum + a b / sum 2 middleOf: a and: b | sum | sum := a + b. ^ sum / 2
  16. 16. РОЗПІЗНАВАННЯ СИМВОЛІВ b a sum #middleOf:and: b a sum ^stst := sum + a b / sum 2
  17. 17. РЕЗУЛЬТАТ • Базова модель FAST, концепція створення моделей дерев коду • Повна реалізація FAST для Smalltalk • Часткова реалізація FAST для Java • Завантажувачі моделей для Smalltalk та Java • Алгоритм обч. цикломатичної складності (підтведж. для 2х мов) • Алгоритм розпізнання символів (підтведж. для 2х мов) • Прототипи алгоритмів для генерування коду на базі моделі та візуалізації моделі • Інтеграція з моделлю FAMIX • Інтеграція з інструментами середовища Moose
  18. 18. ПОДАЛЬША РОБОТА • Rafael Durelli в RMoD: генерація коду з моделі FAST • Benjamin Arezki підчас GSoC: повна реалізація FAST для Java
  19. 19. ПОДАЛЬШЕ ВИКОРИСТАННЯ • Компанія Synectique для вирішення проблем клієнтів • SCG Bern для своїх дослідження • Prof.Tewfik Ziadi для візуалізації вихідного коду програм
  20. 20. ДОСТУП ДО ПРОЕКТУ • MIT License! • http://www.smalltalkhub.com/#!/~YuriyTymchuk/FAST • https://github.com/Uko/FAST • https://ci.inria.fr/moose/job/FAST-On-Moose/

×