需求工程练习题
一、选择题
1. 软件需求规格说明书的内容不应包括对( )的描述。
- A. 主要功能
- B. 算法的详细过程
- C. 用户界面及运行环境
- D. 软件的性能
*正确答案:*B:算法的详细过程;
2. 需求分析最终结果是产生( )
- A. 项目开发计划
- B. 可行性分析报告
- C. 需求规格说明书
- D. 设计说明书
*正确答案:*C:需求规格说明书;
3. 需求分析中,开发人员要从用户那里解决的最重要的问题是( )
- A. 让软件做什么
- B. 要给软件提供哪些信息
- C. 需求软件工作效率怎样
- D. 让软件具有何种结构
*正确答案:*A:让软件做什么;
4. 需求规格说明书的作用不应包括( )
- A. 软件设计的依据
- B. 用户与开发人员对软件要做什么的共同理解
- C. 软件验收的依据
- D. 软件可行性研究的依据
*正确答案:*D:软件可行性研究的依据;
5. 软件需求分析阶段的工作,可以分成4个方面:需求获取,需求分析,编写需求规格说明书以及( )
- A. 用户
- B. 需求评审
- C. 总结
- D. 都不正确
*正确答案:*B:需求评审;
6. 需求验证应该从下述几个方面进行验证:( )
- A. 可靠性、可用性、易用性、重用性
- B. 可维护性、可移植性、可重用性、可测试性
- C. 一致性、现实性、完整性、有效性
- D. 功能性、非功能性
*正确答案:*C:一致性、现实性、完整性、有效性;
7. 需求分析阶段研究的对象是 ( )
- A. 用户需求
- B. 分析员要求
- C. 系统要求
- D. 软硬件要求
*正确答案:*A:用户需求;
8. 需求分析阶段建立原型的目的是 ( )。
- A. 确定系统的功能和性能的需求
- B. 确定系统的运行要求
- C. 确定系统是否满足用户需求
- D. 确定系统是否满足开发人员需要
*正确答案:*A:确定系统的功能和性能的需求;
9. 需求分析的目的是保证需求的( )。
- A. 目的性和一致性
- B. 完整性和一致性
- C. 正确性和目的性
- D. 完整性和目的性
*正确答案:*B:完整性和一致性;
10. 软件开发的需求活动,其主要任务是 ( )
- A. 给出软件解决方案
- B. 给出系统模块结构
- C. 定义模块算法
- D. 定义需求并建立系统模型
*正确答案:*D:定义需求并建立系统模型;
二、填空题
1. 需求分析的步骤 , , , 。
-
正确答案:
(1) 调查研究 (2) 分析与综合(3) 书写文档(4) 需求分析评审
答案解析:
也可以说:需求获取、需求分析、文档编辑、需求验证
2. 需求分析阶段需编写的文档有 , , 。
-
正确答案:
(1) 需求规格说明书(2) 初步用户使用手册(3) 确认测试计划
3. 系统规格说明,数据要求, , ,这四份文档资料是在书写文档阶段必需完成的。
-
正确答案:
(1) 用户系统描述 (2) 修正的开发计划
4. 软件需求的逻辑视图给出 , 而不是实现的细节。
-
正确答案:
(1) 数据字典
5. 优秀的需求规格说明应该具备 7个特性,即完整性、正确性、精确性、可行性、必要性、无歧义和 。
-
正确答案:
(1) 可验证性
6. 需求分析阶段研究的对象是软件项目的 。
-
正确答案:
(1) 用户要求
7. 需求工程突出工程化的思想,强调以________、_________和可重复化的方法与技术进行与软件需求相关的活动。
-
正确答案:
(1) 系统化 (2) 条理化
8. 需求是客户行为在__________内希望看到的效果。
-
正确答案:
(1) 问题域
9. 非功能需求由___________与_____________构成。
-
正确答案:
(1) 性能需求 (2) 约束与限制
10. 目标需求限定了项目的_________和项目应达到的_____________。
-
正确答案:
(1) 范围 (2) 目标
三、判断题
1. 需求工程包括需求获取和需求开发两个方面。
*正确答案:*错
2. 需求验证是需求工程中最后一个活动。
*正确答案:*错
3. 规格说明是问题域为满足用户需求而提供的解决方案,规定了解系统的行为特征。
*正确答案:*错
4. 业务需求具有明显的目的性和较高的抽象性,经过明确和细化的处理,可以直接转化为系统需求。
*正确答案:*错
5. 需求开发的一些特性决定了需求开发过程只能是一个简单的线性增量过程。
*正确答案:*错
6. 严格意义上的原型主要被用在需求分析阶段。
*正确答案:*对
7. 要完成相同的功能,构建抛弃式原型比构建演化式原型所花费的代价要大得多。
*正确答案:*错
8. 结构化分析方法适合于数据处理类型软件的需求分析。
*正确答案:*对
9. 软件需求描述的是"如何做",而不是"做什么"。
*正确答案:*错
10. 软件需求的层次包括业务需求、用户需求、功能需求。
*正确答案:*对
四、简答题
1. 简述需求工程的主要任务。
-
正确答案:
需求工程有以下三个主要任务:①需求工程必须说明软件系统将被应用的环境及其目标,说明用来达成这些目标的软件功能,还要说明在设计和实现这些功能时上下文环境对软件完成任务所用方式、方法所施加的限制和约束,也即要同时说明软件需要"做什么"和"为什么"需要做。②需求工程必须将目标、功能和约束反映到软件系统中,映射为可行的软件行为,并对软件行为进行准确的规格说明。需求规格说明是需求工程最为重要的成果,是项目规划、设计、测试、用户手册编写等很多后继软件开发阶段的工作基础。③现实世界是不断变化的世界,因此需求工程还需要妥善处理目标、功能和约束随着时间的演化情况。同时,为了节省开支和进行需求规格说明的重用,需求工程还需要对目标、功能和约束在软件产品族中的演化和分布情况进行综合考虑与处理。
2. 简述常见的需求定义错误。
-
正确答案:
在实践和研究过程中,人们发现关于需求定义的具体的错误主要有以下几种:**①需求并没有反映用户的真实需要。**实践表明,获取用户的真实需求是非常困难的。**②模糊和歧义的需求。**在实践中,人们总是会有意和无意地写出模糊和歧义的需求定义。无意中写出模糊和歧义的需求定义往往是因为选词造句不当,导致不同的人对同一项需求产生了不同的理解。③信息遗漏。 信息遗漏也是一类常见的问题,包括明显的信息遗漏和不明显的信息遗漏。明显的信息遗漏,其主要原因在于项目的范围定义不当,可以通过加强对业务需求的处理得以解决。不明显的信息遗漏,是因为相关信息难以发现,只能靠需求工程师的经验来加以避免。**④不必要的需求。**产生不必要需求的原因主要是:其一是用户将一些不必要的需求作为和开发人员谈判的筹码,然后通过自己对不必要需求的要求而在和开发人员的谈判当中取得真正想要的利益,例如金钱。对此问题,唯一需要的就是开发人员代表的谈判技巧。其二是用户在交流中,总是害怕信息有所遗漏,并因此产生不利后果,因此用户总是倾向于表达各种各样的需要。**⑤不切实际的期望。**不切实际的期望也是实践中常见的需求定义问题,而且它在很大程度上影响着项目的成败。面对不切实际的期望,要求软件开发者提供可行性、成本等足够的技术参考信息,帮助用户对其进行取舍和调整。
3. 需求分析阶段需要执行哪些活动?
-
正确答案:
①问题分析对问题进行分析,定义解决方案②确定系统边界将所有问题的解决方案进行综合,就可以得到整个解系统的功能和边界③需求建模对需求进行建模,完成从问题世界向计算机世界的转换④需求细化明确用户需求的隐含信息,展开为明确的对软件系统的行为期望,即系统需求。⑤确定需求优先级对需求进行分级,保证等级更高的需求得到更多的实现保证⑥需求协商检测冲突的存在,并提供信息以帮助和引导协商活动的开展
4. 需求规格说明书由哪些部分组成?各部分之间的关系是什么?
-
正确答案:
软件需求说明书一般包括如下内容:1)引言部分 编写目的;项目背景 (应包括:a.项目的委托单位、开发单位和主管部门;b.该软件系统与其他系统的关系。) ;定义;(列出文档中所用到的专门术语的定义和缩写词的原文。)参考资料。 2)任务概述 目标;运行环境;条件与限制。 3)数据描述 静态数据;动态数据 (包括输入数据和输出数据) ;数据库描述 (给出使用数据库的名称和类型) ;数据词典;数据采集。 4)功能要求 功能划分;功能描述。 5)性能需求 数据精确度;时间特性(如响应时间、更新处理时间、数据转换与传输时间、运行时间等);适应性(在操作方式、运行环境、与其他软件的接口以及开发计划等发生变化时,应具有的适应能力。) 6)运行需求 用户界面(如屏幕格式、报表格式、菜单格式、输入输出时间等);硬件接口;软件接口;故障处理。 7)其他要求 如可使用性、安全保密、可维护性、可移植性等。 8)附录
需求建模方法与技术
一. 单选题(共10题,100分)
1. (单选题)( )用于描述数据的处理过程。
- A. 数据字典
- B. 决策树
- C. 决策表
- D. 数据流图
*正确答案:*D:数据流图;
2. (单选题)需求验证应该从下述几个方面进行验证:( )
- A. 可靠性、可用性、易用性、重用性
- B. 可维护性、可移植性、可重用性、可测试性
- C. 一致性、现实性、完整性、有效性
- D. 功能性、非功能性
*正确答案:*C:一致性、现实性、完整性、有效性;
3. (单选题)面向对象技术中,对象是类的实例。对象有三种成分( )、属性和方法(或操作)。
- A. 标识
- B. 规则
- C. 封装
- D. 消息
*正确答案:*A:标识;
4. (单选题)在原型法中,开发人员根据( )的需求不断修改原型,直到满足客户要求为止。
- A. 用户
- B. 开发人员
- C. 系统分析员
- D. 程序员
*正确答案:*A:用户;
5. (单选题)常用的需求分析方法有:面向数据流的结构化分析方法(SA),面向对象的分析方法(OOA),下列( )不是结构化分析方法的图形工具。
- A. 决策树
- B. 数据流图
- C. 数据字典
- D. 快速原型
*正确答案:*D:快速原型;
6. (单选题)下列软件开发模型中,( )只有在开发人员具有风险分析和排除风险的经验及专门知识时,才能获得成功。
- A. 原型模型
- B. 瀑布模型
- C. 喷泉模型
- D. 螺旋模型
*正确答案:*D:螺旋模型;
7. (单选题)从瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对 软件的影响最大( )。
- A. 详细设计阶段
- B. 概要设计阶段
- C. 需求分析阶段
- D. 测试和运行阶段
*正确答案:*C:需求分析阶段;
8. (单选题)传统的( )要求,必须等前一阶段的工作完成之后,才能开始后一阶段的工作;前 一阶段的输出文档,就是后一阶段的输入文档。
- A. 原型模型
- B. 瀑布模型
- C. 螺旋模型
- D. 喷泉模型
*正确答案:*B:瀑布模型;
9. (单选题)需求获取中常见的困难不包括下列哪个( )。
- A. 用户越俎代庖
- B. 知识理解困难
- C. 用户存在认知困境
- D. 模型建立
*正确答案:*D:模型建立;
10. (单选题)建立需求基线的作用不包括( )。
- A. 防止需求的滥变给程序架构造成重大影响
- B. 为开发工件提供了一个定点和快照
- C. 可以拓展应用
- D. 可以重新建立基于某个特定发布版本的配置
*正确答案:*C:可以拓展应用;
二. 填空题(共8题,100分)
1. (填空题)软件开发的生命周期包括( )、设计、编码、( )、( )、维护,共六个阶段。
-
正确答案:
(1) 需求分析和定义;需求分析(2) 测试(3) 运行
2. (填空题)在软件开发中,使用原型时可采取两种不同的策略,即:( )策略和( )策略。
-
正确答案:
(1) 废弃(2) 进化;追加
3. (填空题)数据流图和数据字典共同构成了系统的 模型,是需求规格说明书的主要组成部分。
-
正确答案:
(1) 逻辑
4. (填空题)通常来说,如果用户需求出现了模糊、不清晰、不完整等具有一定不确定性的特征,就可以考虑使用_____________。
-
正确答案:
(1) 原型法
5. (填空题)模型语言的三要素:语法、语义、语用。其中_______给出了一个模型元素描述的更宽广的上下文,以及影响该模型元素意义的约束和假定。
-
正确答案:
(1) 语用
6. (填空题)UML行为模型的_______是依据处理流程进行的用例实现。
-
正确答案:
(1) 活动图
7. (填空题)UML行为模型的________通常描述的是单个用例的典型场景。
-
正确答案:
(1) 交互图
8. (填空题)需求基线的维护主要包括配置管理和____________。
-
正确答案:
(1) 状态维护
三. 判断题(共10题,100分)
1. (判断题)需求验证并不是一个可以一次结束的活动,它可能需要多次、反复地执行验证。
*正确答案:*对
2. (判断题)数据流图中每个加工至少有一个输入数据流,但可以没有输出数据流。
*正确答案:*错
3. (判断题)业务规则包括企业方针、政府条例、工业标准、会计准则和计算方法等。业务规划本身就是软件需求。
*正确答案:*错
4. (判断题)需求工程包括需求获取和需求开发两个方面。
正确答案:*错
5. (判断题)需求开发的一些特性决定了需求开发过程只能是一个简单的线性增量过程。
*正确答案:*错
6. (判断题)软件需求分析的关键是为真实世界的问题建立模型,即问题域建模。
*正确答案:*对
7. (判断题)软件成功的标准是用户在用,并且可以很容易做完要做的事。
*正确答案:*对
8. (判断题)获取需求活动的展开只要保证项目的范围,可以有需求遗漏。
*正确答案:*错
9. (判断题)在软件生命周期中,工程量最大的阶段就是编写程序。
*正确答案:*错
10. (判断题)开发人员和客户对软件质量因素的认可是完全一致的。
*正确答案:*错
四. 论述题(共2题,100分)
1. (论述题)如何有效的处理需求的变化是很多现代软件开发技术的主题,请从需求变更的原因,一般过程以及控制对策等方面谈谈你的看法。
-
正确答案:
需求变更的原因有:①问题放生了改变 ②环境发生了改变 ③需求基线存在缺陷另一些因素:用户变动,用户对软件的认识变化,相关产品的出现一般过程:看书;在形成需求基线之后,进行需求的变更控制看法根据书上内容然后展开。
2. (论述题)简述软件开发中为何使用原型工具以及使用的好处。
-
正确答案:
因为原型是在最终系统产生之前的一个局部真实表现,所以原型方法可以让人们在系统的开发过程中,就能够对一些具体问题进行基于实物的有效沟通,从而帮助人们尽早解决软件开发过程中存在的各种不确定性。不确定性是指人们已经拥有的知识是不充分的,不足以预测将来的事件发展,或者不足以清晰、准确地描述某个事物。实践证明,利用原型有如下好处:①及时、有力地响应用户需求的变化。②减少返工。③帮助控制不完整需求所带来的风险。16 ④可以将一个大的难以处理的开发过程细分成一些更小更容易处理的步骤。⑤减少开发成本,提高经济效益。⑥增加开发者之间的交流,帮助确定技术解决方案的可行性。⑦有效地识别风险和解决风险,帮助进行风险管理。⑧提高用户在软件开发中的参与程度。
需求获取课后习题
一. 填空题(共6题,30分)
1. (填空题)需求开发计划的基本任务是确定需求开发的________________,给出收集需求活动的具体__________和_________。
-
正确答案:
(1) 实施步骤
(2) 安排
(3) 进度
2. (填空题)需求获取得到的信息和需求开发应该建立的软件系统解决方案之间有着很大的差距。________________就是用来解决这个差距的需求工程活动。
-
正确答案:
(1) 需求分析
3. (填空题)______________是从人、文档或者环境当中获取需求的过程,需求工程师必须要利用各种方法和技术来"发现"需求。
-
正确答案:
(1) 需求获取
4. (填空题)确定项目目标与范围阶段的基本任务是把项目相关人员定位到一个共同的和明确的_____上,并决定软件系统的______。
-
正确答案:
(1) 方向
(2) 范围
5. (填空题)项目的目标主要包括软件开发的_______________,以及软件系统应实现的_____________。
-
正确答案:
(1) 目的和意义
(2) 目标(即目标需求)
6. (填空题)实地调查人员通常分为三步________________、__________________以及______________________进行。
-
正确答案:
(1) 向掌握"全局"的负责人调查
(2) 向部门负责人调查
(3) 向业务人员调查
二. 单选题(共6题,30分)
7. (单选题)用例之间的关系主要有( )三种。
- A. 包含、扩展和简化
- B. 合取、析取和扩展
- C. 包含、多态和继承
- D. 包含、扩展和泛化
*正确答案:*D:包含、扩展和泛化;
8. (单选题)项目前景与范围文档中,项目前景不应包括什么信息( )。
- A. 前景概述
- B. 详细的功能需求
- C. 主要特性
- D. 假设与依赖
*正确答案:*B:详细的功能需求;
9. (单选题)下列不属于需求开发的活动的是( )。
- A. 需求获取
- B. 需求管理
- C. 需求验证
- D. 需求分析
*正确答案:*B:需求管理;
10. (单选题)需求获取的成果( )。
- A. 获取笔录、录音或摄像
- B. 客户
- C. 需求规格说明文档
- D. 设计说明书
*正确答案:*A:获取笔录、录音或摄像;
11. (单选题)采用观察方法进行需求获取的原因( )。
- A. 用户多
- B. 客户变化
- C. 事件的情景性
- D. 存在默认知识
*正确答案:*C:事件的情景性;
12. (单选题)需求跟踪是( )中的一个活动。
- A. 需求获取
- B. 需求验证
- C. 需求分析
- D. 需求管理
*正确答案:*D:需求管理;
三. 判断题(共4题,20分)
13. (判断题)用例的内容只能包含有正常流程,而不能包含有异常流程。
*正确答案:*错
14. (判断题)发起或触发用例的外部用户以及其他软件系统等角色被称为参与者。
*正确答案:*对
15. (判断题)在需求不明确时,若找不到决策者,开发人员可以进行决定。
*正确答案:*错
16. (判断题)获取需求活动的展开只要保证项目范围,可以有需求遗漏。
*正确答案:*错
四. 简答题(共4题,20分)
17. (简答题) 需求获取分为哪几个阶段?
-
正确答案:
1、确定需求开发计划;2、确立项目的目标和范围;3、确定调查对象;4、实地收集需求信息;5、确定非功能需求。
18. (简答题)确定项目范围的好处是?
-
正确答案:
1、可以判断用户所提出的需求信息是否对项目合适;2、有些用户需求信息可能是建议,这些建议是项目之外的,但可能有价值,因此可以改变项目范围适应这样的需求,但要考虑对进度、资金的影响。
19. (简答题)实地收集需求信息时通常会遇到怎样一些困难?
-
正确答案:
1、能提出软件需求的用户可能觉得没有时间与开发人员进行交流和讨论;2、有时用户希望通过简单的方法与说明,或者通过简单的回答开发人员的询问后,软件开发人员就能清楚理解他们的需求,而不需要花费太多的时间进行讨论;3、用户和开发人员只考虑自己的利益;4、用户本身不能提出明确的需求;5、开发人员没有相关的业务知识。
20. (简答题)按照需求的层次,怎样进行用户分类?
-
正确答案:
1、提出目标需求的用户;2、提出业务需求和功能需求的用户;3、软件开发人员,主要是指系统分析员。
需求分析课后题
一. 单选题(共6题,42.6分)
1. (单选题)需求分析的目的是保证需求的( )
- A. 目的性和一致性
- B. 完整性和一致性
- C. 正确性和目的性
- D. 完整性和目的性
*正确答案:*B:完整性和一致性;
2. (单选题)分析的活动主要包括识别、定义和结构化,它的目的是获取某个可以转换为知识的事物的信息,这种分析活动被称为( )。
- A. 需求信息获取
- B. 建立软件系统解决方案
- C. 需求信息转化
- D. 建立需求分析模型
*正确答案:*D:建立需求分析模型;
3. (单选题)( )是建模最为常用的两种手段。
- A. 具体和抽象
- B. 抽象和分解
- C. 分解和细化
- D. 抽象和细化
*正确答案:*B:抽象和分解;
4. (单选题)抽象通过强调本质的特征,( )了问题的复杂性。
- A. 调整
- B. 避免
- C. 增加
- D. 减少
*正确答案:*D:减少;
5. (单选题)系统关联图描述系统与外部实体之间的(),并确定了接口的信息流和物质流。
- A. 界限与外观
- B. 边界和环境
- C. 界限和接口
- D. 输入和输出
*正确答案:*C:界限和接口;
6. (单选题)UML使用的行为模型有三种,即:( )。
- A. 交互图、状态图和顺序图
- B. 顺序图、通信图和时间图
- C. 交互图、状态图和活动图
- D. 交互概述图、通信图和时间图
*正确答案:*C:交互图、状态图和活动图;
二. 填空题(共4题,28.6分)
7. (填空题)需求获取得到的信息和需求开发应该建立的软件系统解决方案之间有着很大的差距。______________就是用来解决这个差距的需求工程活动。
-
正确答案:
(1) 需求分析
8. (填空题)需求分析的根本任务是:建立______________并创建解决方案。
-
正确答案:
(1) 分析模型
9. (填空题)建立__________________主要是根据需求获取阶段确定的系统范围,用图形表示系统与外部实体间的关联。
-
正确答案:
(1) 系统关联图
10. (填空题)分析需求可行性的基本任务是在允许的___________________以及系统的范围内,分析每项需求得以实施的________。
-
正确答案:
(1) 成本和性能要求
(2) 可能性
三. 名词解释(共2题,14.4分)
11. (名词解释)需求分析:
-
正确答案:
需求分析是利用建模与分析技术对获取笔录的内容进行明确、整理、汇总,建立一个综合考虑问题域特性和需求的系统模型,然后根据系统模型将用户需求转化为系统需求的需求工程活动。
12. (名词解释)范围(scope):
-
正确答案:
范围指出当前项目是要解决产品长远规划中的哪一部分,范围声明它为项目划定了需求的界线。
四. 简答题(共2题,14.4分)
13. (简答题)请说明为何要确定需求的优先级。
-
正确答案:
在理想的情况下,开发者应该让最终的软件系统完美地满足用户提出来的所有需求。但是这种理想的情况并不总是会在现实中发生,甚至是很少在现实中发生。作为一项工程,软件开发总是在一定的环境限制下进行的,成本效益比是它成功的一个基本衡量标准。因此,在工程环境下,需求与需求之间并不是同等重要的,一些需求应该优于另一些需求得到更多 在实践中,确定优先级的活动尤为重要的情况有:①一个项目的资源(时间、人力、成本等)有限,无法满足用户的所有需求。此时项目管理者就需要确定一种最佳方案,在既定的成本下取得最大的效益。需求优先级就是项目管理者进行此项工作的重要基础。②项目采用了分阶段的开发方式。为了最大化地体现项目的成本效益,项目应该在第一阶段就交付用户最重要和最紧急的需求,并将用户最不重要和最不紧急的需求放在开发的最后一个阶段。这就需要通过确定需求优先级的方式来划分需求的重要性和紧急性等级。③在项目的开始阶段,并不能明确所有的用户需求,或者无法保证会最终满足所有的用户需求。这个情况是实践中最为常见的情况,迭代式的开发基本都属于这种情况。对这种情况,要区分用户需求的优先级,优先迭代级别高的需求,保证项目最终最大程度地满足了用户的需求。
14. (简答题)需求分析的具体工作包括:
-
正确答案:
1、建立系统关联图;2、分析需求的可行性;3、构建用户接口原型;4、确定需求的优先级;5、需求建模;6、建立数据字典。
结构化分析方法课后练习
一. 单选题(共4题,57.1分)
1. (单选题)数据建模技术能够弥补过程建模在( )方面的缺陷,它描述数据的定义、结构和关系等特性。
- A. 需求分析
- B. 需求转换
- C. 数据说明
- D. 数据分析
*我的答案:*C:数据说明;*正确答案:*C:数据说明;
2. (单选题)( )是结构化分析方法的核心技术,它表明系统的输入、处理、存储和输出,以及它们如何在一起协调工作。
- A. 数据流图DFD
- B. 实体联系图ERD
- C. 状态转换图
- D. 上下文图
*正确答案:*A:数据流图DFD;
3. (单选题)抽象通过强调本质的特征,( )了问题的复杂性。
- A. 调整
- B. 避免
- C. 增加
- D. 减少
*正确答案:*D:减少;
4. (单选题)DFD的基本符号不包括下列哪种( )
- A. 数据字典
- B. 加工
- C. 外部实体
- D. 数据存储文件
*正确答案:*A:数据字典;
二. 简答题(共2题,28.6分)
5. (简答题)简述使用 DFD描述系统过程模型是必须遵守哪些规则。
-
正确答案:
使用 DFD描述系统过程模型是必须遵守一些规则,这些规则可以保证过程模型的正确性。这些规则有:①过程是对数据的处理,必须有输入,也必须有输出,而且输入数据集和输出数据集应该存在差异。如果过程在没有输入的情况下产生了输出,称之为"奇迹",即输出数据在没有任何可见来源的情况下就奇迹般产生了。如果过程接收了数据输入却没有产生输出,称之为"黑洞"。它浪费了输入的数据资源,却没有做出应有的贡献。过程是对数据的处理,这种处理是要产生附加价值的,即进行了数据的加工和变换,而不是简单的数据转移。②数据流是必须和过程产生关联的,它要么是过程的数据输入,要么是过程的数据输出。③DFD当中所有的对象都应该有一个可以唯一标识自己的名称。过程使用动词,外部实体、数据流和数据存储使用名词。
6. (简答题)请说明 DFD层次结构的建立的主要步骤。
-
正确答案:
DFD层次结构的建立的主要步骤是:①创建上下文图。②发现并建立 DFD片断。③根据 DFD片断组合产生 0层图。④对 0层图的过程进行功能分解,产生 N层图。
三. 其它(共1题,14.3分)
- (其它)请按下列描述,画出"食物订货系统"的过程模型图(DFD)。 食物订货系统主要和 3种外部的实体:顾客、管理者和厨房存在交互行为。首先,食物订货系统需要接收顾客的食物订单,并在接收后向顾客呈送一个收条,然后将订单转交系统内部的功能处理。其次,食物订货系统要能够将已经接收的食物订单及时的转交给厨房,这样厨房才能够根据订货的情况进行生产。最后,食物订货系统要能够基于一段时间的事务积累,为管理者提供管理报表,反映组织的生产状况。 食物订货系统的内部功能主要有 4个。第一个功能是接收顾客的食物订单,向顾客呈送收条,并将订单及时转交厨房,同时启动对订单的后续处理(第二个功能和第三个功能)。第二个功能是处理顾客食物订单,根据订单生成并记录食物的销售事务。第三个功能也是处理顾客食物订单,但其目的是根据订单更新库存信息,以保证生成的原材料供应。第四个功能是根据一段时间内的食物销售情况和库存管理情况,生成管理报表,向管理者反映组织的生产状况。 在食物订货系统中,食物销售记录和库存记录是为了完成系统的功能(产生管理报表),组织希望储存的数据。
-
正确答案:
参考答案:
需求分析技术
一、选择题(每题2分,共10分)
-
设定需求优先级的主要目的是什么?
A. 帮助开发团队更好地理解需求
B. 确定首发版中必须包括的需求与可以延后的需求
C. 增加客户的参与度
D. 提高开发团队的工作效率
-
在设定需求优先级时,以下哪种方法是基于价值、费用和风险的优先级设定方法?
A. 三类优先级划分法
B. 质量功能开发(QFD)
C. 完全质量管理(TQM)
D. B和C都是
-
风险危害值的计算方式是什么?
A. 风险发生的可能性+潜在损失的规模
B. 风险发生的可能性×潜在损失的规模
C. 风险发生的可能性-潜在损失的规模
D. 风险发生的可能性÷潜在损失的规模
-
需求优先级计算公式中,以下哪项表述是正确的?
A. 优先级 = 总价值 / (相对费用 + 相对风险)
B. 优先级 = 总价值 × (相对费用 + 相对风险)
C. 优先级 = 总价值 × (相对费用 × 相对风险)
D. 优先级 = 相对费用 / 总价值
-
以下哪项不属于需求获取阶段的风险?
A. 产品视图与范围不清
B. 需求优先级划分不当
C. 客户对产品需求意见不一致
D. 未明确说明的隐含需求
-
B(确定首发版中必须包括的需求与可以延后的需求)
-
D(B和C都是)
-
B(风险发生的可能性×潜在损失的规模)
-
A(优先级 = 总价值 / (相对费用 + 相对风险))
-
B(需求优先级划分不当,属于需求分析阶段的风险)
二、填空题(每题2分,共10分)
-
设定需求优先级的一般方法是将需求分成________类。
-
质量功能开发(QFD)和完全质量管理(TQM)是两种用于________的方法。
-
风险管理就是使用某些工具或步骤把项目风险限制在一个________范围内。
-
需求开发工作应占全部工作量的约________%。
-
在升级或重做的项目中,开发人员不得不通过现有产品的________来获取需求。
-
三
-
设定需求优先级
-
可接受的
-
15
-
逆向工程(reverse engineering)
三、判断题(每题2分,共10分)
-
设定需求优先级是开发者的责任。( )
-
风险无处不在,因此项目管理者应该具有风险意识并采取预防措施。( )
-
编写风险文档和制定风险管理计划是同一回事。( )
-
需求规格说明中,应说明"做什么"而不是"怎么做"。( )
-
用户积极合作参与可以显著减少需求变更的发生。( )
-
×(设定需求优先级是客户的责任之一)
-
√
-
×(编写风险文档和制定风险管理计划是两个不同的活动)
-
√
-
√
四、简答题(每题10分,共30分)
-
简述设定需求优先级的步骤。
-
解释风险条目跟踪模板中各要素的含义及作用。
-
列举并简要说明需求获取阶段可能面临的风险。
-
设定需求优先级的步骤:
-
列出要设定优先级的所有需求、特性或使用实例
-
估计每个特性提供给客户或业务的相关利益-价值(1-9分)
-
估计如果没有实现该特性将带来的损失(1-9分)
-
计算总价值(相对利润和相对损失的总和)
-
估计实现每个特性的相对费用(1-9分)
-
估计与每个特性相关的技术风险程度(1-9分)
-
计算每个特性的优先级(优先级=总价值/(相对费用+相对风险))
-
按优先级降序排列特性列表
-
-
风险条目跟踪模板要素含义及作用:
-
序列号:为风险提供唯一标识
-
确定日期:记录风险被识别出的日期
-
撤消日期:记录风险被解决或撤销的日期
-
描述:以"条件-结果"的形式描述风险
-
可能性:表示风险转变为问题的概率
-
影响:描述如果风险变成事实将造成的损失
-
危害值:可能性×影响,用于评估风险的严重程度
-
降低风险计划:控制、避免或最小化风险的方法
-
负责人:解决风险的责任承担者
-
截止日期:完成降低风险措施的时间限制
-
-
需求获取阶段可能面临的风险:
-
产品视图与范围不清:没有对产品功能达成清晰共识
-
需求开发时间不足:因项目紧张而压缩需求开发时间
-
需求规格说明不完整或不正确:导致开发方向错误
-
革新产品的需求获取困难:缺乏市场反馈信息
-
非功能需求不明确:过于关注功能性需求而忽略非功能性需求
-
客户对需求意见不一致:不同客户有不同期望
-
未明确说明的隐含需求:客户有未表达的期望
-
将已有产品作为需求基线:通过逆向工程获取需求的不足
-
用户给出期望的解决方案:掩盖了实际需求
-
五、论述题(每题20分,共40分)
-
结合实际项目经验,论述如何有效地进行需求变更管理以降低项目风险。
-
分析需求优先级设定与风险管理之间的关系,并探讨如何将两者结合以提高软件项目的成功率。
-
需求变更管理与项目风险降低:
需求变更是软件项目中不可避免的现象,有效的变更管理对降低项目风险至关重要。首先,应建立正式的变更控制流程,包括变更请求记录、影响分析、评审、批准和实施追踪等环节。其次,将项目视图与范围文档作为变更的参照基准,可以有效控制项目范围蔓延。
实践中,可采用以下策略降低需求变更带来的风险:
(1) 促进用户积极参与:研究表明,用户积极合作参与可把需求变更减少近一半。应在项目早期就让客户代表参与需求获取和验证过程。
(2) 实施早期质量控制:通过需求评审、原型验证等方式早期发现需求错误,可减少后期变更的可能性。
(3) 灵活的设计和实现:对于易变的需求,可采用多种方案实现,并在设计时注重可修改性。
(4) 建立变更管理的纪律和氛围:成立变更控制委员会,使用变更管理工具,确保变更过程的规范化。
(5) 采用增量式开发:对阶段递增式的生存期制定计划,在早期版本中实现核心功能,并在后续阶段逐步增加实现需求。
- 需求优先级设定与风险管理的关系:
需求优先级设定与风险管理是软件项目管理中密切相关的两个方面,它们的结合可显著提高项目成功率。
首先,需求优先级设定本身就是一种风险管理策略。通过识别高价值、低风险的需求优先实现,可以确保项目在有限资源条件下交付最有价值的功能,降低项目失败的风险。当项目环境发生变化或者资源受限时,可以基于优先级决定哪些需求可以延后或删除,从而保证项目的关键目标能够实现。
其次,风险管理可以为需求优先级设定提供重要参考。在评估需求优先级时,除了考虑业务价值外,还需考虑实现风险。通过风险分析,可以识别出哪些需求实现难度大、技术风险高,这些信息直接影响需求的优先级计算。例如,在优先级计算公式中,风险是与费用一起作为分母项存在的,风险越高,优先级越低。
两者结合的有效策略包括:
(1) 使用基于价值、费用和风险的优先级设定方法,如QFD或TQM,确保对需求的全面评估。
(2) 建立需求与风险的关联矩阵,识别哪些需求可能带来高风险,并制定相应的风险缓解计划。
(3) 采用增量式开发方法,将高优先级、低风险的需求安排在早期迭代中实现,高风险需求则安排在后期迭代,以便有更多时间进行风险评估和缓解。
(4) 定期回顾和调整需求优先级,响应新发现的风险和项目环境变化。
(5) 与客户密切合作,确保优先级设定和风险评估反映业务实际情况。
需求验证课后练习题
一. 填空题(共6题,37.2分)
1. (填空题)需求验证严格地说就是检验软件( )。
-
正确答案:
(1) 需求规格说明
2. (填空题)需求验证非常重要,其能( )需求规格说明书存在的问题,并避免在软件系统设计和实现时出现返工。
-
正确答案:
(1) 发现和修复
3. (填空题)需求验证要求各方人员从不同的技术角度对需求规格说明文档做出( )评价。
-
正确答案:
(1) 综合性
4. (填空题)需求评审分为( ),正式评审两类。
-
正确答案:
(1)非正式评审
5. (填空题)需求评审的工作就是评审( )的内容,发现其中的不确定性和二义性要求等。
-
正确答案:
(1) 需求规格说明
6. (填空题)( )是指使用图形,图像或者图片等技术,使一些不可见的对象、表达或者抽象概念变成可见的符号。
-
正确答案:
(1) 可视化
二. 简答题(共4题,25分)
7. (简答题)需求验证包含哪些活动?
-
正确答案:
1、软件需求规格证明是否正确描述了目标系统的行为和特征;2、从其它来源中(包括硬件的系统需求规格说明书)得到软件需求;3、需求是完整的和高质量的;4、所有人对需求的看法是一致的;5、需求为进一步的软件开发和测试提供了足够的基础。
8. (简答题)审查人员由哪些人员组成?
-
正确答案:
1、从事软件系统需求开发的相关人员;2、具有编写需求规格说明经验和知识的人员,以及具有评审工作经验的领域专家等;3、客户或同户代表,他们可以保证需求规格说明能正确地和完整的描述他们的需求;4、将依据需求规格说明开展工作的软件开发人员,如设计人员,测试人员,项目经理等。
9. (简答题)审查清单可以列举哪些问题?
-
正确答案:
(1) 需求是否完整? (2)需求是否一致?(3)需求是否可理解? (4)需求是否明确?(5)需求是否可实现? (6)需求是否可跟踪?(7)需求是否易于修改? (8)需求规格说明文档是否完整?
10. (简答题)需求评审面临的困难有哪些?
-
正确答案:
1、开发人员最重要的是后面的开发工作,从而导致需求评审成为"走过场" ;2、需求评审的工作量大;3、过大的评审小组。
三. 单选题(共6题,37.8分)
11. (单选题)下面( )不属于需求验证内容。
- A. 一致性
- B. 完整性
- C. 验证性
- D. 现实性
*正确答案:*C:验证性;
12. (单选题)目前验证需求的方法除( )外,主要靠人工技术审查和验证软件需求规格说明。
- A. 结构化方法
- B. 形式化方法
- C. 面向对象方法
- D. 自然语言方法
*正确答案:*B:形式化方法;
13. (单选题)需求评审就是( )评审,是由非软件开发人员对软件系统的进行检查以发现该系统所存在的问题。
- A. 文档
- B. 技术
- C. 变更
- D. 验证
*正确答案:*B:技术;
14. (单选题)为需求设计测试用例的目的是确认( )而不能确认系统。
- A. 系统
- B. 需求
- C. 软件
- D. 业务
*正确答案:*B:需求;
15. (单选题)用( )解释需求模型,有利于评审人员理解和评审需求规格说明。
- A. 形式化方法
- B. 自然语言
- C. 图形
- D. 可视化
*正确答案:*B:自然语言;
16. (单选题)软件需求检测和验证理论、技术的发展,是将( )与形式化需求验证方法相结合。
- A. 可视化技术
- B. 形式化技术
- C. 图形化技术
- D. 动画技术
*正确答案:*A:可视化技术;
需求变更管理课堂练习题
一、选择题(每题2分,共20分)
- 需求变更管理的主要目标是()B
A. 完全阻止需求变更
B. 控制和管理需求变更
C. 随意接受所有变更请求
D. 减少项目沟通
- 需求变更请求的初步审核主要关注()B
A. 变更的技术实现细节
B. 变更的合理性和必要性
C. 变更的具体成本
D. 变更的实施人员
- 需求跟踪的主要目的是()B
A. 限制需求变更
B. 建立需求与系统元素间的关联关系
C. 降低项目成本
D. 减少项目文档
- 变更控制过程中,风险评估的主要内容包括()B
A. 仅评估财务风险
B. 评估对项目进度、成本和质量的影响
C. 只关注技术风险
D. 忽略所有潜在风险
- 需求变更的最终审批通常由()B
A. 项目一线开发人员
B. 项目管理委员会
C. 单个项目经理
D. 客户代表
- 需求变更的归档主要目的是()B
A. 增加文档工作量
B. 为未来参考和追溯提供依据
C. 延长项目周期
D. 限制团队沟通
- 变更请求的生命周期中,以下哪个阶段最关键()B
A. 初步提交
B. 详细评估
C. 实施验证
D. 归档
- 需求跟踪的类型不包括()C
A. 需求-源可跟踪性
B. 需求-设计可跟踪性
C. 需求-营销可跟踪性
D. 需求-用户界面可跟踪性
- 变更控制的核心原则是()B
A. 随意修改基准需求
B. 控制对基准需求规格说明的变动
C. 完全不允许变更
D. 仅听取开发人员意见
- 需求变更的影响分析应考虑()C
A. 仅技术影响
B. 仅成本影响
C. 多方面影响,如进度、成本、质量、范围等
D. 忽略所有影响
二、填空题(每题2分,共20分)
-
需求变更管理的核心是______和______需求变更。
-
需求变更请求的生命周期包括提交、、、实施和______等阶段。
-
进行需求变更控制的关键在于建立明确的______和______机制。
-
需求跟踪的目的是建立______和______之间的关联关系。
-
变更请求的状态可能包括:、、______、______和______等。
-
需求管理的最佳实践包括建立______的变更控制流程和______的文档管理。
-
变更影响分析应评估对______、______和______的潜在影响。
-
需求变更控制的重点是______对基准需求规格说明的变动。
-
项目团队应对______和______的变更保持警惕和谨慎。
-
需求变更管理的核心原则是______和______。
-
控制、管理
-
审核、评估、验证
-
流程、控制
-
需求、系统元素
-
提交、评估、接受、实施、验证
-
明确、版本化
-
进度、成本、质量
-
控制
-
范围、复杂性
-
透明、沟通
三、判断题(每题2分,共20分)
-
需求变更管理的目标是完全阻止任何需求变更。()F
-
每个需求变更请求都应该经过详细的影响分析。()T
-
项目经理可以随意批准所有变更请求。()F
-
需求跟踪有助于理解需求的来源和依赖关系。()T
-
变更控制过程可以完全避免项目风险。()F
-
需求变更管理应该建立在透明和沟通的基础上。()T
-
所有的需求变更都应该无条件接受。()F
-
需求变更的归档对项目管理很重要。()T
-
变更请求的审批仅需要考虑技术可行性。()F
-
有效的需求管理能够提高项目的可预测性和成功率。()T
四、简答题(每题5分,共20分)
- 解释需求变更管理的重要性,并列举其主要任务。
重要性:
- 控制项目范围
- 管理项目风险
- 保持需求一致性
主要任务:变更控制、需求跟踪、影响分析、文档管理
- 描述需求变更请求的典型生命周期,并说明每个阶段的关键活动。
生命周期:
- 变更请求提交
- 初步审核
- 详细评估
- 风险成本分析
关键活动:
- 审批决策
- 实施
- 验证
- 归档
- 论述需求跟踪的意义及其主要类型。
需求跟踪意义:
- 建立需求间关联
- 追踪需求来源
- 理解需求依赖
主要类型:源可跟踪性、理由可跟踪性、需求可跟踪性等
- 阐述需求变更管理中风险评估的作用和主要内容。
风险评估:
- 分析变更对项目的影响
- 评估技术可行性
- 评估成本和进度影响
- 识别潜在风险
五、论述题(每题10分,共20分)
- 详细分析需求变更管理对项目成功的影响,并提出有效的变更控制策略。
需求变更管理影响:
- 影响项目范围和目标
- 控制项目风险
策略:
* 建立清晰流程
* 定期评估
* 灵活但受控
- 针对需求变更管理,讨论如何平衡项目的灵活性和稳定性,并举例说明具体的管理方法。
平衡灵活性和稳定性:
- 建立变更评估机制
- 设置变更门槛
- 保持沟通透明
- 灵活调整但有原则
需求分析技术课程引导问题回答
考核点1:需求优先级设定(页面2-9)
引导问题1:为什么在软件开发中需要设定需求优先级?
根据PPT内容,设定需求优先级的原因如下:
-
开发组不能同时交付一个包罗万象且具有高质量的产品,需要区分首发版必须包括的需求与可放入后续版本的需求
-
在资源有限的情况下,必须理解所要求特性、用例和功能需求的相对优先级
-
有助于项目经理解决冲突、安排阶段性交付,并做出必要的取舍
-
当客户期望高、开发时间短且资源有限时,必须尽早确定最重要的功能
-
建立每个功能的相对重要性有助于规划软件构造,以最少费用提供产品的最大功能
-
在时间盒图或渐增式开发中,设定优先级特别重要
-
帮助项目经理在接受新的高优先级需求时,有依据地删除低优先级需求或将其推迟到下一版本
引导问题2:在需求优先级设定过程中,客户和开发者应该扮演什么角色?
客户角色:
-
负责指明哪些需求必须包括在首发版中,哪些需求可以延期实现
-
设定需求优先级是客户的责任之一
-
往往让可以给他们带来最大利益的需求享有最高优先级
-
可能在了解开发者指出的费用、难度、技术风险等因素后,调整优先级观点
开发者角色:
-
提供关于实现需求的费用、难度、技术风险等方面的信息
-
可能认为需要在早期阶段先实现一些优先级较低的功能,因为它们会影响系统的体系结构
-
评估各需求的技术可行性和对系统架构的影响
双方合作:
-
设定优先级意味着权衡每个需求的业务利益和费用,以及软件结构基础和产品未来评价
-
客户和开发者代表应一起讨论需求优先级设定结果,达成共识
引导问题3:设定需求优先级的三层规模分类法是如何工作的?
三层规模分类法是将需求分为三个优先级类别:
- 高优先级(必须有):
-
对于产品成功至关重要的功能
-
如果缺少这些功能,产品将无法满足客户的核心需求
-
在首发版中必须实现
- 中优先级(应该有):
-
对产品有重要价值但不是绝对必须的功能
-
这些功能可以提高产品的竞争力和用户体验
-
在资源允许的情况下应当实现
- 低优先级(可以有):
-
如果有时间和资源才实现的功能
-
这些是"锦上添花"的功能,对产品的基本功能影响不大
-
可以延迟到后续版本中实现
这种三层分类是一种简单实用的方法,可以快速对需求进行分类,帮助团队集中在最重要的功能上。PPT中提到,这是设定优先级的一般方法。
考核点2:质量功能展开(QFD)和完全质量管理(TQM)(页面7-9)
引导问题1:质量功能展开(QFD)如何帮助确定产品特性的优先级?
根据PPT内容,质量功能展开(QFD)帮助确定产品特性优先级的方式如下:
-
QFD是为产品提供用户价值与性能相联系的一种综合方法
-
它用于确定产品开发中各个特性的优先级
-
QFD首先识别核心特性,确定哪些特性对于产品交付是必不可少的,这些是最高优先级的特性
-
这些核心特性通常是产品成功所必需的关键功能或性能指标,不适用于优先级排序模型
-
一旦核心特性被识别和固定,其余的可变动特性(非必需但可能增加产品价值的特性)就可以使用优先级设定模型来排序
-
QFD通过评估每个特性的市场需求、成本、技术可行性等因素,确定相对优先级,并据此安排开发计划
引导问题2:完全质量管理(TQM)与需求优先级设定有什么关系?
根据PPT内容,TQM与需求优先级设定的关系如下:
-
TQM是以多个重大项目成功的标准来评价每个需求,并计算出一个分值用于编排需求的优先级
-
TQM的核心之一是以客户为中心,确保客户需求和期望得到满足
-
在TQM框架中,需求优先级的管理是关键组成部分,帮助组织确定哪些需求对客户满意度最为关键
TQM中的需求优先级管理包括:
- 需求识别:从客户角度出发,识别客户需求和期望,包括直接的产品/服务性能需求和间接需求
- 需求分类:将需求分为不同类别(必需、重要、一般),根据对客户满意度的影响程度排序
- 需求评估:不断评估客户需求变化和市场动态,确保持续改进活动与客户需求保持一致
- 优先级调整:随着市场和技术变化,灵活调整需求优先级,以响应这些变化
引导问题3:为什么尽管QFD和TQM方法精确,但很少有公司愿意采用?
PPT中明确指出:"QFD、TQM尽管精确,却很少有公司愿意用它。"虽然PPT没有详细解释原因,但从内容可以推断以下几点:
- 复杂性:这些方法涉及复杂的评估过程和数学计算,需要投入大量时间和精力
- 资源密集:实施这些方法需要组织投入大量资源,包括人力、时间和培训成本
- 实施难度:这些方法要求组织有较高的过程成熟度和严格的管理流程
- 实用性考虑:在快速变化的市场环境中,公司可能更倾向于使用简单、灵活的方法(如三层规模分类法)
- 投入产出比:相比于简单方法,这些精确方法的额外收益可能不足以证明其额外成本的合理性
考核点3:优先级设定工具的使用步骤(页面10-12)
引导问题1:在使用优先级设定工具时,如何评估需求的价值和成本?
根据PPT内容,评估需求价值和成本的方法如下:
评估价值:
- 估计每个特性提供给客户或业务的相关利益(价值),使用1~9划分等级,1代表可忽略的利益,9代表最大的价值
- 估计如果没有把应该实现的特性包括到产品中,将会给客户或业务带来的损失,使用1~9划分等级,1代表基本无损失,9代表严重损失
- 总价值是相对利润和相对损失的总和
评估成本:
- 估计实现每个特性的相对费用,使用1(低)~9(高)划分等级
- 根据需求的复杂度,所需求的用户界面的实现情况、重用当前代码的潜在能力、所需要的测试量和文档等等,开发者可以估算出费用
- 算出费用百分比:将每个需求的费用除以所有需求费用的总和
这种评估方法综合考虑了需求对客户和业务的价值,以及实现需求所需的成本,为优先级排序提供了量化的依据。
引导问题2:需求优先级的计算公式中各个参数代表什么含义?
根据PPT内容,需求优先级计算公式中的参数含义如下:
优先级 = 价值% / (成本% × 风险%)
其中:
-
价值%:表示该需求的总价值(相对利润+相对损失)占所有需求总价值的百分比,反映了需求的相对重要性
-
成本%:表示实现该需求的费用占所有需求实现费用总和的百分比,反映了需求的相对实现成本
-
风险%:表示与需求相关的技术或其他风险程度占所有需求风险总和的百分比,反映了实现该需求的相对风险
这个公式的核心思想是:优先级最高的需求是那些以最小的费用比例和风险比例产生出最大产品价值比例的需求。价值越高,优先级越高;成本和风险越低,优先级越高。
引导问题3:为什么说优先级设定工具的结果只能作为指导策略而非绝对依据?
根据PPT第12页的内容,优先级设定工具的结果只能作为指导策略而非绝对依据的原因是:
- 这种半定量方法从数学上讲并不严密
- 其准确程度受到对每个项目的利润、损失、费用和风险的估算能力的影响
- 这些估算通常是主观的,不同人员可能会有不同的评估结果
- 优先级计算结果需要通过客户和开发者代表的讨论来验证
- 最终目标是在评价和优先级排序结果上达成共识,而不是盲目遵循计算结果
PPT强调:"客户和开发者代表应该讨论整个平面图,从而在评价和优先级排序结果上达成共识。"这表明工具只是辅助决策的手段,最终决策仍需要人的判断和共识。
考核点4:软件需求与风险管理(页面13-16)
引导问题1:软件项目中的风险是指什么?风险管理包括哪些主要活动?
根据PPT内容,软件项目中的风险定义如下:
-
风险是指可能给项目的成功带来威胁或损失的情况
-
在项目中,可能出现差错的事情常常比可能意想不到地正常运行的事情多
-
风险无处不在,需要有风险意识
风险管理的主要活动包括:
- 风险管理:使用某些工具或步骤把项目风险限制在一个可接受的范围内
- 风险评价(assessment):检查工程项目并识别潜在风险区域的过程
- 风险分级(prioritization):通过评价每项风险的潜在危害值,优先处理最严重的风险
- 风险避免:采取措施避免风险发生
- 风险控制:采取措施减轻风险影响
- 编写项目风险文档:将风险编写成文档并妥善管理
- 制定风险管理计划:不仅列出风险,还要有针对性的管理措施
PPT强调:"防患于未然:要有预防措施",表明风险管理的核心是预防而非事后补救。
引导问题2:为什么说需求在软件项目中扮演着核心角色?
根据PPT第15页内容,需求在软件项目中扮演核心角色的原因如下:
- 需求是软件开发的基础,定义了系统应该做什么,为整个开发过程提供方向
- 需求问题会直接影响项目的成功与否,精明的项目管理者会在初期就指明与需求相关的风险并积极控制它们
- 需求与客户期望直接相关,需求的质量直接影响客户满意度
- 需求相关的风险很多,如需求的误解、不恰当的用户参与、不确定或随意变更项目范围和目标等
- 需求问题通常需要与客户或客户代表合作才能解决,体现了需求的复杂性和重要性
PPT特别指出:"项目管理者只能通过与客户或客户代表(如市场人员)合作来控制需求风险。"这进一步强调了需求的核心地位,以及在需求问题上必须重视客户合作。
引导问题3:编写项目风险文档的目的是什么?
根据PPT第14和18页内容,编写项目风险文档的目的是:
- 系统化管理风险:仅仅认识到项目面临的风险是远远不够的,需要系统地记录和管理风险
- 提高风险透明度:将风险编写成文档使项目相关人员都能了解风险情况
- 便于跟踪:文档化便于在整个项目开发过程中跟踪风险状态的变化
- 促进沟通:有利于风险承担者了解风险情况状态
- 提供决策依据:文档化的风险信息可以帮助项目管理者做出更好的决策
- 实现风险的可控性:通过文档化,使风险管理变得可操作、可量化、可跟踪
项目风险文档不仅是风险的清单,还包含了风险的详细信息、可能性、影响、降低风险计划等内容,是风险管理的重要工具。
考核点5:风险评价和管理(页面17-20)
引导问题1:风险危害值是如何计算的?它在风险管理中有什么作用?
根据PPT内容,风险危害值的计算和作用如下:
计算方法:
-
风险危害值 = 可能性 × 影响
-
其中,可能性是指风险转变为问题的可能性(通常用0-1之间的小数表示)
-
影响是指如果风险变成了事实将造成的损失(通常用1-9的数字表示)
在风险管理中的作用:
- 风险分级的基础:通过计算风险危害值,可以对不同风险进行排序,优先处理最严重的风险
- 资源分配依据:危害值高的风险应分配更多资源来管理
- 决策支持:帮助项目管理者决定哪些风险需要制定降低风险计划
- 客观评估:提供相对客观的方法来评估风险的严重程度
- 风险沟通:为团队成员和利益相关者提供一种量化的方式来讨论风险
例如,PPT中给出的示例风险条目中,风险危害值计算为:0.6(可能性)× 7(影响)= 4.2,这个数值可以用来与其他风险的危害值比较,确定处理优先级。
引导问题2:风险条目跟踪模板包含哪些关键元素?
根据PPT第18-19页内容,风险条目跟踪模板包含以下关键元素:
- 序列号:风险的顺序号,用于唯一标识风险
- 确定日期:风险被识别出的日期
- 撤消日期:撤消风险确定的日期(风险不再存在时填写)
- 描述:以"条件-结果"的形式描述风险
- 可能性:风险转变为问题的可能性(通常为0-1之间的数值)
- 影响:如果风险变成了事实将造成的损失(通常为1-9的数值)
- 危害值:可能性×影响,用于评估风险的严重程度
- 降低风险计划:一种或多种用来控制、避免、最小化及降低风险的方法
- 负责人:解决风险的责任承担者
- 截止日期:完成降低风险措施的截止日期
PPT中给出了一个具体的风险条目示例,展示了如何使用这个模板来记录和跟踪风险。
引导问题3:如何确定风险降低计划的有效性?
虽然PPT中没有直接讨论如何确定风险降低计划的有效性,但结合风险管理的一般原则和PPT内容,可以推断以下判断标准:
- 风险危害值的减少:有效的降低风险计划应能显著降低风险的危害值,即降低风险的可能性和/或影响
- 可操作性:计划应具体明确,有明确的责任人和截止日期
- 资源效率:降低风险的成本应低于风险可能造成的损失
- 可衡量性:计划的执行和效果应该可以被监控和衡量
- 持续性:计划应能持续有效,而不只是短期解决方案
以PPT提供的示例为例,风险降低计划包括具体的三个步骤:
- 在第一阶段早期就要收集易学、易用的需求
- 与产品代表一起召开JAD会议以开发需求
- 通过产品代表和用户评估,包含核心功能的用户界面
这个计划有具体的行动、明确的负责人(Helen)和截止日期(在6/16/99前完成JAD会议),这些特性使其成为可能有效的风险降低计划。
考核点6:与需求有关的风险(需求获取)(页面21-24)
引导问题1:为什么产品视图与范围的不清晰会导致项目范围的逐渐扩大?
根据PPT第21页内容,产品视图与范围不清晰导致项目范围扩大的原因如下:
- 缺乏明确界限:没有对产品功能达成清晰共识,就无法确定什么是必须的、什么是可选的
- 没有参考标准:缺乏明确的产品视图,新需求提出时就没有判断其是否超出原始范围的依据
- 利益相关者期望管理不足:不清晰的产品视图会导致不同利益相关者对产品有不同的理解和期望
- 缺乏变更控制基准:没有明确的范围文档,就无法有效控制和评估变更请求
PPT建议在项目早期就编写一份项目视图与范围文档,将业务需求涵盖在内,并将其作为新的需求及修改需求的指导。这样可以提供一个基准线,帮助控制范围蔓延。
引导问题2:在处理非功能需求时,开发团队常犯哪些错误?
根据PPT第22-23页内容,在处理非功能需求时,开发团队常犯的错误是:
- 忽视非功能需求:一般强调产品的功能性要求,非常容易忽略产品的非功能性需求
- 未明确定义非功能需求:即使意识到非功能需求的存在,也可能未充分定义和量化这些需求
- 缺乏验收标准:没有为非功能需求建立明确的可验证标准
- 在开发后期才考虑非功能需求:导致对架构和设计产生重大影响,造成大量返工
- 未与客户充分沟通非功能需求:未能了解客户对性能、可用性、可靠性等方面的真实期望
PPT建议的解决方法是:询问客户关于产品性能、使用性、完整性、可靠性等质量特性,编写非功能需求文档和验收标准,作为可接受的标准。
引导问题3:当用户给出期望的解决方案而非实际需求时,需求分析师应如何应对?
根据PPT第24页内容,当用户给出期望的解决方案而非实际需求时,需求分析师应:
- 认识到问题:理解用户推荐的解决方法往往掩盖了用户的实际需求,可能导致业务处理的低效,或者给开发人员带来压力以至做出很差的设计方案
- 挖掘真实需求:从客户叙说的解决方法中提炼出其本质核心,即用户真正想要实现的业务目标
- 关注"做什么"而非"怎么做":将用户的解决方案转化为功能需求,描述系统应该做什么,而不是如何做
- 提问"为什么":通过询问用户为什么需要某个特定解决方案,了解背后的真实需求和业务问题
- 提供替代方案:基于对真实需求的理解,可能提出更有效的替代解决方案
- 与用户合作验证:确保转换后的需求描述仍然满足用户的实际业务需求
这种方法可以帮助分析师避免被用户的解决方案所限制,更好地理解和满足用户的真实需求。
考核点7:与需求有关的风险(分析、规格说明和验证)(页面25-26)
引导问题1:为什么需求理解的不同会构成项目风险?如何减轻这种风险?
根据PPT第25页内容,需求理解不同构成项目风险的原因和减轻措施如下:
原因:
- 误解导致实现偏差:不同团队成员对需求的不同理解会导致设计和实现与客户期望不符
- 沟通问题:理解差异表明团队内部和与客户之间的沟通不畅
- 范围蔓延:不同理解可能导致范围不断扩大或变化
- 返工风险:后期发现理解错误需要大量返工,增加成本和延误进度
- 集成困难:不同组件基于不同理解开发,可能导致集成问题
减轻风险的方法:
- 评审团队应包括开发人员、测试人员和客户,确保不同角色对需求有一致理解
- 使用清晰、无歧义的术语描述需求
- 创建需求验证原型,让用户确认理解是否正确
- 建立需求追踪矩阵,确保需求正确传递到设计和实现
- 定期与客户沟通,验证理解的准确性
这些措施有助于确保团队成员对需求有一致的理解,减少误解带来的风险。
引导问题2:需求规格说明中包含设计元素有什么危害?
根据PPT第25页内容,需求规格说明中包含设计元素的危害包括:
- 限制解决方案:过早引入设计决策会限制开发团队探索更优解决方案的空间
- 混淆"做什么"和"怎么做":需求应该专注于系统应该做什么,而设计则关注如何做
- 导致实现固化:特定设计元素可能将系统绑定到特定技术或架构上,限制未来的灵活性
- 增加维护难度:当底层技术需要更新时,混合了设计的需求文档也需要更新
- 混淆责任界限:需求由客户主导,设计由开发团队主导,混合会导致责任不清
PPT建议的解决方法是:"说做什么,而不是说怎么做"。需求规格说明应该清晰地描述系统的功能和行为,而不是规定如何实现这些功能。
引导问题3:如何提高需求审查的有效性?
根据PPT第26页内容,提高需求审查有效性的方法包括:
- 组建多角色审查团队:评审团队应包括开发人员、测试人员和客户,确保不同视角都能参与审查
- 使用结构化的审查过程:采用正式的审查流程,如同行评审、检查会议等
- 使用审查清单:为不同类型的需求制定审查清单,确保覆盖常见问题
- 专注于需求质量属性:确保需求的完整性、一致性、明确性、可验证性等
- 确保及时审查:在需求定稿前进行审查,避免后期发现问题造成大量返工
- 记录并跟踪问题:系统记录审查中发现的问题,并确保这些问题得到解决
- 验证审查结果:确保审查后的需求确实满足了质量标准
有效的需求审查可以早期发现并解决需求中的问题,降低项目风险,提高开发效率和产品质量。
考核点8:需求管理中的风险(页面27-28)
引导问题1:需求变更为什么不可避免?如何减少需求变更的负面影响?
根据PPT第27页内容,需求变更不可避免的原因和减少负面影响的方法如下:
需求变更不可避免的原因(虽未在PPT中明确列出,但可推断):
- 业务环境变化:市场、法规、竞争环境等外部因素变化
- 用户理解的演进:随着项目进展,用户对系统的理解不断深入
- 技术限制的发现:在开发过程中可能发现某些需求在技术上难以实现
- 优先级变化:客户业务优先级的调整可能导致需求变更
减少需求变更负面影响的方法:
- 使用项目视图与范围文档作为变更的参照,减少项目范围的延伸
- 促进用户积极合作参与,可把需求变更减少近一半
- 采用早期发现需求错误的质量控制方法,减少以后发生变更的可能
- 针对易于变更的需求,在设计时使用多种方案实现,并更注重其可修改性
- 建立变更管理的纪律和氛围,使用变更控制委员会和工具来管理变更
- 采用阶段递增式的生存期,在早期版本中实现核心功能,并在以后阶段逐步增加需求
这些措施不是为了阻止变更,而是为了控制变更的影响,确保变更是有序和可管理的。
引导问题2:一个有效的需求变更过程应包含哪些关键要素?
根据PPT第27页内容,有效的需求变更过程应包含以下关键要素:
- 明确的变更管理流程:建立正式的变更管理机制,明确每个变更都需要经过评估和批准
- 变更控制委员会:由相关利益方组成的委员会负责评估和决定是否接受变更
- 变更请求表单:标准化的表单用于记录变更的详细信息、理由和影响
- 影响分析:对每个变更请求进行全面分析,评估其对进度、成本、质量和其他需求的影响
- 优先级评估:评估变更的紧急性和重要性,确定实施的优先顺序
- 追踪机制:使用工具记录和跟踪所有变更请求的状态
- 沟通机制:确保所有相关方了解变更及其影响
- 基线管理:维护需求基线,明确标识经过批准的变更后的需求版本
- 纪律和氛围:培养团队对变更管理过程的尊重和遵守
有效的变更过程不是为了阻止变更,而是确保变更是经过充分考虑、评估和控制的,从而减少其负面影响。
引导问题3:什么是需求跟踪能力矩阵?它如何帮助解决未实现需求的风险?
根据PPT第28页内容,需求跟踪能力矩阵是一种工具,用于跟踪需求从规格说明到设计、实现和测试的映射关系。
需求跟踪能力矩阵如何帮助解决未实现需求的风险:
- 完整性验证:矩阵可以清晰显示每个需求是否已经被设计、实现和测试,帮助识别可能被遗漏的需求
- 影响分析:当需求发生变更时,可以通过矩阵快速识别受影响的设计、代码和测试组件
- 覆盖率分析:可以评估测试用例对需求的覆盖率,确保所有需求都得到充分测试
- 责任明确:矩阵可以明确每个需求的实现责任人,减少"责任空白"导致的需求遗漏
- 进度跟踪:通过矩阵可以跟踪每个需求的实现进度,及早发现可能延迟的需求
- 沟通工具:作为团队间沟通的工具,确保所有人对需求实现状态有共同理解
通过这些机制,需求跟踪能力矩阵可以有效减少需求未实现或实现不完整的风险,提高项目交付质量。