Download presentation
Presentation is loading. Please wait.
Published byMonica Cooper Modified over 9 years ago
1
SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS Emerson Chan Simbolon 0806334773 Fakultas Ilmu Komputer 1
2
Table of Contents Introduction Related Works Frameworks Foundation Theory – Behavior Tree – ABS – Translation Scheme Experiment Result and analysis Conclusion and Future Works 2
3
Aaaa BbbBb Ccccc Ddddd Programmer Aaaa BbBBb Cc DdBCd Consistency? Ambiguity? Correctness? Background AA Bb C Dd E What client needWhat client describe What programmer code 3
4
Aaaa BbbBb Ccccc Ddddd SOFTWARE METHODOLOGIES Programmer Aaaa BbbBb CcccC Ddddd Consistency? Ambiguity? Correctness? Background (cont) AA Bb C Dd E What client needWhat client describe What programmer code 4
5
Aaaa BbbBb Ccccc Ddddd BEHAVIOR TREE Programmer AA Bb C Dd E Consistency? Ambiguity? Correctness? Background (cont) AA Bb C Dd E What client needWhat client describe What programmer code 5
6
Motivation From design to code UML ? (e.g. http://www.altova.com/umodel/uml-code- generation.html) http://www.altova.com/umodel/uml-code- generation.html BT -> Model Checked 6
7
Related Works Formal Method Lab research – SAL Model Checker – Animation of BT Simulation Behavior Tree for Next AI Design 7
8
Tools Eclipse (IDE) TextBE (Eclipse plugin) ABS Plugin (Eclipse plugin) 8
9
Foundation Theory Behavior Tree ABS Translation Scheme 9
10
Behavior Tree 10
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 11
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 12
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 13
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 14
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) 15
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 16
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 17
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 18
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 19
20
Bounded-Buffer Problem 1. Given one buffer with size N, one producer, one consumer 2. Producer put data to buffer until M times 3. Consumer take data from buffer until M times 4. Producer put data as long as buffer not full 5. Consumer take data as long as buffer not empty 20
21
BT Representation Shown 21
22
ABS 22
23
What is ABS? Stands for Abstract Behavioral Specication Developed by HATS (http://www.hats- project.eu) in 2009 23
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 24
25
What make ABS powerful? Have 5 language-concepts that supports it to fit the needs of modeling large complex system 25
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 26
27
ABS Specification Data types Object Based Programming Concurrency model 27
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“ 28
29
Algebraic Data Types Syntax: DataTypeDecl ::= data TypeId [TypeParams] [= DataConstrList] ; TypeParams ::= DataConstrList ::= DataConstr (| DataConstr) DataConstr ::= TypeId [( [TypeList] )] Ex: data Fruit = Apple | Banana | Cherry; data Juice = Pure(Fruit) | Mixed(Juice, Juice); Mixed(Pure(Cherry),Pure(Banana)) 29
30
Parametric data type, data List = Nil | Cons(T, List ); Type Synonyms type Catalog = Map ; Functions def A head (List list) =... Pattern Matching def A head (List list) = case list { Cons(h, _) => h } 30
31
Object-Based Programming Interface Syntax: InterfaceDecl ::= interface TypeId [extends TypeName (, TypeName)] { MethSig } MethSig ::= Type Identifier ( [ParamList] ) ; ParamList ::= Param (, Param) Param ::= Type Identifier Ex: interface Empty { Unit doNothing(); } 31
32
Class Syntax: 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; } } 32
33
Module Model 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 ). 33
34
Concurrency Model Concurrency Object Groups (COG) Pong pong = new cog IPong(); Asynchronous Method Calls pong ! hi("Hello Pong"); Future Fut answerFut = pong ! hi("Hello Pong"); String answer = answerFut.get; Cooperative Multi-Tasking Fut answerFut = ping ! hi("Hello Ping"); skip; // do some processing... await answerFut?; String answer = answerFut.get; // guaranteed not to block 34
35
What is ABS? Stands to Abstract Behavioral Specication Developed by HATS (http://www.hats- project.eu) in 2009 35
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 36
37
What make ABS powerful? Have 5 language-concepts that supports it to fit the needs of modeling large complex system 37
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 38
39
ABS Specification Data types Object Based Programming Concurrency model 39
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“ 40
41
Algebraic Data Types Syntax: DataTypeDecl ::= data TypeId [TypeParams] [= DataConstrList] ; TypeParams ::= DataConstrList ::= DataConstr (| DataConstr) DataConstr ::= TypeId [( [TypeList] )] Ex: data Fruit = Apple | Banana | Cherry; data Juice = Pure(Fruit) | Mixed(Juice, Juice); Mixed(Pure(Cherry),Pure(Banana)) 41
42
Parametric data type, data List = Nil | Cons(T, List ); Type Synonyms type Catalog = Map ; Functions def A head (List list) =... Pattern Matching def A head (List list) = case list { Cons(h, _) => h } 42
43
Object-Based Programming Interface Syntax: InterfaceDecl ::= interface TypeId [extends TypeName (, TypeName)] { MethSig } MethSig ::= Type Identifier ( [ParamList] ) ; ParamList ::= Param (, Param) Param ::= Type Identifier Ex: interface Empty { Unit doNothing(); } 43
44
Class Syntax: 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; } } 44
45
Module Model 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 ). 45
46
Concurrency Model Concurrency Object Groups (COG) Pong pong = new cog IPong(); Asynchronous Method Calls pong ! hi("Hello Pong"); Future Fut answerFut = pong ! hi("Hello Pong"); String answer = answerFut.get; Cooperative Multi-Tasking Fut answerFut = ping ! hi("Hello Ping"); skip; // do some processing... await answerFut?; String answer = answerFut.get; // guaranteed not to block 46
47
Translation Scheme 47
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. 48
49
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
50
#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
51
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.
52
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?)
53
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); }
54
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); }
55
Class will be defined when we traverse the tree representation Note…
56
H 3 If the node in a tree is event or method, next state will be placed in the body of method implementation
57
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
58
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; }
59
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); }
60
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 61 While(!locked) { suspend; } Producer.lock(buffer);
62
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
63
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.
64
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 65 While(true) { if(buffer.ctr = buffer.capacity) { producer.idle; } else { break; } suspend; }
66
H 8 For a node contains tag synchronization =, we will use keyword ‘await’ or ‘suspend’
67
P.s We will focusing the translation scheme only to those mentioned feature. For those only will be used in ProducerConsumerProblem
68
Discussion Encapsulation Assignment, and statement state
69
Experiment 69
70
To Do 70 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 71
72
72
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.