fast master's defense (ua)

20
РОЗШИРЕННЯ ФУНКЦІОНАЛЬНОСТІ МОДЕЛІ FAMIX ДЛЯ ПОБУДОВИ АБСТРАКТНИХ ДЕРЕВ КОДУ JAVAТА SMALLTALKПРОГРАМ Юрій Тимчук

Upload: yuriy-tymchuk

Post on 25-Jun-2015

65 views

Category:

Science


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: FAST Master's Defense (UA)

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

Юрій Тимчук

Page 2: FAST Master's Defense (UA)

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

Page 3: FAST Master's Defense (UA)

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

Page 4: FAST Master's Defense (UA)

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

Page 5: FAST Master's Defense (UA)

АНАЛІЗ П/З

Розробка

Оцінка

Page 6: FAST Master's Defense (UA)

ОЦІНКА КОДУ

Page 7: FAST Master's Defense (UA)

АЛЬТЕРНАТИВНЕ ПРЕДСТАВЛЕННЯ

Складністьсистеми

Картарозподілу

Інше…

Page 8: FAST Master's Defense (UA)

MOOSE

Page 9: FAST Master's Defense (UA)

FAMIX

М М М

Пакет

Клас Клас

? ??

Page 10: FAST Master's Defense (UA)

FAMIX AST

Page 11: FAST Master's Defense (UA)

ПОТРЕБА У ПРОЕКТІ FAST

• Обчислення метрик

• Перевірка правил

• Виявлення дуплікації

• Візуалізація (альтернативне відображення)

• Перетворення між мовами

• І більше…

Page 12: FAST Master's Defense (UA)

ЗАГАЛЬНА МОДЕЛЬ FAST

FASTBehaviouralEntity

0..*statements

0..1parentStatementBlock

FASTStatement

FASTNamedEntity

name : String0..*

parameters

0..*localVariables

FAMIXBehaviouralEntity0..1fastNamedBehaviouralEntity

0..1

famixBehaviouralEntity

FAMIXNamedEntity0..*fastNamedEntities

0..1famixNamedEntity

FASTNamedBehaviouralEntity

name : String

FASTExpression

0..1parentBehaviouralEntity

0..1parentExpression**

0..1parentStatement**

FASTStatementBlock

0..1parentBehaviouralEntity

0..1statementBlock

FASTVariableExpression

0..1parentVariableExpression

0..1variable

FASTLiteral

signature : string

Page 13: FAST Master's Defense (UA)

FAST ДЛЯ SMALLTALK

FASTBehaviouralEntity

0..*statements

0..1parentStatementBlock

FASTVariableExpression FASTLiteral

signature : String

FASTMessageSend

kindselector

isUnary()isBinary()isKey()cascaded()receiver()

FASTStatement

0..1parentExpression

0..*arguments

FASTAssignmentExpression

0..1parentAssignmentExpression

0..1variable

FASTExpression

0..1parentStatement 0..1

expression

FASTArrayExpression FASTCascade

0..1parentCascade

0..*messages

0..1

parentExpression

0..1

concreteReceiver

0..1parentExpression

0..1block

FASTSmalltalkReturnStatement

FASTSmalltalkExpressionStatement

0..1parentStatement 0..1

expression

0..1parentExpression

0..1

expression

FASTNamedEntity

name : String0..*

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..1receiver

0..1parentBehaviouralEntity

FAMIXInvocation

0..1messageSend

0..1invocation

FASTStatementBlock

0..1parentBehaviouralEntity

0..1statementBlock

Page 14: FAST Master's Defense (UA)

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..1parentBehaviouralEntity StatementBlock

0..1parentBehaviouralEntity

0..1

statementBlock

FASTVariableExpression0..1parentVariableExpression

0..1variable

FASTLiteral

signature : string

FASTJavaExpressionStatement

FASTJavaReturnStatement

0..1parentStatement

0..1expression

0..1parentStatement

0..1expression

FASTWhileStatement

0..1

parentStatement

0..1condition

0..1parentStatement

0..1body

FASTVariableDeclarationStatement

FASTVariableDeclarator0..1

parentStatement

0..*

declarators0..1variable

0..1

initializer

FASTJavaIntegerLiteral FASTJavaBooleanLiteral FASTJavaStringLiteral

FASTInfixOperation 0..1

parentExpression

0..1leftOperand

0..1parentExpression

0..1rightOperand

Page 15: FAST Master's Defense (UA)

РОЗПІЗНАВАННЯ СИМВОЛІВ

#middleOf:and:ba

sum^stst

:=

sum +

a b

/

sum 2

middleOf: a and: b | sum | sum := a + b. ^ sum / 2

Page 16: FAST Master's Defense (UA)

РОЗПІЗНАВАННЯ СИМВОЛІВ

b

a

sum

#middleOf:and:ba

sum^stst

:=

sum +

a b

/

sum 2

Page 17: FAST Master's Defense (UA)

РЕЗУЛЬТАТ

• Базова модель FAST, концепція створення моделей дерев коду• Повна реалізація FAST для Smalltalk• Часткова реалізація FAST для Java• Завантажувачі моделей для Smalltalk та Java• Алгоритм обч. цикломатичної складності (підтведж. для 2х мов)• Алгоритм розпізнання символів (підтведж. для 2х мов)• Прототипи алгоритмів для генерування коду на базі моделі та візуалізації моделі

• Інтеграція з моделлю FAMIX• Інтеграція з інструментами середовища Moose

Page 18: FAST Master's Defense (UA)

ПОДАЛЬША РОБОТА

• Rafael Durelli в RMoD: генерація коду з моделі FAST

• Benjamin Arezki підчас GSoC: повна реалізація FAST для Java

Page 19: FAST Master's Defense (UA)

ПОДАЛЬШЕ ВИКОРИСТАННЯ

• Компанія Synectique для вирішення проблем клієнтів

• SCG Bern для своїх дослідження

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

Page 20: FAST Master's Defense (UA)

ДОСТУП ДО ПРОЕКТУ

• MIT License!

• http://www.smalltalkhub.com/#!/~YuriyTymchuk/FAST

• https://github.com/Uko/FAST

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