Main Content

以编程方式编写、导入、链接和申诉需求

您可以使用 Requirements Toolbox™ API 来以编程方式编写、导入、链接和申诉需求。该 API 提供了一种在需求编辑器中以交互方式执行这些操作的替代方法。有关以交互方式编写、导入、链接和申诉需求的详细信息,请参阅基于需求来开发和验证 MATLAB 函数

您可以在需求编辑器中编写、查看和编辑的项(例如需求、链接和申诉)还具有等效的对象,您可以使用 Requirements Toolbox API 在 MATLAB® 命令行窗口中以编程方式访问这些对象。

此示例说明如何编写需求,从 Microsoft® Word 中导入额外的需求,然后以编程方式链接和申诉需求。您只能在 Microsoft Windows® 平台上运行此示例。

编写需求

使用 slreq.new 函数创建要包含需求的需求集。

myReqSet = slreq.new("MyRequirementSet");

该函数以 slreq.ReqSet 对象形式返回需求集对象。通过将 slreq.ReqSet 对象作为输入传递给 add 方法,向需求集添加一个父需求。

parentReq1 = add(myReqSet);

该方法以 slreq.Requirement 对象形式返回需求。向 SummaryDescription 属性添加文本。使用圆点表示法访问这些属性。

parentReq1.Summary = "Parent Requirement 1";
parentReq1.Description = "This is the first parent requirement in the requirement set.";

向需求集添加第二个父需求。在添加需求时指定 SummaryDescription 属性。

parentReq2 = add(myReqSet,Summary="Parent Requirement 2", ...
    Description="This is the second parent requirement in the requirement set.");

通过将 slreq.Requirement 对象作为输入传递给 add 方法,向第一个父需求添加两个子需求。

childReq1 = add(parentReq1,Summary="Child Requirement 1.1");
childReq2 = add(parentReq1,Summary="Child Requirement 1.2");

通过将 slreq.ReqSet 对象作为输入传递给 children 方法,返回需求集的父需求数组。

parentReqs = children(myReqSet)

通过将 slreq.Requirement 对象作为输入传递给 children 方法,返回第一个父需求的子需求数组。

childReqs = children(parentReq1)

保存需求集。

save(myReqSet)

导入需求

需求设定 MyRequirementSpecification.docx 是一个 Microsoft Word 文档,其中包含按基本层次结构排列的六个需求。

使用 slreq.import 函数,将需求作为外部需求的引用(称为引用需求)导入。通过将需求作为引用需求导入,您可以继续在 Microsoft Word 中管理需求。

[count,filePath,myImportedReqSet] = slreq.import("MyRequirementSpecification.docx", ...
    AsReference=true);

该函数会返回导入的引用需求的数量,需求集的文件路径,以及需求集的 slreq.ReqSet 对象。通过将 slreq.ReqSet 对象作为输入传递给 children 方法,获取需求集的导入节点的句柄。

topRef = children(myImportedReqSet);

该导入节点以 slreq.Reference 对象形式返回。通过将 slreq.Reference 对象作为输入传递给 children 方法,返回需求集的父需求数组。

parentRefs = children(topRef)

该方法将导入节点下的引用需求作为 slreq.Reference 对象返回。

打开 Word 文档。

winopen("MyRequirementSpecification.docx")

Parent Requirement 1 下,将现有文本替换为以下文本:This is the first parent requirement in the requirement set. 保存 Word 文档,然后将其关闭。

检查与导入节点关联的 Word 文档自文档导入以来是否发生了更改。

tf = hasNewUpdate(topRef)
tf = logical
   1

更新需求集。

[status,changeList] = updateReferences(myImportedReqSet,topRef)
status = 
'Update completed. Refer to Comments on Import1.'
changeList = 
    'Updated: Parent Requirement 1. Properties: description
     '

保存需求集。

save(myImportedReqSet)

创建链接

使用 slreq.createLink 函数,在具有摘要 Parent Requirement 1 的两个需求之间创建链接。

parentRef1 = parentRefs(1);
myLink = slreq.createLink(parentRef1,parentReq1);

该函数将链接作为 slreq.Link 对象返回。

当您使用需求编辑器界面创建链接时,Requirements Toolbox 会确定哪个项是源,哪个项是目标。当您使用 slreq.createLink 函数创建链接时,必须指示哪个项是源,哪个项是目标。当您在需求与设计项或测试项之间创建链接时,请将需求设置为目标。Requirements Toolbox 会确定链接类型。

