热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

追踪性基础知识

1.可追踪性软件可追踪性是指在软件开发过程中建立和维护软件制品之间的关联关系,并利用这些关系对软件项目进行一系列分析的能力[1]。需求可追踪性指的是前向或后向描述和

1.可追踪性

软件可追踪性是指在软件开发过程中建立和维护软件制品之间的关联关系,并利用这些关系对软件项目进行一系列分析的能力[1]。需求可追踪性指的是前向或后向描述和跟踪整个需求生命周期的能力[2]。例如,从需求的起源,经由开发和规约到随后的部署和使用等。

[1] Co EST: Center of excellence for software traceability, http://www.Co EST.org.

[2] Gotel O C Z, Finkelstein A C W. An analysis of the requirements traceability problem[C]//Requirements Engineering, 1994., Proceedings of the First International Conference on. IEEE, 1994: 94-101.

【说明】分析的能力:可追溯性支持许多活动,例如证明产品符合利益相关方规定的要求,并符合一系官方规定。可追溯性也被用来建立和理解需求和下游工作产品(如设计文档,源代码和测试用例)之间的关系。在这种情况下,它支持诸如影响分析这样的任务,这些任务可以帮助开发人员理解提议的变更如何影响当前的系统,通过追溯源代码的所有元素回溯到特定的需求以及安全分析来识别多余和不需要的功能的代码验证。可追溯性还可以通过识别符合(新)要求的部分以及软件系统的发展来支持软件系统部分的重用。

【说明】前向和后向:前向追踪是指从书写文档形式的需求(软件需求规格说明SRS)追踪到需求的来源.后向追踪指在软件开发过程中,从需求义档确定后一直到软件发布过程中的各种制品之间的追踪。

2.可追踪性基础


2.1TIM

可追踪信息元模型定义了项目中被追踪的软件制品类型、追踪链类型等,为实际项目中可追踪信息的建立提供指导,是软件可追踪性的核心[1]

clip_image002

[1] Cleland-Huang J, Gotel O, Zisman A. Software and systems traceability[M]. Springer, 2012.

l 可追踪制品(Trace Artifact)指一个可被追踪的数据单元,可以是软件生命周期中出现任何制品、组织或个人,例如单个需求、需求集、UML 类或源代码等。每个可追踪制品都有其各自的属性,如制品类型。可追踪制品类型(Trace Artifact Type)用于标识拥有相同或相似结构(语法)或用途(语义)的可追踪制品。如软件的需求、设计或测试用例为不同类型的软件制品。

l 可追踪链(Trace Link)描述了一对制品间特定的关联关系。与可追踪制品相同,可追踪链也有其各自的属性,如可追踪链类型。可追踪链类型(Trace Link Type)用于标识有相同或相似结构或用途的制品间关联关系,如实现、测试、精化及替代关系等。

l 追踪关系(Trace Relation)描述了给定类型的可追踪制品间的所有追踪链的集合。例如,需求与需求的追踪关系描述了需求之间存在的全部可追踪链。追踪关系类型表示了制品间特定类型的追踪关系。

2.2追踪性分类[1]

(1) 向 前 需 求 规 范 (Pre-requirements Specification) 和 向 后 需 求 规 范 (Pre-requirements Specification)可追踪性[2]:向前、向后需求规范可追踪性分别表示向前追踪需求规范或向后追踪需求规范的能力。向前追踪指的是从需求规范到用户需求的追踪,向后追踪则指的是从需求规范到实现需求的软件设计、源代码间的追踪。

(2)前向(Forwards)和后向可追踪性(Backwards)[3]:前向追踪指的是从当前软件制品到其后继派生制品的追踪,如从需求到实现该需求的源代码之间的追踪,后向追踪的是从当前制品到派生出该制品的源制品的追踪,如从源代码中某功能函数到 UML 类中某操作的追踪。

(3)水平(Horizontal)和垂直(Vertical)可追踪性[4]:水平追踪指的是对处于相同的项目开发阶段或拥有相同抽象层次的制品间的追踪,例如与系统性能相关的所有需求间的追踪,特定需求在不同时刻不同版本间的追踪。垂直可追踪性则描述了处于不同阶段拥有不同抽象层次制品间的追踪,如软件需求和设计制品间的追踪。水平和垂直追踪中均可包含前向和后向可追踪。

