(原创文章,欢迎转载,请注明出处)

上回说到需求分析的一些内容。这回我总结总结我对需求建模和跟踪方面方法。

需求也是有模型的,有很多UML语言支持需求的建模,它不是UML的标准视图,而是扩展的视图。我喜欢用UML的Enterprise Architect, EA;虽然有很多很好用的开源UML工具,我还是选择了EA。原因很简单:稳定、简单、易用、强大。

EA支持对需求建模。需求是一个非常复杂的东西,可能需要不同的方式进行表达,才能表述清楚。如界面的需求,其实就是很麻烦的,除了功能的组织外,可能还有每个控件的位置及其显示的内容和交互方式。用自然语言还不太好描述,最好能用图片画一下,那就一目了然了。所以EA提供的Requirements建模的工具箱里的元素不够多,如果是在有别的需要,可以考虑使用Toolbox里的Custom工具。里面就含有对界面的建模。如图所示:

需求的建模,是为了:

1.理清楚需求与需求之间的关系;

2.理清楚需求的种类,哪些需求是功能需求,哪些需求是性能需求,哪些需求是扩展性需求等等;

3.将需求细化到可追踪的粒度;

4.明晰需求的范围;

5.确定需求的优先级别。

EA为需求模型准备了聚合、继承、关联、实现等关系。需求分为:功能、性能、打印、报告、测试、验证等类别。EA里这些需求类别倒是没什么太多的意义,我觉得功能、性能、维护、测试等需求分类可能更好。不过,这个分类仁者见仁,智者见智,没啥太好说的。主要看这需求间的几种关系:

  • 聚合关系:一组需求聚合为一个需求,旨在强调整体与部分的关系。“包含”、“组成”、“组成...部分”都是聚合关系的一种描述。例如,客户端与服务器之间通信的需求,实际上就是由服务器与客户端握手、服务器与客户端传输数据、服务器与客户端停止通信等需求聚合而成的。聚合关系可以用来分解顶层的需求,将其分为粒度较小的需求;
  • 继承关系:继承关系或泛化关系旨在强调普遍和特殊的关系, 例如,系统允许客户登录这个需求,实际上可以特殊化成两个需求,一是该计算机的终端登录,另一个是从网络或其它通讯接口远程登录;这两个需求是客户登录这个需求的特殊的例子。分析继承关系的时候,旨在强调特殊需求之间的独立性和互斥性。聚合关系是一组需求组合成一个需求,如果少了任意一个需求,被聚合的需求就不完整。而继承关系下的特殊需求少了任何一个需求,这个需求看起来都是完整的。终端登录和远程登录少了其中任何一个,用户登录这个需求都能完成。这个关系还强调终端登录与远程登录之间的独立性和互斥性。
  • 关联关系:个人觉得使用被使用的关系,除实现、聚合、继承以外的关系都可称为关联关系。:) 大杂烩。
  • 实现关系:实现关系也很好理解,就是一个需求是为了实现另外一个需求而存在的。实现需求一般都是系统的边界了,用例、交互等等都可以与实现需求对应上了。

我在学习EA的时候,发现EA里也允许需求模型中出现依赖关系,当然为了增强语义,指出单方面的使用关系,可以使用依赖关系来描述需求与需求的关系。当把需求建立完模型后,EA的强大就显现出来了。选择View > Relationship Matrix,你可以发现

Source/target都选择需求模型,类型都选择需求,Link type:选择聚合,Direction可以选择both,我这里选择了Sorce->target。矩阵表会把所有需求间的聚合关系都列在这里,一目了然,当然,也可以查看其它链接类型。让我们很方便的查阅一个大项目中的需求与需求之间的关系。

需求变动那是经常的,有时候需要查看一条需求改变以后能影响哪些需求,其实这个用EA是很方便办到的。选中变动的需求,ctrl + shift+ 4 或 view > Traceability。

看到左侧多了一个Traceability的框,它显示了这个需求与其他所有UML中的元素之间的关系。 我们可以很轻松的分析这条需求变动后会对整体产生什么样的影响。

其实,在实践中,我不是UML专家,很多情况下就是为了团队能看清楚需求与需求间的关系,需求更改后能影响到哪一部分,相关的东西应该怎么改。所以分析需求与需求间的关系,我不刻意的去做,实在头疼了需求之间直接就使用关联关系。每个人拿到模型后,都是需要先理解需求的。再分析需求与需求间的关系,所以关联关系就被我滥用了。这有个好处,那就是使用跟踪矩阵的时候,不用来回切换了,直接选择Association即可查阅所有关系。但这不意味着,需求之外也这样干,那是自寻死路。

(To be continued...)

(原创文章,欢迎转载,请注明出处)