通过将 slreq.Link 对象作为输入传递给 linkSet 方法,返回该链接的链接集对象。

myLinkSet1 = linkSet(myLink);

该函数将链接集对象作为 slreq.LinkSet 对象返回。

保存链接集。

save(myLinkSet1);

申诉需求

如果您的需求集中的需求不需要实现或验证,您可以对将它们从实现和验证状态中排除作出申诉。

对具有实现摘要 Parent Requirement 1 的需求作出申诉。

通过将 slreq.ReqSet 对象作为输入传递给 addJustification 方法,向 MyRequirementSet 需求集添加申诉。使用 justifyImplementation 方法,在需求与申诉之间创建类型为 Implement 的链接。

jt1 = addJustification(myReqSet);
implLink = justifyImplementation(parentReq1,jt1);

addJustification 方法会将申诉作为 slreq.Justification 对象返回。当您以编程方式添加申诉时,Requirements Toolbox 会将申诉存储在父申诉下。如果父申诉不存在,该软件会创建一个父申诉。通过将 slreq.Justification 对象作为输入传递给 parent 方法,返回父申诉。

parentJust = parent(jt1);

接下来,对具有验证摘要 Parent Requirement 1 的需求作出申诉。

使用 addJustification 方法,向 MyRequirementSet 需求集添加申诉。使用 justifyVerification 方法,在需求与申诉之间创建类型为 Implement 的链接。

jt2 = addJustification(myReqSet);
verifLink = justifyVerification(parentReq1,jt2);

保存需求集。

save(myReqSet)

返回链接的链接集,然后进行保存。

myLinkSet2 = linkSet(verifLink);
save(myLinkSet2);

查找加载的 Requirements Toolbox 对象

您可以通过搜索所有加载的对象,或者在需求集或链接集中搜索对象,来查找加载的 Requirements Toolbox 对象。

使用 slreq.find 函数查找加载的需求集。

loadedReqSets = slreq.find(Type="ReqSet")

使用 slreq.find 函数查找加载的需求。然后,通过将 slreq.ReqSet 对象作为输入传递给 find 方法,在 MyRequirementSet 需求集中查找加载的需求。比较结果。

loadedRequirements1 = slreq.find(Type="Requirement")
loadedRequirements2 = find(myReqSet,Type="Requirement")

结果是相同的,因为 MyRequirementSet 需求集是包含 slreq.Requirement 对象的唯一加载的需求集。

使用 slreq.find 函数查找加载的链接。然后,通过将 slreq.LinkSet 对象作为输入传递给 find 方法,在第二个链接集中查找加载的链接。比较结果。

loadedLinks1 = slreq.find(Type="Link")
loadedLinks2 = find(myLinkSet2)

结果是不同的,因为两个 slreq.LinkSet 对象都包含 slreq.Link 对象。

清除和加载需求集以及链接集

您可以从内存中清除单个需求集。通过将 slreq.ReqSet 对象作为输入传递给 close 方法,关闭 MyRequirementSpecification 需求集。

close(myImportedReqSet)

当您关闭某个需求集时,Requirements Toolbox 也会关闭该需求集的已注册链接集,除非包含该链接集的链接源或目标的另一个工件仍处于已加载状态。搜索仍处于已加载状态的链接集。

loadedLinkSets = slreq.find(Type="LinkSet")

您无法从内存中清除单个链接集。请用 slreq.clear 函数清除所有加载的需求集和链接集。使用 slreq.find 函数确认已从内存中清除链接集。

slreq.clear
loadedLinkSets = slreq.find(Type="LinkSet")
loadedLinkSets = 

  0×0 LinkSet array with properties:

    Description
    Filename
    Artifact
    Domain
    Revision
    Dirty
    CustomAttributeNames

从内存中清除需求和链接后,保留在工作区中的变量将不再可用。使用 clear 清空工作区。

clear

使用 slreq.load 函数加载 MyRequirementSet 需求集。

myReqSet = slreq.load("MyRequirementSet");

加载需求集时还会加载需求集的已注册链接集。

loadedLinkSets = slreq.find(Type="LinkSet")

另请参阅

函数

相关主题