热门标签 | 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框架提供了一些策略来突破这一限制,以实现更加动态和灵活的类加载。这些策略不仅能够提升系统的可扩展性,还能在复杂的运行环境中确保类的正确加载和管理。 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • 本文深入探讨了 Spring Cloud 微服务架构中 Gateway 组件的应用,详细介绍了其在实现高效请求路由与过滤方面的关键作用。文章首先从基本配置入手,逐步讲解了如何通过静态路由和动态路由实现灵活的服务访问控制。此外,还特别介绍了如何配置 Gateway 以自动从 Nacos 服务注册中心拉取服务列表,进一步提升系统的可维护性和扩展性。 ... [详细]
  • SpringBoot启动脚本详解:BAT文件应用与基础入门指南(SpringBoot系列第1篇)
    如果你还在为SSM框架的复杂搭建过程和繁琐的配置文件而烦恼,那么SpringBoot将是你的一大福音。作为SpringBoot系列的第一篇文章,本文详细介绍了如何使用BAT文件来启动SpringBoot应用,并提供了基础入门指南,帮助开发者快速上手,简化开发流程。 ... [详细]
  • 在Linux系统中,MySQL的用户权限管理是运维人员必须掌握的关键技能之一。本文详细介绍了MySQL用户和权限管理的相关概念,包括MySQL用户的概念及其与VSFTPD虚拟用户的相似性,以及密码管理的重要性。此外,还深入探讨了如何通过命令行工具和配置文件进行用户权限的设置和调整,确保系统的安全性和稳定性。 ... [详细]
  • 随着越来越多的应用程序采用JSON格式作为响应数据,基于Spring Framework构建的服务端应用也广泛采用了这一实践。本文将详细介绍如何在Spring 4.x版本的MVC框架中配置和实现HTTP请求返回JSON数据流,涵盖相关配置、依赖管理和代码示例,帮助开发者高效地实现这一功能。 ... [详细]
  • 本文深入探讨了Java枚举类型的使用与实践,详细解析了枚举的基本用法及其在实际开发中的应用。首先介绍了枚举作为常量的替代方案,自JDK 1.5起,通过枚举可以更加简洁、安全地定义常量,避免了传统方式中可能出现的错误。此外,文章还探讨了枚举在实现单例模式、状态机等场景中的优势,并提供了多个实际案例,帮助开发者更好地理解和运用这一强大的语言特性。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本文深入探讨了 HTML 中的 `margin` 属性,详细解析了其基本特性和应用场景。文章不仅介绍了 `margin` 的基本概念,还重点讨论了垂直外边距合并现象,并分析了 `margin` 在块级元素与内联元素中的不同表现。通过实例和代码示例,帮助读者全面理解 `margin` 的使用技巧和常见问题。 ... [详细]
  • 深入解析零拷贝技术(Zerocopy)及其应用优势
    零拷贝技术(Zero-copy)是Netty框架中的一个关键特性,其核心在于减少数据在操作系统内核与用户空间之间的传输次数。通过避免不必要的内存复制操作,零拷贝显著提高了数据传输的效率和性能。本文将深入探讨零拷贝的工作原理及其在实际应用中的优势,包括降低CPU负载、减少内存带宽消耗以及提高系统吞吐量等方面。 ... [详细]
  • 本课程详细解析了Spring AOP的核心概念及其增强机制,涵盖前置增强、后置增强和环绕增强等类型。通过具体示例,深入探讨了如何在实际开发中有效运用这些增强技术,以提升代码的模块化和可维护性。此外,还介绍了Spring AOP在异常处理和性能监控等场景中的应用,帮助开发者更好地理解和掌握这一强大工具。 ... [详细]
  • npm 发布 WhalMakeLink 包:链接管理与优化的新选择
    WhalMakeLink 是一个强大的 npm 工具,专为项目管理和优化而设计。它能够自动在项目的 README 文件中生成当前工程目录下所有子项目的链接地址,极大提升了开发效率和文档维护的便捷性。通过简单的 `npm init` 命令即可快速启动和配置该工具,适用于各种复杂项目结构。 示例演示了其基本用法和功能。 ... [详细]
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社区 版权所有