Presentation is loading. Please wait.

Presentation is loading. Please wait.

SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS Emerson Chan Simbolon 0806334773 Fakultas Ilmu Komputer 1.

Similar presentations


Presentation on theme: "SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS Emerson Chan Simbolon 0806334773 Fakultas Ilmu Komputer 1."— Presentation transcript:

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


Download ppt "SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS Emerson Chan Simbolon 0806334773 Fakultas Ilmu Komputer 1."

Similar presentations


Ads by Google