charles consel 1, fabien latry 1, and julien mercadal 1 iptcomm – july 2007 1 phoenix research...

23
Charles Consel 1 , Fabien Latry 1 , and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI http://phoenix.labri.fr Staging Telephony Service Staging Telephony Service Creation: Creation: A Language Approach A Language Approach

Upload: luke-patton

Post on 26-Mar-2015

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Charles Consel1, Fabien Latry1, and Julien Mercadal1

IPTComm – July 2007

1Phoenix Research GroupINRIA / LaBRI

http://phoenix.labri.fr

Staging Telephony Service Creation:Staging Telephony Service Creation:A Language ApproachA Language Approach

Page 2: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 2

ContextContext

Why ?– Expectations among users to create telephony services.

What ?– Call routing services,– Signaling-related operations.

Where ?– Located on network servers.

Page 3: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 3

Challenges in Call Routing ServicesChallenges in Call Routing Services

Call routing is an intricate task, requiring expertise in a number of areas– Distributed systems, networking, telecommunications.

Diversity management is very challenging– Programmers : end-user, PABX administrator, telephony carrier,– Technologies: APIs, languages, platforms.

Reliability of call routing services is a strong pre-requisite– Domain properties to verify.

Page 4: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 4

Bridging The GapBridging The Gap

Gap between business IT

Telephony expert

service logic

Implementation expert

technologies

Page 5: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 5

Bridging The GapBridging The Gap

public class Example { [...] private AddressFactory factory = getAddressFactory();

public void processRequest (Request rq){ ... }}

public class Example { [...] private AddressFactory factory = getAddressFactory();

public void processRequest (Request rq){ ... }}

DomainKnowledge

DomainKnowledge

What

How

GA

P

Call routing domain – Telephony experts,– High level (e.g., modeling) – Code generation difficult.

Call routing implementation – Implementation experts,– Technology dependant,– Code verification difficult.

Page 6: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 6

Our ApproachOur Approach

Aim – Providing a language for each kind of experts,– Improving:

» Accessibility of routing service programming,» Reliability of service development.

Idea– Relying on programming languages, and specifically on domain-

specific languages (DSLs),– Introducing a layered architecture of DSLs,– Leveraging high-level tools to compile and verify services.

Page 7: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 7

Domain-specific language» Domain-specific notations and concepts,» Abstracting implementation details,» Easing program development.

Different kinds of DSLs– Modeling the domain vs. programming the domain

» A DSL may or may not require programming skills.

– Domain-specific modeling language (DSML)» Centered around end-user; requires domain expertise (e.g., CPL).

– Domain-specific programming language (DSPL)» Centered around implementation; requires programming expertise (e.g.,

SPL).

Domain-Specific Languages Domain-Specific Languages

Page 8: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 8

Bridging The GapBridging The Gap

public class Example { [...] private AddressFactory factory = getAddressFactory();

public void processRequest (Request rq){ ... }}

public class Example { [...] private AddressFactory factory = getAddressFactory();

public void processRequest (Request rq){ ... }}

DomainKnowledge

DomainKnowledge

What

How

GA

PDSML

Implementation

Modeling

Implementation

Page 9: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 9

A Layered ApproachA Layered Approach

DSML– Targets the DSPL– Verification of domain

properties

DSPL – Interface between the domain

and the implementation– Generates implementation

DSML

Implementation

Modeling

Implementation

ProgrammingDSPL

Page 10: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 10

A DSPL as a Pivotal LayerA DSPL as a Pivotal Layer

Bridge the gap, but also– Simplify the compilation,– Enable to have a variety of DSMLs,– Target multiple implementations.

DSPL

Preference / Constraint / Trust level / Purpose / Abstraction level /…

DSML 1

Implementation 1

DSML 2

Implementation 2

Page 11: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 11

Staging ProcessingsStaging Processings

DSPL

DSML 1

Implementation 1

DSML 2

Implementation 2

Verification related to the domain

Verification related to the program

DSML Compilation

DSPL Compilation

http://phoenix.labri.fr/processings

Page 12: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 12

Processing DSMLs: Processing DSMLs: Case StudyCase Study

DSMLs– CCall PProcessing LLanguage (CPL)

» XML-based scripting language,» Domain experts, non-programmers.

– VisuCom» Graphical language,» Domain experts, non-programmers

DSPL– SSession PProcessing LLanguage (SPL)

» Abstracts over underlying protocols, platform,» Programmers.

High-level tools– Program generation,– Program verification.

Page 13: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 13

Processing DSMLs: Processing DSMLs: Case StudyCase Study

Compilation

Verification

Stratego/XT

TLC Model Checker

Stratego/XT

ErrorReport

SPL Program

CPL or VisuComProgram

TLA+ Specification

Page 14: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 14

Compilation: From CPL to SPLCompilation: From CPL to SPL

<?xml version="1.0" encoding="UTF-8"?><cpl> <subaction id="voicemail"> <location url="sip:[email protected]"> <redirect/> </location> </subaction> <incoming> <location url="sip:[email protected]"> <proxy> <busy> <sub ref="voicemail"/> </busy> <otherwise> <address-switch field="origin"> <address is="sip:[email protected]"> <location url="tel:+19175554242"> <proxy /> </location> </address> </address-switch> </otherwise> </proxy> </location> </incoming></cpl>

