第一章需求工程导论
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章需求工程导论
1.软件开发中碰到的需求问题的现象是什么?
答:(1)用户参与度不够。
(2)高层管理支持力度不够。
(3)没有清晰的需求说明。
(4)没有清晰的目标和前景。
(5)期望不切合实际。
(6)需求变化影响。
(7)增加了无用的额外功能。
2.在需求处理当中要注意哪些非技术性因素,为什么?
答:(1)需求处理的任务:需求处理的任务主要是发现问题并解决问题。
现实是问题的发生地,软件系统是人们应对问题的手段。
但是单纯的软件系统是不能解决问题的。
它只有和现实之间形成一种有效的互动才能解决问题。
(2)需求处理的手段:建模与分析技术是进行需求处理的主要手段,这些技术本身都是概念性的,不依赖于某些特殊的应用环境条件。
可以被广泛的应用于各种应用场景。
(3)需求处理的过程:试图单纯的通过技术的应用建立一个一致完整的需求模型是不太可能的。
因为在现实中,因涉众的不同立场而产生的利益冲突的场景非常常见。
这些冲突是根本无法通过技术手段所能解决的。
3.解释需求分析与需求工程之间的联系
答:“需求工程”就是利用工程化的手段进行需求处理,以保证需求处理的正确进行,而“需求分析”是需求处理中的核心活动,他用一些形式化或半形式化的语言进行知识的分析,但是建立需求工程还离不开需求分析。
4.解释软件工程与系统工程之间的联系,这种联系对需求工程的工作有何影响?
答:(1)系统工程通常是指计算机引入某一现实系统,并用他来改变现实系统的运作方式,达到一个理想效果的过程。
而且系统工程中除了含有处理系统的软件工程之外,还包括硬件工程和人力工程。
因此,在系统工程中,虽然应该重点关注软件工程部分的内容,但并不能完全以软件为中心来看待和处理整个系统。
(2)影响:系统需求开发的主要目的是获得整个系统的期望目标,包含功能特性和非功能特性。
因此需要判定系统的涉众,采集他们的目标与要求研究系统的环境确定系统的要求,并进行一些整体性的分析。
5.需求工程包括哪些活动?软件开发活动当中为什么要重视需求工程?
答:需求工程包括(1)需求开发(2)需求管理。
需求开发要包括(需求获取、需求分析、需求规格说明、需求验证)
重视需求工程的原因:(1)需求问题是当前软件开发面临的主要问题(2)需求分析是软件开发中的理论约束,他控制着整个软件开发的工程走向。
它是非技术人员和技术人员的工程纽带。
6.需求工程师需要具备哪些知识或技能?
答:(1)交流技能(2)观察技能(3)抽象分析与问题解决技能(4)写作技能(5)关系协调和团队工作技能。
第二章需求基础
1.IEEE是怎样定义需求的?
答:(1)用户为了解决问题或达到某些目标所需要的条件或能力;(2)系统或系统部件为了满足合同、标准、规范或其他正式文档所规定的要求而需具备的条件或能力;(3)对(1)或(2)中的一个条件或一种能力的一种文档化表述。
2.解释下列名词:问题域、解系统和共享现象,并结合他们的含义说明软件系统是如何与现实世界形成互动的?
答:问题域:问题的发生地,问题的发生范围及解决问题必须涉及的事件或事物。
解系统:软件系统通过影响问题域帮助人们解决问题被称之为解系统。
共享现象:解系统可以对问题域进行模拟的现象称为共享现象。
(2)共享现象是解系统所模拟的问题域的部分,该部分在两个系统中同时存在。
除了共享现象外,问题域还有一些没有被解系统模拟的知识,因为在现实世界非常复杂,不可能也没必要在解系统中完全重现。
除了包含共享现象的知识模型之外,解系统也有一些并非来自于现实模拟的特征,例如数据库管理系统的选择、模型的规范化、索引的建立等,这些因素并不对应与问题域知识,确是解系统必不可少的部分。
3.解释下列名词:需求、规格说明、问题域特性和约束,并结合他们的含义说明需求工程的主要任务是什么?
答:需求:用户为了解决问题或达到某些目标所需要的条件或能力;系统或系统部件为了满足合同、标准、规范或其他正式文档所规定的要求而需具备的条件或能力。
规格说明:因为解决方案以对外交互的方式定义了软件的
系统功能,所以解决方案被称为软件系统的需求规格说明。
问题域特性和约束:问题域的背景信息又被称为问题域特性而约束是不受解系统影响,却会给解系统带来极大影响的问题域特性。
需求工程的主要任务是解决问题、改善现实、满足用户期望的条件与能力。
4.需求有哪些常见的类别?功能需求和非功能需求有什么差异?
答;(1)业务需求(2)用户需求(3)系统级需求
差异:功能需求是用户对软件系统的显示要求,用户在软件系统创建之前就可以向开发者表达这种要求。
非功能需求属于隐式要求,用户在系统创建之前无法清晰的告诉开发者他们希望该系统具备什么样的功能性特征。
5.描述业务需求、用户需求和系统级需求的区别与联系?
答:区别:业务需求是针对整个业务的期望,用户需求是针对具体任务的期望,系统级需求是针对用户与系统的一次交互的期望。
联系:他们都是问题解决的期望,只不过是不同抽象层次罢了。
6.优秀的需求特性有哪些?请为每一个特性都举出一个不符合的事例
(1)完备性 eg:在收银员输入商品时,系统显示商品信息。
而不是商品价格。
(2)正确性 eg:用户的问题是A,但用户认为提供了方法B,则问题A自然可以得到解决,为此用户向需求工程师反映的便是B,而不是真实的A。
(3)可行性 eg :用户并不了解软件系统构建的相关技术知识,所以用户可能会提出一些已有软件技术无法实现的期望。
(4)必要性 eg:用户在交流中总是害怕信息有所遗漏,并因此产生不利后果,因此用户总是倾向于表达各种各样的需要,但是多种需要并没有必要。
(5)无歧义性 eg:用户可能在可能需求或者重大需求上采用,大概可行,差不多等词汇造成歧义。
(6)可验证性 eg:如果需求不可验证,无法判断完成的系统是否满足了该需求。
第三章
1.需求工程过程的工作基础(即输入)有哪些?他的工作成果(即输出)有哪些?
答:输入:系统的业务需求,系统的用户需求,用户的期望。
输出:项目前景和范围文档,用户需求文档,需求规格说明文档。
2.描述需求工程的各个活动,说明他们各自的工作基础、工作目标和工作成果。
(1)需求获取:(收集背景资料,获取问题与目标),(定义项目前景与范围),(记录获取结果)
(2)需求分析:(定义需求集合)(细化需求),(软件需求建模)
(3)需求规格说明:(获取的需求被编写文档)(系统涉众之间的交流信息),(编写文档)
(4)需求验证:(编写需求规格说明书)(执行验证)(问题修正)
(5)需求管理:(建立维护需求基线集)(保证需求作用持续稳定
和有效发挥)(随时进行变更控制)
3请解释需求工程细节知识的实践性。
答:在任何一个知识领域,人们都需要进行相当的探索之后才能建立学科化和系统化的知识体系。
因此,如果在工程领域如果能建立比较完整的知识体系,那么就可以在知识体系的指导下进行规律化和系统化的生产。
相反,在完全没有形成知识认知的全新工程领域中;就只能纯粹依赖生产者的个人才智来进行工作。
也有介于上述两种情况的工程领域,他们还没有形成完整的认知体系,所以无法实现大工业化的生产方式;同时这些工程领域又经过了相当的时间探索,从生产者大量的个人行为中总结出一些有效的工作方式和行为方法。
这些能更好更快的帮助人们进行试践,所以被称为实践方法,又被称为原则。
4.需求工程对其他软件开发阶段有哪些帮助?
需求的好坏对后续软件开发有着极其重要的影响。
需求方法与软件开发方法的适配性更会影响项目的成败。
第四章
1.需求获取为什么是困难的?
答:(1)用户和开发人员掌握的立场不同,可能造成用户和开发人员之间知识理解的困难,默认知识现象严重。
(2)普通用户缺乏概括性、综合性的表述能力。
(3)用户存在认知困难。
(4)用户越俎代庖提出的不是需求而是解决方案。
(5)缺乏用户参与。
2.在各种关于软件的调研中,无一例外地发现“缺乏用户参与”是导致软件失败的最大原因,请说明有哪些原因会使得用户参与不足?应该怎样解决?
(1)用户数量太多,选择困难。
应该有目的选择真正有需求的用户。
(2)用户认识不足,不愿参与:应该要求用户在需求开发上积极的配合。
(3)用户情绪抵制,消极参与。
(4)没有明确的用户
3.需求获取的内容是什么?
答:(1)需求(2)问题域描述(3)环境与约束。
4.需求获取有哪些可能的来源?
答:(1)涉众(2)硬数据(3)相关产品(4)重要文档(5)相关技术标准和法规。
5.需求获取的常见方法有哪些?
(1)传统方法(2)集体获取方法(3)原型(4)模型驱动发(5)认知方法(6)基于上下文的方法。
第五章
2.问题分析
P1:事物处理系统部分自动,部分手动,效率不高;
P2:无法追踪客户账单和收据,使财务业绩与发展不同步;
P3:难以确定为什么产品成本高,导致盈利困难;
P4:顾客信息繁杂,导致客源减少;
BR1:在系统使用3个月后,工作人员效率明显提高;
BR2:在系统使用4个月后,店铺运营成本降低15%;
BR3:在系统使用6个月后,顾客增加10%,销售额度提升20%;
问题解决方案
SF1:收银人员记录顾客的消费记录。
SF2:收银人员负责将回头客的优惠进行落实。
SF3:销售人员负责制定相应的针对普通用户的销售策略,增加客源。
SF4:经理负责制定年度报表,总结财政收入与盈利情况。