ClearQuest 是一个工业级的缺陷跟踪和变更管理工具,为了有效的实现缺陷跟踪和变更管理,ClearQuest 定义和实现了一系列概念和机制。在 ClearQuest 的缺陷限跟踪和变更管理模型中,RecordType 和 StateTransition Model 是两个最重要的概念。RecordType 机制可以使用户定义他们想要跟踪和管理的实体,同时,结合定义在相应 RecordType 上的 StateTransition Model,用户就可以利用 ClearQuest 来管理和跟踪这种 RecordType 的实体在某一时刻所处的状态,这样就可以降低用户管理缺陷和变更的脑力负担,有效的控制和管理缺陷和变更。
        ClearQuest 同时提供了几套 API,比如基于 BASIC 的 API 和基于 PERL 的 API,这些 API 可以使用户方便的定制 RecordType,并为相应的 RecordType 编写相应的 HOOK。在这个过程中,用户经常需要根据这个 RecordType 的 Transition Model 来计算从一个起始状态到一个终止状态需要执行的动作(Action)序列。
        状态转移矩阵定义了某个 RecordType 的变更请求的声明周期。在 ClearQuest 的状态转移模型中有以下约束规则:要求在相邻的两个状态有且只有一个动作(Action)。ClearQuest 要求在状态转移模型中不能存在孤立的状态,也就是说,不允许有这样一种状态,没有任何 Action 可以到达这个状态。
        任何一个 RecordType 的状态转移模型都要满足以上两个约束规则。
        图 1 是一个 ClearQuest 中某种 RecordType 的状态转移模型。在 ClearQuest 中,其状态转移模型一般使用状态转移矩阵来存储,如本图所示。在这个状态转移矩阵中可以看出八种不同状态形成一个 8*8 的矩阵,列头表示源状态,行头表示目标状态,矩阵中的元素表示从源状态到目标状态需要进行的 Action. 如果两个状态之间可以转移,则两个状态的交点元素为非空,否则为空。
图 1. 某种 RecordType 的状态转移矩阵
图
        图 2 是对应于上面状态转移矩阵的状态转移图,从中我们可以看出,这个 RecordType 的状态转移模型是符合 ClearQuest 的状态转移模型的约束规则的。即:不存在孤立状态;每一对源和目标状态之间只有一个 Action。
图 2. 状态转移图
图