需求管理二:需求的建模与跟踪相关推荐

  1. 软件需求管理(二) 需求获取

    一. 需求获取概述 1.1相关概述 软件需求获取是软件工程的主体. 主要表现为: 发现问题->分析问题->解决问题 的过程. 需求获取阶段主要产生的文档:1.前景和范围文档 2.用例说明文 ...

  2. 需求管理之需求优先级的排序-需求优先级分析方法论-波士顿矩阵和KANO模型

    无论是在大公司还是在小公司,我们总会遇到事多人少的情况.想开发的需求很多,空闲的开发资源很少.需求都堆积成山了,拼命加班也完不成所有的事情.所以我们需要用到需求排序的一些方法论 需求优先级分析方法论- ...

  3. 需求管理工具_DOORS和Reqtify — 需求管理和需求追溯工具

    IBM Engineering Requirements Management DOORS(原名 IBM Rational DOORS) 可实现对整个产品的全生命周期需求管理,覆盖从需求.到设计以及测 ...

  4. linux文件需求管理,CaliberRM 需求管理系统

    Borland CaliberRM™ 2006 是适用于整个软件交付过程管理的突破性解决方案. 设计用于捕获和管理业务.技术.功能和运营要求,CaliberRM 支持跨组织股东的有效协作,从而确保项目 ...

  5. DOORS和Reqtify—需求管理和需求追溯工具

    这里写自定义目录标题 IBM Rational DOORS可实现对整个产品的全生命周期需求管理,覆盖从需求.到设计以及测试阶段.是一款具有广泛使用的企业级专业需求管理工具.DOORS可以将项目开发过程 ...

  6. 互联网产品设计:产品需求管理之需求收集

    需求收集是进行产品需求管理的第一步.需求收集得到的各种用户需求素材是产品需求的唯一来源.可以说需求收集的质量影响着产品最终的质量. 1.需求收集目的 需求收集的目的在于:通过以市场为导向的客户需求收集 ...

  7. 笔记-项目范围管理-需求工程-需求管理

    1. 需求管理(Requirements Management,REQM) Requirements management is the process of documenting,analyzin ...

  8. 中小企业的需求管理软件都有哪些

    本文将盘点国内外10个适合中小企业的需求管理软件:1.PingCode:2.Worktile:3.Modern Requirements:4.Jama Software:5.Visure:6.Rati ...

  9. 轻量级过程改进之需求管理

    需求管理在于管理产品研发过程中的客户需求,建立项目相关干系人对需求的共同理解,维护需求与所开发产品之间的一致性,并控制需求的变更.需求管理的重要性不言而喻,在前面讲到的项目启动.项目计划以及接下去要讲 ...

最新文章

  1. 在CentOS 6.3/6.5 64bit上为python 2.7.10安装pycurl模块
  2. 1151 LCA in a Binary Tree (30 分)【难度: 难 / 知识点: LCA 未完成】
  3. 对比tensorflow查看打印输出张量Tensor的两种方法(急切执行tf.enable_eager_execution()和tf.Session.run())
  4. 排序(选择,冒泡,直接插入,希尔排序)
  5. C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)
  6. ROS(Robot Operating System)笔记 : 1.使用launch file在gazebo中生成urdf机器人
  7. 前端学习(5):深入了解网站开发
  8. 谷歌浏览器怎么设置点击书签 谷歌浏览器如何设置点击书签
  9. Cell Reports:CRISPR-Cas12k引导的细菌普适性靶向遗传筛选系统
  10. ShardingSphere RAW JDBC 分布式事务XA 代码示例
  11. 删除对象键值_JavaScript的解构技巧:排除对象属性、避免命名冲突、交换……...
  12. UnityShader3:ShaderLab
  13. c语言二级考试题型2016,2016年计算机二级《C语言》操作试题及答案
  14. [转]SREng扫描报告分析
  15. NC-SI的简单理解
  16. 重新开始噼里啪啦写小文字啦~
  17. QT 在 macos 上的透明bug Qt::WA_TranslucentBackground
  18. 在python3 encode和decode 的使用
  19. 怎样成为“吃鸡”沙漠霸主?掌握资源点是关键
  20. vue_2.0_fyf

热门文章

  1. h3c登录交换机的配置方法
  2. 关于未将对象引用设置到对象实例简单原理分析,与解决方法
  3. 最新C语言深入剖析班项目实战教程(国嵌 唐老师主讲)
  4. 解决javascript提交form出现错误提示:对象不支持此属性或方法
  5. Linux 获取磁盘唯一ID方式
  6. 解决multiple ‘X-Frame-Options‘ headers with conflicting values (‘DENY, SAMEORIGIN‘)
  7. 如何产生创业想法(3 个框架)
  8. 相关系数和相关性分析(下):肯德尔相关系数
  9. 超声系统发射变迹仿真(Ultrasound Emit apodization Simulation)
  10. 读懂Wi-Fi 6:看这本白皮书就够了!(附全文下载)