需求工程面试题

需求工程面试题更新地址:需求工程面试题

需求工程面试题

文章目录

  • 需求工程面试题
    • 需求工程
      • 什么是软件需求
      • 什么是需求工程
      • 什么是业务模型
      • 什么是原型开发方法
      • 什么是数据字典
      • 简述优秀软件需求所应具有的特性
      • 什么是软件需求开发,软件需求开发要做哪些工作
      • 什么是软件需求管理,软件需求管理的主要活动有哪些
      • 从 Jeannine 事件中总结教训
      • 根据下列描述,说明新的直接销售和财务处理系统的业务需求有哪些
      • 需求开发的迭代特性与软件开发过程的迭代式开发有什么关系
      • 生命周期模型是什么
      • 常见的生命周期模型有哪几种
      • 为什么要使用生命周期模型
      • Waterfall 的优势是什么
    • 需求获取
      • 在开发一个软件系统时,要获取哪些方面的需求
      • 如何综合利用各种表达工具有效、全面的表达软件的需求
      • 缺少用户参与的原因和解决方法
      • 如何正确看待客户
      • 涉众分析中的以用户为中心的体现
      • 采用哪些手段可能建立和用户的良好合作关系。
      • 情境性事件
      • 采样观察的两种方法和优缺点
    • 需求分析
      • 概括说明如何进行需求分析
      • 分析“结构化分析”和“面向对象分析”的过程,说明它们为什么都开始于系统的边界定义
      • 列举结构化分析的各种技术,说明它们的数学基础是什么
      • 试论述用例(USE CASE)在软件需求分析中的地位与作用
    • 需求规格说明
      • 概括说明什么是好的需求规格说明书
      • 规格说明的读者;目的;要求
      • 如何定义产品说明书
    • 需求验证
      • 多种需求验证的方法应该如何结合运用


需求工程

什么是软件需求

IEEE软件工程标准词汇表中定义需求为:

1) 用户解决问题或达到目标所需的条件或权能;

2) 系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能;

一种反映上面(1)或(2)所描述的条件或权能的文档说明。

什么是需求工程

整个软件需求范围内所进行的活动称为需求工程,需求工程包括需求开发和需求管理两部分,需求开发包括问题获取、分析、编写规格说明和验证。

什么是业务模型

业务模型是理解一个组织业务过程的技术。可以用业务用例模型和业务对象模型来表达业务模型。业务用例模型是分别从与业务过程和客户对应的业务用例和业务参与者的角度来描述企业的业务过程;业务对象模型描述了如何由一组工作人员使用一些业务实体和工作单元来实现每个业务用例。

什么是原型开发方法

一个软件原型是所提出的新产品的部分实现,使用原型有三个主要目的:1、明确并完善需求,2、探索设计选择方案,3、发展成为最终的产品。建立原型的主要原因是为了解决在产品开发的早期阶段不确定的问题。原型可分为抛弃型原型和进化型原型。

什么是数据字典

一个定义应用程序中使用的所有数据元素和结构的含义、类型、数据大小、格式、度量单位、精度以及允许取值范围的共享仓库。

简述优秀软件需求所应具有的特性

优秀需求所具有的特性:完整性,正确性,可行性,必要性,划分优先级,无二义性,可验证性

什么是软件需求开发,软件需求开发要做哪些工作

软件需求开发分为:问题获取、分析、编写规格说明和验证四个阶段。包括软件类产品中需求收集、评价、编写文档等所有活动。包括以下几个方面:

  • 确定产品所期望的用户类。
  • 获取每个用户类的需求。
  • 了解实际用户任务和目标以及这些任务所支持的业务需求。
  • 分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息。
  • 将系统级的需求分为几个子系统,并将需求中的一部分分配给软件组件。
  • 了解相关质量属性的重要性。
  • 商讨实施优先级的划分。
  • 将所收集的用户需求编写成规格说明和模型。
  • 评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚。

什么是软件需求管理,软件需求管理的主要活动有哪些

需求管理包括在工程进展过程中维持需求约定集成性和精确性的所有活动,包括:变更控制,版本控制,需求跟踪和需求状态跟踪。

从 Jeannine 事件中总结教训

【事件】投资经理 Jeannine 对一个新的投资跟踪系统具有强烈的需求。她需要做出快速决策来考虑可能进行的投资和撤销投资,耽误一个小时就可能给公司造成几千美元的损失。

最后她放弃了使用公司的信息系统,因为公司的信息系统没有给予她的请求足够高的服务优先级。她找到软件开发商,购买了一套看似可以满足她要求的软件。但高层管理人员不同意使用,而且还遇到了其他一些问题。

首先,财务审计员重新评估了公司的投资策略和投资政策。Jeannine 并不知道这一点,于是新的系统没有计入正在被考虑的新政策。

