风险分类体系表
风险分类体系表
风险分类体系表,按照产品工程类、开发规程和方法类、规划约束类三个类别,采用列举各类的不同来源和属性下的问题方法,帮助在项目中更好的识别风险来源和管理风险。
表A.1 产品工程类
产品工程类
来源
属性
问题
需求
支持性
需求的相关方是否对需求活动提供了足够的支持?
1.客户或用户能确保参与需求的获取活动吗?
环境
集成和测试环境是否准备充分?
1.是否有足够的硬件去做充分的集成和测试?
2.验证需求的开发现实际场景和测试数据是否存在问题?(特定的数据通信、实时响应、异步事件处理、多用户接口)
掌握性
设计人员对需求的容准确掌握了吗?
1.设计人员对需求的容能获得正确理解吗?
-no 能通过培训或与需求人员的沟通解决这个问题吗?
2.设计人员对需求的容全面掌握吗?
-no 能通过培训或与需求人员的沟通解决这个问题吗?
稳定性
随着开发的进行需否发生变化?
1.需否稳定?
-no 在哪些方面(质量、功能、进度、集成、设计、测试)影响系统?
4.完成软件功能所使用的语言是否适合?
5.在程序中是否使用了多种语言?
-yes 不同的编译器产生的代码接口是否兼容?
6.开发计算机是否同目标用户计算机相同?
-no 开发计算机和目标用户计算机编译器是否存在差异?
如果使用了硬件环境
7.编写软件的硬件说明书是否充分?
8.当编写代码时硬件说明书是否发生变更?
-yes b.在设计和实现过程中是否有一个可用于跟踪性能的模型?
可测试性
测试产品是困难的或不可能的吗?
1.软件是否容易测试?
2.设计是否包括一些特性可以帮助测试?
3.测试人员是否参与了需求分析?
硬件限制
关于目标硬件是否存在一些限制?
1.硬件设备是否限制了你满足软件需求的能力?(体系架构、存容量、吞吐量、实时响应、响应时间、恢复时限、数据库性能、功能、可靠性、可用性)
-yes a.硬件说明书是否发生变更?
-yes b.所有的软件接口都被定义了吗?
-yes c.是否有可用于测试软件的工程设计模型?
性能
是否有关于响应时间或吞吐量方面的需求?
1.在软件性能方面是否存在问题?(吞吐量、调度异步实时事件、实时响应、恢复时限、响应时间、数据库响应)
2.是否做了性能分析?
-yes a.对性能的分析你有多大的把握?
1.你是否理解书面化的需求说明书?
-no 不明确之处是否正在被满意地解决?
-yes 描述是否存在歧义或者缺少必要地解释?
有效性
按照需求所开发出的产品能否真正满足客户的要求?
1.是否存在没有说明客户真正想要的需求?
-Yes 你怎么解决这些问题?
2.你和客户对需求的理解是否一致?
-yes 是否有一种方法确定上述问题?
非软件开发
计划中非开发的软件是否存在问题?
如果是复用或重构的软件
1.你是否按照计划安排复用或重构非开发的软件?
-Yes 你是否预见到了什么问题?(文档、性能、功能、按时交付、客户化)
如果使用了商业现货软件
2.使用的商业现货软件是否存在问题?
确定接口、规模或性能的文档不够充分
性能欠佳
需要大的共享存和数据库容量
2.外部接口是否会有变化?
完整性
需否有所遗漏或规定不够完整?
1.是否有你知道应该在需求说明书中写明,但却没有写的需求?
-yes 你能够将这些需求融入到系统中吗?
2.客户是否有需求说明书中没有包括的需求或期望?
-yes 是否有一种途径去获得这些需求?
3.是否完整地定义了外部接口?
清晰性
需否清晰或有必要的解释?
2.如此规模的项目是否需要一个比通常更大的团队来完成?
功能
在满足功能性需求方面是否存在一些隐含的问题?
1.是否有规定的算法不能满足需求的情况发生?
-no 是否存在勉强符合需求的算法和设计?
2.你是如何确定算法和设计的可行性的?(原型、模型、分析、模拟)
难度
设计或实现是否存在困难?
1.是否存在依据不切实际和乐观的假定而得出的设计?
1.需否代表当前技术发展的最高水平?(技术、方法、语言、硬件)
-no 对你来说现有的需否存在新的容?
-yes 在这些领域是否有足够的技能水平?
-no是否有计划去获得这些领域的必备技能?
可衡量
需否规定了一个更大、更复杂的产品,或者要求一个更大的团队来完成?
1.是否关注系统的规模和复杂性?
-no 在这之前你是否做过同样规模和复杂性的项目?
-no 能采取措施使其参与或采用客户和用户代表替代的方法吗?
2.客户或用户能为开发方提供现场观察的机会吗?
-no 能由用户或用户代表详细描述用户的实际工作流程吗?
3.组织对需求人员进行市场调查活动给与资源和时间方面的支持吗?
4.客户理解需求分析人或进一步沟通取得他们的理解吗?
2.列出的单元测试是否充分?
3.是否有足够的时间去执行你认为应该做的单元测试?
4.如果有进度问题是否做了关于单元测试的进度承诺?
编码和单元测试
编码/实现
在编码和实现方面是否存在问题?
1.用来写代码的设计说明书是否足够详细?
2.当编写代码时设计是否有变更?
3.是否存在一些系统限制(存、外部存储)给编写代码带来一定的困难?
2.是否存在设计上有难度的需求或功能?
-no 你是否有所有需求的解决方案?
-yes这些需什么?为什么不易实现?
设计
接口
是否详细定义并且控制了部接口(硬件和软件)?
1.是否详细定义了部接口?(软件和软件、软件和硬件)
2.是否有一种方法用来定义部接口?
-yes 对于部接口的变化是否有一种控制方法?
3.硬件是否和软件一起并行开发?
3.你怎样来确认需求?(原型、分析、模拟)
可行性
从分析的观点看需不可行的?
1.是否有些需求在技术上难以实现?
-yes a:这些需什么?
-yes b:为什么这些需现是困难的?
-no 是否为这些需求做了可行的研究?
-Yes 你认为可行性研究中所做的假定是否可信?
先例
需求所规定的容你以前从没做过或者你所在的公司从没有做过?
与应用软件的接口存在问题
没有全面的测试
不能剔除所有的bug
可维护性不强
供货商响应速度缓慢
3.关于集成商业现货软件的补充资料和修订版你是否预见到什么问题?
可行性
实现设计是否是困难的或不可能的?
1.设计说明书是否全面定义了执行产品的所有部分?
2.选择的算法和设计容易去实现吗?
测试
1.在你验证关于设计的代码之前是否已开始了单元设计?