service example { processing { dialog { response incoming INVITE()INVITE() { response r = forward 'sip:[email protected]'; if (r == /ERROR/CLIENT/BUSY_HERE) { return forward 'sip:[email protected]'; } else if (r == /ERROR) { if (FROM == 'sip:[email protected]') { return forward 'tel:+19175554242'; } } return r; } } } }

SPL

CPL

Page 15: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 15

Compilation: From CPL to SPLCompilation: From CPL to SPL

service example { processing { dialog { response incoming INVITE()INVITE() { response r = forward 'sip:[email protected]'; if (r == /ERROR/CLIENT/BUSY_HERE) { return forward 'sip:[email protected]'; } else if (r == /ERROR) { if (FROM == 'sip:[email protected]') { return forward 'tel:+19175554242'; } else { return r; } } return r; } } } }

<?xml version="1.0" encoding="UTF-8"?><cpl> <incoming> <location url="sip:[email protected]"> <proxy> <busy> <location url="sip:[email protected]"> <proxy /> </busy> <otherwise> <address-switch field="origin"> <address is="sip:[email protected]"> <location url="tel:+19175554242"> <proxy /> </location> </address> </address-switch> </otherwise> </proxy> </location> </incoming></cpl>

RuleRedirectNonTerminal : <location url="callee"> <proxy> <busy> stat1* </busy> <otherwise> stat2* </otherwise> </proxy> </location> ->

|[ response r = forward callee ; if ( r == /ERROR/CLIENT/BUSY_HERE ) { stat1* } else { stat2* } ]|where new => r

RuleFROMTest : <address-switch field="origin"> <address is="caller"> stat1* </address> </address-switch> ->

|[ if (FROM == caller) { stat1* } ]|

Page 16: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 16

Verification of Call Routing PropertiesVerification of Call Routing Properties

Properties– No duplicate redirect,– No redirect to the caller,– No infeasible path,– Service interaction.

NoTwiceRedirectToTheSameURI ≜ □ (∀n 1..Len(signalingActions) : ∀m n+1..Len(signalingActions) : signalingActions[n] ≠ "Continuation" ⇒ signalingActions[n] ≠ signalingActions[m])

NoRedirectToTheCaller ≜ □(∃x Contacts : ∀n 1..Len(callerTests) : x callerTests[n] ∀m 1..Len(signalingActions) : signalingActions[m] ≠ x)

Consistency ≜ □(∃x Contacts : ∀n 1..Len(callerTests) : x callerTests[n]) □(date ≠ {})

Page 17: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 17

Verification of Call Routing PropertiesVerification of Call Routing Properties

Properties– No redirect to the caller,– No duplicate redirect,– No infeasible path,– Service interaction.

Incoming call

no

Is the day of the call Tuesday ?

Forward call to Bob’s phone

...

yes

Redirect call to Bob’s voice mail

Is the date of the call between 07/12and 07/17 ?

no

Redirect call to Bob’s cell phone

yes

Weekly meeting

Annual holidays

1

2

3

5

6 7

4

CPL

Page 18: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 18

VisuComVisuCom

Graphical environment Tightly coupled with information systems

Page 19: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 19

VisuCom Service ModelVisuCom Service Model

Call routing logic Contact database

Service

checking

Evolution of the service logic with respect to data sources– Description of the service logic : static– Data on which the service relies on : dynamic

Service : dynamic

Need for consistency checking

Page 20: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 20

Verification of Call Routing PropertiesVerification of Call Routing Properties

Properties– No redirect to the caller,– No duplicate redirect,– No infeasible path,– Service interaction.

VisuCom

Data model:Group customer: Alice, Bob, DanielGroup VIP: Frank

No intersection

Page 21: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 21

TLC Error ReportTLC Error Report

TLC Version 2.0 of January 16, 2006Model-checkingImplied-temporal checking--satisfiability problem has 2 branches.Finished computing initial states: 1 distinct state generated.Error: Invariant Consistency is violated. The behavior up to this point is:STATE 1: <Initial predicate>

/\ callerTests = << >>/\ currentNode = "Incoming"/\ signalingActions = << >>

STATE 2: <Action line 32, col 9 to line 34, col 54 of module VisuCom>/\ callerTests = << >>/\ currentNode = "CustomerGroup"/\ signalingActions = << >>

STATE 3: <Action line 37, col 9 to line 40, col 53 of module VisuCom>/\ callerTests = << {"Alice", "Bob", "Daniel"} >>/\ currentNode = "VIPGroup"/\ signalingActions = << >>

STATE 4: <Action line 49, col 9 to line 52, col 59 of module VisuCom>/\ callerTests = << {"Alice", "Bob", "Daniel"}, {"Frank"} >>/\ currentNode = "Forward"/\ signalingActions = << >>

5 states generated, 5 distinct states found, 2 states left on queue.The depth of the complete state graph search is 4.

Page 22: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 22

AssessmentAssessment

Benefits of the layered view of DSLs– Simplification of the DSML processings,– Specific treatment at each layer.

High-level compilation approach– Compilation more amenable to existing high-level program

generation tools,– A bridge between a DSML and its implementation.

High-level verification approach– Verification more amenable to existing verification tools, – Verification of domain-properties.

Page 23: Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July 2007 1 Phoenix Research Group INRIA / LaBRI  Staging Telephony

Phoenix Group - INRIA / LaBRIIPTComm - July 2007 23

ConclusionConclusion

An approach to improving the development and the verification of call routing services.– Accessibility of routing service programming,– Development of reliable services.

Approach– Relying on a layered view of domain-specific languages,– Leveraging high-level tools to compile and verify services.

Validation of the approach for a realistic case study.