Simulation of software requirement in behaviour tree using abs
Download
1 / 72

SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS - PowerPoint PPT Presentation


  • 71 Views
  • Uploaded on

SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS. Emerson Chan Simbolon 0806334773 Fakultas Ilmu Komputer. Table of Contents. Introduction Related Works Frameworks Foundation Theory Behavior Tree ABS Translation Scheme Experiment Result and analysis

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS' - nami


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Simulation of software requirement in behaviour tree using abs

SIMULATION OF SOFTWARE REQUIREMENT IN BEHAVIOUR TREE USING ABS

Emerson Chan Simbolon

0806334773

FakultasIlmuKomputer


Table of contents
Table of Contents ABS

  • Introduction

  • Related Works

  • Frameworks

  • Foundation Theory

    • Behavior Tree

    • ABS

    • Translation Scheme

  • Experiment

  • Result and analysis

  • Conclusion and Future Works


Background
Background ABS

What client need

What client describe

Programmer

AA Bb CDd E

AaaaBbbBbCccccDdddd

AaaaBbBBb CcDdBCd

Consistency?

Ambiguity?

Correctness?

What programmer code


Background cont
Background ( ABScont)

What client need

What client describe

SOFTWARE METHODOLOGIES

Programmer

AA Bb CDd E

AaaaBbbBbCccccDdddd

AaaaBbbBbCcccCDdddd

Consistency?

Ambiguity?

Correctness?

What programmer code


Background cont1
Background ( ABScont)

What client need

What client describe

BEHAVIOR TREE

Programmer

AA Bb CDd E

AaaaBbbBbCccccDdddd

AA Bb CDd E

Consistency?

Ambiguity?

Correctness?

What programmer code


Motivation
Motivation ABS

  • From design to code

  • UML ? (e.g. http://www.altova.com/umodel/uml-code-generation.html)

  • BT -> Model Checked


Related works
Related Works ABS

  • Formal Method Lab research

    • SAL Model Checker

    • Animation of BT Simulation

  • Behavior Tree for Next AI Design


Tools
Tools ABS

  • Eclipse (IDE)

  • TextBE (Eclipse plugin)

  • ABS Plugin (Eclipse plugin)


Foundation theory
Foundation Theory ABS

  • Behavior Tree

  • ABS

  • Translation Scheme



State
State ABS

  • 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


Selection
Selection ABS

  • 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


Event
Event ABS

  • 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


Guard
Guard ABS

  • 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


Parallel branch
Parallel branch ABS

  • C-> (…|…|…)

  • Reflects as multi process in programming language

  • Each sub tree run concurrently and un-deterministically

  • Needs scheduling (or apparent on the BT design)


Atomic composition
Atomic Composition ABS

  • 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


Reversion
Reversion ABS

  • 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


Synchronization
Synchronization ABS

  • 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


Behavior tree in textbe
Behavior Tree in ABSTextBE

  • 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


Bounded buffer problem
Bounded-Buffer Problem ABS

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



ABS ABS


What is abs
What is ABS? ABS

  • Stands for Abstract Behavioral Specication

  • Developed by HATS (http://www.hats-project.eu) in 2009


Abs as modeling language
ABS as Modeling Language ABS

  • 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


What make abs powerful
What make ABS powerful? ABS

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


Core abs
Core ABS 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


Abs specification
ABS Specification ABS

  • Data types

  • Object Based Programming

  • Concurrency model


Built in data types
Built-in Data Types ABS

  • Unit value, Unit

  • Logical values, equality (==), unequality (!=), negation (~), logical and (&&), and logical or (||)

  • Numbers, ((-5+6)*4)/(2%1)

  • Character Sequences, "Hello" + "World“


Algebraic data types
Algebraic Data Types ABS

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))


  • Parametric data type, ABS

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

  • Type Synonyms

    type Catalog = Map<String, Product>;

  • Functions

    def A head<A>(List<A> list) = ...

  • Pattern Matching

    def A head<A>(List<A> list) = case list {

    Cons(h, _) => h

    }


Object based programming
Object-Based Programming ABS

  • Interface

    Syntax:

    InterfaceDecl ::= interface TypeId [extends TypeName (, TypeName)] { MethSig }

    MethSig ::= Type Identifier ( [ParamList] ) ;

    ParamList ::= Param (, Param)

    Param ::= Type Identifier

    Ex:

    interface Empty {

    Unit doNothing();

    }


  • Class ABS

    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; }

    }


  • Module ABS

    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).


