ISO/IEC 10746-4:1998/Amd 1:2001
(Amendment)Information technology — Open Distributed Processing — Reference Model: Architectural semantics — Part 4: — Amendment 1: Computational formalization
Information technology — Open Distributed Processing — Reference Model: Architectural semantics — Part 4: — Amendment 1: Computational formalization
Technologies de l'information — Traitement réparti ouvert — Modèle de référence: Sémantique architecturale — Partie 4: — Amendement 1: Formalisation de traitement
General Information
- Status
- Published
- Publication Date
- 14-Dec-2001
- Technical Committee
- ISO/IEC JTC 1/SC 7 - Software and systems engineering
- Drafting Committee
- ISO/IEC JTC 1/SC 7 - Software and systems engineering
- Current Stage
- 6060 - International Standard published
- Start Date
- 15-Dec-2001
- Completion Date
- 12-Feb-2026
Relations
- Effective Date
- 06-Jun-2022
- Effective Date
- 06-Jun-2022
- Effective Date
- 15-Apr-2008
Overview
ISO/IEC 10746-4:1998/Amd 1:2001 is an amendment to the ODP (Open Distributed Processing) Reference Model part on Architectural Semantics. It provides a computational formalization of the ODP modelling concepts defined in ISO/IEC 10746-2 (basic modelling/structuring rules) and the computational viewpoint language in ISO/IEC 10746-3. The amendment interprets those concepts using several standardized formal description techniques-LOTOS, SDL, Z and ESTELLE-and adds a new Annex A showing representative formalizations.
Key topics
- Architectural semantics for ODP: formal interpretation of ODP modelling concepts and the computational viewpoint language to improve precision and consistency.
- Computational formalization: mapping ODP constructs (interfaces, operations, parameters, types, streams) into constructs of formal specification languages.
- Multi-language treatment: worked examples and formal models in LOTOS, SDL, Z and ESTELLE to show how computational concepts can be expressed and analyzed in different formal notations.
- Elementary structures: formal definitions for names, types, parameters, operations and interface references; support for subtyping, equality checks and operation signatures.
- Stream interfaces: modeling of continuous data flows (multimedia-like streams) as sequences of timed flow elements (data, timestamps, flow identifiers).
- Normative references updates: includes updated references to ITU‑T Z.100 (1999) and Z Notation materials to align the formalization with contemporary formal-methods tooling and notation.
Practical applications
- System architects and designers: use the formalized semantics to create precise computational viewpoint specifications for distributed systems and to ensure architectural consistency across viewpoints.
- Formal methods engineers: leverage the LOTOS/SDL/Z/ESTELLE formalizations to perform verification, validation, and refinement of computational behaviour and interfaces.
- Tool and middleware vendors: implementors can map ODP computational constructs to implementation models, protocol specifications or verification tool inputs.
- Standards developers and reviewers: use the amendment as a normative reference that clarifies how ODP computational concepts should be represented formally.
- Researchers and educators: study cross‑notation representations of distributed system concepts and teach how architectural semantics relate to formal specification techniques.
Related standards
- ISO/IEC 10746‑2 (ODP: Basic Modelling and Structuring Rules)
- ISO/IEC 10746‑3 (ODP: Viewpoint Languages - Computational Viewpoint)
- ITU‑T Z.100 and Z Notation (formal description languages and references used in the amendment)
This amendment strengthens the ODP Reference Model by providing explicit, tool‑compatible formalizations of the computational viewpoint-useful for rigorous specification, interoperability, and formal analysis of distributed systems.
Get Certified
Connect with accredited certification bodies for this standard

BSI Group
BSI (British Standards Institution) is the business standards company that helps organizations make excellence a habit.

BSCIC Certifications Pvt. Ltd.
Established 2006, accredited by NABCB, JAS-ANZ, EIAC, IAS. CDSCO Notified Body.

