Download - Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

Transcript
Page 1: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Creating CORBA Applications Using UML and SDL

Morgan Bjö[email protected]

Page 2: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Two Observations

• Many profiles are being defined to tailor the UML towards specific domains

• There is an increased focus on specifying behavior in UML– Making it executable– Allowing early verification

Page 3: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

CORBA IDL—an Abstract Language

• IDL is used as an abstract language in the sense that it is target language independent– What if it were possible to specify behavior in a

manner that is also target language independent?• UML contains a profile mechanism that can

be used to tailor it towards specific domains, but also to create language mappings

Page 4: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

IDL to JavaCompiler

stubs.java

Creating a CORBA ApplicationIDL

Developer

IDL Source

IDL to C++Compiler

types.hh stubs.cc impl.cc

serv.hh skels.cc

ServerExecutable

C++ ORBRun-time Lib

Server Developer

app.java

ClientDeveloper

Client Executable

Java ORBRun-time Lib

Java ORB C++ ORB

Page 5: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Alternative ApproachServer

DeveloperServer

DeveloperClient

DeveloperClient

Developer

IDL to JavaCompiler

IDL to C++Compiler

app.java stubs.java types.hh stubs.cc impl.cc

serv.hh skels.cc

Client Executable

ServerExecutable

Java ORBRun-time Lib

C++ ORBRun-time Lib

Java ORB C++ ORB

Modeling Language ApplicationModeling Language Application

Page 6: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Raising the Abstraction Level

CS

iS

C S

ORB

Stubs Skeletons

TCP/IPC S

System

Platformindependence

Target language independence

Page 7: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Process Considerations

Create ModelCreate Model Verify BehaviorVerify Behavior

Specify DeploymentSpecify Deployment

Generate CodeGenerate Code

Create IDL

Generate Code

Implement Behavior

Debug

Page 8: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Importing and Exporting IDL

• Take advantage of already existing clients and servers in the network– Import IDL exposed by

external servers– Export IDL to be included

by external clients

CORBAApplicationCORBA

Application

import export

IDLSource

IDLSource

expose include

Servers Clients

Terminal

Application

«access»

Page 9: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

UML Profiles

• Stereotypes– Model elements that can be used as if they are a

part of UML– Specialize existing model elements

• Tagged Values– Define additional stereotype properties

• Constraints– Restrict the use of stereotypes

Page 10: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

The UML Profile for CORBA

• Specifies how to use interface descriptions (IDL) in UML

// IDL sample codemodule CCS {

interface Thermometer {readonly attribute short temperature;

};interface Thermostat : Thermometer {

short get_nominal();short set_nominal(in short new_temp);

};};

• Does not (and was not intended to) cover the logical next step: behavior

«CORBAModule»CCS

«CORBAInterface»Thermometer

«CORBAInterface»Thermostat

«readonly»temperature : short

get_nominal() : shortset_nominal(in short: new_temp) : short

Page 11: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Action Semantics for the UML

• Turn the UML into an executable language– Provides the semantics of actions

• Lacks a notation• Does not include a data model

• Necessary to map a language on top of the action semantics (such as C++, Java, or SDL)– Target language independence?– At some point in the future, UML may provide

sufficient detail by itself

Page 12: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

SDL-2000

• SDL is an executable modeling language that is standardized by the ITU– Similar to UML in many ways, but specifically

geared towards modeling of event-driven, distributed applications

• It is often used as a full-fledged programming language– There are many indications that UML is heading in

the same direction

The Specification and Description Language

Page 13: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Using IDL

• Incorporate IDL data types in the action language– Basic data types– User-defined types– Extend types with operators defining “+”, “-”, type

casting rules, etc.• Attributes and parameters can be declared

using these IDL data types– IDL interfaces may be shown textually or

graphically (using the UML profile for CORBA)

Page 14: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

• Bi-directional interfaces specify contracts between agents– required interfaces– implemented interfaces

• an agent may implement multiple interfaces

Designing the Application

• Agents define logical components– define the system’s

functionality

«agent»Relay

«agent»Station

«agent»Radio

servant acts as client servant acts as server

ReceiverReceiver

Page 15: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

An Example: Static Structure«actor»

Customer

«agent»Bank

iAccount

iCashier

iCashier

iAccount

iCashier

iAccount

«agent»Cashier

iCashier

«agent»Account

iAccount

iAccManager

iAccManager

«agent» Bank

• Describe the classes used in the system– agents are stereotypes of

classes• Each agent may have

structure and behavior

Page 16: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

An Example: IDL Interfaces// Customer’s view of accountsinterface iAccount {

typedef double MoneyT;readonly attribute MoneyT balance;void insert(in MoneyT amount);void withdraw(in MoneyT amount)

raises (InsufficientBalance);};

// Customer’s view of cashiersinterface iCashier {

iAccount createAccount(in string code, out number);void terminateAccount(in iAccount account)

raises (NoAccount, AccountLocked);iAccount loginAccount(in string code, in long number)

raises (WrongCode, WrongNumber);};

// Manager’s view of accountsinterface iAccManager : iAccount {

iAccount addInterest(in float rate);};

Page 17: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

An Example: Dynamic Structure

• Describe how agents interact with each other– connections– dynamic creation

• Provide initialization information– number of instances to

be created at start-up• multiplicity

– compare with main function

iCashier

iAccount

«agent»Cashier

«agent»Account

«agent» Bank

iAccManager

:Cashier1..1

:Account0..*

Page 18: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

An Example: Behavior

• Action semantics defines the behavior of– operation bodies– transitions– entry/exit actions

• Each such computational unit is represented by a procedure– a sequence of actions

acc :=create Account

(code)

number :=number +1

storeAccount(acc, number)

DCL /* attributes of agent */private number long := 0;

Acc != NULL

[true] [false]

account

InvalidReference

iAccount createAccount (in string code, out long number)

DCL /* local procedure variables */acc iAccount;

Page 19: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

An Example: Using CORBA Services

DCL

inc CosNaming::NamingContext, /* initial naming context */

name CosNaming::Name, /* Name to resolve */

db iDataBase;

name[1].id := ‘corporate’

name[2].id := ‘develop’

name[3].id := ‘database’

db := inc.resolve

(name)

NotFound CannotProceed InvalidNamedb != NULL

Page 20: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Deployment

• Determine if and how to partition the system• Determine code generation policies for each

partition– orb– target language

• Manage the setting of POA policies• Tagged values may be used to control

desired behavior, such as:– persistent objects– transient objects

Page 21: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

Application Code Generation

• The final step is to generate the application code for the different parts of the system– according to deployment information

• Apply the IDL mapping rules for the target language

• Generate implementation specific details according to model

Page 22: Creating CORBA Applications Using UML and SDL · Creating CORBA Applications Using UML and SDL SDL-2000 • SDL is an executable modeling language that is standardized by the ITU

© Telelogic 2000

Creating CORBA Applications Using UML and SDL

References

• Henning, M., Vinoski, S.: Advanced CORBA®

Programming with C++, Addison-Wesley, 1999• OMG: The Unified Modeling Language Specification,

version 1.4 draft, 2000• OMG: The UML Profile for CORBA, 2000• OMG: Action Semantics for the UML, RFP, 1998• OMG: Action Semantics for the UML, Joint Initial

Submission, 2000• ITU-T: ITU Recommendation Z.100: Specification and

Description Language (SDL), Geneva 2000• ITU-T: ITU Recommendation Z.109: SDL Combined with

UML, Geneva 2000