SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS Emerson Chan Simbolon 0806334773...
-
Upload
monica-cooper -
Category
Documents
-
view
214 -
download
0
Transcript of SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS Emerson Chan Simbolon 0806334773...
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