她自己的职员抵制这个系统产生的有关投资和撤销投资的建议。新系统使用了公司信息系统现有的文件结构,却发现她的职员两年前就放弃使用那些文件了,因为那些文件没有包括全面分析可选替代投资方案所需的数据。她的职员也批评新系统的设计,说很小的操作错误就会把系统带入“混乱”状态,而且很难恢复过来。

她的一些下级经理坚持要有图形形式的报告,而新系统无法产生这些报告。

最后的问题是,Jeannine 不能确定新的系统是否可以进行适当的修改(数据库结构修改和程序修改)以满足新的需求而不用重写所有的程序。而且她的老板也不能肯定是否会出资请一位顾问来解决这些问题。

【解答】

解答一:

(1)她没有仔细认真地分析问题;

(2)她没有及时跟相关人员交流信息,没能把握住有价值信息;

(3)她没能及时跟公司员工交流,引用过时的文件结构;

(4)她没有仔细研究分析新引进的系统的性能需求是否满足;

(5)她没有仔细研究新引进的系统的功能需求是否满足;

(6)她没有仔细研究引进的系统的质量属性,对外接口是否满足。

解答二:

(1)业务需求中没有和高层管理人员沟通好;

(2)她提出的用户需求没有和用户(自己的职员)沟通好;

(3)也没有向开发人员提出可行性、质量属性(可扩展性)等。

解答三:

(1)没有获得高层支持、财政部支持;

(2)下属抵制使用;

(3)信息不流通,文件使用不一致;

(4)要求的图形报告没有;

(5)不知道是否能修改

根据下列描述,说明新的直接销售和财务处理系统的业务需求有哪些

【描述】Especially for You Jewelers 是大学城的一个小珠宝零售商。在过去的两年里,Especially for You 在它的商业方面经历了极大的发展,可是,它的财务业绩却与它的发展不同步。现在的事务处理系统部分手动、部分自动,不能有效的追踪客户账单和收据,Especially for You 难以确定为什么它的成本这么高。此外,Especially for You 频繁地实行特价以吸引顾客。它不知道这些特价是否有利可图,是否带来其他的销售。Especially for You 也想增加回头客,所以它需要一个客户数据库。Especially for You 想按照一个新的直接销售和财务处理系统以帮助解决这些问题。

【解答】

解答一:

业务需求:保持财务业绩与它的发展同步;有效地追踪客户账单和收据;降低成本;实行特价时能够知道是否有利可图,是否带动其他的销售;增加回头客。

解答二:

业务需求如 BR。

BR1:实现客户账单和收据的有效追踪;

BR2:实现产品特价时的利润和相关销售情况检查;

BR3:实现一个客户数据库。

需求开发的迭代特性与软件开发过程的迭代式开发有什么关系

需求开发的迭代性指的是对于开发者对知识的认知水平在某一点上,发生重构,使得知识体系复杂性下降,而继续积累知识的过程

软件开发的迭代性指的是在软件生命周期整体开发迭代,针对变更的需求或者新增的需求一种减少风险的开发模式

需求开发的迭代特性只是软件开发过程的迭代式开发的一个子过程,软件开发过程是一个相当庞大的工程,需要在软件开发过程的各个阶段都需要进行开发工作的迭代,当然也包括需求开发中的迭代。它们之间互相影响。如果需求开发中的迭代不能很好地完成需求分析任务,就必将影响到软件开发过程的其他迭代阶段的进行。

生命周期模型是什么

对软件开发流程的一种描述

为解决问题所定义的策略

对典型开发活动的抽象

常见的生命周期模型有哪几种

常见的生命周期模型: Waterfall, Prototyping,Phased, Spiral.

为什么要使用生命周期模型

帮助开发组了解他们在开发项目中的活动、资源和限制

帮助项目了解在开发过程中的不一致,丢失,冗余等情况,把注意力集中在开发最终的产品上

帮助项目组裁剪开发过程-- 没有基础就无从裁剪

Waterfall 的优势是什么

具有良好定义的里程碑

利于向不熟悉软件开发的客户讲解流程

帮助开发人员理解需要做的事情

清楚地描述下阶段开始前需要的中间产品

是很多其他 LC 模型的基础

需求获取

在开发一个软件系统时,要获取哪些方面的需求

软件需求包括功能需求、非功能需求,功能需求由用户需求和系统需求转化而成,非功能需求包括质量属性、约束条件和其他非功能需求。

如何综合利用各种表达工具有效、全面的表达软件的需求

用用例模型(用例图、用例规约)表达系统功能需求;

补充规约表达系统非功能需求;

ER图与数据字典可以表达系统数据需求;

数据流图(DFD)可以表达系统的功能需求;

PETRI网、状态图可以表达系统的实时性需求。