Concurrency model
Concurrency Model ABS

  • Concurrency Object Groups (COG)

    Pong pong = new cog IPong();

  • Asynchronous Method Calls

    pong ! hi("Hello Pong");

  • Future

    Fut<String> answerFut = pong ! hi("Hello Pong");

    String answer = answerFut.get;

  • Cooperative Multi-Tasking

    Fut<String> answerFut = ping ! hi("Hello Ping");

    skip; // do some processing ...

    await answerFut?;

    String answer = answerFut.get; // guaranteed not to block


What is abs1
What is ABS? ABS

  • Stands to Abstract Behavioral Specication

  • Developed by HATS (http://www.hats-project.eu) in 2009


Abs as modeling language1
ABS as Modeling Language ABS

  • 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


What make abs powerful1
What make ABS powerful? ABS

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


Core abs1
Core ABS 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


Abs specification1
ABS Specification ABS

  • Data types

  • Object Based Programming

  • Concurrency model


Built in data types1
Built-in Data Types ABS

  • Unit value, Unit

  • Logical values, equality (==), unequality (!=), negation (~), logical and (&&), and logical or (||)

  • Numbers, ((-5+6)*4)/(2%1)

  • Character Sequences, "Hello" + "World“


Algebraic data types1
Algebraic Data Types ABS

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))


  • Parametric data type, ABS

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

  • Type Synonyms

    type Catalog = Map<String, Product>;

  • Functions

    def A head<A>(List<A> list) = ...

  • Pattern Matching

    def A head<A>(List<A> list) = case list {

    Cons(h, _) => h

    }


Object based programming1
Object-Based Programming ABS

  • Interface

    Syntax:

    InterfaceDecl ::= interface TypeId [extends TypeName (, TypeName)] { MethSig }

    MethSig ::= Type Identifier ( [ParamList] ) ;

    ParamList ::= Param (, Param)

    Param ::= Type Identifier

    Ex:

    interface Empty {

    Unit doNothing();

    }


  • Class ABS

    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; }

    }


  • Module ABS

    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).


Concurrency model1
Concurrency Model ABS

  • Concurrency Object Groups (COG)

    Pong pong = new cog IPong();

  • Asynchronous Method Calls

    pong ! hi("Hello Pong");

  • Future

    Fut<String> answerFut = pong ! hi("Hello Pong");

    String answer = answerFut.get;

  • Cooperative Multi-Tasking

    Fut<String> answerFut = ping ! hi("Hello Ping");

    skip; // do some processing ...

    await answerFut?;

    String answer = answerFut.get; // guaranteed not to block



Motivation1
Motivation ABS

  • 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
Def. Heuristic ABS

  • 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


Note.. ABS

Scratch 1

#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);

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


H 1 ABS

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
Result from H 1 ABS

  • 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 ABS

  • 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
Translation result, … so far ABS

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);

}


Note… ABS

Class will be defined when we traverse the tree representation


H 3 ABS

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


H 4 ABS

  • 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
Result from H1 – H4 (initialization) ABS

  • 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_databutton_rep);

  • }

  • class User_class implements User_int

  • {

  • Unit push(Button_databutton_var)

    • {

    • button_var = Pushed_val;

    • }

  • }


  • Result of bt representation execution summary
    Result of BT representation (execution summary) ABS

    {

    Door_datadoor_var = Closed_val;

    User_intuser_var = new User_class();

    Button_databutton_var = Button_default_val;

    Power_tube_datapower_tube_var = Power_tube_default_val;

    Oven_dataoven_var = Oven_default_val;

    Var a = ask_input;

    if(a ==Pushed_val)

    {

    power_tube_var = Energised_val;

    oven_var= Cooking_val(OneMinute);

    }

    }


    H 5 ABS

    • 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


    Scratch 2
    Scratch 2 ABS

    While(!locked)

    {

    suspend;

    }

    Producer.lock(buffer);


    H 6 ABS

    • 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
    Example ABS

    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 ABS

    • 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


    Scratch 3
    Scratch 3 ABS

    While(true)

    {

    if(buffer.ctr = buffer.capacity) {

    producer.idle;

    }

    else

    {

    break;

    }

    suspend;

    }


    H 8 ABS

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


    P.s ABS

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


    Discussion
    Discussion ABS

    • Encapsulation

    • Assignment, and statement state



    To do
    To Do ABS

    • Parsing using XML from text representation

    • Coding & Implement the heuristic


    Reference
    Reference ABS

    • 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


    ad