一、前景
参考:
一种替代DOORS在WORD中进行需求管理的方法(基于WORD插件的应用)_doors aspice-CSDN博客
二、界面和资源
WORD2013/WORD2016 插件 【已使用该工具通过第三方功能安全产品认证】:
1、 核心功能
1、需求编号和跟踪矩阵
2、插件支持跟踪的结果统计
注:加密工具会自动将保存为CSV扩展名的文件主动加密,插件只生成CSV格式,但用tscv扩展名;使用者在导入Tessy之前,必须将扩展名手动改为CSV
3、WORD文件配置标记方式
4、下载资源链接
WORD2013/WORD2016 插件安装包:
Python自动化处理源码:
【免费】ReqIDHelperWord16需求管理插件自动化工具,源码,python开发资源-CSDN文库
WORD2013/WORD2016 插件源码:
WORD2013/2016,需求管理插件,源码,VS2017VSTO工程,C#开发资源-CSDN文库
三、扩展使用
1 、COM接口
System.Collections.ArrayList CreateReqIDTableCollection(Word.Document targetDoc);
string GetReqPropertyValue(string reqID, string name);
string GetReqMainText(string reqID);
void SetSlientMode(bool slient);
void CreateSpecDocListCrossLink(Word._Document[] docs, bool[] appends);
void ImportExcelLinkList(string targetDocName, string srcExcelName, string[] reqIDs, string[] cellAddrs);
int CreateExcelReqLink(string targetDocName, string reqProperty, bool append, string srcExcelName, string[] reqIDs, string[] traceIDs, string[] cellAddrs);
void CreateWordReqLink(Word.Document targetDoc, Word.Document srcDoc, string property, bool append);
void CreateWordSelfLink(Word.Document targetDoc);
string[] ExportFileVersionInformation(Word.Document doc);
void ClearReqPropertyValue(Word.Document targetDoc, string reqProperty);
void AddTraceInformation(Word.Document targetDoc, string inf);
void ExportReqWithoutPropertyTable(string outPath, Word.Document targetDoc);
string GetVerInformation();
2、Python使用示例
1、加载com组件
import win32com
def LoadOfficeAddon() :
WordAddInComObject = None
Word = win32com.client.Dispatch('Word.Application')
docAddin = Word.COMAddIns("ReqIDHelperWord16") # Load VSTO add-on
Word.Visible = 0
if docAddin != None :
print("Load ReqIDHelperWord16 Add-In program OK")
WordAddInComObject = docAddin.Object
if WordAddInComObject != None :
print("Load ReqIDHelperWord16 Add-In COM Object Sucessful!")
print(WordAddInComObject.GetVerInformation())
return [Word, WordAddInComObject]
2、接口调用
def ReBuildTrace(Word, WordAddInComObject, targetDoclist) :
docHandles = []
appends = []
wordNum = 0
if len(targetDoclist) > 1:
print("#" * 80)
for doc in targetDoclist:
print("ReBuildTrace: " + str(doc))
for targetdoc in targetDoclist:
# Check the document type: word or another
if (IsWordDocument(targetdoc)) :
wordNum = wordNum + 1
doc = Word.Documents.Open(targetdoc)
Word.Visible = 0
# Clear requirement property
WordAddInComObject.ClearReqPropertyValue(doc, "Link By") # call com interface
WordAddInComObject.ClearReqPropertyValue(doc, "Test By")
docHandles.append(doc)
appendFlag = AppendMode #
appends.append(appendFlag)
Word.Documents.Save()
elif len(targetDoclist) == 1:
for targetdoc in targetDoclist:
# Check the document type: word or another
if (IsWordDocument(targetdoc)) :
wordNum = wordNum + 1
doc = Word.Documents.Open(targetdoc)
Word.Visible = 0
# Clear requirement property
WordAddInComObject.ClearReqPropertyValue(doc, "Test By")
docHandles.append(doc)
appendFlag = AppendMode #
appends.append(appendFlag)
Word.Documents.Save()
# There are only one word document, don't need to rebuild
if (wordNum > 1):
WordAddInComObject.SetSlientMode(True)
WordAddInComObject.CreateSpecDocListCrossLink(docHandles, appends)
3、自动化生成报告
借助插件和python丰富的库可以生成以下报告(统计报告和详细报告)
统计报告示例
详细报告示例
四、总结
通过该工具能够替代专业工具,但额外维护的花费时间较多。如果经费允许,还是使用专业工具,例如DROME。