缺少用户参与的原因和解决方法

用户数量太多,选择困难 —— 涉众分析,完整性,代表性

用户认知不足,不愿意参与 —— 积极交流,加强理解

用户情绪抵制,消极参与 —— 平衡、共赢分析

没有明确的用户 —— 用户替代源

管理上的障碍 —— 求得高层支持

如何正确看待客户

即使最终用户不是上帝,也算是“上帝”的“亲戚”,同样怠慢不得。

如果项目规模比较大,那么开发方与最终用户的来往就比较多。如从最终用户那里获取详细的需求,请最终用户试验软件,对最终用户进行培训等等。

公司新员工上产品培训课,有位小领导匆匆赶来作指示:“隔壁班正在给电信局的员工们进行培训,他们都是上帝派来的,大家要注意形象。由于休息室空间有限,请大家自觉让位。午休时他们可以躺着睡,我们只能坐在位置上打个盹儿…….。”

涉众分析中的以用户为中心的体现

用户是最终使用和操作产品的人,他们是使用软件的目的是为了更好的完成自己的任务,满足组织的目标要求。因此,一个成功的软件要能够协助用户有效的完成实际工作,用户也就自然应该是需求获取的主要信息来源。需求工程师需要了解用户实际工作的开展状况和用户希望软件系统能够给予他们的帮助。

用户参与是以用户为中心的设计方法的核心思想,它要求开发者建立和用户的直接联系,尽早地关注与用户和用户的执行过程,通过及时获得用户的反馈来调整软件设计,以完成高质量的设计。另一方面,用户参与就是反对通过和市场人员、管理者等中间媒介来了解用户。

在以用户为中心的设计方法中,用户需要参与软件开发的全过程,并且对最终软件设计和质量具有非常重要的影响,所以在该方法中参与用户的选择和普通的涉众代表采样有所不同,要吧他们区分开来。

采用哪些手段可能建立和用户的良好合作关系。

理解用户:对用户的基本特征描述(个人特征、工作特征、少数会涉及地理特征)

评估用户:优先级评估、风险评估、共赢分析

与用户协商,处理用户间对于项目期望冲突

用户的个人特征和工作特征的描述可以帮助更好的确定功能需求。

情境性事件

情境性事件,是指某些事件只有和它们发生时的具体环境联系起来,才能得到合理的理解。对于此类事件,需要将它们放在发生时的情景中进行解释,才能明确其意图。

采样观察的两种方法和优缺点

时间采样(随机性) 事件采样 (流程性)
优点 通过随机的观察减少偏差 对频繁发生事件取代表性事件进行观察 允许在行为展开过程中观察 允许对指定的重要事件进行观察
缺点 用分段的方式来收集数据不能提供全面信息的时间 漏掉不经常发生却很重要的事件 消耗大量时间 漏掉频繁发生事件的代表性样本
适用情景 发现异常流程 验证用户知识和实际工作的一致性 获取默认知识 验证用户知识和实际工作的一致性

需求分析

概括说明如何进行需求分析

(1)需求分析是指在需求开发过程中,对所获取的需求信息进行分析,及时排除错误和弥补不足,确保需求文档正确地反映用户的真实意图。

(2)分析方法大体有两类:“问答分析法”和“建模分析法”。

第一:问答分析方法很简单:刨根究底地问,如果问题都被解答了,那么需求也就分析清楚了。一个人可以“自问自答”地分析需求,几个人分析需求则称为“研讨”。

问答分析最重要的问题是:“是什么”和“为什么”。其它常见的问题有: 需求存在二义性吗? 需求文档的上下文有矛盾吗? 需求完备吗? 需求是必要的吗? 需求可实现吗?

需求可验证吗? 需求的优先级确定了吗?

第二:建模分析法:在需求开发过程中,对于某些类型的信息,用图形表示要比文本表示更加有效。所以将图形与文本结合起来描述需求是很自然的方法。需求建模就是指用图形符号来表示、刻画需求。需求建模不可能取代文字描述。在需求文档中,文字描述是第一重要的,建模主要是起分析、解释作用。建议将模型存放在需求文档的附录中,便于正文引用。

建模分析方法主要有两大类:“结构化分析法”和“面向对象分析法”。

分析“结构化分析”和“面向对象分析”的过程,说明它们为什么都开始于系统的边界定义

软件要完成用户的任务需要和外界协调互动,经过问题分析之后一般可以得到高层次的解决方案及系统特性。而一个系统通常会有很多高层次问题,虽然问题分析之后可以得到解系统为了解决某一问题而需要具备的知识片段,却无法将这些片段自动连接为整个系统的概要全图,所以很有必要将各个问题的分析结果进行综合与处理,已确定整个解系统的功能,建立系统的边界。

