把一条需求降到下一级后,后面的章节号也变了,但ID列仍是原来的数字,这通常符合DOORS的编号方式。章节号反映位置,对象标识用于识别对象,两者用途不同。需要进一步检查的是:需求是否归到了预期父对象下,子对象有没有一起移动,以及当前视图是否隐藏了部分内容。下面以DOORS Classic 9.x正式模块为例说明。
一、DOORS如何检查模块内需求对象的编号与层级
检查时同时保留对象标识、正文和层级树,不要只看模块左侧的一列数字。
1、分清章节编号与对象标识
①打开模块,点击【Insert】→【Column】,在【Contents】中选择【Attribute】,添加【Absolute Number】列。
②按同样方式添加【Object Identifier】列,点击【Insert】后关闭窗口。
③右键主列标题,选择【Properties】,核对显示内容是否包含【Object Heading】和【Object Text】。
章节编号会随对象位置和层级改变;Absolute Number用于识别模块中的对象,不应因同模块内的升降级而改变。Object Identifier还包含模块前缀,跨模块核对时应连同模块路径一起记录。
ID不连续也不能直接判断为需求丢失。对象创建、删除和历史操作都会影响编号序列,它不等同于当前显示的行号。
2、结合层级树查看对象归属
①点击【View】→【Module Explorer】,显示模块层级树,展开目标章节前的加号。
②选择目标对象,在模块工具栏的层级列表中选择足以显示其子对象的深度。
③需要只看标题结构时启用【View】→【Outline】,检查完再关闭该显示方式。
大纲模式只显示带Object Heading的对象及其标题,正文需求可能因此不见了。树中有加号也表示还有未展开的内容。判断父子关系时,应同时看父对象、当前对象和后续兄弟对象,避免把屏幕上相邻的两行直接当成同级。
二、DOORS调整对象层级后编号显示异常如何复核
先检查显示条件,再检查实际移动结果。不要为了让编号顺眼,就连续执行多次升降级。
1、关闭排序和过滤再看原结构
①检查【View】→【Show】→【Sort】,关闭当前排序。
②检查【View】→【Show】→【Filter】,关闭过滤,再展开目标章节。
③需要重新应用筛选时,使用【Tools】→【Filter】→【Reapply】。
按优先级排序后,模块窗口中的对象顺序可能不再是章节顺序;过滤则可能隐藏中间对象,看起来像跳号。关闭再打开过滤,显示的是上次筛选结果,并不会按修改后的属性自动重算。
DOORS也不允许在排序或过滤生效时执行对象升降级。
2、核对升降级实际改变了什么
①选择对象,通过【Edit】→【Object】→【Promote】升一级,或通过【Demote】降一级。
②在【Module Explorer】中展开相关父对象,查看移动后的对象及其子对象。
Promote会使对象成为原父对象后面的同级对象;Demote会使它成为前一个兄弟对象的最后一个子对象。子对象会随父对象一起移动。
操作还受结构规则限制:通常只能提升最后一个兄弟对象,第一个兄弟对象则没有可供降级的前置兄弟。菜单不可用时,应核对这些条件,不能直接认定模块损坏。
3、检查标题和正文是否放错属性
①右键异常对象,打开【Properties】→【General】,分别查看【Object Heading】与【Object Text】。
②返回主列,右键标题打开【Properties】,核对该列是否显示自定义属性或【Layout DXL】。
标题、正文的存放方式会影响显示。正文中手工输入的“2.3”只是文字,不会随层级移动自动改写;自定义“需求编号”列也未必等于DOORS章节编号。
先确认屏幕上的数字由哪里产生,再决定修改内容、列设置还是实际层级。
4、区分显示未更新与结构错误
①保存修改,关闭模块后重新打开,选择相同视图复查。
②点击【Edit】→【Go To】,输入已记录的对象标识,点击【Go To】定位。
若重开后显示恢复,而对象归属一直正确,可以继续调查客户端刷新问题。IBM曾记录旧版升降级后编号未及时更新的缺陷,但不能据此判断所有版本都有同一问题。应保留客户端版本和复现步骤,再核对适用修复记录。
三、DOORS层级调整前后怎样保留可对照的检查记录
编号看着不对时,先别急着再挪一次对象。同一条需求换了父级,章节号跟着变化很正常;反复调整之后,原来的位置反倒容易记混。留下一份能找到对象、能看清父子关系的记录,复核起来会省事许多。
1、单独保存一个检查视图
①打开【View】→【Module Explorer】,展开准备调整的分支。
②通过【Insert】→【Column】添加属性列,分别选择【Absolute Number】和【Object Identifier】,让对象身份与正文同时可见。
③点击【View】→【Save As】,填写视图名称,在【Remember Settings for】中确认需要保存的显示设置,再保存视图。
检查视图适合保留列、过滤和显示方式,但它保存的不是模块当时的数据快照。对象后来被移动,用这个视图打开时看到的仍是当前位置。需要保留调整前的内容和结构,应按项目要求建立基线,不能只靠一个带日期的视图名称区分版本。
2、沿着移动记录核对父级变化
①选中出现疑问的对象,打开【Edit】→【Object】→【Properties】,切换到【History】查看近期记录。
②需要检查整个模块的调整情况时,打开【File】→【Module Properties】→【History】,结合操作时间和用户筛选记录。
③涉及较早版本时,进入【Baseline History】,继续查找对应基线中的历史信息。
复核时可以记下对象原来的父级、当前父级和移动时间,再查看它下面的子对象。DOORS移动对象时,下属对象可能随它一起移动;一次操作之后出现一串章节号变化,不一定代表多条需求分别出了问题。历史中的恢复功能也不宜直接拿来试错,尤其是涉及对象移动时,应先确认该操作能否恢复,以及是否会影响后续修改。
3、用对象标识确认引用是否仍然指向原需求
①打开【Edit】→【Go To】,输入记录下来的绝对编号,定位原需求对象。
②再用完整的对象标识定位一次,核对正文、父级和相邻对象;当前视图找不到时,先取消过滤并展开相应层级。
③对照评审表或问题单里的引用,检查记录的是对象标识,还是调整前的章节号。
例如,原来位于“3.2”的需求移到了“4.1”,外部表格还写着“3.2”,读起来就像引用错了。此时应根据对象标识确认需求身份,再更新位置说明。若直接按旧章节号寻找,很可能找到另一条需求,随后又把正确的层级改乱。
总结
DOORS层级调整后,章节号变了多少,并不能直接说明问题大小。更有用的线索是:原来的需求还能否通过对象标识找到,它现在挂在哪个父级下,子对象是否一起移动,以及评审记录是否仍在引用旧章节号。平时给检查视图留出标识列,把正式评审版本纳入基线,后面查问题就有依据。希望这些做法能帮到大家。若仍有编号跳变或重复显示的情况,也可以补充DOORS版本、调整方式和异常前后的显示内容,便于继续判断原因。
