SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS Emerson Chan Simbolon 0806334773...

Preview:

Citation preview

1

SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS

Emerson Chan Simbolon0806334773

Fakultas Ilmu Komputer

2

Table of Contents

• Introduction• Related Works• Frameworks• Foundation Theory– Behavior Tree– ABS– Translation Scheme

• Experiment• Result and analysis• Conclusion and Future Works

3

Aaaa BbbBb Ccccc

Ddddd

Programmer

Aaaa BbBBb CcDdBCd

Consistency?Ambiguity?Correctness?

Background

AA Bb CDd E

What client need What client describe

What programmer code

Aaaa BbbBb Ccccc

Ddddd SOFTWARE METHODOLOGIES

Programmer

Aaaa BbbBb CcccCDdddd

Consistency?Ambiguity?Correctness?

Background (cont)

AA Bb CDd E

What client need What client describe

What programmer code4

5

Aaaa BbbBb Ccccc

Ddddd BEHAVIOR TREE

Programmer

AA Bb CDd E

Consistency?Ambiguity?Correctness?

Background (cont)

AA Bb CDd E

What client need What client describe

What programmer code

6

Motivation

• From design to code• UML ? (e.g. http

://www.altova.com/umodel/uml-code-generation.html)

• BT -> Model Checked

7

Related Works

• Formal Method Lab research– SAL Model Checker – Animation of BT Simulation

• Behavior Tree for Next AI Design

8

Tools

• Eclipse (IDE)• TextBE (Eclipse plugin)• ABS Plugin (Eclipse plugin)

9

Foundation Theory

• Behavior Tree• ABS• Translation Scheme

10

Behavior Tree

11

State

• C[s] -> …• A treatment of a component, so states means a

set of treatments that component could realize• Kind of State:– Enumeration {Cold, Hot, Warm}– Assignment (x:=2, t:=Hot)– Action (put what Food where (to) Oven)– Statement ([{}], in SetNotation that statement means

an empty Set), a statement needs formal representation

12

Selection

• C ?condition? -> … | … | …• Reflect as “If” block in programming language• A branch will be executed if satisfied the

condition (if more than one satisfied, than it will choose one branch un-deterministically)

• If none of branch satisfied, than terminated

13

Event

• C??e?? (similar with “C > e <“)• Reflects as “input” request in programming

language (approach)• Will execute sub tree below, if C meets the

event e, block if not

14

Guard

• C ??? s ??? -> …• Reflect as “While” block in programming

language• A branch will be executed if component C

realize state ‘s’ • Block the sub tree below

15

Parallel branch

• C-> (…|…|…)• Reflects as multi process in programming

language• Each sub tree run concurrently and un-

deterministically• Needs scheduling (or apparent on the BT

design)

16

Atomic Composition

• Commonly, a node is not atomic, so process between one node to next may be executed asynchronously

• C;;D ; …• Set of State realization that should be

executed simultaneously

17

Reversion

• N* ^• Reflects “Go-to” statement in programming

language, as N as the label of destination PC• Ancestor node N*, N, will be executed,

terminate sibling process

18

Synchronization

• N* =• Reflects “suspend” statement in programming

language, as N as the label of destination PC, N located in sibling process

• A node in sibling process, N, will be executed, block next statement, until it awaken

• Scheduling point to prevent starvation

19

Behavior Tree in TextBE

• Define all possibility state and event • Define tree structure

#RT R1 R1 #C C1 DOOR #S 1 Closed #C C2 USER #E 1 Push #R What C3 #C C3 BUTTON #S 1 Pushed #C C4 POWER-TUBE #S 1 Energised #C C5 OVEN #S 1 Cooking[OneMinute] #T R1 C1 1; R1 C2 1; R1 C3 1; R1 C4 1; R1 C5 1

20

Bounded-Buffer Problem

1. Given one buffer with size N, one producer, one consumer2. Producer put data to buffer until M times3. Consumer take data from buffer until M times4. Producer put data as long as buffer not full5. Consumer take data as long as buffer not empty

21

BT Representation

• Shown

22

ABS

23

What is ABS?

• Stands for Abstract Behavioral Specication• Developed by HATS (http://www.hats-

project.eu) in 2009

24

ABS as Modeling Language

• Compatible with UML• Formal & Executable• Not only modeling implementation of features,

but also feature space and dependencies among them

• Have language concepts to represent model evolution due to changing requirements

• Used to fill the gap between structural modeling language and implementation-close formalisms

25

What make ABS powerful?

• Have 5 language-concepts that supports it to fit the needs of modeling large complex system

26

Core ABS

• Object-based modeling language• Not support code reuse via class-based inheritance

(it’s supported by those other four languages)• Support user-defined data type with (non-higher-

order) functions and pattern matching• Contains non-deterministic constructs, which is not

executable (like modeling oven or train schedule) with its outcome is set of possible successor states from which one can be picked in simulation and visualization

27

ABS Specification

• Data types• Object Based Programming• Concurrency model

28

Built-in Data Types

• Unit value, Unit• Logical values, equality (==), unequality (!=),

negation (~), logical and (&&), and logical or (||)

• Numbers, ((-5+6)*4)/(2%1)• Character Sequences, "Hello" + "World“

29

Algebraic Data Types

Syntax:DataTypeDecl ::= data TypeId [TypeParams] [= DataConstrList] ;TypeParams ::= < TypeId (, TypeId) >DataConstrList ::= DataConstr (| DataConstr)DataConstr ::= TypeId [( [TypeList] )]

Ex:data Fruit = Apple | Banana | Cherry;data Juice = Pure(Fruit) | Mixed(Juice, Juice);Mixed(Pure(Cherry),Pure(Banana))

30

• Parametric data type, data List<T> = Nil | Cons(T, List<T>);

• Type Synonymstype Catalog = Map<String, Product>;

• Functionsdef A head<A>(List<A> list) = ...

• Pattern Matchingdef A head<A>(List<A> list) = case list {

Cons(h, _) => h}

31

Object-Based Programming

• InterfaceSyntax:InterfaceDecl ::= interface TypeId [extends TypeName (, TypeName)] { MethSig }MethSig ::= Type Identifier ( [ParamList] ) ;ParamList ::= Param (, Param)Param ::= Type IdentifierEx:interface Empty {

Unit doNothing();}

32

• ClassSyntax:ClassDecl ::= class TypeId [( ParamList )] [implements TypeName (, TypeName)]{ [FieldDeclList] [Block] [MethDeclList] }FieldDeclList ::= FieldDecl (, FieldDecl)FieldDecl ::= TypeId Identifier [= PureExp] ;MethDeclList ::= MethDecl (, MethDecl)MethDecl ::= Type Identifier ( ParamList ) Block

Ex:class IEmpty implements Empty {

Unit doNothing() { skip; }Unit thisIsPrivate() { skip; }

}

33

• ModuleModel in ABS, represented by .abs file

• Statement:– assignments, (xx = yy)– conditional statements, (if xx then yy, case xx)– loops (while xx),– expression (new xx),– return,– basic statement (skip, await, suspend, assert).

34

Concurrency Model• Concurrency Object Groups (COG)

Pong pong = new cog IPong();

• Asynchronous Method Callspong ! hi("Hello Pong");

• FutureFut<String> answerFut = pong ! hi("Hello Pong");String answer = answerFut.get;

• Cooperative Multi-TaskingFut<String> answerFut = ping ! hi("Hello Ping");skip; // do some processing ...await answerFut?;String answer = answerFut.get; // guaranteed not to block

35

What is ABS?

• Stands to Abstract Behavioral Specication• Developed by HATS (http://www.hats-

project.eu) in 2009

36

ABS as Modeling Language

• Compatible with UML• Formal & Executable• Not only modeling implementation of features,

but also feature space and dependencies among them

• Have language concepts to represent model evolution due to changing requirements

• Used to fill the gap between structural modeling language and implementation-close formalisms

37

What make ABS powerful?

• Have 5 language-concepts that supports it to fit the needs of modeling large complex system

38

Core ABS

• Object-based modeling language• Not support code reuse via class-based inheritance

(it’s supported by those other four languages)• Support user-defined data type with (non-higher-

order) functions and pattern matching• Contains non-deterministic constructs, which is not

executable (like modeling oven or train schedule) with its outcome is set of possible successor states from which one can be picked in simulation and visualization

39

ABS Specification

• Data types• Object Based Programming• Concurrency model

40

Built-in Data Types

• Unit value, Unit• Logical values, equality (==), unequality (!=),

negation (~), logical and (&&), and logical or (||)

• Numbers, ((-5+6)*4)/(2%1)• Character Sequences, "Hello" + "World“

41

Algebraic Data Types

Syntax:DataTypeDecl ::= data TypeId [TypeParams] [= DataConstrList] ;TypeParams ::= < TypeId (, TypeId) >DataConstrList ::= DataConstr (| DataConstr)DataConstr ::= TypeId [( [TypeList] )]

Ex:data Fruit = Apple | Banana | Cherry;data Juice = Pure(Fruit) | Mixed(Juice, Juice);Mixed(Pure(Cherry),Pure(Banana))

42

• Parametric data type, data List<T> = Nil | Cons(T, List<T>);

• Type Synonymstype Catalog = Map<String, Product>;

• Functionsdef A head<A>(List<A> list) = ...

• Pattern Matchingdef A head<A>(List<A> list) = case list {

Cons(h, _) => h}

43

Object-Based Programming

• InterfaceSyntax:InterfaceDecl ::= interface TypeId [extends TypeName (, TypeName)] { MethSig }MethSig ::= Type Identifier ( [ParamList] ) ;ParamList ::= Param (, Param)Param ::= Type IdentifierEx:interface Empty {

Unit doNothing();}

44

• ClassSyntax:ClassDecl ::= class TypeId [( ParamList )] [implements TypeName (, TypeName)]{ [FieldDeclList] [Block] [MethDeclList] }FieldDeclList ::= FieldDecl (, FieldDecl)FieldDecl ::= TypeId Identifier [= PureExp] ;MethDeclList ::= MethDecl (, MethDecl)MethDecl ::= Type Identifier ( ParamList ) Block

Ex:class IEmpty implements Empty {

Unit doNothing() { skip; }Unit thisIsPrivate() { skip; }

}

45

• ModuleModel in ABS, represented by .abs file

• Statement:– assignments, (xx = yy)– conditional statements, (if xx then yy, case xx)– loops (while xx),– expression (new xx),– return,– basic statement (skip, await, suspend, assert).

46

Concurrency Model• Concurrency Object Groups (COG)

Pong pong = new cog IPong();

• Asynchronous Method Callspong ! hi("Hello Pong");

• FutureFut<String> answerFut = pong ! hi("Hello Pong");String answer = answerFut.get;

• Cooperative Multi-TaskingFut<String> answerFut = ping ! hi("Hello Ping");skip; // do some processing ...await answerFut?;String answer = answerFut.get; // guaranteed not to block

47

Translation Scheme

48

Motivation

• BT and ABS have different semantic, but we can make a program that can be represented by both. It means also we can create BT representation from ABS manually, and we can create ABS representation given the BT manually too. We can also automated the manual approach using translation schema. In this case we use translation scheme BT to ABS, to automate ABS generation code just by giving the BT representation.

Def. Heuristic

• Approach that needs to maintain elements of BT

• Heuristic will be specified on the behavior of a node (different kind of node, different heuristic)

• Next we will called it by H

#C C1 DOOR #S 1 Closed #C C3 BUTTON #S 1 Pushed #C C4 POWER-TUBE #S 1 Energised

#C C5 OVEN #S 1 Cooking[OneMinute]

data door_data = closed_val;

data button_data = pushed_val;

data power_tube_data = energised_val;

data oven_data = cooking_val(oneminute);

Note..

There is always default value for each data, so when the data not reach one state, it must reach default state… so?

Scratch 1

H 1

For each component that only contains enumeration state, we create component by declaring it as “data” and all the possible state as its possible value.

Result from H 1

• data Door_data = Closed_val | Door_default_val;• data Button_data = Pushed_val | Button_default_val;• data Power_tube_data = Energised_val |

Power_tube_default_val;• data Waktu = OneMinute | TwoMinute | FiveMinute |

TenMinute;• data Oven_data = Cooking_val(Waktu) | Oven_default_val;

A little adjustment has been made (Why?)

H 2

• For each component that contains action will become interface, and every action will become method, all others kind of state will be implemented in its class

#C C2 USER #S 1 Push #R What C3

interface User_int{Unit push(button_data);

}

Translation result, … so far

data Door_data = Closed_val | Door_default_val;data Button_data = Pushed_val | Button_default_val;data Power_tube_data = Energised_val | Power_tube_default_val;data Waktu = OneMinute | TwoMinute | FiveMinute | TenMinute;data Oven_data = Cooking_val(Waktu) | Oven_default_val;

interface User_int{Unit push(Button_data);

}

Class will be defined when we traverse the tree representation

Note…

H 3

• If the node in a tree is event or method, next state will be placed in the body of method implementation

H 4

• For node C??E??... Next node will executed only if C meets event E, it means,,, ??E?? Will become input request… (an approach to reducing complexity of real event)

• Note: there will be adjustment in the translating result

Result from H1 – H4 (initialization)module SandBox;

data Door_data = Closed_val | Door_default_val;data Button_data = Pushed_val | Button_default_val;data Power_tube_data = Energised_val | Power_tube_default_val;data Waktu = OneMinute | TwoMinute | FiveMinute | TenMinute;data Oven_data = Cooking_val(Waktu) | Oven_default_val;interface User_int{

Unit push(Button_data button_rep);}class User_class implements User_int{

Unit push(Button_data button_var){button_var = Pushed_val;}

}

Result of BT representation (execution summary)

{Door_data door_var = Closed_val;User_int user_var = new User_class();Button_data button_var = Button_default_val;Power_tube_data power_tube_var = Power_tube_default_val;Oven_data oven_var = Oven_default_val;

Var a = ask_input;

if(a ==Pushed_val){

power_tube_var = Energised_val;oven_var= Cooking_val(OneMinute);

}

}

H 5

• For node C ???s???... It means when C reach state s, execute next node… if not, check again until C reach state s, in this case, the next node will become the body of “while” block, while the guard is a state

61

Scratch 2

While(!locked){ suspend;}

Producer.lock(buffer);

H 6

• For node C[s] -> (...)||1 ... ||m(...)• Every node after C[s] will be bounded by a

random-named method block, so we can run them non deterministically

Example

In this example, we will encapsulate all the red subtree in one method named “run” in class consumer;and encapsulate blue subtree in one method named “run” in class Producer

And in main, when we execute it, we will only Call consumer!run, and producer!run.

H 7

• For a node contains tag reversion ^, the approach is to use iteration

• a trace will help to find set of nodes (block) that need to be iterated, also to track down process that should be terminate

65

Scratch 3

While(true){ if(buffer.ctr = buffer.capacity) {

producer.idle; } else {

break; } suspend;}

H 8

• For a node contains tag synchronization =, we will use keyword ‘await’ or ‘suspend’

P.s

• We will focusing the translation scheme only to those mentioned feature. For those only will be used in ProducerConsumerProblem

Discussion

• Encapsulation• Assignment, and statement state

69

Experiment

70

To Do

• Parsing using XML from text representation• Coding & Implement the heuristic

71

Reference

• Modeling Spatial and Temporal Variability with the HATS Abstract Behavioral Modeling Language?

• Behavior Tree Notation v1.0 (2007)• The ABS Language Specification• An Automated Failure Mode and Effect

Analysis Based on High-Level Design Specification with Behavior Trees

72

Recommended