8.4 Time

8.4.1 概要

本小节基于一个简单的时间模型来定义可以产生值的TimeExpressions和Duration。该简单模型的目的在于为更加复杂的时间场景并且对时间的度量可以安全地被忽略的情况下提供一个近似的场景。举个例子,在许多分布式系统中没有全局时间的概念,只有相对于该系统中每个分布式元素的本地时间概念。这种时间的相关性在简单时间模型中是不考虑的,同时不考虑的还有从具有有限刻度(分辨率)、overflows、dirft、skew等等的不完美时钟所带来的影响。我们假定具有上述类似特征的应用应该使用一个由一个适当profile所提供的更加复杂的时间模型。

8.4.2 抽象语法

图8.3 Time and Duration

8.4.3 语义

Time

UML中的机构化建模构造用于对特定时间节点上的实体的属性(properties)进行建模。相比之下,行为建模构造用于对这些属性如何随时间变化进行建模。一个事件(event)是在一个特定的时间节点上与所建模的属性或行为相关的某个感兴趣的事物要发生或出现(occur)的规约,例如一个属性值的变化或一个活动(Activity)开始执行。

这种概念下的时间是一个对事件的出现进行排序的坐标。每个事件出现可以被赋予一个时间坐标值,基于此,可以说一个事件出现在另一个事件出现之前、之后或同时。

duration是两个事件出现之间的时间区间,按照这些事件的时间坐标差来计算。如果一个模型元素有一个行为后果,那么这个效果可能会持续一段时间。这个持续的开始事件称为进入(entering)元素,结束事件称为离开(exiting)元素。

Observations

Observation指示了与一个模型中其它部分相关的事件出现的观察。Observation发生在模型中的一个NamedElement上。感兴趣的事件是该NamedElement何时被进入以及何时被离开。如果所指的NamedElement不是一个行为元素,那么进入和离开该NamedElement的时间间隔被认为是0,但本规范没有定义在元素上观察到的是什么特定事件(原文:but this specification does not otherwise define what specific events are observed on the Element.)。

有两种Observations,TimeObservations和DurationObservations。

一个TimeObservation观察到一个进入或者离开一个特定的NamedElement。如果firstEvent为真,那么观察到的是进入时间,否则是离开时间。TimeObservation的结果是所观察到的时间出现的时间。

一个DurationObservation观察到与一个或两个NamedElements相关的一个时间区间。如果观察到一个单一元素,那么所观察到的时间间隔是该元素的进入和离开事件顺序发生的时间间隔。如果观察到两个元素,那么这个时间间隔是第一个元素的进入或离开事件与第二个元素的进入或离开事件的时间间隔。在后一种情况下,需要为DurationObservation指定两个相应的firstEvent值用于区分所观察到的是何种事件,如果firstEvent=true,那么代表观察到的是进入事件,否则是离开事件。

TimeExpression

TimeExpression是一个产生即时时间的ValueSpecificaion,它可能与一组给定的观察相关。

如果TimeExpression有一个expr,那么它用于产生该TimeExpression的结果。这个expr必须计算为一个单值,但是UML没有定义该值必须具有的任意特定类型或单位。expr可能会引用与TimeExpression关联的observations,但没有为该种引用定义标准的表示。如果TimeExpression有一个expr而没有observations,那么这个expr产生一个时间常量。

如果TimeExpression没有一个expr,那么它必须具有一个单一的TimeObservation,该TimeObservation的结果就是TimeExpression的值。

Duration

Duration是能够产生一些时间间隔的ValueSpecification,它可能与一组给定的观察相关。

如果Duration有一个expr,那么它用于产生该Duration的结果。expr必须产生一个单值,但是UML没有定义该值必须具有的任意特定类型或单位。expr可能会引用与Duration关联的observations,但没有为该类引用定义标准的表示法。如果Duration有一个expr而没有observations,那么expr产生一个间隔常量。

如果Duration没有一个expr,那么它必须有一个单一的DurationObservation,该DurationObservation的结果就是Duration的值。

8.4.4 表示法

Observations

一个Observation可以被表示为一条附加到它所引用的NamedElement的直线。Observation的名字显示在靠近直线的未附加端。Observation的额外表示法会在与它们通常所使用的建模构造的地方给出(例如17.2)。

Time Expressions and Durations

TimeExpression或Duration由它的expr来表示,如果存在的话。该表示是一个用于计算时间或时间间隔值的公式,它可以包含所关联的Observations的名字和常量。如果TimeExpression或Duration没有expr,那么它就简单地被表示为与之关联的单个Observation。

Duration是一个相对的时间值,以特定的文本形式的实现所给出。通常一个Duration是一个非负的整数表达式,代表“time tikcs”的数目。

8.4.5 示例

Time通常使用一个数值坐标来表示,其中expr应该计算为一个数值,它的单位可以应用模型的惯例来假设(例如,时间的单位总是秒)。还可以使用DataTypes来对有特定单位的时间值进行建模(例如,秒,天,等等),这样的一个TimeExpression的expr应该有这些类型中适当的一个。

Duration是一个相对的时间值,通常表示为一个非负数。它还可以用于表示从一些固定的时间点上开始到当前的一个时间坐标值。

还可以参见8.5.5中的图8.5。

results matching ""

    No results matching ""