(4)层次内(Within-Level)和层次间(Between-Level)的可追踪性[5]:与水平和垂直追踪类似,层次内追踪指对拥有相同抽象层次不同精化程度制品的追踪,例如,同一需求规范中不同用例图间或需求间的追踪。层次间追踪则指对属于不同抽象层次制品的追踪clip_image004

[1] Winkler S, Pilgrim J. A survey of traceability in requirements engineering and model-driven development[J]. Software and Systems Modeling (So Sy M), 2010, 9(4): 529-565.

[2] Gotel O C Z, Finkelstein A C W. An analysis of the requirements traceability problem[C]//Requirements Engineering, 1994., Proceedings of the First International Conference on. IEEE, 1994: 94-101.

[3] IEEE. (1984). IEEE Guide to Software Requirements Specification.

[4] Ramesh B, Edwards M. Issues in the development of a requirements traceability model[C]//Requirements Engineering, 1993., Proceedings of IEEE International Symposium on. IEEE, 1993: 256-259.

[5] Von Knethen A, Paech B. A survey on tracing approaches in practice and research[J]. Frauenhofer Institut Experimentelles Software Engineering, IESE-Report No, 2002, 95.

【说明】:向前和前向,向后和后向:

‚ 向前指的的是从需求规范到用户需求,向后指的是从需求规范到需求的软件设计

‚ 前向是从当前软件制品到其后继派生制品的追踪,如从需求到实现该需求的源代码之间的追踪,后向追踪的是从当前制品到派生出该制品的源制品的追踪,如从源代码中某功能函数到 UML 类中某操作的追踪。

ƒ 向前和前向的区别是向前是从出发点向前,比如从需求规范到用户需求。而前向是从出发点向后,比如从需求到需求的代码实现。向后和后向也是这个区别

2.3追踪关系的分类[1]

clip_image006

(1)依赖(Dependency):若制品 E1依赖于制品 E2,则 E2是 E1实现的基础和前提,制品E2的变更也会导致 E1的变更。依赖关系可以存在于不同的需求或需求与设计元素间。

(2)精化/泛化(Refinement/Generalization):精化关系存在于属于不同抽象层次的软件制品中,可以表示一个抽象泛化的软件制品的细化或具体化、对一个复杂制品的分解等。

(3)演化(Evolution):演化关系描述了制品在开发和维护过程中的演化或替代关系,若制品 E1演化为 E2表明原制品 E1被现有制品 E2所替代。例如新版本替换旧版本或需求的再加工等。

(4)可满足性(Satisfiability):可满足性关系描述了开发过程中另一种类型的演化关系,若制品 E1满足了 E2的预期、需求或 E1符合 E2的某种条件,则称 E1可满足 E2。例如,下游的软件制品实现了上游软件制品的需求。

(5)覆盖(Overlap):覆盖关系描述了拥有相同系统或领域功能或特性的制品间的关联关系。例如,自然语言的文本需求与其对应的形式化描述间的关联。

(6)冲突(Conflict):冲突关系标识了制品间的矛盾,如需求间的不一致等。冲突关系通常伴随着解决冲突和问题的方法、冲突时制品的选择等信息。

(7)原理(Rationale):此类关系通常用于描述和维护制品创建、演化的依据或系统不同级别的决策信息。

(8)贡献(Contribution):此类关系泛化表示软件制品与项目相关人员之间的关联,如用户与其所提出的需求间的关联关系。

【说明】需求间存在依赖、精化、演化及冲突等追踪关系,软件的设计制品间

存在依赖、精化、可满足和冲突等类型的追踪关系。

[1] Spanoudakis G, Zisman A. Software traceability: a roadmap[J]. Handbook of Software Engineering and Knowledge Engineering, 2005, 3: 395-428.


推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了多因子选股模型在实际中的构建步骤,包括风险源分析、因子筛选和体系构建,并进行了模拟实证回测。在风险源分析中,从宏观、行业、公司和特殊因素四个角度分析了影响资产价格的因素。具体包括宏观经济运行和宏经济政策对证券市场的影响,以及行业类型、行业生命周期和行业政策对股票价格的影响。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
author-avatar
想丶风吹叶落
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有