软件需求工程1(1~4章)
软件需求工程习题2(5~7章)
需求工程中的面谈和原型(8、9章)
需求获取方法之观察与文档审查(10章)
需求工程规格说明、需求验证、需求管理(11~13章)
需求因素:
•用户参与(用户输入)
• 高层管理支持
• 清晰的需求说明
• 切合实际的期望
• 清晰的目标和前景
• 需求变化
• 额外的无用功能
需求问题的具体原因分析:
软件生产中产生需求问题的最大原因在于对应用软件的模拟特性理解不透彻或应用不坚决,它会导致软件开发者产生轻视需求的态度问题。另外,还有一些技术原因也会导致需求问题的产生。
1.非技术性和社会性因素重视不足
2.传统需求分析方法的缺陷
3.软件规模的日益扩大
4.需求问题的高代价性
什么是需求工程?
定义1:简单来说,需求工程是所有需求处理活动的总和,它收集信息、分析问题、整合观点、记
录需求并验证其正确性,最终反应软件被应用后与其环境互动形成的期望效应。
定义2:从细节来说,需求工程是软件工程的一个分支,它关注于软件系统所应予实现的现实世界目标、软件系统的功能和软件系统应当遵守的约束,同时它也关注以上因素和准确的软件行为规格说明之间的联系,关注以上因素与其随时间或跨产品族而演化之后的相关因素之间的联系。
需求工程的复杂性:
1.处理范围广泛
2.涉及诸多参与方
3.处理内容多样
4.处理活动互相交织
5.处理结果要求苛刻
需求工程师是涉众和开发者之间的桥梁,要重视“软技能”,需要创新,需求开发是团队行为
1.软件生产中产生需求问题的最大原因在于对应用软件的(模拟性)理解不透彻或应用不坚决。
2.需求分析的目的是保证需求的(完整性和一致性)。
3.系统需求开发的结果最终会写入(系统需求规格说明)。
4.传统的需求分析方法都是从设计领域转入分析领域的。
5.应用型软件分析阶段的主要目的是发现人们利用软件的原因(目的),找出需要软件解决的问题,理解应用环境中的领域知识,保证功能的 模拟性 。
6.需求工程是所有需求处理活动的总和,它包括需求开发和需求管理两个部分。
7.软件需求开发用来确定系统需求中应该由软件满足的部分,将其映射为软件行为,产生软件需求规格说明。
8.【判断题】需求验证是需求工程中最后一个活动。×
9.【判断题】软件系统能够与问题域进行交互和相互影响的原因在于,软件系统中的某些部分对问题域中的某些部分具有模拟特性。√
10.【简答题】简述需求工程的主要任务。
1.需求工程必须说明软件系统将被应用的环境及其目标,同时说明软件需求“做什么”和“为什么”需要做;
2.需求工程必须将目标、功能和约束反应到软件系统中,映射为可行的软件行为,并对软件行为进行准确的规格说明,完成需求规格说明书;
3.还需要妥善处理目标、功能和约束随着时间的演化情况,进行综合考虑和处理。
11.【名词解释】什么是需求工程?
需求工程是所有需求处理活动的总和,它收集信息、分析问题、整合观点、记录需求并验证其正确性,最终反应软件被应用后与其环境互动形成的期望效应。
1.完备性
2.正确性
3.可行性
4.必要性
5.无歧义
6.可验证
1.现实世界中的(实体和状态)构成了问题解决的基本范围,称为该问题的问题域。
2.功能需求通常分为三个层次,即业务需求、用户需求和(系统需求)。
3.优秀的需求应该具备 7 个特性,即完备性、正确性、可行性、必要性、无歧义和 精确性、可验证。
4.【判断题】规格说明是问题域为满足用户需求而提供的解决方案,规定了解系统的行为特征。×
5.【判断题】业务需求具有明显的目的性和较高的抽象性,经过明确和细化的处理,可以 直接转化为系统需求。×
6.【简答题】产生不必要需求的原因主要是:
没有满足需求的必要性,主要原因在于没有真正理解了用户的需求,需求分析工作做的不到位,没有切实解决问题。
7.【名词解释】需求: IEEE 对需求的定义为:
用户为解决问题或达到某种目标所需要的条件或能力;
系统或系统内部为了满足合同、标准、规范和其他正式文档所规定的要求所需要的条件或能力;
对1或2中的一个条件或一种能力的一种文档化表述。
1.需求分析的目的是保证需求的(完整性和一致性)。
2.系统需求开发的结果最终会写入( 系统需求规格说明)。
3.比较容易发现的涉众称为初始涉众,又称为( 涉众基线),通常包括客户、管理者和相关的投资者。
4.( 统计报表)属于定量硬数据。
5.需求分析活动的一个重要任务是进行( 需求细化),明确用户需求的隐含信息,展开为明确的对软件系统的行为期望,即系统需求。
6.项目的前景和范围文档、用户需求文档都被视为属于( 用户文档),重点都是用户的现实世界。
7.系统需求规格说明文档、软件需求规格说明文档、硬件需求规格说明文档、接口需求规格说明文档和人机交互文档一起被用于系统开发的目的,都被认为是(开发文档)。
8.( 销售商)不是需求规格说明文档的读者。
9.需求工程过程实践方法是需求工程(工作方式与行为方法)。
10.需求开发过程包括需求获取、需求分析、需求规格说明及(需求验证)。
11.传统的需求分析方法都是从设计领域转入分析领域的。
12.需求工程是所有需求处理活动的总和,它收集信息、分析问题、整合观点、记录需 求并验证其正确性,终反映软件被应用后与其环境互动形成的期望效应。
13.软件需求开发用来确定系统需求中应该由软件满足的部分,将其映射为软件行为,产生软件需求规格说明。
14.优秀的需求应该具备 7 个特性,即完整性、正确性、精确性、可行性、必要性、无歧义和可验证。
15.所有对软件系统的开发和应用具有发言权和决定权的人统称为涉众。
16.在需求工程中,主要产生三类重要的文档:项目前景和范围文档、用户需求文档以及需求规格说明。
17.需求获取得到的信息和需求开发应该建立的软件系统解决方案之间有着很大的差距。需求分析就是用来解决这个差距的需求工程活动。
18.需求分析的根本任务是:建立分析模型并创建解决方案。
19.需求协商活动既包括对目标冲突的处理,也包括对需求细节冲突的处理。
20.【判断题】需求验证是需求工程中最后一个活动。×
21.【判断题】软件系统能够与问题域进行交互和相互影响的原因在于,软件系统中的某些部分对问题域中的某些部分具有模拟特性。√
22.【判断题】规格说明是问题域为满足用户需求而提供的解决方案,规定了解系统的行为特征。×
23.【判断题】业务需求具有明显的目的性和较高的抽象性,经过明确和细化的处理,可以直接转化为系统需求。×
24.【判断题】需求开发的一些特性决定了需求开发过程只能是一个简单的线性增量过程。×
25.【判断题】对于需求不确定性比较小的项目,用户参与可以取得比较好的效果,但对于需求不确定性比较大的项目,用户参与反而可能带来阻碍作用。×
26.【判断题】如果选择的开发方法是实验式或者探索式开发方法,应该尽量花费最小的代价,争取最快的速度,忽略或简化不重要的功能处理。×
27.【判断题】由于文档是来自于当前计算机或手工系统的产物,因此它是正确的,也正是客户所需要的。×
28.【判断题】对系统的现状和背景进行分析往往能够发现重要的目标,得到一些明确的问题和缺陷,它们的反面就是系统需要实现的目标。√
29.【判断题】软件需求规格说明文档是对部分系统功能分配给软件部分的详细描述。×
30.【名词解释】基线
基线是软件工程活动从一个环节转入另外一个环节时对阶段产品或组件的标识。因为软件规模的膨胀和分工的细化,软件开发过程变得越来越复杂,每个阶段可能由不同类型的角色和人员来完成,因此有必要清晰标识上一阶段完成的成果和下阶段开始工作的基础。这种标识活动就是建立基线。
31.【名词解释】需求基线
需求基线是被明确和固定的需求集合,是项目团队的需要在某一特定产品版本中实现的特征和需求集合。
1.应用民族志方法,分析用户的环境和行为,挖掘用户的潜在知识;
2.在有限理解的基础上设计初始原型,然后结合用户的反馈逐步修正解决方案,逐步接近用户的真实意图;
3.选择主动“创造”需求,为每个潜在的可能情况都创造可选需求,并为其设计相应的解决方案,然后分析用户对方案的反馈,确定合理的需求,其实质为原型法。
1.涉众
用户
客户
领域专家
市场人员、
销售人员等
其他用户替代源
2.相关产品
原有系统
竞争产品
协作产品
和解系统存在接口的
其他软件系统
3.硬数据
登记表格、单据、报表等定量文档
备忘录、日志等定性文档
4.重要文档
原有系统的规格说明
竞争产品的规格说明
协作产品的规格说明
客户的需求文档(委托开发的规格说明、招标书)
5.相关技术标准和法规
相关法律、法规及规章制度
行业规范、行业标准
1.传统方法
传统方法在需求获取中起着基础的作用。
问卷调查、面谈、硬数据分析、文档检查、需求剥离等
2.集体获取方法
将很多涉众有机、有效组织在一起,通过讨论发现需求
头脑风暴(Brainstorming)发挥各自的聪明才智及想象力
专题讨论会(Workshop)主题要明确,有目的、计划组织领域专家及有关人员参加
JAD联合应用开发、JRP联合需求计划等
3.原型
在需求模糊和不确定性的情况下,可利用原型方法使问题清晰、明确和有效。原型方法在此阶段起着重要的作用。
原型方法:如低保真、高保真等原型
4.模型驱动方法
首先定义一个明确的模型,模型定义了所要收集的信息类型。
模型建立和完善的过程就是进行需求获取的过程。
面向目标的方法(goal-oriented methods)
基于场景的方法(scenario-based methods)
基于用例的方法(use case-based methods)
5.认知方法
知识获取:获取被开发系统领域的相关知识及背景知识
潜在的知识:以认知的方式获取用户无法表达的知识
任务分析(Task Analysis)
协议分析(Protocol Analysis)等
6.基于上下文的方法
重视用户在一定环境下表现出来的行为,通过分析用户行为得到信息。常用的方法有:
观察:利用需求工程师们所具备的知识,发挥其洞察力的能力
民族志(Ethnography),开会集中、主题讨论、举手表决等形式。
话语分析(Conversation Analysis),分析领域专家及专业涉众等有关提出的问题和解决方案等
1.获取活动当中,其实质步骤主要是以下几点:确定待获取的内容,确定待获取信息的来源,确定应采取的获取方法,执行获取,记录成果。
2.需求工程需要获取的内容主要有:需求,问题域描述,环境与约束。
3.需求获取的来源:涉众,相关产品,硬数据,重要文档,相关技术标准和法规。
4.需求获取的方法有:面谈,调查问卷,原型,观察和文档分析。
5.【判断题】需求获取就是进行需求收集的一个活动,它从人员、资料和环境中得到系统开发所需求的相关信息。√