当需求文档被导入到DOORS里面以后,章节的结构经常还需要继续调整,不管是新增一条需求、挪动一个小节,还是补进去一组子需求,后续的编号都会跟着变。做这类调整的时候,最好提前把标题对象和正文对象分开来看,标题一般填在Object Heading里面,具体的一条条需求内容填在Object Text里。一个标题的下方可以再放子标题,也可以直接放多条正文需求,用这种层级关系来搭文档结构,比手工在标题前面敲编号要灵活得多。
一、怎样设置对象的层级
要改动对象的层级,得在编辑模式下操作,只读状态是改不了位置的。在数据库资源管理器里找到要处理的那个模块,用编辑模式把它打开;要是这份需求文档已经在走评审流程了,稳妥一点的做法是先建一个基线给留档,然后再动手改结构。
1、用Promote和Demote来控制升降
选中准备移动的那个对象,沿着【Edit】→【Object】→【Promote】这条路,可以让它往上提一级;想把它降到上一条同级对象的下面去,就选【Edit】→【Object】→【Demote】。用这两个命令的时候,如果这个对象本身还带着一些子对象,那些子对象会跟着它一起挪,层级关系不会散掉。
2、批量调整前先把筛选和排序关掉
Promote和Demote这两个按钮有时是灰色的,最常见的原因就是模块当前启用了筛选或者排序功能。碰到点不了的情况,先回到默认的视图状态,把所有筛选条件清掉,再检查一下当前这个账号是不是具备了读取、修改、新建还有删除这些基本权限。一次勾选好几个对象去移动的时候,它们之间原来的层级关系也会被保留下来,不会被打乱。
3、不要手工把章节号敲进标题文字里
比如章节的小标题建议就写成“系统启动要求”,而不要写成“2.3系统启动要求”。因为DOORS标题编号是靠对象层级自动生成的,一旦后面又去Promote、Demote或者插入一段新章节,手工写死的那个数字不会自己跟着变,自动编号和手工编号叠在一起,文档看上去就会乱套。
二、对象层级编号怎么跟着自动刷新
DOORS的标题编号是靠对象的层级关系自动给出的,不需要一条一条人工去数。对象被提升、下降、新插入或者挪到别的父标题下面以后,跟着它后面那些标题的编号都会按新的结构重新排一遍,逻辑上跟文档处理软件的自动编号差不多。
1、移动完对象之后检查一下标题编号
看主列里哪些编号已经变了,比如原来的一段二级标题,如果被Demote了一级,就会变成三级标题,编号也会从“2.1”这种形式变成“2.1.1”这种。如果在一段已有标题的正上方再插入一个新的同级标题,后面那些章节的编号就会全部顺延。等到要输出正式文档的时候,记得重新生成一次报表,不要再拿着改结构之前导出来的旧文件继续用。
2、追踪关系不要依赖随时会变的章节号
章节编号会跟着文档结构反复调整,不太适合拿它当成需求标识去长期维护。需求评审、跟测试用例做关联,还有变更记录这些场景,最好用对象ID或者Absolute Number这种固定不变的字段。DOORS从Word里导入内容的时候,也会故意忽略掉原来那些自动生成的章节编号,而且会提醒你它重新生成的编号可能跟原文不同。如果原来的纸质或系统流水号确实有必要长期留存,那就单独建一个属性字段把它存起来,不要把自动编号当成唯一的依据。
3、标题里只填干净的章节名称
把“2.3系统启动要求”拆成两部分来理解,层级编号交给DOORS去自动计算,Object Heading里只保留“系统启动要求”这个标题本身。这样不管后面怎么Promote和Demote,标题都不会因为带着残留的数字而产生混乱显示,看起来也干净很多。
三、层级调整完之后该怎样检查
当用Promote、Demote把该挪的对象都挪到位以后,不能光看眼前能看到的几行,还要把整节结构展开来核对一遍,看看有没有某个正文需求被不小心提到了跟标题平级的位置,或者是某个子标题滑到了别的章节里面去。
1、把层级树展开逐节抽查
先把模块里折叠显示的部分都展开,从刚刚动过的那些标题开始,逐层往下看,确认父标题下面挂的是正确的子标题,子标题下面才是具体的正文需求。不要把正文需求直接放在跟同级标题并列的位置上,这样会使文档的逻辑层级发生混乱。展开抽查花不了多长时间,但能提前把一些层级错位的问题抓出来。
2、留意一下有没有因隐藏视图而导致的编号跳跃
DOORS的模块视图本身支持把较低层级的对象临时隐藏掉,有时候一个视图里面一直都用着这种折叠显示的习惯。一旦发现主列里的编号突然跳掉了一段,先别急着判断对象丢了,应该去检查一下是不是有某个层级被当前视图折叠或者筛选掉了,恢复了默认视图再做判断。
3、从Word导入以后重点复核层级
把文档从Word导入DOORS的时候,Word里的大纲级别1到9会被自动转换成标题对象,正文段落会进入Object Text,并且会放到它上面最近的标题的下一级。导入完成之后,要重点核对一下层级关系是不是跟原文一致,尤其是那种原文里既有手工敲的编号、又有自动大纲编号的文档,比较容易在这种转换中出现层级错位,最好整个过一遍。
总结
关于DOORS里怎么去设置对象的层级,以及对象层级的编号怎么让它自动更新,操作顺序可以概括成几步:先把要修改的Formal Module用编辑模式打开,接着通过【Edit】→【Object】里的Promote和Demote把父子关系理顺,再回头查看主列的标题编号有没有按照新的层级自动刷新。标题里面不要手工写死章节号,长期追踪最好用对象ID或者Absolute Number这种固定标识。层级调整完之后,把模块的层级树展开做一次抽查,检查一下有没有因为视图隐藏而导致的编号跳跃,然后再重新导出一版文档,这样后面再维护起来会清楚很多。
