在DOORS里,很多人说“对象编号”,其实说的往往不是同一个东西。有的人盯着层级前面的章节号,有的人看的是对象标识,还有的人实际依赖的是绝对编号。真到模块重排、对象移动或批量整理时,这几种编号一旦混着用,最容易出现的结果就是界面上看着都还在,引用却开始对不上。IBM官方文档里把这件事分得很清楚,DOORS里至少有绝对编号、章节号也就是section number,以及带模块前缀的object identifier,这三类东西用途不同,稳定性也不同。
一、DOORS怎么设置对象编号
先别急着去改数字,比较稳的做法是先分清你想设置的到底是哪一层。因为在DOORS里,真正能主动设置的,主要是模块前缀和对象起始号;而章节号更偏向结构结果,绝对编号又是系统自动分配的唯一值。把这层逻辑先理顺,后面就不会一直在错误入口里来回试。
1、先分清章节号、绝对编号和对象标识
如果你输入带小数点的编号,比如5.2,DOORS会把它当成章节号去定位;如果你输入纯整数,比如5,DOORS会把它当成绝对编号;如果你输入前缀加数字,DOORS会把它当成object identifier。也就是说,这三套编号本来就是并行存在的,不是一个东西换三种叫法。
2、模块新建时先设前缀和起始号
如果你想让对象编号从一开始就更规整,最直接的正式入口是在新建模块时设置。IBM文档写明,创建formal module时可以填写object identifier的prefix和起始number;如果不填起始号,默认从1开始,也不带前缀。这个动作适合项目刚起步时统一规则,比后面再补前缀省事得多。
3、对象标题内容用【Ctrl+H】改
很多人以为“编号改不了”,其实有一部分是把编号和标题混在看。DOORS当前对象的Object Heading是可以直接编辑的,官方给出的快捷键就是【Ctrl+H】。所以如果你要改的是对象标题文字、章节标题名或者条目名称,这条路是通的;但它改的是Heading内容,不是拿来手工改绝对编号的。
4、章节号不要当成固定编号去维护
章节号本身就是结构型编号。IBM的公开手册明确提到,heading number用来显示对象在层级中的位置;只要对象被移动,或者中间新增了对象,这个编号就会自动更新。也正因为这样,章节号适合拿来阅读和展示结构,不适合拿来当长期不变的引用主键。
二、DOORS对象编号重排后如何避免引用错乱
编号重排以后最容易乱掉的,不是模块表面顺序,而是外部引用和内部约定。很多团队平时口头说“去看3.2.4”,一旦前面插了对象,后面的章节号全变,老引用马上失真。要想避免这种情况,关键不是重排后再补救,而是重排前就把“谁作为稳定引用”先定下来。IBM文档里和链接相关的说明,核心都在指向同一个结论,就是绝对编号比章节号更适合承担稳定映射。
1、跨对象引用优先用绝对编号或对象标识
如果你的引用要跨视图、跨模块,甚至后面还要拿来重建链接,就不要继续用章节号做唯一定位。IBM文档说明,创建对象时每个对象都会得到唯一的absolute number,而且这个编号分配后不会重复使用;同时,DOORS也支持用模块前缀加编号的object identifier直接定位对象。相比会跟着层级变化的章节号,这两类值更适合做稳定引用。
2、需要重建链接时按Absolute Number走
这一点官方说得非常直白。IBM关于Link by Attribute的说明明确写到,按属性重建链接时,需要用linked objects的absolute numbers;文档还特别提醒,用object identifiers只有在模块prefix没有特殊影响时才可能工作。换句话说,真到复制模块、重建链接或回灌引用这类场景,Absolute Number才是更稳的底层依据。
3、重排前先把旧映射留一份
如果你已经知道这次整理会涉及对象移动、插入或层级调整,比较稳的做法是先在当前视图里把Absolute Number、Object Heading和现有引用列一起显示出来,先留一份对应关系,再去重排。这个做法虽然是项目操作建议,但依据就在于IBM明确区分了绝对编号和章节号,而且章节号会跟结构变化自动更新。
4、重排后用模块比较去核变化
对象移动以后,不要只靠肉眼看目录。IBM当前文档里写到,Module Comparison wizard可以比较两个模块,并识别哪些对象被inserted、deleted、moved或edited。对编号重排后的复核来说,这个入口很有用,因为它能帮你快速把“结构变了哪里”单独揪出来,而不是整模块从头找一遍。
三、DOORS编号规则先定什么
很多模块后面会乱,不是因为DOORS没有编号,而是因为团队一开始没约定清楚:什么编号给人看,什么编号给系统用,什么编号给链接和接口用。等模块一重排,大家才发现口头引用、导出报表和自动链接各自抓的是不同列。把这层规则先定下来,后面即使做结构调整,影响也会小很多。
1、展示层用章节号
章节号最适合给人读。它天然反映层级结构,拿来开评审会、看目录、讲上下级关系都很直观;但前提也正因为如此,它会随着结构变化自动更新,所以不要让它承担稳定映射职责。
2、定位层用对象标识
如果团队平时需要口头沟通、邮件传递或快速跳转,object identifier会比纯absolute number更直观,因为它可以带模块前缀。IBM文档说明,输入有效模块前缀加对象编号时,DOORS可以直接跳到对应对象。这个层面更适合日常协作。
3、链接层用绝对编号
只要事情进入链接重建、跨模块映射、外部同步或接口导出,优先就该切到absolute number视角。因为IBM文档已经明确说明,Link by Attribute依赖的就是absolute numbers,而且对象创建后这个值是唯一且不复用的。
4、标题层单独维护,不和编号混用
Object Heading是给内容阅读和条目表达服务的,它可以用【Ctrl+H】编辑,所以它应该按标题逻辑维护,而不是被拿来代替稳定编号。标题负责可读性,编号负责定位,这两层分开以后,后面模块怎么重排都更容易控。
总结
DOORS怎么设置对象编号,关键不是只盯着界面里那串数字看,而是先分清章节号、绝对编号和对象标识分别负责什么。DOORS对象编号重排后如何避免引用错乱,重点也不是重排后再到处改引用,而是提前把稳定引用放在Absolute Number或object identifier上,把章节号留给展示和阅读。只要这三层规则先定清,后面即使做对象移动、插入和层级重排,模块也不会那么容易一改就乱。
