目标
第七章 目标导向基础
一、动机
- 对于系统更好的理解:目标对系统的总体愿景进行了精化
- 需求抽取:目标驱动并指导需求抽取
- 可选实现方案的识别和评价:满足一个目标存在多种可能的方案
- 识别无关需求
- 需求的论证:论证合理性
- 需求规约的完整性
- 冲突的识别与解决:冲突一般来源于不同射中的期望
- 目标的稳定性
目标:
定义:目标是关于系统的目的、属性或者使用的意图。
二、AND/OR分解
目标的AND分解:父目标G到一组子目标的分解是一个AND分 解,当且仅当为满足父目标G所有的子R标都必须满足。
目标的OR分解:父目标G到一组子目标的分解是一个OR分解,当且仅当中任意一个子目标得到满足就能使父目标G得到满足。
e.g. 导航系统的目标G定义为“舒适、快速的目的地导航”。通过AND分解,可以将目标G分解 为如下3个子目标。
G1:方便地选择目的地;
G2:根据用户特定的参数自动进行路线规划;
G3:显示交通拥堵信息,并且能自动重新规划路线以避免拥堵。e.g.目标G “能够定位汽车的位置”,通过or分解,分解为如下两个子目标。
G1:通过手机定位汽车;
通过GPS定位汽车。
三、目标依赖
- 需要依赖
- 支持依赖
- 阻碍依赖
- 冲突依赖
- 目标等价
1.“需要”依赖
定义:如果满足G2是满足G1的前提,那么G1“需要”依赖于目标G2。
e.g.
G1:系统应在交通拥堵时为驾驶员提供导航
G2:系统能够接受交通信息
“需要”依赖:G1需要G2
2.“支持”依赖
定义:如果目标G1的满足对于目标G2的满足有正面影响,那么G1支持G2。
e.g.
G1:导航系统应该能下载电子地图
G2:系统能应当允许方便地选择目的地
“支持”依赖:G1支持G2
AND/OR分解也隐含这一种“支持”依赖。
3.“阻碍”依赖
定义:如果目标G1的满足阻碍目标G2的满足,那么G1阻碍G2。
e.g.
G1:导航系统应该能通过GSM网络下载电子地图
G2:导航系统所产生的GSM网络流量数据应该尽可能低
“阻碍”依赖:G1阻碍G2
4.目标之前的冲突依赖
定义:如果:
(1)G1的满足排斥G2的满足,并且
(2)G2的满足排斥G1的满足。
则目标G1和G2之间存在冲突。
e.g.
G1:可通过GPS访问定位汽车
G2:遵守特定国家的隐私法律
“冲突”依赖:G1和G2冲突
5.目标等价
定义:如果:
(1)G1的满足导致G2的满足,并且
(2)G2的满足导致G1的满足。
则目标G1和G2等价。
e.g.
G1:系统符合A国法规
G2:系统符合B国法规
如果A与B国相关法规等价,则G1和G2等价.
第八章 描述目标
一、目标描述模板
目标描述模板的属性组成:
作为目标唯一表示的属性(1-2)
管理属性(3-7)
描述上下文引用的属性(8-10)
目标的特有属性(11-16),即目标层次(11)、目标描述(12)、与其他目标的依赖关系(13-15),以及与场景的关系(16)
描述其他附加属性(17)
目标及目标属性的系统化抽取
- 设法抽取所有相关目标
- 避免一开始就捕捉所有的目标属性
- 定义目标属性时,首先定义基本属性
- 为每个目标定义父目标、子目标属性
- 验证所抽取的目标的是否完备、以描述的目标关系是否正确
- 补充缺失的目标和目标关系,需要则对已定义的目标和目标关系进行修改
- 定义支持目标抽取和验证的场景
- 在目标模板中添加其他确实的信息
二、目标描述的七个规则
1.简明扼要地描述目标
目标G1:高级用户、新用户应能使用该系统。新用户可以在完全不了解原有系统的情况下使用系统。此外,新手不经培训就可以使用系统。对任何用户而言,如何使用该系统应当是显而易 见的。可以在没有任何类似系统知识的情况下使用该系统。
G1的改进定义: 用户能够在没有经过培训以及不了解原有系统的情况下使用系统。
2.使用主动语态
描述目标时最好使用主动语态,避免使用被动语态。 目标G2:创建季报的时间与原有系统相比应当减少一半。
G2的改进定义: 用户可以仅用当前系统所用时间的一半来创建季报。
3.准确描述涉众意图
尽可能准确地描述涉众的意图。理想情况下,所实现的系统是 否满足目标是可以进行客观评价的。然而,以一种客观可评价的方式描述目标并不总是合理的或可能的。
目标G3:系统应当改进公司的业务流程。
G3的改进定义: 系统应将订单处理流程加快20%以上。
4.将高层目标分解为更具体的子目标
如果一个目标比较抽象,那么相关涉众应当在 需求:T程过程中将该目标分解为更具体的子目标。这种分解允许涉众在需求工程过程中(后期)检査系统是否满足这些子目标。
目标G4:提高驾驶安全性。
G4的改进定义: 通过AND分解将目标G4分解为如下子目标: G4.1:在路面湿滑情况下降低20%的刹车距离; G4.2:在刹车过程中确保汽车的操纵性。
5.说明目标所创造的价值
清晰地描述目标为相关涉众所创造的价值。尽可能准确地描述所期望创造的价值。
目标G5:导航系统应当提供一种直观的输入旅行目的地的方式。
G5的改进定义: 导航系统应当允许驾驶员在不分散驾驶注意力的情况下输入所期望的目的地。
6.描述引入目标的原因
为引入目标的原因提供简要而准确的描述。了解引人目标的 原理有助于对于目标本身的讨论,并且支持对其他相关目标的识别。
目标G6:系统应当提供直观的用户接口。
G6的改进定义: 因为80%的用户每月仅使用本系统一两次,因此系统应当提供直观的用户接口。
7.避免定义不必要的约束
描述目标时应避免定义对于可能的实现方式的不必要的约束。只定义那些由法律、合同文件等所施加的约束。
目标G7:应当通过数据传输时间,将系统响应时间降低10%。
G7的改进定义: 系统响应时间应降低10%。
如果相关约束是由客户所施加的,那么需求工程师可以通过应用提示8-2中的原则,尝试对约束进行弱化。
三、目标建模语言及方法
目标模型:
目标模型:
定义:目标模型是一种描述目标、目标向子目标的分解关系,以及现有的目标以来关系的概念模型。
四、AND/OR树和AND/OR图
AND/OR树和AND/OR图基于AND/OR分解,来源于人工智能,现在已经被引入目标建模中描述目标的必选(mandatory)和选择性(alternative)子目标分解。
1.AND/OR树
定义:AND/OR树
一个AND/OR目标树由代表目标的结点和代表目标间AND分解与OR分解关系的有向边组成。每一个结点(除根结点外)仅与一个父目标相关联。
2.AND/OR图
定义:AND/OR树
一个AND/OR目标图是一个有向无环图,其中结点代表目标,边代表目标之间的AND分解和OR分解。
3.依赖
-
需要依赖:
目标G1到目标G2的需要关系表示一个"需要"依赖。需要关系由G1到G2的有向边表示,表示为了满足G1,目标G2必须被满足。
-
互斥关系
目标G1到目标G2的需要关系表示一个"冲突"依赖。它表示一个目标的满足会阻碍另一个目标的满足。“冲突”关系由G1与G2的无向边表示。
五、i * 框架
1.i *中的对象
i *提供5种对象:
-
参与者:一个参与者是与待开发系统相关的人或系统。i*将参与者细化成以下3个子概念。
主体(agent):主体是具有具体的物理表示的参与者,例如一个人或一个系统;
角色(role):角色定义了参与者在特定上下文中的行为。一个参与者可以拥有多个角色,一个角色也可以被分配给多个参与者;
身份(position):身份是通常由一个主体扮演的一组角色的集合。一个主体可以具有多个身份。
目标:一个目标回答了“为什么”的问题。它描述了参与者期望达到的现实世界的某种 特定状态。但是,目标并不会指定如何达到这种状态。
任务:任务描述了完成某些事情的特定方式。通常,任务由参与者为了完成任务而必须 执行的多个步骤(或子任务)组成。
资源:资源是参与者达到某个目标或完成某一任务所需要的(物理或信息)实体。关于 资源的主要关注点是资源是否可用以及从何处获得。
软目标:软目标是参与者希望达成的现实世界中的某种条件,与(硬)目标不同的是,要达到的相关条件的准则并没有严格定义。软目标通常是其他某个元素(即目标、 任务或资源)上的一种质量属性。如果有充足的、证明一个软目标满足的正面证据,并且 几乎没有相关的负面证据,那么可以认为该软B标得到了满足。
2.i *中的依赖
目标依赖:目标依赖表示一个参与者(依赖者)依赖于另一个参与者(被依赖者)实现一个 所定义的目标(依赖对象)。依赖者假设被依赖者达成了目标,但并不指定是如何达成的。
任务依赖:任务依赖表示一个参与者(依赖者)依赖于另一个参与者(被依赖者)完成分配给该参与者(被依赖者)的某个任务(依赖对象)。任务依赖表明了被依赖者必须完成所分配的任务来达到某个目标,但是并没有说明为何要完成这个任务。
资源依赖:资源依赖表示一个参与者(依赖者)依赖于另一个参与者(被依赖者)所提 供的物理或者信息资源(依赖对象)的可用性。
软目标依赖:软目标依赖表示一个参与者(依赖者)依赖于另一个参与者(被依赖者)来完成某个能导致特定软目标(依赖对象)实现的任务。软目标实现的准则并没有明确地给出。通常,被依赖者提供多个实现该软目标的可选方案,而该软目标是否实现由依赖者来决定。
3.i *中对象间的关系
i*框架区分存在于4种对象(“目标”、“任务”、“资源”和“软目标”)之间的3种链接关系:
目的-手段健接:一个目的-手段链接表示哪些软目标、任务和/或资源对于一个目标的实现存在贡献。因此目的-手段链接描述了一个参与者为什么要达成某个目标、完成某个任务或使 用某个资源。目的-手段链接也为实现一个目标的多种可选方案的描述和评价提供了便利。下图(a)说明了不同类型对象之间的目的-手段链接。
贡献链接:一个贡献链接表示某个任务或其他目标对 于软目标的正面(+)或者负面(-)影响。它描述了一个任务或者软目标对满足某个软目标是否存在 正面或者负面的影响。它并没有精确定义对其提供了 何种支持或者所支持的程度。图(b)展示了不同类型对象之间的贡献链接。
任务分解链接:任务分解刻画了一个任务的基本元素。 任务分解链接将任务及其组成部分联系起来,这些组成部分可以是子目标、子任务、资源或软目标的任意组合。因此,任务分解可以包含必须完成的子任务、必须实现的子目标、所需的资源以及定义任务质量目标的软目标。(c)描述了不同类型对象之间的任务分解链接。
4.策略依赖模型(SDM)
策略依赖模型(SDM)刻画了不同参与者之间的依赖。它记录了哪些参与者依赖哪些任务、目标、软目标以及其他参与者提供的资源。一个SDM包含一组参与者(结点)和一组参与者之间的依赖关系(边)。 下图描述了一个策略依赖模型(SDM)的一个部分。它定义了参与者“汽车驾驶员”和 “汽车制造商”之间的4个依赖关系。这4个依赖分别由参与者结点之间的4条边表示。依赖的类型(目标、资源、任务和软目标)在每一条依赖边上进行了标注。边的方向由边上标注的字母“D”的方向指示(下图中,依赖④的方向和依赖①~③的不同)。
①这是一个目标依赖。它表示“汽车驾驶员”(依赖者)依赖于“汽车提供商”(被依赖者)实现目标“避免事故”。下一个图在策略原理模型(SRM)中进一步描述了这个依赖的细节。
②该任务依赖表示“汽车驾驶员”为了完成任务“行驶一段距离”而依赖于“汽车制造商”。
③该资源依赖表示“汽车驾驶员”依赖于“汽车制造商”提供资源“汽车”。
④这里的软目标依赖者表示“汽车制造商”为了达成软目标“驾驶员满意度高”而依赖于 “汽车驾驶员”。
5.策略原理模型(SRM)
策略原理模型刻画了每一个参与者内部的原理结构。
①虚线(参与者边界)定义了参与者“驾驶员”的内部原理结构的边界。
②任务“安全地由A行驶到B”通过3个任务分解链接分解为软目标“驾驶乐趣”和另外 两个目标“无事故驾驶”、“人身及生命安全保护”。
③任务“遵守限速规定”和软目标“高速驾驶”之间的贡献链接标注为减号。这表示任务 “遵守限速规定”对软目标“高速驾驶”的满足存在负面影响。
④参与者“汽车制造商”的任务“制造安全的汽车”通过任务分解链接精化为目标“减少事故数量”和“减少人身伤害”以及软目标“开发成本低”。
⑤汽车制造商具有软目标“卓越的品牌声誉”。任务“制造安全的汽车”对这个软目标有着正面影响。这个贡献链接表明了一个正面影响。
⑥任务“通知驾驶员可能发生的碰撞”和“弥补驾驶员的错误”通过两个目的一手段链接 连接到目标“减少事故数量”,表示这两个任务(手段)都有着减少事故数量的目标(目的)。 从不同任务指向相同目标的目的一手段链接通常表示存在多种满足目标的方式。
⑦由任务“通知驾驶员可能发生的碰撞”和“弥补驾驶员的错误”到软目标“开发成本 低”的贡献链接标注为减号,表示这两个任务对这个软目标的满足都是负面影响。
六、KAOS
对于目标、需求、场景和责任分配进行抽取、规约和分析。
1.目标和主体
-
行为目标:一个行为目标描述了一组所允许的系统行为。行为目标可以以一种明确的方 式进行定义,即系统是否满足一个行为目标是可以验证的。典型的行为B标实例包括“当 火车运行时,车门应该保持关闭”。KAOS区分以下两种行为目标:
达成目标:一个“达成目标”要求所定义的属性最终必须成立;
维持目标:一个“维持目标”要求所定义的属性一直保持成立(可能在某些条件下)。 在KAOS目标模塑中,目标的具体类型可以通过目标名称的前缀来标识。
软目标:在KAOS中,软目标用来描述在多个可转换的系统行为之间的偏好。软目标的一个例子是“系统应该尽可能减少旅行时间”。与i*中类 似,软目标的满足并没有明确的验证准则。因此,对于软目标人们都是期望在可接受的范围内得到满足而不是绝对满足。
主体:i*主要关注于组织结构中的主体,而KAOS中的主体则主要与用户以及软件密集 型系统的组件相关。因此,主体(agent)被定义为一种主动的系统组件,对于目标的满 足扮演着特定的角色。主体可以是一个人、一种设备(传感器等),或者是一个软件组件。
2.目标关系
AND分解:AND分解链接将一个父目标关联到多个子目标上,表示如果所有子目标都被 满足那么父目标就会得到满足。
选择性分解:KAOS中目标的OR分解是通过将多个AND分解链接关联到同一个父目标实现的。其中每一种选择都被表示为一个AND分解。这组AND分解将父目标精化为多组子目标。当这些选择之一(分配到父目标的某—个AND分解)被满足时,父目标满足。
潜在冲突:目标间的冲突可用潜在冲突链接表示。潜在冲突链接表示满足某一个目标在 一定条件下可能会阻碍另一个目标的满足。因此,这种链接关系并不对应于冲突依赖,这种冲突依赖表示满足一个目标会使另一个,目标无法得到满足。
责任分配:责任分配链接将目标子模型的元素与主体子模型的元素关联起来。一个目标和主体之间的责任分配链接表示这个主体具有满足该目标的职责。只存终端目标才能被分配给单个主体。如果一个目标被分配给单个主体,那么该目标不能再进一步分解。此外还可以定义多个可选择的责任分配,即一个目标可以通过责任分配链接关联到多个主体。当实现一个系统时,这些可选择的责任分配中至少应该有个要被选择。
如何选择建模语言?
如果你主要关注于目标、目标分解以及目标间的依赖关系描述,那么可以使用扩展的 AND/OR目标图。
如果你的目的是使用一种面向主体的建模范例来对组织中不同参与者之间的关系进行 分析和描述的话,那么可以使用i *模型。
如果你的目的是使用一种面向主体的建模范例来对软件密集型系统(特别是嵌入式系统)的软硬件组件的期望属性进行建档,以及将所定义的目标与面向方案的需求模型相关联的话,那么可以使用KAOS模型。