Skip to main content

7.20 需求

7.20.1 需求概述

需求定义(requirement definition)是一种约束定义,用于指定由利益相关者所引起的约束, 这是设计方案成为一个有效的方案所必须满足的。 需求定义包含一个或多个约束特征,称为所需约束(required constraints)。 这些约束可以使用不正式的文字表述(通常称为“shall”表述),或者使用更形式化的约束表达式。 需求定义还可以包括假定约束(assumed constraints)。 一个需求的所需约束,只有在所有假定约束满足的情况下才会应用。

需求使用(requirement usage)是一种约束使用,是在某个上下文中需求定义的使用。 对多个需求的上下文可以由包、部件,或者另一个需求所提供。 一个设计方案必须满足需求以及所有的成员需求和约束,才能称为一个有效的方案。

需求定义和使用可以分解为内嵌的需求使用,这些需求使用可以进一步分解。 由于需求使用是一种约束使用,任意内嵌的复合需求使用自动被认为是所包含的需求定义和使用的所需约束。 若要是整体的需求得到满足,那么所有的复合或者引用需求都必须被满足。

TODO: redefinition

主题

需求定义或使用总是具有一个主题(subject),这是一个用于区别该需求在那个实体上进行指定的可区分的参数。 需求使用只能被一个和定义中的主题相一致的实体所满足。 例如,如果需求的主题定义为Vehicle,那么一个标准的车型或者运动车型都可以满足需求, 只要这些使用是由Vehicle定义或者特化的。 如果需要约束何种实体能够满足需求,主题也可以限制为某种特定的定义元素。 例如,主题可以限制为动作,如果需要约束该需求只能被动作使用所满足。

对需求定义和使用的主题进行约束还有助于在需求的假定和所需约束的形式化表达式中使用主题定义的特征。 然而,如果需求是非形式化的,或者参数以及其他特征是延后绑定的,那么这种使用就不是必要的。 在此种情况下,没必要显式地给出需求的主题,而是把Anything作为隐式的主题。

注意:案例也具有主题。

执行者,涉众以及关注

执行者和涉众是额外的可区分参数,可在需求定义或者使用中给出。 执行者和涉众参数是部件使用,代表相对于需求定义或使用扮演特定角色的实体。 一个需求可以有多个执行者和涉众,其中一些可以具有相同的定义, 表示同一种实体相对于该需求扮演不同的角色。

一个执行者参数(actor parameter)表示一个由需求的主题之外的实体所扮演的角色, 但是对于需求的满足是必要的。 例如,一个主题是Vehicle的需求可以指定Driving Environment作为执行者。 这个执行者的特征可以用在需求的假定约束中,来约束TODO:

涉众参数(stakeholder parameter)表示一个对需求有关注的实体(通常是个人、组织或者其他团体)所扮演的角色。 涉众关注点也可以显式地建模为特殊类型的需求。 关注点定义(concern definition)是一种表示涉众关注点的需求定义。 关注点使用(concern usage)是一种属于关注点定义的使用的需求使用。 涉众参数就表示了具有特定关注点的涉众。

TODO:

需求满足

由于需求是一种约束,需求可以被求解为truefalse。 当求解为true时,则需求被满足(satified)

满足需求使用(satify requirement usage)是一种断言约束使用, 当一个给定的特征和需求的主题参数绑定的时候。 需求的其他参数或特征也可以在满足需求使用的内容体中进行绑定。 例如,maximumVehicleMass需求可以被断言为被一个特定的vehicle c1所满足, 即意味着当massActualvehicle c1的质量绑定时,所需约束{massActual <= massRequired }必须为真。

和断言约束使用类似,满足需求使用也可以取反(negated)。 一个取反的满足需求使用断言某个实体满足给定的需求。