Intertek India Pvt. Ltd.
Delivers Assurance, Testing, Inspection & Certification since 1993 with 26 labs and 32 offices.
Sponsored listings
Frequently Asked Questions
ISO/IEC 10746-4:1998/Amd 1:2001 is a standard published by the International Organization for Standardization (ISO). Its full title is "Information technology — Open Distributed Processing — Reference Model: Architectural semantics — Part 4: — Amendment 1: Computational formalization". This standard covers: Information technology — Open Distributed Processing — Reference Model: Architectural semantics — Part 4: — Amendment 1: Computational formalization
Information technology — Open Distributed Processing — Reference Model: Architectural semantics — Part 4: — Amendment 1: Computational formalization
ISO/IEC 10746-4:1998/Amd 1:2001 is classified under the following ICS (International Classification for Standards) categories: 35.080 - Software. The ICS classification helps identify the subject area and facilitates finding related standards.
ISO/IEC 10746-4:1998/Amd 1:2001 has the following relationships with other standards: It is inter standard links to ISO 15609-6:2013, ISO/IEC 10746-4:1998; is excused to ISO/IEC 10746-4:1998. Understanding these relationships helps ensure you are using the most current and applicable version of the standard.
ISO/IEC 10746-4:1998/Amd 1:2001 is available in PDF format for immediate download after purchase. The document can be added to your cart and obtained through the secure checkout process. Digital delivery ensures instant access to the complete standard document.
Standards Content (Sample)
INTERNATIONAL ISO/IEC
STANDARD 10746-4
First edition
1998-12-15
AMENDMENT 1
2001-12-15
Information technology — Open Distributed
Processing — Reference Model:
Architectural semantics
AMENDMENT 1: Computational formalization
Technologies de l'information — Traitement réparti ouvert — Modèle de
référence: Sémantique architecturale
AMENDEMENT 1: Formalisation informatique
Reference number
ISO/IEC 10476-4:1998/Amd.1:2001(E)
©
ISO/IEC 2001
ISO/IEC 10746-4:1998/Amd.1:2001(E)
PDF disclaimer
This PDF file may contain embedded typefaces. In accordance with Adobe's licensing policy, this file may be printed or viewed but shall not
be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In downloading this
file, parties accept therein the responsibility of not infringing Adobe's licensing policy. The ISO Central Secretariat accepts no liability in this
area.
Adobe is a trademark of Adobe Systems Incorporated.
Details of the software products used to create this PDF file can be found in the General Info relative to the file; the PDF-creation parameters
were optimized for printing. Every care has been taken to ensure that the file is suitable for use by ISO member bodies. In the unlikely event
that a problem relating to it is found, please inform the Central Secretariat at the address given below.
© ISO/IEC 2001
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form or by any means, electronic
or mechanical, including photocopying and microfilm, without permission in writing from either ISO at the address below or ISO's member body
in the country of the requester.
ISO copyright office
Case postale 56 • CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.ch
Web www.iso.ch
Published by ISO in 2002
Printed in Switzerland
ii © ISO/IEC 2001 – All rights reserved
ISO/IEC 10746-4:1998/Amd.1:2001(E)
CONTENTS
Page
1) Introduction. 1
2) Clause 1 – Scope . 1
3) Clause 2 – Normative references . 2
4) Subclause 3.2 – Definitions from ITU-T Recommendation Z.100. 2
5) Subclause 3.3 – Definitions from the Z-Base Standard. 2
6) Annex A. 3
Annex A – Computational Formalization. 3
A.1 Formalization of the Computational Viewpoint Language in LOTOS. 3
A.2 Formalization of the Computational Viewpoint Language in SDL. 12
A.3 Formalization of the Computational Viewpoint Language in Z . 20
A.4 Formalization of the Computational Viewpoint Language in ESTELLE. 28
© ISO/IEC 2001 – All rights reserved iii
ISO/IEC 10746-4:1998/Amd.1:2001(E)
Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical Commission)
form the specialized system for worldwide standardization. National bodies that are members of ISO or IEC
participate in the development of International Standards through technical committees established by the
respective organization to deal with particular fields of technical activity. ISO and IEC technical committees
collaborate in fields of mutual interest. Other international organizations, governmental and non-governmental, in
liaison with ISO and IEC, also take part in the work. In the field of information technology, ISO and IEC have
established a joint technical committee, ISO/IEC JTC 1.
International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 3.
The main task of the joint technical committee is to prepare International Standards. Draft International Standards
adopted by the joint technical committee are circulated to national bodies for voting. Publication as an International
Standard requires approval by at least 75 % of the national bodies casting a vote.
Attention is drawn to the possibility that some of the elements of this Amendment may be the subject of patent
rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights.
Amendment 1 to International Standard ISO/IEC 10746-4:1998 was prepared by Joint Technical Committee
ISO/IEC JTC 1, Information technology, Subcommittee SC 7, Software engineering, in collaboration with ITU-T.
The identical text is published as ITU-T Rec. X.904/Amd.1.
iv © ISO/IEC 2001 – All rights reserved
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
INTERNATIONAL STANDARD
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
ITU-T Rec. X.904/Amd.1 (2000 E)
ITU-T RECOMMENDATION
INFORMATION TECHNOLOGY – OPEN DISTRIBUTED PROCESSING –
REFERENCE MODEL: ARCHITECTURAL SEMANTICS
AMENDMENT 1
Computational formalization
1) Introduction
Replace the lst paragraph of the introduction
This Recommendation | International Standard is an integral part of the ODP Reference Model. It contains a
formalisation of the ODP modelling concepts defined in ITU-T Rec. X.902 | ISO/IEC 10746-2, clauses 8 and 9. The
formalisation is achieved by interpreting each concept in terms of the constructs of the different standardised formal
description techniques.
with
This Recommendation | International Standard is an integral part of the ODP Reference Model. It contains a
formalization of the ODP modelling concepts defined in ITU-T Rec. X.902 | ISO/IEC 10746-2, clauses 8 and 9 and in
ITU-T Rec. X.903 | ISO/IEC 10746-3, clause 7 (Computational Language). The formalization is achieved by interpreting
each concept in terms of the constructs of the different standardized formal description techniques.
2) Clause 1 – Scope
Replace the fourth bullet under The RM-ODP consists of
ITU-T Rec. X.904 | ISO/IEC 10746-4: Architectural Semantics: contains a formalisation of the ODP modelling
concepts defined in ITU-T Rec. X.902 | ISO/IEC 10746-2, clauses 8 and 9, and a formalisation of the viewpoint
languages of ITU-T Rec. X.903 | ISO/IEC 10746-3. The formalisation is achieved by interpreting each concept in terms
of the constructs of the different standardised formal description techniques. This text is normative.
with
ITU-T Rec. X.904 | ISO/IEC 10746-4: Architectural Semantics: contains a formalization of the ODP modelling
concepts defined in ITU-T Rec. X.902 | ISO/IEC 10746-2, clauses 8 and 9, and a formalization of the computational
viewpoint language of ITU-T Rec. X.903 | ISO/IEC 10746-3. The formalization is achieved by interpreting each concept
in terms of the constructs of the different standardized formal description techniques. This text is normative.
Replace the fourth paragraph
The purpose of this Recommendation | International Standard is to provide an architectural semantics for ODP. This
essentially takes the form of an interpretation of the basic modelling and specification concepts of ITU-T Rec. X.902 |
ISO/IEC 10746-2 and the viewpoint languages of ITU-T Rec. X.903 | ISO/IEC 10746-3, using the various features of
different formal specification languages. An architectural semantics is developed in four different formal specification
languages: LOTOS, ESTELLE, SDL and Z. The result is a formalisation of ODP's architecture. Through a process of
iterative development and feedback, this has improved the consistency of ITU-T Rec. X.902 | ISO/IEC 10746-2 and
ITU-T Rec. X.903 | ISO/IEC 10746-3.
with
The purpose of this Recommendation | International Standard is to provide an architectural semantics for ODP. This
essentially takes the form of an interpretation of the basic modelling and specification concepts of ITU-T Rec. X.902 |
ISO/IEC 10746-2 and the computational viewpoint language of ITU-T Rec. X.903 | ISO/IEC 10746-3, using the various
features of different formal specification languages. An architectural semantics is developed in four different formal
ITU-T Rec. X.904/Amd.1 (2000 E) 1
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
specification languages: LOTOS, ESTELLE, SDL and Z. The result is a formalization of ODP's architecture. Through a
process of iterative development and feedback, this has improved the consistency of ITU-T Rec. X.902 |
ISO/IEC 10746-2 and ITU-T Rec. X.903 | ISO/IEC 10746-3.
Add the following paragraph at the end of Scope:
Annex A shows one way in which the computational viewpoint language of ITU-T Rec. X.903 | ISO/IEC 10746-3 can be
represented in the formal languages LOTOS, SDL, Z and Estelle. This Recommendation | International Standard also
makes use of the concepts defined in ITU-T Rec. X.902 | ISO/IEC 10746-2.
3) Clause 2 – Normative references
Change publication date for ITU-T Recommendation Z.100 from (1993) to (1999).
ISO/IEC 13568:
Add the following reference:
Z Notation, ISO/IEC JTC 1 SC 22 WG 19 Advanced Working Draft 2.C, July 13th 1999.
4) Subclause 3.2 – Definitions from ITU-T Recommendation Z.100
Replace the list with the following terms:
active, adding, all, alternative, and, any, as, atleast, axioms, block, call, channel, comment, connect, connection,
constant, constants, create, dcl, decision, default, else, endalternative, endblock, endchannel, endconnection,
enddecision, endgenerator, endnewtype, endoperator, endpackage, endprocedure, endprocess, endrefinement, endselect,
endservice, endstate, endsubstructure, endsyntype, endsystem, env, error, export, exported, external, fi, finalized, for,
fpar, from, gate, generator, if, import, imported, in, inherits, input, interface, join, literal, literals, map, mod, nameclass,
newtype, nextstate, nodelay, noequality, none, not, now, offspring, operator, operators, or, ordering, out, output,
package, parent, priority, procedure, process, provided, redefined, referenced, refinement, rem, remote, reset, return,
returns, revealed, reverse, save, select, self, sender, service, set, signal, signallist, signalroute, signalset, spelling, start,
state, stop, struct, substructure, synonym, syntype, system, task, then, this, timer, to, type, use, via, view, viewed, virtual,
with, xor.
5) Subclause 3.3 – Definitions from the Z-Base Standard
Change subclause title to:
3.3 – Definitions from the Z Notation.
Replace the list with following terms:
axiomatic description, data refinement, hiding, operation refinement, overriding, schema (operation, state, framing),
schema calculus, schema composition, sequence, type.
2 ITU-T Rec. X.904/Amd.1 (2000 E)
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
6) Annex A
Add a new Annex A as follows:
Annex A
Computational Formalization
A.1 Formalization of the Computational Viewpoint Language in LOTOS
A.1.1 Concepts
The formalization of the computational language in LOTOS uses the concepts defined in the formalization of the basic
modelling and structuring rules given in ITU-T Rec. X.902 | ISO/IEC 10746-2 clauses 8 and 9.
Elementary Structures Associated with Operational and Signal Interfaces
To formalize the computational language in LOTOS it is necessary to introduce certain elementary structures. These
include parameters that might be associated with certain computational interfaces and a basic model of information that
might be used in a stream flow.
To formalize parameters it is necessary to introduce two concepts: names for things and types for things. Names are
simply labels. As we shall see, the computational viewpoint requires that checks, e.g. for equality, are done on these
labels when interfaces are constructed. We may represent names generally by:
type Name is Boolean
sorts Name
opns newName: -> Name
anotherName: Name -> Name
_eq_,_ne_: Name, Name -> Bool
endtype(*Name*)
For brevity sake we omit the equations, which are expected to be obvious. It is possible to be more prescriptive here, e.g.
using character strings from the LOTOS library. The only thing we are interested in regarding names is that we can
determine their equality or inequality.
As discussed in this Recommendation | International Standard, a type in the ODP sense may not be interpreted directly in
the process algebra part of LOTOS. It is however possible to model types through the Act One part of LOTOS.
Unfortunately, whilst Act One was designed specifically for representing types, it is limited in the ways in which types
and types relationships are checked. For example, it is not possible to check subtyping or equivalence up to isomorphism
between types due to type equality in Act One being based on name equivalence of sorts. As a basis for reasoning here
we introduce an elementary notion of types that allows us to test for equality, inequality and subtyping.
type AnyType is Boolean
sorts AnyType
opns newType: -> AnyType
anotherType: AnyType -> AnyType
_eq_,_isSubtype_: AnyType, AnyType -> Bool
endtype (* AnyType *)
A parameter is a relation between a name and its underlying type representation. Thus a parameter may be represented
by:
type Param is Name, AnyType
sorts Param
opns newParam: Name, AnyType -> Param
_eq_,_ne_,_isSubtype_: Param, Param -> Bool
endtype (* Param *)
As previously, we require checks on the equality or inequality of parameters as well as when one parameter is a subtype
of another. Two parameters are in a subtype relationship when their types are in a subtype relationship. It is also useful
for us to introduce sequences of these parameters.
type PList is String actualizedby Param
using sortnames PList for String Param for Element Bool for FBool
opns _isSubtype_: PList, PList -> Bool
endtype (* PList *)
ITU-T Rec. X.904/Amd.1 (2000 E) 3
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
Here we use the type String from the LOTOS library actualised with the type Param defined previously. We also include
an operation here isSubtype that can check whether one sequence of parameters is a subtype of another. One parameter
list is a subtype of a second when all of the parameters it contains are subtypes of those found in the first. In addition the
parameters should be in the same position in their respective lists. It should be noted that these parameters might contain
references to interfaces used to restrict the interactions that can take place. Whilst it is quite possible to model an
interface in the process algebra, it is not possible to model a reference to that interface in the process algebra that, loosely
speaking, captures the functionality of that interface. To overcome this, we model interface references in Act One. Given
that an interface reference captures, amongst other things, the signature of the interface, we provide an Act One model of
signatures for operations. Operations consist of a name, a sequence of inputs and possibly a sequence of outputs. For
simplicity’s sake, we do not consider here whether the operation is of infix, prefix or suffix notation. This may be
represented by:
type Op is Name, PList
sorts Op
opns makeOp: Name, PList -> Op
makeOp: Name, PList, PList -> Op
getName: Op -> Name
getInps: Op -> PList
getOuts: Op -> PList
_eq_: Op, Op -> Bool
eqns forall op1,op2: Op, n: Name; pl1, pl2: PList
ofsort Name getName(makeOp(n,pl1,pl2)) = n;
ofsort PList getInps(makeOp(n,pl1)) = pl1;
getInps(makeOp(n,pl1,pl2)) = pl1;
getOuts(makeOp(n,pl1)) = <>;
getOuts(makeOp(n,pl1,pl2)) = pl2;
ofsort Bool op1 eq op2 = ((getName(op1) eq getName(op2)) and
(getInps(op1) isSubtype getInps(op2)) and
(getOuts(op2) isSubtype getOuts(op1)));
endtype (* Op *)
Having a method of determining whether two operations are the same reduces the problem of subtyping between abstract
data types to a set comparison, where set elements are the created operations. Thus a server is a subtype of a second
server if it supports all operations of the second server. We note here that we model two forms of operations: those that
do not expect results and those that do expect results. We also introduce sets of these operations:
type OpSet is Set actualizedby Op
using sortnames OpSet for Set Op for Element Bool for FBool
endtype (* OpSet *)
Now an interface reference may be represented by the following LOTOS fragment:
type IRef is OpSet
sorts IRef
opns makeIRef : OpSet -> IRef
NULL : -> IRef
getOps :IRef->OpSet
_eq_ : IRef, IRef -> Bool
eqns forall o: OpSet; ir1, ir2: IRef
ofsort OpSet getOps(makeIRef(o)) = o;
ofsort Bool ir1 eq ir2 = getOps(ir1) eq getOps(ir2) ;
endtype (* IRef *)
Here we note that equality of interface references is based only on the operations contained in that reference. It might
well be extended to cover other aspects, e.g. the location of the interface or constraints on its usage. We also introduce
sets of these interface references.
type IRefSet is Set actualizedby IRef
using sortnames IRefSet for Set IRef for Element Bool for FBool
endtype (* IRefSet *)
Elementary Structures Associated with Stream Interfaces
The computational viewpoint of ITU-T Rec. X.903 | ISO/IEC 10746-3 also considers interfaces concerned with the
continuous flow of data, e.g. multimedia. These interfaces are termed stream interfaces. Stream interfaces contain finite
sets of flows. These flows may be from the interface (produced) or to the interface (consumed). Each flow is modelled
through an action template. Each action template contains the name of the flow, the type of the flow, and an indication of
causality for the flow.
The computational viewpoint abstracts away from the contents of the flow of information itself. We consider here a
generic idea of information flow where the flow of information is represented by a sequence of flow elements. A flow
4 ITU-T Rec. X.904/Amd.1 (2000 E)
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
element may be regarded as a particular item in the flow of information. We note here that flows are regarded in the
computational viewpoint as continuous actions. In our model here we represent streams as sequences of discrete timed
events. On the one hand this allows us to deal with the timing issues of information flows but we achieve this at the cost
of losing the continuous nature of the flows.
Each flow element in an information flow can be considered as a unit consisting of data (this may be compressed) which
we represent by Data. This model might include how the information was compressed, what information was
compressed, etc. As such it is not considered further here. Flow elements also contain a time stamp used for modelling
the time at which the particular flow element was sent or received. It is also often the case in multimedia flows that
particular flow elements are required for synchronisation, e.g. synchronisation of audio with video for example.
Therefore we associate a particular Name with each flow element. This can then be used for selecting a particular flow
element from the flow as required. From this, we may model a flow element as:
type FlowElement is Name, NaturalNumber, Data, Param
sorts FlowElement
opns makeFlowElement: Data, Nat, Name -> FlowElement
nullFlowElement : -> FlowElement
getData : FlowElement -> Data
getTime : FlowElement -> Nat
getName : FlowElement -> Name
toParam : FlowElement -> Param
setTime : Nat, FlowElement -> FlowElement
eqns forall d: Data, s,t: Nat, n: Name
ofsort Data getData(makeFlowElement(d,t,n)) = d;
ofsort Nat getTime(makeFlowElement(d,t,n)) = t;
ofsort Name getName(makeFlowElement(d,t,n)) = n;
ofsort FlowElement setTime(s,makeFlowElement(d,t,n)) = makeFlowElement(d,s,n);
endtype (* FlowElement *)
It should be noted here that we model time as a natural number however it might well be the case that real (dense) time
could be used, or time intervals. For simplicity here though, we restrict ourselves to discrete time represented as a natural
number. We also introduce an operation that converts a flow element into a parameter. For simplicity we omit the
associated equations. We also introduce sequences of these flow elements:
type FlowElementSeq is FlowElement
sorts FlowElementSeq
opns makeFlowElementSeq: -> FlowElementSeq
addFlowElement: FlowElement, FlowElementSeq -> FlowElementSeq
remFlowElement: FlowElement, FlowElementSeq -> FlowElementSeq
getFlowElement: Name, FlowElementSeq -> FlowElement
timeDiff: FlowElement, FlowElement -> Nat
eqns forall f1, f2: FlowElement, fs: FlowElementSeq, n1,n2: Name
ofsort FlowElementSeq
getTime(f1) le getTime(f2) =>
addFlowElement(f1,addFlowElement(f2,makeFlowElementSeq)) =
addFlowElement(f2,makeFlowElementSeq);
ofsort FlowElement
getFlowElement(n1,makeFlowElementSeq) = nullFlowElement;
n1 ne n2 =>
getFlowElement(n1,addFlowElement(makeFlowElement(d,t,n2),fs)) =
getFlowElement(n1,fs);
n1 eq n2 =>
getFlowElement(n1,addFlowElement(makeFlowElement(d,t,n2),fs)) =
makeFlowElement(d,t,n2);
endtype (* FlowElementSeq *)
For brevity we do not supply all of the equations. Flow elements are added to the sequence provided they have increasing
timestamps. An operation is provided for traversing a sequence of flow elements to find a named flow element. We also
introduce an operation to get the time difference between time stamps of two flow elements. It is possible using this
operation to specify, for example, that all flow elements in a sequence are separated by equal time stamps. In this case
we have an isochronous flow. We also introduce sets of these sequences of flow elements:
type FlowElementSeqSet is Set actualizedby FlowElementSeq
using sortnames FlowElementSeqSet for Set FlowElementSeq for Element Bool for FBool
endtype (* FlowElementSeqSet *)
A.1.1.1 Signal
There is no inherent feature of LOTOS which can be used to distinguish between a signal, a stream flow and an
operation. It may be the case, however, that a style of LOTOS can be used to distinguish between signals, streams and
ITU-T Rec. X.904/Amd.1 (2000 E) 5
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
operations. For example, all signals might have similar formats for their event offers. An example of one possible format
for the server side of a signal is shown in the following LOTOS fragment.
? ! ?;
Here and in the rest of A.1, we adopt the notation that represents a placeholder for an X,i.e. g, sigName, myRef and
inArgs represent placeholders for the gate, the name of the signal, the interface reference associated with the server
offering this signal and the parameters associated with the signal respectively.
An example of one possible format for the client side of a signal is shown in the following LOTOS fragment:
! ! !;
Here the client side of the signal contains a gate (g), a label for the signal name (sigName), a reference to the object the
signal is to be sent to (SomeIRef) and the parameters associated with the signal (inArgs). We shall see in A.1.1.11 how
these event offers may be used to construct signal interface signatures.
A.1.1.2 Operation
The occurrence of an interrogation or announcement.
A.1.1.3 Announcement
An interaction that consists of one invocation only. Due to the reasons given in A.1.1.1, only an informal modelling
convention can be used to model announcements. One example of this for the client side of an announcement might be
represented by:
! ! !;
The server side of an announcement might be represented by:
? ! ?;
The data structures here are similar to those in A.1.1.1. We shall see in A.1.1.12 how these event offers may be used to
construct parts of operation interface signatures.
A.1.1.4 Interrogation
An invocation from a client to a server followed by one of the possible terminations from that server to that client.
However, due to the reasons given in A.1.1.1, only an informal modelling convention can be used to model
interrogations. One example of this for the client side of an interrogation might be represented by:
! ! ! !;
( ? ! ?; (* . other behaviour *)
[ ] (* . other terminations *))
Here termName represents the termination names and outArgs represents the output parameters. The server side of an
interrogation might be represented by:
? ! ? ?;
( ! ! !; (* . other behaviour *)
[ ] (* . other terminations *))
The other data structures here are similar to those in A.1.1.1. We shall see in A.1.1.12 how these event offers may be
used to construct parts of operation interface signatures.
A.1.1.5 Flow
An abstraction of a sequence of interactions between a producer and a consumer object that result in the conveyance of
information. Due to the reasons given in A.1.1.1, flows may only be represented in LOTOS through informal modelling
conventions. It is often the case that flows have strict temporal requirements placed on them. One example of how this
might be achieved for flow production is through a process that is parameterised by a sequence of data structures to be
sent, e.g. flow elements that can be timestamped when they are sent. A simple example of how this might be modelled in
LOTOS is:
process ProduceAction[ g, .](. toSend: FlowElementSeq, tnow: Nat, rate: Nat .):noexit:=
g ! ! !;
(*. other behaviour and recurse with FlowElement removed from toSend *)
endproc (* ProduceAction *)
Here flow elements are sent together with the current (local) time plus the rate at which the flow elements should be
produced.
6 ITU-T Rec. X.904/Amd.1 (2000 E)
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
Consumption of flow elements typically has different requirements placed upon it. The need to continually monitor the
time stamps of the incoming flow of information is of particular importance. A simple representation of the consumption
of an information flow may be represented by:
process ConsumeAction[ g,.](myRef: IRef, recFlowElements: FlowElementSeq, tnow, rate: Nat.) :noexit:=
g ? !myRef ?;
(* check temporal requirements of inFlowElement are satisfied then *)
(* display FlowElement and recurse with time incremented *)
(* or recurse with FlowElement added to received FlowElements and time incremented *)
endproc (* ConsumeAction *)
A.1.1.6 Signal Interface
As there is no direct means in LOTOS to distinguish formally between a signal and any other LOTOS event, establishing
a given interface as being a signal interface is only possible informally by modelling the LOTOS events used to represent
signals differently to any other event. An example of how a signal interface signature might be modelled in LOTOS is
given in A.1.1.11.
A.1.1.7 Operational Interface
As there is no direct means in LOTOS to distinguish formally between an operation and any other LOTOS event,
establishing a given interface as being an operational interface is only possible informally by modelling the LOTOS
events used to represent operations differently to any other event. An example of how an operation interface signature
might be modelled in LOTOS is given in A.1.1.12.
A.1.1.8 Stream Interface
As there is no direct means in LOTOS to distinguish formally between a flow and any other LOTOS event, establishing a
given interface as being a stream interface is only possible informally by modelling the LOTOS events used to represent
flows differently to any other event. An example of how a stream interface signature might be modelled in LOTOS is
given in A.1.1.13.
A.1.1.9 Computational Object Template
In LOTOS a computational object template is represented by a process definition which has associated with it a set of
computational interface templates which the object can instantiate; a behaviour specification, i.e. a behaviour expression
that is not composed of events modelled as signal signatures, flow signatures or operation signatures. There should also
be some form of environmental contract modelled as part of the process definition, however, LOTOS does not possess
all of the necessary features to model environmental contracts fully. It may be possible to model some features in an
environmental contract through an Act One data type. This should be given as a formal parameter in the value parameter
list of the process definition.
A.1.1.10 Computational Interface Template
A signal interface template, a stream interface template or an operational interface template.
A.1.1.11 Signal Interface Signature
A signal interface signature is represented in LOTOS by a process definition, such that all event offers which require
synchronisation with the environment in order to occur are modelled as signal signatures. The occurrence of these event
offers result in a one-way communication from an initiating to a responding object. Structurally, a signal signature is
similar to an invocation for an announcement (or a termination associated with an interrogation), i.e. it consists of a name
(for the signal), a sequence of parameters associated with the signal and an indication of causality. Since all events in
LOTOS are atomic, there is no inherent distinction between events modelled as announcements or signals.
Signal interface signatures differ from operational interface signatures though in that they do not require that the
interface as a whole is given a causality. Instead, signal interface signatures may contain signals with either initiating or
responding causalities. From this we model a signal interface signature in LOTOS by:
process SignalIntSig[ g. ](myRef: IRef, known: IRefs.):noexit:=
g ! ! !; .(* other behaviour *)
[ ]. (* other initiating actions *)
[]
g ? !myRef ?;
([ not(makeOp(sigName,inArgs) IsIn getOps(myRef))] -> .(* unsuccessful behaviour *)
[]
[ makeOp(sigName,inArgs) IsIn getOps(myRef) ] -> .(* successful behaviour *) )
[ ]. (* other responding actions *)
endproc (* SignalIntSig *)
ITU-T Rec. X.904/Amd.1 (2000 E) 7
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
Here we state that a signal interface consists of a collection of event offers. These event offers may model either
outgoing signals, i.e. those event offers with ! prefixing the signal name and list of parameters, or incoming signals, i.e.
those event offers with ? prefixing the signal name and list of parameters. In the case of incoming signals, it is possible
to check that the incoming signal is one expected, i.e. the signal is in the set of allowed signals associated with that
interface reference.
NOTE – This specification fragment requires that the process is instantiated with at least one gate which corresponds to the
interaction point at which the interface exists. The process should also be instantiated with a set of interface references and its own
interface reference. We note here that it is not possible to write predicates on the signals sent. To do so would require a level of
prescriptivity that we do not have, e.g. ensuring that SomeIRef is an interface reference that exists in the set of known interface
references associated with the process. It is possible to perform checks on arriving signals though, i.e. the arriving signal should be
one of the signals associated with that interface reference.We also note that we have used the choice operator here to model the
composition of individual signals. It is quite possible to use several other composition operators here, e.g. interleaving. If
interleaving composition is used then multiple arriving signals can be received before any responding signals are sent. Since
interfaces usually have some form of existence, i.e. they offer operations that can be invoked more than one time, the comments
representing other behaviours are likely to contain recursive process instantiations. Through using the choice operator we have a
form of blocking of signals, i.e. should a signal arrive then it has to be responded to before any other signals can be accepted.
Similar arguments hold for all other processes representing computational interface signatures.
A.1.1.12 Operational Interface Signature
An operational interface signature is represented in LOTOS by a process definition, such that all event offers which
require synchronisation with the environment in order to occur are modelled as part of operation signatures. That is, they
all represent parts of either announcements or interrogations. We may model an operational interface signature for a
client through the following process definition.
process OpIntSigClient[ g. ](myRef: IRef, known: IRefs, .):noexit:=
g ! ! !; .(* other behaviour *)
[ ]. (* other announcements *)
[]
g ! ! ! !; .(* other behaviour *)
(g ? !myRef ?;
[ not(makeOp(termName,outArgs) IsIn getOps(myRef))] -> .(* return error message *)
[]
[ makeOp(termName,outArgs) IsIn getOps(myRef)] -> .(* other behaviour *)
[ ] . (* other terminations *))
[ ] . (* other interrogations *)
endproc (* OpIntSigClient *)
Here we state that a client interface signature consists of a collection of event offers. These event offers may model either
outgoing (announcement or interrogation) invocations, i.e. those event offers with ! prefixing the invocation name and
list of parameters, or incoming terminations, i.e. those event offers with ? prefixing the termination name and list of
parameters. In the case of incoming terminations, it is possible to check that the incoming termination is one expected,
i.e. the termination is in the set of allowed termination associated with that interface reference.
The Note in A.1.1.11 also applies to operational interface signatures with the appropriate modifications, e.g. replace
arriving signal by invocation.
Operational interfaces signatures for servers may be represented in LOTOS by:
process OpIntSigServer[ g. ](myRef: IRef, known: IRefs, .):noexit:=
g ? !myRef ?;
([ not(makeOp(invName,inArgs) IsIn getOps(myRef))] -> .(* ignore/other behaviour *)
[]
[ makeOp(invName,inArgs) IsIn getOps(myRef) ] -> .(* other behaviour *)
[ ]. (* other announcements *))
[]
g ? !myRef ? ?; .(* other behaviour *)
([ not(makeOp(invName,inArgs,outArgs) IsIn getOps(myRef))] -> .(* return error message *)
[]
[ makeOp(invName,inArgs,outArgs) IsIn getOps(myRef) ] -> .(* other behaviour *)
g ! ! !resList ; .(* other behaviour *)
[ ] . (* other terminations *))
[ ] . (* other interrogations *))
endproc (* OpIntSigServer *)
As with client interface signatures, a server interface signature has a set of known interface references and a reference for
itself. This latter interface reference is used to ensure that the announcement or interrogation invocations the server
receives are those that were expected, i.e. they were in the set of operations associated with that interface reference. If
these invocations were not acceptable, e.g. the parameters were not correct or the operation requested was not available,
then error handling behaviours are taken. In the case of announcements this might result in a recursive call with the
8 ITU-T Rec. X.904/Amd.1 (2000 E)
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
formal parameter list being unchanged. It is also possible to use a guard here to prevent the event from occurring in the
first place. We do not do so since this might produce unwanted deadlocks in the specification. In the case of
interrogations this would result in some form of error message being returned.
As with client operational interfaces it is possible to require that the messages received are those that were expected. It is
not possible to have prescriptions on the messages sent though. It could be argued that this limitation is not necessarily a
bad thing since, provided every process treats received messages the same way, sent messages should not cause
deadlocks through their format not being understood for example.
A.1.1.13 Stream Interface Signature
A stream interface signature is represented in LOTOS by a process definition, such that all event offers which require
synchronisation with the environment in order to occur are modelled as either producing or consuming flows. This might
be represented in LOTOS as:
process StreamIntSig[ g. ](myRef: IRef, known: IRefSet, fss: FlowElementSeqSet.):noexit:=
ConsumeAction[ g.](myRef, known, recFlowElements.) [ ]. (* other consume actions *)
[]
ProduceAction[ g.](myRef, known, FlowElementstoSend, .) [ ]. (* other produce actions *)
endproc (* StreamIntSig *)
As with signal interfaces the notion of causality is applied to individual action templates in the stream interface signature.
A stream interface signature contains sets of flows consuming or producing actions. Each flow signature is represented
by a process. These processes contain the reference to the stream interface with which they are associated, a set of
interface references representing the interface references known to that interface and a sequence of flow elements to send
(in the case of producing flows) or receive (in the case of consuming flows). For brevity we do not specify how the set of
sequences of flow elements that are passed to a stream interface signature are assigned to the producing flows in that
interface. When instantiated all consume flows are of course empty.
The Note in A.1.1.11 also applies to stream interface signatures with the appropriate modifications, e.g. replace arriving
signal by consumer flow.
A.1.1.14 Binding Object
An object which supports a binding between a set of other computational objects. An example of how this might be
modelled is shown in the following LOTOS fragment:
process ServerInterface[ g .](myRef: IRef, known: IRefSet, .):noexit:=
g ?bind: Name !myRef ?pl: PList;
([ getIRef(pl) IsIn known ] -> .(* already bound to server *)
ServerInterface[ g .](myRef,known.)
[]
[ not(getIRef(pl) IsIn known) and not(getOps(getIRef(pl)) IsSubsetOf getOps(myRef)) ]->
...(* operations requested by client not supported by server *)
ServerInterface[ g .](myRef,known.)
[ not(getIRef(pl) IsIn known) and (getOps(getIRef(pl)) IsSubsetOf getOps(myRef)) ] ->
...(* successful behaviour *)
ServerInterface[ g .](myRef,Insert(getIRef(pl),known).)
[]
...(* other behaviours restricted to clients in known *)
endproc (* ServerInterface *)
Here, if the client is already bound to the server, we then refuse the binding request and a recursive call is made. It
should be noted that this need not necessarily be the case, i.e. the same client might be bound to the same server several
times concurrently. Each of these bindings might have different properties associated with them, e.g. different sets of
operations requested with different constraints. This would require that the server object returned different interface
references for each successful binding. For example, instead of inserting the client interface reference into the set known
for successful binding requests, the server might generate an interface reference which is sent to the client and added to
the set known.
If the client is not already bound to the server, i.e. not in the set of known interface references, then the operations
associated with the client's request are checked. If the operations asked for are not available at the server then some error
behaviour is taken and a recursive call made. For simplicity we avoid dealing with the issues involved in type checking
the parameters of client and server operations. For similar reasons we do not deal with environment contracts either. For
brevity we do not provide the Act One operations for accessing the interface references contained in the parameter lists
(getIRef). Rather, we simply state that the operations the client requests should be in the set of operations that the server
provides.
ITU-T Rec. X.904/Amd.1 (2000 E) 9
ISO/IEC 10746-4:1998/Amd.1:2001 (E)
Finally, if the client asks for legal operations, i.e. in the set of operations supported by the server interface reference then
some successful behaviour occurs. This might be the sending of a positive response to the client. Following this the client
interface reference is then added to the set of known interfaces. Membership of this set then allows access to the other
behaviour (not specified here) available at this interface. This other behaviour should realise the set of operations and
constraints given by the interface reference myRef.
A.1.2 Structuring Rules
A.1.2.1 Naming Rules
The naming rules contained in the computational language of ITU-T Rec. X.903 | ISO/IEC 10746-3 may only be
supported in LOTOS provided strict modelling practices are followed. For example, when creating operational interface
references, e.g. myRef, ensuring that the invocation, termination name are unique, as well as the parameter names
associated with these operations. Enforcement of these rules can then be achieved through guards to detect the legality of
the data structures received (via value passing) at that interface.
A.1.2.2 Interaction Rules
A.1.2.2.1 Signal Interaction Rules
It is always the case in LOTOS that an object offering a signal (or stream or operational) interface can only initiate (and
respond to) signals, (or flows or operations) that are instances of the associated signal (or flow or operation) signature in
its signal (or stream or operational) interface type. This is built in to the synchronisation rules of LOTOS, i.e. only event
offers with matching (or overlapping) action denotations can synchronise. As discussed in this Recommendation |
International Standard, there is no real notion of causality in LOTOS and events either happen instantaneously together
or not at all. Thus it is not the case that an invocation is sent and then received. The invocation sending and receiving is
represented by the occurrence of a single LOTOS event.
A.1.2.2.2 Stream Interaction Rules
See A.1.2.2.1.
A.1.2.2.3 Operation Interaction Rules
See A.1.2.2.1.
A.1.2.2.4 Parameter Rules
It is possible in LOTOS to use Act One sorts as computational interface identifiers. These identifiers may then be passed
(via value passing) in the interactions of a given specification. Following these interactions, these identifiers (sorts) can
be used in future event offers of the sender and the receiver objects, thereby allowing for interactions to occur between
the sender and the receiver of the identifier. Thus the identifiers can be regarded as computational interface identifiers.
It is possible to have different representations of a given computational interface identifier modelled in Act One. This can
be achieved by having some form of equality through Act One rewriting.
It is possible in LOTOS to ensure that computational interface identifiers identify the same computational interface.
A.1.2.2.5 Flows, Operations and Signals
If it is required that flows and operations are to be represented in terms of signals then this requires that appropriate
modelling conventions in LOTOS are adopted. For example, through having checks (guards) on the names of the signals
and associated operations or flows.
A.1.2.3 Binding Rules
A.1.2.3.1 Implicit Binding for Server Operation Interfaces
An example of the server side of implicit binding is given in A.1.1.14. An example of the client side of an implicit
binding which wishes to invoke operation SomeOp offered by server referenced by SomeIRef and terminates upon
completion might be represented in LOTOS as:
let myRef: IRef = makeIRef(insert(someOp,{})
in ClientInterface[g,.](myRef,Insert(SomeIRef,{},. )
process ClientInterface[ g, .](myRef: IRef, known: IRefSet, .):noexit:=
g !bind !SomeIRef !pl; (* pl contains myRef, SomeIRef refe
...
NORME ISO/CEI
INTERNATIONALE 10746-4
Première édition
1998-12-15
AMENDEMENT 1
2001-12-15
Technologies de l'information — Traitement
réparti ouvert — Modèle de référence:
Sémantique architecturale
AMENDEMENT 1: Formalisation de traitement
Information technology — Open Distributed Processing — Reference
Model: Architectural semantics
AMENDMENT 1: Computational formalization
Numéro de référence
ISO/CEI 10746-4:1998/Amd.1:2001(F)
©
ISO/CEI 2001
ISO/CEI 10746-4:1998/Amd.1:2001(F)
PDF – Exonération de responsabilité
Le présent fichier PDF peut contenir des polices de caractères intégrées. Conformément aux conditions de licence d'Adobe, ce fichier peut
être imprimé ou visualisé, mais ne doit pas être modifié à moins que l'ordinateur employé à cet effet ne bénéficie d'une licence autorisant
l'utilisation de ces polices et que celles-ci y soient installées. Lors du téléchargement de ce fichier, les parties concernées acceptent de fait la
responsabilité de ne pas enfreindre les conditions de licence d'Adobe. Le Secrétariat central de l'ISO décline toute responsabilité en la
matière.
Adobe est une marque déposée d'Adobe Systems Incorporated.
Les détails relatifs aux produits logiciels utilisés pour la création du présent fichier PDF sont disponibles dans la rubrique General Info du
fichier; les paramètres de création PDF ont été optimisés pour l'impression. Toutes les mesures ont été prises pour garantir l'exploitation de
ce fichier par les comités membres de l'ISO. Dans le cas peu probable où surviendrait un problème d'utilisation, veuillez en informer le
Secrétariat central à l'adresse donnée ci-dessous.
© ISO/CEI 2001
Droits de reproduction réservés. Sauf prescription différente, aucune partie de cette publication ne peut être reproduite ni utilisée sous quelque
forme que ce soit et par aucun procédé, électronique ou mécanique, y compris la photocopie et les microfilms, sans l'accord écrit de l’ISO à
l’adresse ci-après ou du comité membre de l’ISO dans le pays du demandeur.
ISO copyright office
Case postale 56 • CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax. + 41 22 749 09 47
E-mail copyright@iso.ch
Web www.iso.ch
Version française parue en 2002
Imprimé en Suisse
ii © ISO/CEI 2001 – Tous droits réservés
ISO/CEI 10746-4:1998/Amd.1:2001(F)
TABLE DES MATIÈRES
Page
1) Avant-propos . 1
2) Article 0 – Introduction . 1
3) Article 1 – Domaine d'application . 2
4) Article 2 – Références normatives. 2
5) Paragraphe 3.2 – Termes définis dans la Recommandation UIT-T Z.100. 2
6) Paragraphe 3.3 – Termes définis dans "The Z Base Standard". 2
7) Annexe A. 3
Annexe A – Formalisation de traitement . 3
A.1 Formalisation du langage de point de vue traitement en LOTOS. 3
A.2 Formalisation du langage de point de vue traitement en SDL. 13
A.3 Formalisation du langage de point de vue traitement en Z. 22
A.4 Formalisation du langage de point de vue traitement en ESTELLE. 30
© ISO/CEI 2001 – Tous droits réservés iii
ISO/CEI 10746-4:1998/Amd.1:2001(F)
Avant-propos
L'ISO (Organisation internationale de normalisation) et la CEI (Commission électrotechnique internationale)
forment le système spécialisé de la normalisation mondiale. Les organismes nationaux membres de l'ISO ou de la
CEI participent au développement de Normes internationales par l'intermédiaire des comités techniques créés par
l'organisation concernée afin de s'occuper des domaines particuliers de l'activité technique. Les comités
techniques de l'ISO et de la CEI collaborent dans des domaines d'intérêt commun. D'autres organisations
internationales, gouvernementales et non gouvernementales, en liaison avec l'ISO et la CEI participent également
aux travaux. Dans le domaine des technologies de l'information, l'ISO et la CEI ont créé un comité technique mixte,
l'ISO/CEI JTC 1.
Les Normes internationales sont rédigées conformément aux règles données dans les Directives ISO/CEI, Partie 3.
La tâche principale du comité technique mixte est d'élaborer les Normes internationales. Les projets de Normes
internationales adoptés par le comité technique mixte sont soumis aux organismes nationaux pour vote. Leur
publication comme Normes internationales requiert l'approbation de 75 % au moins des organismes nationaux
votants.
L'attention est appelée sur le fait que certains des éléments du présent Amendement peuvent faire l'objet de droits
de propriété intellectuelle ou de droits analogues. L'ISO et la CEI ne sauraient être tenues pour responsables de ne
pas avoir identifié de tels droits de propriété et averti de leur existence.
L'Amendement 1 à la Norme internationale ISO/CEI 10746-4:1998 a été élaboré par le comité technique mixte
ISO/CEI JTC 1, Technologies de l'information, sous-comité SC 7, Ingénierie du logiciel, en collaboration avec
l'UIT-T. Le texte identique est publié en tant que Rec. UIT-T X.904/Amd.1.
iv © ISO/CEI 2001 – Tous droits réservés
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
NORME INTERNATIONALE
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
Rec. UIT-T X.904/Amd.1 (2000 F)
RECOMMANDATION UIT-T
TECHNOLOGIES DE L'INFORMATION – TRAITEMENT RÉPARTI OUVERT –
MODÈLE DE RÉFÉRENCE: SÉMANTIQUE ARCHITECTURALE
AMENDEMENT 1
Formalisation de traitement
1) Avant-propos
er
Remplacer le 1 paragraphe de l'avant-propos
La présente Recommandation | Norme internationale fait partie intégrante du modèle de référence du traitement réparti
ouvert (ODP, open distributed processing). Elle contient une formalisation des concepts de modélisation ODP définis
dans les articles 8 et 9 de la Rec. UIT-T X.902 | ISO/CEI 10746-2. La formalisation est obtenue par l'interprétation de
chaque concept en fonction des constructions des différentes techniques de description formelle normalisées.
par:
La présente Recommandation | Norme internationale fait partie intégrante du modèle de référence du traitement réparti
ouvert (ODP, open distributed processing). Elle contient une formalisation des concepts de modélisation ODP définis
dans les articles 8 et 9 de la Rec. UIT-T X.902 | ISO/CEI 10746-2 et dans l'article 7 (Language de traitement) de la Rec.
UIT-T X.903 | ISO/CEI 10746-3. La formalisation est obtenue par l'interprétation de chaque concept en fonction des
constructions des différentes techniques de description formelle normalisées.
2) Article 0 – Introduction
e
Remplacer la 4 énumération sous "Le modèle RM-ODP se compose"
– de la Rec. UIT-T X.904 | ISO/CEI 10746-4: Sémantique architecturale: elle contient une formalisation
des concepts de modélisation ODP définis dans les articles 8 et 9 de la Rec. UIT-T X.902 |
ISO/CEI 10746-2 et une formalisation des langages de point de vue définis dans la Rec. UIT-T X.903 |
ISO/CEI 10746-3. La formalisation est obtenue par l'interprétation de chaque concept en fonction des
constructions des différentes techniques de description formelle normalisées. Ce texte est normatif.
par
– de la Rec. UIT-T X.904 | ISO/CEI 10746-4: Sémantique architecturale: elle contient une formalisation
des concepts de modélisation ODP définis dans les articles 8 et 9 de la Rec. UIT-T X.902 |
ISO/CEI 10746-2 et une formalisation des langages de point de vue traitement définis dans la Rec. UIT-T
X.903 | ISO/CEI 10746-3. La formalisation est obtenue par l'interprétation de chaque concept en fonction
des constructions des différentes techniques de description formelle normalisées. Ce texte est normatif.
e
Remplacer le 4 paragraphe:
La présente Recommandation | Norme internationale a pour objet de fournir une sémantique architecturale pour les
systèmes ODP, ce qui se traduit par une interprétation des concepts de modélisation de base et de spécification définis
dans la Rec. UIT-T X.902 | ISO/CEI 10746-2 et des langages de point de vue définis dans la Rec. UIT-T X.903 |
ISO/CEI 10746-3; elle utilise les diverses caractéristiques de différents langages de spécification formelle. Une
sémantique architecturale est élaborée pour quatre différents langages de spécification formelle: LOTOS, ESTELLE,
SDL et Z, ce qui conduit à une formalisation de l'architecture des systèmes ODP. Un processus d'élaboration itérative et
de retour a permis d'améliorer la cohérence des Rec. UIT-T X.902 | ISO/CEI 10746-2 et UIT-T X.903 |
ISO/CEI 10746-3.
Rec. UIT-T X.904/Amd.1 (2000 F) 1
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
par
La présente Recommandation | Norme internationale a pour objet de fournir une sémantique architecturale pour les
systèmes ODP, ce qui se traduit par une interprétation des concepts de modélisation de base et de spécification définis
dans la Rec. UIT-T X.902 | ISO/CEI 10746-2 et des langages de point de vue traitement définis dans la Rec. UIT-T
X.903 | ISO/CEI 10746-3; elle utilise les diverses caractéristiques de différents langages de spécification formelle. Une
sémantique architecturale est élaborée pour quatre différents langages de spécification formelle: LOTOS, ESTELLE,
SDL et Z, ce qui conduit à une formalisation de l'architecture des systèmes ODP. Un processus d'élaboration itérative et
de retour a permis d'améliorer la cohérence des Rec. UIT-T X.902 | ISO/CEI 10746-2 et UIT-T X.903 |
ISO/CEI 10746-3.
3) Article 1 – Domaine d'application
Ajouter le paragraphe suivant à la fin du Domaine d'application
L'Annexe A indique une manière selon laquelle le langage de point de vue traitement de la Rec. UIT-T X.903 | ISO/CEI
10746-3 peut-être représenté dans les langages formels LOTOS, SDL, Z et Estelle. La présente Recommandation |
Norme internationale fait également appel aux concepts définis dans la Rec. UIT-T X.902 | ISO/CEI 10746-2.
4) Article 2 – Références normatives
Changer la date de publication pour la Recommandation UIT-T Z.100 de (1993) en (1999).
ISO/CEI 13568:
Ajouter la référence suivante:
Z Notation, ISO/CEI JTC 1 SC 22 GT 19, Advanced Working Draft 2.C, 13 juillet 1999.
5) Paragraphe 3.2 – Termes définis dans la Recommandation UIT-T Z.100
Remplacer la liste des termes par la suivante:
active, adding, all, alternative, and, any, as, atleast, axioms, block, call, channel, comment, connect, connection,
constant, constants, create, dcl, decision, default, else, endalternative, endblock, endchannel, endconnection,
enddecision, endgenerator, endnewtype, endoperator, endpackage, endprocedure, endprocess, endrefinement, endselect,
endservice, endstate, endsubstructure, endsyntype, endsystem, env, error, export, exported, external, fi, finalized, for,
fpar, from, gate, generator, if, import, imported, in, inherits, input, interface, join, literal, literals, map, mod, nameclass,
newtype, nextstate, nodelay, noequality, none, not, now, offspring, operator, operators, or, ordering, out, output,
package, parent, priority, procedure, process, provided, redefined, referenced, refinement, rem, remote, reset, return,
returns, revealed, reverse, save, select, self, sender, service, set, signal, signallist, signalroute, signalset, spelling, start,
state, stop, struct, substructure, synonym, syntype, system, task, then, this, timer, to, type, use, via, view, viewed, virtual,
with, xor.
6) Paragraphe 3.3 – Termes définis dans "The Z Base Standard"
Changer le titre du paragraphe par:
3.3 – Termes définis dans "The Z Notation"
Remplacer la liste des termes par la suivante:
affinement de données, affinement d'opération, théorie des schémas, composition de schéma, description axiomatique,
occultation, remplacement, schéma (opération, état, encadrement), séquence, type.
2 Rec. UIT-T X.904/Amd.1 (2000 F)
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
7) Annexe A
Ajouter une nouvelle Annexe A comme suit:
Annexe A
Formalisation de traitement
A.1 Formalisation du langage de point de vue traitement en LOTOS
A.1.1 Concepts
La formalisation du langage de traitement en LOTOS utilise les concepts définis dans la formalisation des règles de
modélisation et de structuration de base indiquées aux articles 8 et 9 de la Rec. UIT-T X.902 | ISO/CEI 10746–2.
Structures élémentaires associées aux interfaces opération et signal
Pour formaliser le langage de traitement en LOTOS, il est nécessaire d'introduire certaines structures élémentaires.
Celles-ci comportent des paramètres susceptibles d'être associés à certaines interfaces de traitement ainsi qu'un modèle
d'information de base susceptible d'être utilisé dans un flux.
Pour formaliser des paramètres il est nécessaire d'adopter deux concepts, à savoir celui de noms d'objets et celui de types
d'objets. Les noms sont simplement des étiquettes. Comme nous allons le voir, du point de vue traitement, ces étiquettes
doivent faire l'objet de contrôles, visant par exemple à en vérifier l'égalité, au moment où les interfaces sont créées. En
règle générale, nous pouvons représenter les noms comme suit:
type Name is Boolean
sorts Name
opns newName: -> Name
anotherName: Name -> Name
_eq_,_ne_: Name, Name -> Bool
endtype (* Name *)
Par souci de concision, nous faisons l'impasse sur les équations, qui ne sont pas censées poser de problème particulier. Il
est possible d'être ici plus normatif, par exemple en utilisant des chaînes de caractères de la bibliothèque LOTOS. La
seule chose qui nous intéresse en ce qui concerne les noms est que nous puissions en déterminer l'égalité ou l'inégalité.
Comme indiqué dans la présente Recommandation | Norme internationale, un type selon la terminologie ODP ne peut
pas être interprété directement dans la partie "algèbre de processus" du langage LOTOS. Il est toutefois possible de
modéliser des types à l'aide de la partie "Act One" du LOTOS. Bien qu'elle ait été expressément conçue pour représenter
des types, la partie Act One est malheureusement limitée dans ses modalités de vérification des types et des relations
entre les types. Par exemple, il est impossible de vérifier le sous-typage ou l'équivalence, voire l'isomorphisme entre les
types, du fait que l'égalité de types en Act One est fondée sur l'équivalence de noms de sortes. A l'appui de notre
raisonnement, nous introduisons ici une notion élémentaire de types qui nous permet de tester l'égalité, l'inégalité et le
sous-typage.
type AnyType is Boolean
sorts AnyType
opns newType: -> AnyType
anotherType: AnyType -> AnyType
_eq_,_isSubtype_: AnyType, AnyType -> Bool
endtype (* AnyType *)
Un paramètre est une relation entre un nom et sa représentation de type sous-jacente. Un paramètre peut donc être
représenté comme suit:
type Param is Name, AnyType
sorts Param
opns newParam: Name, AnyType -> Param
_eq_,_ne_,_isSubtype_: Param, Param -> Bool
endtype (* Param *)
Comme précédemment, nous devons procéder à des contrôles de l'égalité ou de l'inégalité des paramètres ainsi que dans
le cas où un paramètre est un sous-type d'un autre paramètre. Deux paramètres ont une relation de sous-typage lorsque
leurs types ont une relation de sous-typage. Il est par ailleurs utile pour nous d'introduire des séquences de ces
paramètres.
Rec. UIT-T X.904/Amd.1 (2000 F) 3
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
type PList is String actualizedby Param
using sortnames PList for String Param for Element Bool for FBool
opns _isSubtype_: PList, PList -> Bool
endtype (* PList *)
Nous utilisons ici le type String de la bibliothèque LOTOS, actualisé avec le type Param défini précédemment. En outre,
nous incluons ici une opération isSubtype permettant de vérifier si une séquence de paramètres est un sous-type d'une
autre. Une liste de paramètres est un sous-type d'une autre liste lorsque tous les paramètres qu'elle contient sont des sous-
types de ceux qui figurent dans la première liste. En outre, les paramètres devraient occuper la même position dans leurs
listes respectives. Il convient de noter que ces paramètres sont susceptibles de contenir des références aux interfaces
utilisées pour limiter les interactions qui peuvent se produire. Alors qu'il est tout à fait possible de modéliser une
interface dans l'algèbre de processus, il est impossible de modéliser une référence à cette interface dans l'algèbre de
processus qui, pour ainsi dire, s'approprie la fonctionnalité de cette interface. Pour surmonter cette difficulté, nous
modélisons les références d'interface en Act One. Etant donné qu'une référence d'interface reproduit, entre autres choses,
la signature de l'interface, nous fournissons un modèle de signatures en Act One pour les opérations. Les opérations se
composent d'un nom, d'une séquence d'entrées et éventuellement d'une séquence de sorties. Pour simplifier les choses,
nous ne nous soucions pas ici de savoir si l'opération est en notation infixée, préfixée ou suffixée. Cela peut-être
représenté par le fragment LOTOS suivant:
type Op is Name, PList
sorts Op
opns makeOp: Name, PList -> Op
makeOp: Name, PList, PList -> Op
getName: Op -> Name
getInps: Op -> PList
getOuts: Op -> PList
_eq_: Op, Op -> Bool
eqns forall op1,op2: Op, n: Name; pl1, pl2: PList
ofsort Name getName(makeOp(n,pl1,pl2)) = n;
ofsort PList getInps(makeOp(n,pl1)) = pl1;
getInps(makeOp(n,pl1,pl2)) = pl1;
getOuts(makeOp(n,pl1)) = <>;
getOuts(makeOp(n,pl1,pl2)) = pl2;
ofsort Bool op1 eq op2 = ((getName(op1) eq getName(op2)) and
(getInps(op1) isSubtype getInps(op2)) and
(getOuts(op2) isSubtype getOuts(op1)));
endtype (* Op *)
Le fait de disposer d'une méthode permettant de déterminer si deux opérations sont identiques ramène le problème du
sous-typage entre types abstraits de données à une comparaison d'ensembles, dont les éléments sont les opérations
créées. Ainsi, un serveur est un sous-type d'un autre serveur s'il prend en charge toutes les opérations de cet autre
serveur. A noter ici que nous modélisons deux formes d'opérations: celle dont on n'attend pas de résultats et celle dont on
en attend. En outre, nous introduisons des ensembles de ces opérations.
type OpSet is Set actualizedby Op
using sortnames OpSet for Set Op for Element Bool for FBool
endtype (* OpSet *)
Cela étant, une référence d'interface peut être représentée par le fragment LOTOS suivant:
type IRef is OpSet
sorts IRef
opns makeIRef : OpSet -> IRef
NULL : -> IRef
getOps : IRef -> OpSet
_eq_ : IRef, IRef -> Bool
eqns forall o: OpSet; ir1, ir2: IRef
ofsort OpSet getOps(makeIRef(o)) = o;
ofsort Bool ir1 eq ir2 = getOps(ir1) eq getOps(ir2) ;
endtype (* IRef *)
Nous constatons ici que l'égalité des références d'interface est fondée uniquement sur les opérations contenues dans la
référence considérée. Elle pourrait parfaitement être étendue à d'autres aspects, tels que l'emplacement de l'interface ou
les contraintes qui en restreignent l'utilisation. En outre, nous introduisons des ensembles de ces références d'interface.
type IRefSet is Set actualizedby IRef
using sortnames IRefSet for Set IRef for Element Bool for FBool
endtype (* IRefSet *)
4 Rec. UIT-T X.904/Amd.1 (2000 F)
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
Structures élémentaires associées aux interfaces flux
Le langage de point de vue traitement de la Recommandation UIT-T X.903 | ISO/CEI 10746–3 examine en outre les
interfaces relatives au flux continu de données, par exemple multimédias. Ces interfaces sont appelées interfaces flux.
Les interfaces flux contiennent des ensembles finis de flux. Ces flux peuvent provenir de l'interface (flux producteur) ou
se diriger vers l'interface (flux consommateur). Chaque flux est modélisé au moyen d'un modèle d'action. Chaque modèle
d'action contient le nom du flux, le type du flux ainsi qu'une indication de causalité pour ce flux.
Le point de vue traitement s'éloigne du contenu du flux d'informations proprement dit. Nous retenons ici un principe
générique du flux d'informations selon lequel ce flux est représenté par une séquence d'éléments de flux. Un élément de
flux peut être considéré comme un élément particulier du flux d'informations. Nous constatons ici que les flux sont
considérés du point de vue traitement comme des actions continues. Dans le modèle que nous présentons ici, les flux sont
représentés comme des séquences d'événements temporels discrets. D'un côté cela nous permet de remédier aux
problèmes de synchronisation des flux d'informations, même si cela se traduit par la perte du caractère continu des flux.
Chaque élément d'un flux d'information peut être considéré comme une unité composée de données (qui peuvent être
comprimées) et que nous représentons par Données. Ce modèle peut indiquer comment les informations ont été
comprimées, quelles informations ont été comprimées, etc. En tant que tel, ce modèle n'est pas examiné plus avant ici.
De plus, les éléments de flux contiennent un champ d'indication horaire servant à modéliser l'heure à laquelle l'élément
de flux considéré a été envoyé ou reçu. En outre, il arrive souvent, dans le cas de flux multimédias, que des éléments de
flux de synchronisation soient nécessaires, par exemple pour synchroniser le son avec l'image. C'est pourquoi nous
associons un nom donné (Name) à chaque élément de flux. Ce nom peut ensuite servir à sélectionner un élément de flux
donné, selon les besoins. Il en découle que nous pouvons modéliser un élément de flux comme suit:
type FlowElement is Name, NaturalNumber, Data, Param
sorts FlowElement
opns makeFlowElement: Data, Nat, Name -> FlowElement
nullFlowElement : -> FlowElement
getData : FlowElement -> Data
getTime : FlowElement -> Nat
getName : FlowElement -> Name
toParam : FlowElement -> Param
setTime : Nat, FlowElement -> FlowElement
eqns forall d: Data, s,t: Nat, n: Name
ofsort Data getData(makeFlowElement(d,t,n)) = d;
ofsort Nat getTime(makeFlowElement(d,t,n)) = t;
ofsort Name getName(makeFlowElement(d,t,n)) = n;
ofsort FlowElement setTime(s,makeFlowElement(d,t,n)) = makeFlowElement(d,s,n);
endtype (* FlowElement *)
Il convient de noter ici que nous modélisons le temps sous la forme d'un nombre naturel. Toutefois, les valeurs de
modélisation retenues pourraient très bien aussi être exprimées en temps réel (continu) ou en intervalles de temps. Pour
simplifier les choses, nous nous bornons ici à représenter le temps discret sous la forme d'un nombre naturel. Par ailleurs,
nous introduisons une opération permettant de convertir un élément de flux en un paramètre. Pour simplifier les choses,
nous faisons l'impasse sur les équations associées. En outre, nous introduisons des séquences de ces éléments de flux:
type FlowElementSeq is FlowElement
sorts FlowElementSeq
opns makeFlowElementSeq: -> FlowElementSeq
addFlowElement: FlowElement, FlowElementSeq -> FlowElementSeq
remFlowElement: FlowElement, FlowElementSeq -> FlowElementSeq
getFlowElement: Name, FlowElementSeq -> FlowElement
timeDiff: FlowElement, FlowElement -> Nat
eqns forall f1, f2: FlowElement, fs: FlowElementSeq, n1,n2: Name
ofsort FlowElementSeq
getTime(f1) le getTime(f2) =>
addFlowElement(f1,addFlowElement(f2,makeFlowElementSeq)) =
addFlowElement(f2,makeFlowElementSeq);
ofsort FlowElement
getFlowElement(n1,makeFlowElementSeq) = nullFlowElement;
n1 ne n2 =>
getFlowElement(n1,addFlowElement(makeFlowElement(d,t,n2),fs)) =
getFlowElement(n1,fs);
n1 eq n2 =>
getFlowElement(n1,addFlowElement(makeFlowElement(d,t,n2),fs)) =
makeFlowElement(d,t,n2);
endtype (* FlowElementSeq *)
Rec. UIT-T X.904/Amd.1 (2000 F) 5
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
Par souci de concision, nous ne reproduisons pas toutes les équations. Les éléments de flux sont ajoutés à la séquence
pour autant qu'ils présentent des valeurs de champ d'indication horaire croissantes. Une opération permettant de traverser
une séquence d'éléments de flux pour trouver un élément de flux nommé est prévue. En outre, nous introduisons une
opération permettant de calculer les différences horaires entre les champs d'indication horaire de deux éléments de flux.
Le recours à cette opération permet de préciser, par exemple, que tous les éléments de flux d'une séquence sont séparés
par des champs d'indication horaire égaux. Nous sommes alors en présence d'un flux isochrone. En outre, nous
introduisons des ensembles de ces séquences d'éléments de flux:
type FlowElementSeqSet is Set actualizedby FlowElementSeq
using sortnames FlowElementSeqSet for Set FlowElementSeq for Element Bool for FBool
endtype (* FlowElementSeqSet *)
A.1.1.1 Signal
Aucun élément propre au LOTOS ne permet de faire la distinction entre un signal, un flux et une opération. Il peut
arriver, toutefois, qu'un style de LOTOS permette de faire la distinction entre des signaux, des flux et des opérations. Par
exemple, tous les signaux pourraient avoir des formats analogues pour leurs offres d'événement. Un exemple d'un format
possible côté serveur d'un signal est représenté dans le fragment LOTOS suivant:
? ! ?;
Ici et dans le reste du paragraphe A.1, nous adoptons la notation selon laquelle tient lieu de paramètre fictif pour un
X, c'est-à-dire que g, sigName, myRef et inArgs tiennent lieu respectivement de paramètres fictifs pour la porte, le nom du
signal, la référence d'interface associée au serveur offrant ce signal et les paramètres associés au signal.
Un exemple de format possible côté client d'un signal est représenté dans le fragment LOTOS suivant:
! ! !;
Ici le côté client du signal contient une porte (g), une étiquette pour le nom du signal (sigName), une référence désignant
l'objet auquel le signal est envoyé (SomeIRef) et les paramètres associés au signal (inArgs). Nous verrons au § A.1.1.11
comment ces offres d'événement peuvent être utilisées pour créer des signatures d'interface signal.
A.1.1.2 Opération
Occurrence d'une interrogation ou d'une annonce.
A.1.1.3 Annonce
Interaction consistant en une seule invocation. Pour les raisons indiquées au § A.1.1.1, on ne peut utiliser qu'une
convention de modélisation informelle pour modéliser des annonces. Un exemple de cette règle pour le côté client d'une
annonce pourrait être représenté comme suit:
! ! !;
Le côté serveur d'une annonce pourrait être représenté comme suit:
? ! ?;
Les structures de données sont ici analogues à celles qui sont décrites au § A.1.1.1. Nous verrons au § A.1.1.12 comment
ces offres d'événement peuvent être utilisées pour créer des parties de signature d'interface opération.
A.1.1.4 Interrogation
Invocation entre un client et un serveur, suivie d'une ou plusieurs terminaisons entre ce serveur et ce client. Toutefois,
pour les raisons indiquées au § A.1.1.1, on ne peut utiliser qu'une convention de modélisation informelle pour modéliser
les interrogations. Un exemple de cette règle pour le côté client d'une interrogation pourrait être représenté comme suit:
! ! ! !;
( ? ! ?; (* . other behaviour *)
[ ] (* . other terminations *))
Ici termName représente les noms de terminaison et outArgs représente les paramètres de sortie. Le côté serveur d'une
interrogation pourrait être représenté comme suit:
? ! ? ?;
( ! ! !; (* . other behaviour *)
[ ] (* . other terminations *))
Les autres structures de données considérées ici sont analogues à celles qui sont décrites au § A.1.1.1. Nous verrons au
§ A.1.1.12 comment ces offres d'événement peuvent être utilisées pour créer des parties de signatures d'interface
opération.
6 Rec. UIT-T X.904/Amd.1 (2000 F)
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
A.1.1.5 Flux
Abstraction d'une séquence d'interaction, entre un objet producteur et un objet consommateur donnant lieu à
l'acheminement d'informations. Pour les raisons indiquées au § A.1.1.1, les flux ne peuvent être représentés qu'en
LOTOS à l'aide de conventions de modélisation informelle. Les flux sont souvent soumis à des exigences temporelles
strictes. Une manière d'appliquer cette règle à la production de flux consisterait par exemple à recourir à un processus
paramétré par une séquence de structures de données à envoyer, par exemple des éléments de flux qui peuvent être datés
au moment où ils sont envoyés. Une manière simple de modéliser cette règle en LOTOS serait par exemple la suivante:
process ProduceAction[ g, .](. toSend: FlowElementSeq, tnow: Nat, rate: Nat .):noexit:=
g ! ! !;
(*. other behaviour and recurse with FlowElement removed from toSend *)
endproc (* ProduceAction *)
Ici les éléments de flux sont envoyés ensemble avec l'indication de l'heure (locale) du moment considéré et de la cadence
à laquelle les éléments de flux doivent être produits.
La consommation des éléments de flux est généralement soumise à des exigences différentes. La nécessité de surveiller
continuellement les champs d'indication horaire des flux d'information entrants revêt une importance particulière. La
consommation d'un flux d'information peut être représentée de manière simple comme suit:
process ConsumeAction[ g,.](myRef: IRef, recFlowElements: FlowElementSeq, tnow, rate: Nat.) :noexit:=
g ? !myRef ?;
(* check temporal requirements of inFlowElement are satisfied then *)
(* display FlowElement and recurse with time incremented *)
(* or recurse with FlowElement added to received FlowElements and time incremented *)
endproc (* ConsumeAction *)
A.1.1.6 Interface signal
Comme il n'existe aucun moyen direct, en LOTOS, d'établir une distinction formelle entre un signal et tout autre
événement LOTOS, on ne peut déterminer qu'une interface donnée est une interface signal que de manière informelle en
modélisant les événements LOTOS utilisés pour représenter les signaux différemment de tout autre événement. Un
exemple de la manière dont une signature d'interface signal pourrait être modélisée en LOTOS est donné au § A.1.1.11.
A.1.1.7 Interface opération
Comme il n'existe aucun moyen direct, en LOTOS, d'établir une distinction formelle entre une opération et tout autre
événement LOTOS, on ne peut déterminer qu'une interface donnée est une interface opération que de manière informelle
en modélisant les événements LOTOS utilisés pour représenter les opérations différemment de tout autre événement. Un
exemple de la manière dont une signature d'interface opération pourrait être modélisée en LOTOS est donné au
§ A.1.1.12.
A.1.1.8 Interface flux
Comme il n'existe aucun moyen direct, en LOTOS, d'établir une distinction formelle entre un flux et tout autre
événement LOTOS, on ne peut déterminer qu'une interface donnée est une interface de flux que de manière informelle en
modélisant les événements LOTOS utilisés pour représenter les flux différemment de tout autre événement. Un exemple
de la manière dont une signature d'interface flux pourrait être modélisée en LOTOS est donné au § A.1.1.13.
A.1.1.9 Modèle d'objet de traitement
En LOTOS, un modèle d'objet de traitement est représenté par une définition de processus à laquelle est associé un
ensemble de modèles d'interface de traitement que l'objet peut instancier et par une spécification de comportement, c'est-
à-dire une expression de comportement qui n'est pas composée d'événements modélisés sous forme de signatures de
signal, de signatures de flux ou de signatures d'opération. Par ailleurs, une forme quelconque de contrat d'environnement
devrait être modélisée dans le cadre de la définition de processus. Toutefois, le LOTOS n'est pas doté de toutes les
fonctions nécessaires à la modélisation intégrale de contrats d'environnement. Il est possible de modéliser certaines
fonctions d'un contrat d'environnement à l'aide d'un type de donnée Act One. Ce type doit être indiqué sous la forme d'un
paramètre formel dans la liste des paramètres de valeur de la définition de processus.
A.1.1.10 Modèle d'interface de traitement
Modèle d'interface signal, modèle d'interface flux ou modèle d'interface opération.
Rec. UIT-T X.904/Amd.1 (2000 F) 7
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
A.1.1.11 Signature d'interface signal
En LOTOS, une signature d'interface signal est représentée par une définition de processus, de telle sorte que toutes les
offres d'événement qui doivent être synchronisées avec l'environnement pour se produire soient modélisées sous forme
de signatures de signal. L'occurrence de ces offres d'événement se traduit par l'établissement d'une communication
unidirectionnelle entre un objet initiateur et un objet répondeur. Sur le plan structurel, une signature de signal est
analogue à une invocation d'annonce (ou de terminaison associée à une interrogation), c'est-à-dire qu'elle se compose
d'un nom (pour le signal), d'une séquence de paramètres associés au signal et d'une indication de causalité. Comme tous
les événements en LOTOS sont atomiques, il n'existe aucune distinction intrinsèque entre les événements modélisés sous
forme d'annonces et les événements modélisés sous forme de signaux.
Les signatures d'interface signal diffèrent toutefois des signatures d'interface opération en ceci qu'elles ne requièrent pas
qu'une causalité soit conférée à toute l'interface. Les signatures d'interface signal peuvent au contraire contenir des
signaux avec des causalités d'initiateur ou de répondeur. Il s'ensuit que nous pouvons modéliser une signature d'interface
signal en LOTOS comme suit:
process SignalIntSig[ g. ](myRef: IRef, known: IRefs.):noexit:=
g ! ! !; .(* other behaviour *)
[ ]. (* other initiating actions *)
[ ]
g ? !myRef ?;
([ not(makeOp(sigName,inArgs) IsIn getOps(myRef))] -> .(* unsuccessful behaviour *)
[ ]
[ makeOp(sigName,inArgs) IsIn getOps(myRef) ] -> .(* successful behaviour *) )
[ ]. (* other responding actions *)
endproc (* SignalIntSig *)
Nous constatons ici qu'une interface signal se compose d'un ensemble d'offres d'événement. Ces offres d'événement
peuvent modéliser des signaux sortants, pour celles d'entre elles qui comportent un point d'exclamation (!) précédant le
nom du signal et la liste de paramètres, ou des signaux entrants, pour celles d'entre elles qui comportent un point
d'interrogation (?) précédant le nom du signal et la liste de paramètres. Dans le cas de signaux entrants, il est possible de
vérifier que le signal entrant est bien un des signaux qui sont attendus, c'est-à-dire qu'il fait partie de l'ensemble de
signaux autorisés associés à cette référence d'interface.
NOTE – Ce fragment de spécification requiert que le processus soit instancié avec au moins une porte qui corresponde au point
d'interaction auquel l'interface se situe. Le processus devrait aussi être instancié avec un ensemble de références d'interface et sa
propre référence d'interface. Nous constatons ici qu'il est impossible d'écrire des prédicats sur les signaux envoyés. Il faudrait pour
cela un niveau d'autorité que nous n'avons pas, garantissant par exemple que SomeIRef soit une des références d'interfaces figurant
dans l'ensemble de références d'interface connues associé au processus. Il est toutefois possible de soumettre les signaux entrants à
des contrôles, le but étant de vérifier que le signal entrant est bien un des signaux associés à cette référence d'interface. Nous
notons en outre que nous avons utilisé ici l'opérateur choix pour modéliser la composition des différents signaux. Il est tout à fait
possible d'utiliser ici plusieurs autres opérateurs de composition, par exemple l'opérateur d'entrelacement. L'utilisation de la
composition avec entrelacement permet la réception de plusieurs signaux entrants avant qu'un signal de réponse ne soit envoyé.
Les interfaces étant généralement matérialisées sous une forme quelconque, c'est-à-dire qu'elles offrent des opérations qui peuvent
être invoquées plusieurs fois, les commentaires représentant d'autres comportements sont susceptibles de contenir des
instanciations de processus récursif. L'utilisation de l'opérateur de choix nous offre une forme de blocage des signaux, c'est-à-dire
qu'en cas d'arrivée d'un signal nous devrons d'abord y répondre avant de pouvoir accepter un nouveau signal. Des arguments
analogues s'appliquent à tous les autres processus représentant des signatures d'interface de traitement.
A.1.1.12 Signature d'interface opération
En LOTOS, une signature d'interface opération est représentée par une définition de processus, de telle sorte que toutes
les offres d'événement qui doivent être synchronisées avec l'environnement pour se produire soient modélisées sous la
forme d'une partie de signatures d'opération, en d'autres termes qu'elles représentent toutes des parties d'annonce ou
d'interrogation. Nous pouvons modéliser une signature d'interface opération pour un client selon la définition de
processus suivante:
process OpIntSigClient[ g. ](myRef: IRef, known: IRefs, .):noexit:=
g ! ! !; .(* other behaviour *)
[ ]. (* other announcements *)
[ ]
g ! ! ! !; .(* other behaviour *)
(g ? !myRef ?;
[ not(makeOp(termName,outArgs) IsIn getOps(myRef))] -> .(* return error message *)
[ ]
[ makeOp(termName,outArgs) IsIn getOps(myRef)] -> .(* other behaviour *)
[ ] . (* other terminations *))
[ ] . (* other interrogations *)
endproc (* OpIntSigClient *)
8 Rec. UIT-T X.904/Amd.1 (2000 F)
ISO/CEI 10746-4:1998/Amd.1:2001 (F)
Nous constatons ici qu'une signature d'interface client se compose d'un ensemble d'offres d'événement. Ces offres
d'événement peuvent modéliser soit des invocations (annonce ou interrogation) sortantes, pour celles de ces offres qui
comportent un point d'exclamation (!) précédant le nom de l'invocation et la liste de paramètres, soit des terminaisons
entrantes, pour les offres d'événement qui comportent un point d'interrogation (?) précédant le nom de la terminaison et
la liste de paramètres. Dans le cas de terminaisons entrantes, il est possible de vérifier que la terminaison entrante est
bien une des terminaisons prévues, c'est-à-dire qu'elle fait partie de la série de terminaisons autorisées et associées à cette
référence d'interface.
La Note du § A.1.1.11 s'applique également aux signatures d'interface opération, sous réserve d'en modifier dûment le
texte (remplacement de l'expression "signal entrant" par "invocation", par exemple).
Les signatures d'interfaces opération pour les serveurs peuvent être représentées en LOTOS comme suit:
process OpIntSigServer[ g. ](myRef: IRef, known: IRefs, .):noexit:=
g ? !myRef ?;
([ not(makeOp(invName,inArgs) IsIn getOps(myRef))] -> .(* ignore/other behaviour *)
[ ]
[ makeOp(invName,inArgs) IsIn getOps(myRef) ] -> .(* other behaviour *)
[ ]. (* other announcements *))
[ ]
g ? !myRef ? ?; .(* other behaviour *)
([ not(makeOp(invName,inArgs,outArgs) IsIn getOps(myRef))] -> .(* return error message *)
[ ]
[ makeOp(invName,inArgs,outArgs) IsIn getOps(myRef) ] -> .(* other behaviour *)
g ! ! !resList ; .(* other behaviour *)
[ ] . (* other terminations *))
[ ] . (* other interrogations *))
endproc (* OpIntSigServer *)
Comme les signatures d'interface client, une signature d'interface serveur a une série de références d'interface connues et
sa propre référence. Cette dernière référence d'interface sert à vérifier que les invocations d'annonce ou d'interrogation
que le serveur reçoit sont bien celles qui étaient attendues, c'est-à-dire qu'elles faisaient partie de l'ensemble d'opérations
associé à cette référence d'interface. En cas d'impossibilité de recevoir ces invocations, pour cause par exemple
d'inexactitude des paramètres ou d'indisponibilité de l'opération demandée, des comportements de traitement d'erreurs
sont mis en œuvre. Dans le cas d'annonces, cette situation pourrait donner lieu à un appel récursif sans que cela modifie
la liste des paramètres formels. Il est également possible de recourir ici à un mécanisme de garde qui empêche dès le
départ l'événement de se produire. Nous ne le faisons pas car cela pourrait aboutir à des impasses indésirables dans la
spécification. Dans le cas d'interrogations, cela se traduirait par le renvoi d'une forme quelconque de message d'erreur.
Comme dans le cas des interfaces opération client, il est possible d'exiger que les messages reçus soient ceux qui étaient
attendus. Il est toutefois impossible d'assortir les messages envoyés d'instructions. D'aucuns diront que cette restriction
n'est pas nécessairement une mauvaise chose du fait que, pour autant que chaque processus traite de la même manière les
messages reçus, les messages envoyés ne devraient pas donner lieu à des impasses imputables au fait, par exemple, que
leur format n'est pas compris.
A.1.1.13 Signature d'interface flux
En LOTOS, une signature d'interface flux est représentée par une définition de processus, de telle sorte que toutes les
offres d'événement qui doivent être synchronisées avec l'environnement pour se produire soient modélisées sous forme
de flux producteurs ou consommateurs. Une telle signature peut être représentée en LOTOS comme suit:
process StreamIntSig[ g. ](myRef: IRef, known: IRefSet, fss: FlowElementSeqSet.):noexit:=
ConsumeAction[ g.](myRef, known, recFlowElements.) [ ]. (* other consume actions *)
[ ]
ProduceAction[ g.](myRef, known, FlowElementstoSend, .) [ ]. (* other produce actions *)
endproc (* StreamIntSig *)
Comme dans le cas des interfaces signal, la notion de causalité est appliquée aux modèles d'action individuels dans la
signature d'interface flux. Une telle signature contient des ensembles de flux consommateurs ou producteurs d'actions.
Chaque signature de flux est représentée par un processus. Ces processus contiennent la référence de l'interface flux à
laquelle ils sont associés, un ensemble de références d'interface représentant les réfé
...








Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.
Loading comments...