[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
|
[news.eclipse.tools.uml2] Re: correct mapping of a dynamic simulation model (simulink model) to a UML model
|
Hi Axel,
When you say... " in and outputs are continuous values"... it makes me
wonder if UML is the best choice for your modeling. You might consider
using electrical circuits to fully describe the details of you model. I
think UML can represent an abstraction of this model.
You can take "BouncingBall" as one activity with input parameters gravity
and initial position and output parameters V and Z.
( Gravity could vary if you want to run your model on the moon ).
I still think CallBehaviorActions are the way to go for your Blocks. The
behavior is some activity called "velocity" or "position". You could
further describe those activities in terms of other actions.
Even though you do not want to emphasize pins, I think you would still need
to use them for the inputs and outputs.
Object flows are drawn between the pins.
Consider the attachment ... it's a sketch with some issues :) but might
represent what your "Bouncing Ball" closely enough.
Cheers,
- James.
"AxelR" <reichwein@xxxxxxxxxxxxxxxxxxxx> wrote in message
news:eicffi$622$1@xxxxxxxxxxxxxxxxxxxx
> Hello James,
>
> thank you for the answer and the explaining picture. "A picture is worth
> a thousand words" :-) In the attachment, I put a picture of the dynamic
> model, in this case a Simulink model, that I would like to map to a UML
> based model. You can also find the picture here:
>
http://www.mathworks.com/products/simulink/demos.html?file=/products/demos/shipping/simulink/sldemo_bounce.html
>
> I still have some problems to do the mapping. This mapping problem sure
> isn't the easiest. As you can see in the dynamic model, no pins are used
> to describe inputs and outputs of blocks, as the in- and ouputs are
> continuous values. The emphasis is also not on these in - and output
> signals as the edges between the blocks are sufficient to easily and
> precisely describe the information flow between the blocks. I could
> imagine mapping the blocks to OpaqueActions and the edges to
> ControlFlows. But I still need to put the parameters (not the in or
> output parameters, but the ones defining the behavior of a block) of
> every block somewhere in my UML model. A block might have many
> parameters, and a ReadVariableAction to access each parameter of a block
> would result in many "overweight" ReadVariableActions in the UML model.
> Clearly, if variables could be added directly to actions, that would fix
> the problem immediately. But as I understand the UML spec, that is not
> possible or is there a trick? I could map every parameter of a block to
> a constraint of an OpaqueAction and define a SpecificationLiteral
> under the constraint to define the value of the parameter. I think this
> is the easiest way to "attach" some variables to an action, but it would
> misinterpret the semantic behind the "Constraint" element.
>
> The mapping between the UML model and the dynamic simulation model
> should be as easiest as possible, so that no one gets lost in the UML
> model. I'm not restricting myself to activity diagrams. If there is a
> better and nicer way to do the mapping (for example: blocks -> Instances
> of classes, Edges between blocks-> InformationFlows between instances),
> I would be grateful for any ideas or clarification.
>
> Axel
>
>
>
>
>
> James Bruck schrieb:
> > Just to clarify a bit more...
> >
> > The pins correspond to parameters of the behavior. An operation is the
> > specification of the behavior.
> >
> > Also, your diagram might look something like the following attachment.
> >
> > - James.
> >
> > "James Bruck" <jbruck@xxxxxxxxxx> wrote in message
> > news:ei8817$ohp$1@xxxxxxxxxxxxxxxxxxxx
> >
> >>Hi Axel,
> >>
> >>Q. How can I describe a parameter of an operation?
> >>A. Parameters of operations correspond to pins in Actions. The Action
> >>refers to some behavior ie, the operation. The pins correspond to
> >>parameters on the operation. They do not directly refer to the
parameters
> >>but correspond positionally to the parameters of the operation. I
believe
> >>there have been previous postings on this if you do a search.
> >>
> >>Q. ... you say "k is a parameter of the operation" how can I access it.
> >>A. I'm a little confused on how you want to use k, I don't think you
want
> >
> > a
> >
> >>simple InputPin as the you would for x. I think what you want is to
> >
> > create
> >
> >>a Variable under the Activity. You can then use ReadVariableActions
and
> >>AddVariableActions to read and write the value of that variable.
Then,
> >>you can model what you want completely with an OpaqueBehavior ( ie. A
> >>CallBehaviorAction with its Behavior referring to an OpaqueBehavior ).
> >
> > You
> >
> >>can then create an InputPin for X, an OutputPin for Y and refer to a
> >>ReadVariableAction for k.
> >>
> >>I'm still a little uncertain what exactly you are trying to do. For
> >>example, do you not have Classes or classifiers that can hold
operations?
> >>Are you restricting yourself to Activity diagrams only.
> >>
> >>Let me know what you finally decide on ... sounds interesting.
> >>
> >>Cheers,
> >>
> >>- James.
> >>
> >>
> >>"AxelR" <reichwein@xxxxxxxxxxxxxxxxxxxx> wrote in message
> >>news:ei814a$8tp$1@xxxxxxxxxxxxxxxxxxxx
> >>
> >>>Hello James,
> >>>
> >>>thank you for the answer.
> >>>
> >>>I also considered CallOperationAction and I really wish to model the
> >>>dynamic simulation model as an activity diagram. I understand the
> >>>concept of input and ouput parameters of an operation, described by the
> >>>Input- and OutputPins. But how can I describe a parameter of an
> >
> > operation?
> >
> >>>For example: y = k*x
> >>>x is the input, y is the output, and k is a parameter of the operation.
> >>>And k is variable, it can be any number. I want to place the value of k
> >>>somehow in the UML model, so that the user can easily access it and
> >>>change it. Where should I place this operation dependent parameter?
> >>>
> >>>Should I place it as a parameter that belongs to the operation?
> >>>
> >>>Thank you for the help.
> >>>
> >>>Axel
> >>>
> >>>
> >>>
> >>>
> >>>James Bruck schrieb:
> >>>
> >>>>Hi Axel,
> >>>>
> >>>>Consider CallOperationAction. CallOperationActions refer to an
> >>
> >>operation
> >>
> >>>>of a Class. They own InputPins that correspond to parameters of the
> >>>>operation and
> >>>>OutputPin's that correspond to the return parameter.
> >>>>I think you can show what you want using InputPins and OutputPins.
> >
> > You
> >
> >>can
> >>
> >>>>use ObjectFlow's between the pins.
> >>>>You seem to be on the right track with Activity Diagrams.
> >>>>
> >>>>Alternatively, if you want to model the structure of a certain
> >>
> >>structured
> >>
> >>>>classifier you can consider using Composite Structure Diagrams. You
> >>
> >>can
> >>
> >>>>model properties using parts or roles and connect them using
> >
> > Connectors.
> >
> >>>>Ports are also useful for modeling interaction points on structured
> >>>>classifiers.
> >>>>
> >>>>If you want to convey how a group of associated parts contribute to
> >>>>accomplish one particular task you might consider creating a
> >>
> >>collaboration
> >>
> >>>>with roles in it's structure diagram and show how the roles are
> >>>>inter-connected.
> >>>>
> >>>>Sequence diagrams could also be of some use if you want to model
> >
> > general
> >
> >>>>instances or specific instances ( a particular run ) of executing
> >
> > code.
> >
> >>>>Creating a profile and stereotypes would be a final step if you have
> >>>>concepts specific to your domain that you wish to emphasize. ( Keep
> >
> > in
> >
> >>mind
> >>
> >>>>that you could just use keywords as a "ultra-light weight" way of
> >>>>emphasizing your concepts. )
> >>>>
> >>>>... a little vague but I hope this helps....
> >>>>
> >>>>Cheers,
> >>>>
> >>>>- James.
> >>>>
> >>>>
> >>>>
> >>>>"AxelR" <reichwein@xxxxxxxxxxxxxxxxxxxx> wrote in message
> >>>>news:ei7ob0$qt6$1@xxxxxxxxxxxxxxxxxxxx
> >>>>
> >>>>
> >>>>>Hello,
> >>>>>
> >>>>>I need some help on how to model a dynamic simulation model(for e.g.
a
> >>>>>Simulink model) in UML. The dynamic simulation model consists of
> >
> > blocks
> >
> >>>>>with certain characteristics that are connected to each other. For
> >>>>>example: an input block sends a constant value to another block,
which
> >>>>>integrates this input value over time, and this result is sent to
> >>>>>another block and so on...
> >>>>>
> >>>>>I am asking myself what is the best way to map the information
> >
> > included
> >
> >>>>>in a dynamic simulation model into a UML model with domain specific
> >>>>>stereotypes, in this case specific to the dynamic simulation model.
> >>>>>
> >>>>>I first thought it would be practical to map the blocks of the
dynamic
> >>>>>simulation to actions in an activity, which would be connected by
> >>>>>control flows, like this:
> >>>>>dynamic simulation model -> Activity, blocks -> Actions, Edges
between
> >>>>>blocks-> ControlFlows
> >>>>>
> >>>>>However as actions do not have properties (as classes and instances
> >>>>>have), how can I map the parameters of the blocks to the actions? The
> >>>>>block parameters would need to be in a stereotype applied to the
> >
> > action.
> >
> >>>>>But this would mean, that a stereotype would be needed for every
> >>>>>possible blocktype. This wouldn't be a flexible solution as new
> >>>>>blocktypes can be defined any time, and the creation of new
> >
> > stereotypes
> >
> >>>>>would be forced and cumbersome. I would appreciate a solution, where
> >
> > the
> >
> >>>>>stereotypes needed for this domain specific modeling, are minimal in
> >>>>>quantity and size. Ideally this mapping would be wishful: Parameter
of
> >
> > a
> >
> >>>>>Block -> Property of an Action
> >>>>>
> >>>>>Is there something about actions and activities that I missed to
> >
> > realize
> >
> >>>>>a correct mapping? Or should I try another approach, for example:
> >>>>>dynamic simulation model -> Class containing references to all blocks
> >>>>>included in the dynamic model, blocks -> Instances of classes, Edges
> >>>>>between blocks-> InformationFlows between instances ?
> >>>>>
> >>>>>I would appreciate any help.
> >>>>>
> >>>>>Axel
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>
> >>
> >
> >
>
>
----------------------------------------------------------------------------
----
begin 666 bouncingBall.gif
M1TE&.#EADP)>`??_`/___P```+"PL-K:VMW=W=_?W^+BXN7EY>?GY^KJZNWM
M[>_O[_+R\O7U]??W]_KZ^MO;V][>WN'AX>/CX^;FYNGIZ>OKZ^[N[O'Q\?/S
M\_;V]OGY^?O[^]?7U^SL[$9WK-;E\\?6Y?CY_!I8B_3W^OGZ_-CB[?K[_?7W
M^O;X^_?X^_?Y^_K[_-?B[=SF[N#I\4V M$I\L?/V^O;Y^]SE[UB0P=OI];?0
MYT=YKO;Y_/K\_-KH]N#M^-OH]4R LTE\L-?B[-WF[_CZ_-SE[N'I\>7L\^KO
M]N[S^/W]_>3DY/#P\,/#P[>WM[&QL;N[N\K*RL[.SK2TM+^_O\G)R='1T=G9
MV=S<W.#@X.CHZ/3T]/CX^+:VML_/S\# P-/3T]C8V/S\_+JZNM75U;6UM<W-
MS=+2TL3$Q,C(R+Z^OKR\O/[^_M#0T-;6UJ7#WE:-OU2*O5*'ND^$MWBFSLK=
M[^CR^^SU_/'W_?7Z_=GF\G&=QL?<[^;P^NGS^TUWFO;Z_?G\_MOH\N/O^N;Q
M^VB4N(^MQG.@QOS]_^;Q^L+2X+_0W[[/W?W^_YFQQ8.@N `\;B9EFE^)KC9W
MK?S^_^7P^F>/LER&J_G[_N7Q^OS^_N;P^_7Y_=OG\^GR^^WU_/'W_'*=QE>.
MOU6+O5*(ND^$MK.SL[FYN<;&QLO+R\7%Q;V]O;BXN,?'QP``````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````"P`````DP)>`0`(_@`!"!Q(L*#!@P@3*ES(L*'#
MAQ C2IQ(L:+%BQ@S:MS(L:/'CR!#BAQ)LJ3)DRA3JES)LJ7+ES!CRIQ)LZ;-
MFSASZMS)LZ?/GT"#"AU*M*C1HTB3*EW*M*G3IU"C2IU*M:K5JUBS:MW*M:O7
MKV##BAU+MJS9LVC3JEW+EJJ MW#CRIU+MZ[=NWCSZMW+MZ_?OX #"QY,N+#A
MPX@3*U[,N+'CQW9O0IY,N;+ERY@S:][,N;/GSX0'V'P[H+3ITZA3JU[-NK7K
MU[!CI^X@NJWMV[A9DAXM`(+OW\"#"Q].O+CQX\B3*Q?>`4+NY]"C=]Q=\RV!
MZ]BS:]_.O;OW[^##_HL?O[T#`>GHTZMO2)WFVPCPX\N?3[^^_?OX\^O?SY]^
MAPCK!2C@>NW-]%8!"":HX((,-NC@@Q!&*.&$%#+800$#9J@A;@7*])8$((8H
MXH@DEFCBB2BFJ.**+)+8@00;QBCC61W&])8!..:HXXX\]NCCCT &*>201/+8
M@0$S)JFD5S7"]-8$4$8IY9145FGEE5AFJ>665P80P 1>4MG!!$N6:6953;[T
MU@%LMMEF"",`,$*<<\H9@IM>YAF FWSVZ>>?;'H)Z*"!ZKGGGX(*RF<'!YSI
MZ*-,I>G26Q14:FFE<)I@0@N;<MH"$".$8*F7HP9PZ:FHIJKJJJR>2FJE_J^B
M2FJLEG9 `:2XYCJ4I"V]A<"OP/XJ`@G$ND ##<;2$,00``#KI;,!_&JHM-%2
MB\"S>4*+;;3;5GOMM,$^:RVUU6X;[*\=(*#KNNSJQ*MN`E0@K[P?U&LO"B_4
MH&\-*PA!Q CS>AEP`!4(+*_ !A=,<)X'+TSPP H_C/##"L_;,,0%7SRQQ?)V
M4$&[((=LHP"UN2= `BBC_ $(+(/P00HPV+###CWX4$(1(Z1L: `H>ZDSSS[W
M##3/0B<0=-%'^YPTT3_KF?+/1@_]-,H=)"#RU5BC].Y*;UG@M=<KM_R!"C'/
M7',)1@#PM9=K!V !VUZS#??;;L\MM]MMTYVW_MUXYQTWWH;J/??7'5B0]>&(
M?[2U2F\IX+CC8;/\P0HQW, ##S?\4,(1(SSNI><!*/"YXY^/+GKHII<>.NBG
MLY[ZZJR3COKJJK?^N.,=*)#X[KQ;M'A*;UT@O/#VVBN"##@87X(,(PSOI?,!
M7/"\\,]/GZ?TT5,?_?3:8P^]]]AG_WWWUF]O_O##=W!![^RWSQ[)O"T@__SR
MBU#"_3/D,$/^^^<`P/P[`Z">!!B !7C)@ 64WP$1>, &)A"!"G0@_1B8)P)*
M<('TZ\ "W,?!#A+D=UH3``9&2,(1PND$+#B!#E*X0A:$JH0PC*$,9TC#&L[0
M2S;,X0P[@ $/^M!]_B \R5L80,0B%A%.<J(3G4)@Q"8Z\8E0C*(4FVBH*5HQ
MBAU@P ^WR+L@FN0M&0BC&,=(QC*:\8QH3*,:U\C&-I:Q`QG@HAP/Y\62O*4!
M>,RC'O?(QS[Z\8^ #*0@!TG(/78`CW-,I,CJ2)*W:."1D(RD)"=)R4I:\I*8
MS*0F-QG)#D!2D:!D%R-'\A8'F/*4J$RE*E?)RE:Z\I6PC*4L3]D!5(;REK@:
MI4C>LH%>^O*7P RF,(=)S&(:\YC(3*8O._!+7#KS3+H,R5L>0,UJ6O.:V,RF
M-K?)S6YZ\YO@I&8'KOG,<BHIFB!Y"P?6R<YVNO.=\(RG/.=)SWK:\YX<_NC
M.\W)SQBA4W$"Z(! !TK0@AKTH A-J$(7RM"&.K0#2(BH1)'0SXH.Z)\>`8U&
M-\K1CGKTHR -J4A'>I>2&4@`%DVI2IT$O^J@=*4PC>D76VHRF=KTIAFEZ4EQ
MRM.>5@2CTWFI3X=*5(4`E2-O*:I2ESJ0HVXDJ4R-ZE"=JA&H2O6J-Z5J1JR*
MU:ZN5*L8X:I7Q]I/L%Y$K&1-JS/-ZCNAJO6M/PQ 0>0*`+;^U*UPS:O[Z#H0
MNMJ5(FC5JV!WQU>^_G4B@1VL8K%6V*;JU$-X7:QD1=98@1Q6(HF=K&;-)%:Y
M\K6NCQW99D>;*ZMZ]H.A92EI5PLIN)S6L2:%_JQF24K;VMKVMK8MR&4CDEFX
M1I:UG'WI7E0[V=\"-TE<)9EKC!O"V1XWN 810'B8*T3JOM6ZSPV0<04@(>PV
MTKMD!6]V-R0`(8E7FN?M:GK'*R !$.H`Z\VI<]G[* &<Z[X(B&]0YTM?:$[M
MOPG0+U(%S%0"]Q<Z`KB=@A]GX*TVN*@//O!M!##!"B\@PFWEKX3/:44,WU7#
M&YZ1``3I8<"6F*<G#C&-8)EBWK;8IB]6\5@$X,T8.Z2WUY4Q<O5"7,G:N'V?
M_6PH=PL1'*OUQT 6B) A\H !+($))!T#&LB@`#5@A<@/,7):D<P^NA8V3PS9
M`!2B((4SK($-#TVS_IH76H8S=($473" E=&4VI;(5<OA':J7^DJ0)1.$`F/H
M0AG63.A")U0,IA@#*K) Y]A6!,P'\3*?#7+GEQK*(9)6,HKU7%E-(Z0`8R"#
MH4=-:H**00JE4();ZCP1/\]U(97VM*P;XFJ9<KG+G0: JP'MA2_X^M? #K:P
MATWL8AO[V,,V0QCB*)6C2AK2G@6SE_>L:]#.>MK4UO6>H[UM)4-;V[56Y*UY
ME^D@'V0#6R #LM?-[G:[.]A22 5%H^)L;_,YT]7N<[6A:NY^ZSO?U>YWKG$Y
M;L)ZVMP&@4(7WLWPACO<UQU0A:,CQ6J)X#O@LA;R:?FM;W]/NK$>GS7!_GN*
M<#T=Y %1Z/7#5\YR8Z^!"?-^2KT!CG& 8WOCEC8YS:=]\'MW_-_/+'C6MIL7
M*53AZ$A/NM*7SO2F._WI4(]Z%9QP!7I7/"(7?RW(?<[Q5T]:T_A^+=B!OE84
M1U:YK!' %*3.]K:[_>U)/P,JK#YQBF0]WUL?>]?)[O&\C_WK9>]I<O,C`"K
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
MZR7/>,M;WD3&3+#L^VP>V7M?XKCWO=B-[T@xxx/Z-@^_`Q:-?O?+W/Z*Y+^)
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
@4 B-4 F=4 JM4 N]4 S-4 W=4 [M4 _]4! 5B8 ``#L`
`
end