+ All Categories
Home > Documents > Gera Weiss Department of Computer Science Ben Gurion University of The Negev.

Gera Weiss Department of Computer Science Ben Gurion University of The Negev.

Date post: 15-Dec-2015
Category:
Upload: charlie-berkshire
View: 215 times
Download: 0 times
Share this document with a friend
Popular Tags:
26
Behavioral Programming Methodologies and Tools for Developing Reactive Systems Gera Weiss Department of Computer Science Ben Gurion University of The Negev
Transcript

Behavioral ProgrammingMethodologies and Tools for Developing Reactive Systems

Gera WeissDepartment of Computer Science

Ben Gurion University of The Negev

Main idea:

» Program a separate code module for each "paragraph" in the requirements document

» When requirements are added or refined, add modules with little or no change to existing code

» Use an application-agnostic interweaving mechanism to run the modules together

» ... In the framework of the familiar programming languages, constructs, and concepts

3A 6-day trip from NYC to LA

Daily Schedule

...Drive for 4 hrs.

Stop for Lunch

Drive for 5 hrs. …

Driving Directions

Can Complex Reactive Software be built of modules that reflect requirements

similar to how people interweave plans?

4

Maintenance without modifying existing code ?!

… and can we implement new requirements without expertise in the legacy code?

Proposed answer: Consider all requirements before each action» The program modules, called behavior-threads (b-threads), are

ordinary procedures in a programming language

» All b-threads meet before each action the system takes

» In each meeting, b-threads specify what they request and what they forbid for the next step

» At the end of each meeting, an application-agnostic mechanism selects an action (event) that isrequested but not forbidden

6

Behavior execution cycle

B-s

Block

Wait

Request

Behavior Threads

7

Behavior execution cycle

B-s

Block

Wait

Request

Behavior Threads

8

Behavior execution cycle

B-s

Block

Wait

Request

Behavior Threads

9

Behavior execution cycle

B-s

Block

Wait

Request

Behavior Threads

10

addHotaddHotaddHotaddHotaddHot

Example: Coding b-threadsAddHotFiveTimes() {    for i=1 to 5 {       bSync(request=addHot, wait-for=none, block=none);    } }

AddColdFiveTimes() {    for i=1 to 5 {        bSync(request=addCold, wait-for=none, block=none);    } }

Interleave() {    forever { bSync(request=none, wait-for=addHot, block=addCold); bSync(request=none, wait-for=addCold, block=addHot);    } }

addHotaddHotaddHotaddHotaddHot addCold addCold addCold addCold addCold

addHot addColdaddHot addColdaddHot addColdaddHot addColdaddHot addCold

ColdWater

HotWater

11

Behavior execution cycle

1. All behavior threads (b-threads) post declarations:

• Request events: propose events to be considered for triggering;

• Wait for events: ask to be notified when events are triggered;

• Block events: temporarily forbid the triggering of events.

2. When all declarations are collected:

An event that is requested and not blocked is selected.

All b-threads waiting for this event can update their declaration

12

Main application: reactive systems

Complexity stems from the need to interleave many simultaneous behaviors

RoboticsDistributed Data Processing

Mobile Computing

13

Present and future research

Scalability • Tools for developing many b-threads• Architectures for efficient execution of many b-threads

Dealing with conflicts and under-specification • Model checking• Automatic program repair• Machine learning• Planning

Evaluation• Empirical studies• Complex applications• Theoretical advantages

and limitations

And more…

Team – past and present» David Harel» Werner Damm» Rami Marelly» Hillel Kugler» Shahar Maoz» Itai Segall

» Assaf Marron» Robby Lampert » Guy Wiener» Amir Nissim » Nir Eitan » Michal Gordon» Guy Katz» Moshe Weinstock» Michael Bar-Sinai» Ronen Brafman» . . .

From requirements to code

15

LSC: A visual language for scenario specification

Damm and Harel 2001, Harel and Marelly 2003

Natural yet executable scenario-based specification

Initially for requirement specification, evolved into a programming language

PlayGo – an IDE for programming with LSC

class AddHotFiveTimes extends BThread {     public void runBThread() {         for (int i=1; i<=5; i++) {             bSync(addHot, none, none);         }     } }

BPJ: A package for programming scenarios in Java (and equivalents for other languages)

Harel, Marron, and Weiss 2010

Bringing advantages of scenario-based specification to programming

Integrate with & complement other paradigms (OOP, aspects, rule-based, agile, …).

Programming by dragging & dropping Scratch like bricks: You will soon see…

16

World

A proposed architecture for large-scale real-world applications

Sensors and Actuators

Behavior Nodes

B-thread

AsynchronousCommunication

B-thread

B-thread

B-thread

B-thread

B-thread

B-thread

B-thread

17

Demo: Hot / Cold in waterbear

Example: Alignment of code modules with requirements

18

bSync(none, X<1,3> , none);

bSync(none, X<2,2> , none);

bSync(O<3,1> , none, none);

When I put two Xs in a line, you need to put an O in the third square

19

Demo: Tic-Tac-Toe in waterbear

20

Each new game rule or strategy is added in a

separate b-thread

without changing existing code

21

But…» What about conflicts?

» Sources of conflicts:

» Implementation error / misunderstanding of a requirement

» Conflicting requirements

» In both cases: Good to catch as early as possible !

» Tools for catching conflicts: trace visualization, model-checking

22

Visualization and Comprehension

23

Program states are the Cartesian product of b-thread states

Behavioral Program State Graph

A

B

C

D

E

G

I

HADG

BDG

…AEG

……

BDHAEI

24

Model-checking behavioral programs “in-vivo” (c.f. Java Path Finder)

Backtrack using Apache javaflow continuations

Transition using standard execution (by the native JVM)

State matching and search pruning by b-threads State tagging for

safety and liveness properties by b-threads

Notations for nondeterministic transitions

Deadlocks detected automatically

25

Do I need to make sure that only one event is proposed at each round?» What if several events are requested and not blocked ?

» The run-time environment can choose the next event :

1. Randomly and reinforce probabilities using machine learning; or,

2. By looking ahead and planning an optimal path

» Programmers can easily code assessment of states in b-threads

?

?

Summary of the proposed methodology

Capture each requirement in a separate code-module

Verify that requirements do not conflict

Interweave and execute using a general mechanism

B-s

Block

Wait

Request

Behavior Threads


Recommended