fast master's defense (ua)

Post on 25-Jun-2015

65 Views

Category:

Science

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Юрій Тимчук

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

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

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

АНАЛІЗ П/З

Розробка

Оцінка

ОЦІНКА КОДУ

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

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

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

Інше…

MOOSE

FAMIX

М М М

Пакет

Клас Клас

? ??

FAMIX AST

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

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

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

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

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

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

• І більше…

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

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

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

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

#middleOf:and:ba

sum^stst

:=

sum +

a b

/

sum 2

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

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

b

a

sum

#middleOf:and:ba

sum^stst

:=

sum +

a b

/

sum 2

РЕЗУЛЬТАТ

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

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

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

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

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

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

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

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

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

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

• MIT License!

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

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

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

top related