之所以把系统边界作为需求分析的起点,是因为边界是软件和外界互动的地方。解系统为自己做定位,首先要分析互动的反应,然后分析系统内部的反应,所以,框架中有一些系统的外部行为等。

一般情况下,在需求分析的早期阶段做的都是外部分析,从系统的边界图开始,逐一分析和细化系统和外界的交互,以保证最终产品的行为能够和环境形成互动,以满足用户的需求;然后在需求分析的后期阶段,才会逐渐进入内部分析。

列举结构化分析的各种技术,说明它们的数学基础是什么

形式化方法 --> 数据流图 --> 结构化建模

有限状态机思想 --> 状态转移矩阵 --> 面向对象建模

结构化分析技术:数据流图、实体联系图、状态转移图、功能实体矩阵、实体生命历史和事件实体矩阵。

以数据流动为中心,以 DFD 为核心技术,以 λ 演算为数学基础。

试论述用例(USE CASE)在软件需求分析中的地位与作用

用例描述了系统和一个外部ACTOR的交互顺序,用例表达了系统的功能需求。

在表达系统需求时,用用例图、用例的脚本说明和词汇表等要素来表达系统功能需求,补充规约来表达系统的非功能需求。

需求规格说明

概括说明什么是好的需求规格说明书

第一 ;正确 需求规格说明书应当正确地反映用户的真实意图,“正确”是《产品需求规格说明书》最重要的属性。

第二: 清楚 清楚的需求让人易读易懂。

第三: 无二义性 “无二义性” 是指每个需求只有唯一的含义。

第四:一致 “一致”(Consistent)是指《产品需求规格说明书》中各个需求之间不会发生矛盾。

第五 :必要 《产品需求规格说明书》中的各项需求对用户而言应当都是必要的。

第六 :完备 “完备”(Complete)是指《产品需求规格说明书》中没有遗漏一些必要的需求。

第七 :可实现 《产品需求规格说明书》中的各项需求对开发方而言应当都是可实现的(Attainable)。

第八: 可验证 《产品需求规格说明书》中的各项需求对用户方而言应当都是可验证的(Verifiable)。如果需求是不可验证的,那么用户就无法验收软件,可能会发生商业纠纷。

第九: 确定优先级 需求的优先级其实就是需求“轻重缓急”的分级表述,例如划分为“高、中、低”三级。一般地,由用户和开发方共同确定需求的优先级。

第十 :阐述“做什么”而不是“怎么做” 《产品需求规格说明书》的重点是阐述“做什么”,而不是阐述“怎么做”。“怎么做”是系统设计和实现阶段的事情。

规格说明的读者;目的;要求

项目管理人员:项目估算;任务划分——全面准确的需求

设计、开发人员:完成工作——正确性,可度量

测试人员:测试计划——全面准确正确。

手册编写人员:用户手册的框架

维护人员、培训人员、律师……

如何定义产品说明书

第一步:细化并分析用户需求

需求分析员首先对《用户需求说明书》进行细化,对比较复杂的用户需求进行建模分析,以帮助软件开发人员更好地理解需求。例如采用Rational 的Rose工具进行需求的建模分析,建模分析产生的文档可以作为《产品需求规格说明书》的附件。补充说明:建模分析的技术难度比较高,需求分析员应当根据自身水平进行取舍。

第二步:撰写产品需求规格说明书

需求分析员按照指定的文档模板撰写《产品需求规格说明书》。如果待开发的产品分为软件和硬件两部分的话,则应当撰写《软件需求规格说明书》和《硬件需求规格说明书》。

第三步:进行需求确认

项目经理邀请同行专家和用户(包括客户和最终用户)一起评审《产品需求规格说明书》,尽最大努力使《产品需求规格说明书》能够正确无误地反映用户的真实意愿。

需求评审之后,开发方和客户方的责任人对《产品需求规格说明书》作书面承诺。

需求验证

多种需求验证的方法应该如何结合运用

需求验证的方法:需求评审(静态分析,需求验证的一种主要方法), 原型与模拟,开发测试用例,用户手册编制,利用跟踪关系,自动化分析

每个需求都需要经过评审,对于动态行为评审不能完成的就要通过原型和模拟的方法来验证。在正常的工作当中,可以顺便用上用户手册,测试用例,跟踪等方法在一些错误之处或者一些需求上进行验证,也是比较有效的。总而言之,大多数情况下,需求都是在静态的方式下被加以验证的(评审的方法),也可以说几乎说的需求都要经过评审的方法进行验证,个别动态复杂的需求需要用原型与模拟的方法进行验证,工作之间产生的衔接可以用上开发测试用例,用户手册等方法,这样可以实现高效的综合运用。

你可能感兴趣的:(#,考研复试面试题,计算机考研)