北航991——软件需求分析(重点)

简答题

如何理解需求分析的作用和重要性

一般情况下,用户并不熟悉计算机的相关知识,而软件开发人员对相关的业务领域也不甚了解,用户与开发人员之间对同一问题和习惯用语的不同往往会为需求分析带来很大的困难。因此,开发人员和用户之间充分和有效的沟通在需求分析的过程中至关重要。

如何理解结构化需求分析方法的基本思想

  • 结构化需求分析是一种面向数据流的的需求分析方法。它基于:“分解”和“抽象”的基本思想,逐步建立目标系统的逻辑模型,进而描绘出满足用户要求的软件系统。
  • “分解”是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解为若干小问题,然后分别解决。
  • 最顶层描述了整个目标系统,中间层将目标系统划分为若干个模块,每个模块完成一定的功能,而最底层是对每个模块实现方法的细节性描述。
  • 在逐层分解的过程中,起初并不考虑细节性的问题,而是先关注问题最本质的属性,随着分解自顶向下进行,才逐渐考虑越来越具体的细节。这种用最本质的属性表示一个软件系统的方法就是“抽象”。

如何进行结构化需求分析,其建模方法都有哪些?

结构化分析的具体步骤如下:

  • 建立当前系统的“具体模型”: 系统的“具体模型”就是现实环境的真实写照,这样的表达与当前系统完全对应,用户容易理解。
  • 抽象出当前系统的逻辑模型: 分析系统的“具体模型”,抽象出其本质因素,排除次要因素。获得当前系统的“逻辑模型”。
  • 建立目标系统的逻辑模型: 分析目标系统与当前系统逻辑上的差别,从而进一步明确目标系统“做什么”,建立目标系统的“逻辑模型”。
  • 为了对目标系统进行完整的描述,还需要考虑人机界面和其他一些问题。

在结构化分析中经常用到的建模方法主要有以下几种:

  • 数据流图
  • 实体关系
  • 控制流图
  • 状态转换图

为什么需求分析特别重要?

需求分析特别重要,是因为以下几点:

  • 许多大型应用系统的失败,最后均归结到需求分析:要么获取需求的方法不当,使得需求分析不到位或不彻底,导致开发者反复多次的进行需求分析,致使设计、编码、测试工作无法顺利进行;要么客户配合不好,导致客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。
  • 需求分析的输出文档是《用户需求报告》。它既是软件生命周期中的一个里程碑,又是客户、软件开发人员和项目管理人员三者必须遵守的一根基线,是三者共同工作的基础,是项目Alpha测试和Beta测试的准则,是供方交付产品和需方验收产品的依据。
  • 需求分析要占用整个软件开发时间或工作量的30%左右。
  • 需求分析中的错误,属于软件开发中的早期错误,他会在后续的设计和实现中进行发散式传播。

根据以上4个原因,IT企业的高层经理对需求分析特别重视,常常派经验最丰富的人员去做项目需求。正因为如此,“系统分析员”才是软件行业中最高的技术职称。

需求分析的目的和目标是什么?

  • 需求分析的目的:弄清用户对系统的细节要求,完整、准确、清晰、具体地回答目标系统“做什么”。
  • 需求分析的目标:对用户提出的软件功能、性能及应用问题及其环境进行分析与理解,采用一系列的分析方法和技术,把系统可行性分析阶段产生的系统规格说明书和项目规划逐步精确化、完全化、一致化,借助当前系统的逻辑模型导出目标系统的逻辑模型,最终形成需求规格说明文档的过程。

需求开发经过那些步骤?每个步骤有何作用?

通过4项具体活动达到目标:需求获取、需求分析、需求说明。需求验证

  • 需求获取:即调查软件需求,需求是目标软件系统在功能、性能、行为、设计约束等方面的期望。
  • 需求分析:分析建模也称需求建模,建模是对现实世界进行抽象的过程。它通过符号和文字说明来描述系统模型,使用户和开发者之间建立共同的语言基础,消除理解歧义。
  • 需求说明:编写需求文档,也称编写需求规格说明书。需求说明书是需求阶段的最终成果,也是需求分析阶段复审的依据。他是用户领域专家、软件分析师、软件设计师共同交流的途径和媒介;是交付给用户文档的一部分。
  • 需求验证:即需求评审。根据需求说明书,分析师、设计师、客户会评审文档,对需求的正确性、一致性、完整性、无二义性进行评审、确认。

需求分析的难点在那里

需求分析的难点:在系统的功能、性能和接口方面,开发者要与客户达成完全一致的需求,让客户最终签字确认,并保证在项目验收前,需求相对稳定不变。万一需求有一点变化,双方必须履行“需求变更管理程序”,而变更管理程序在签订合同时已经作了规定。要知道,合同是具有法律效力的。

为什么说需求过程是一个迭代过程

  • 由于人们对客观事物的认识是不断深化的,因此需求过程是一个迭代过程,每次迭代都可提供更高内容和更详细内容的软件需求。这种迭代会给项目带来一定的风险,上次迭代的设计实现可能会因为需求不足被推翻。
  • 在很多情况下,对需求的理解会随着设计过程和实现过程的深入而不断深化,这也会导致在软件生命周期的后期,重新修订软件需求。原因可能来自错误的分析,客户环境和业务流程的改变,市场趋势的变化等。无论是什么原因,软件分析师应认识到需求变化的必然性,并采取响应的措施,减少需求变更对软件系统的影响。

需求管理过程的目标和内容是什么

  • 目标:保证软件项目或产品满足客户在软件、性能、接口3个方面的需求。
  • 内容:主要包括需求确认、需求评审、需求追踪和需求变更活动管理。

用户需求报告与需求分析说明规格书有何差异

用户需求报告与需求分析规格说明书的差异如下。

  • 用户需求报告是对外的,需求规格说明书是对内的。 用户需求报告是站在用户(使用者)的角度、 用他们可以看懂的语言(如自然语言)写的,需要用户签字确认。
  • 需求规格说明书则不同,它是对内的,不需要用户签字确认。 它是站在开发者的角度、可以采用形式化或半形式化的语言进行描述。
  • 一般来说,用户需求报告是合同的产物,需求规格说明书是立项建议书的产物。 用户需求报告是对合同而言的。需求规格说明书是对立项建议书而言的。
  • 由用户需求报告可产生需求规格说明书。

签完合同后,一般是先写出用户需求报告,后写出需求规格说明书。当需求报告由用户签字确认后, 需求规格说明书很快就会出来了。

需求评审的作用是什么?为什么必须评审?评审的标准是什么?

  • 评审的作用(目的):为了及早消除隐藏的错误,确保需求说明准确、完整、清晰、无二义性地 表达产品的功能和质量要求。
  • 评审的必要性:需求说明书的描述几乎用的都是自然语言,这种非形式化的语言容易出现不准确、 冗余、遗漏和理解不一致等问题。因此,对规格说明书的审查是必须的。
  • 通过评审后的需求文档才是有效的。
  • 评审的标准;就是对需求分析和说明的质量要求:正确性、无歧义性、完整性、一致性、重要性 /稳定性分级、可验证性、可修改性、可追踪性。

请简述可行性研究所研究的问题。

  • 经济可行性: 进行成本/效益分析。从经济角度判断系统开发是否“合算”。
  • 技术可行性: 进行技术风险评价。从开发者的技术实力、以往工作基础、问题的复杂性等出发, 判断系统开发在时间、费用等限制条件下成功的可能性。
  • 法律可行性: 确定系统开发可能导致的任何侵权、妨碍和责任。
  • 方案的选择: 评价系统或产品开发的几个可能的候选方案,最后给出结论意见。

请简述数据流图的作用

数据流图可以用来抽象地表示系统或软件。

  • 从信息传递和加工的角度,它以图形的方式刻画数据流从输入到输出的过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。
  • 数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。

请简述数据字典的作用

  • 分析模型中包含了数据对象、功能和控制的表示。在每一种表示中,数据对象和控制项都扮演一定的角色。为表示每个数据对象和控制项的特性,建立了数据词典。
  • 数据字典严格地定义了每一个与系统相关的数据元素,并以字典式顺序将他们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。

请阐述面向对象的基本概念

面向对象的基本概念包括对象、类、封装、继承和多态

  • 对象可以是客观世界 中存在的事物,也可以是概念化的实体,它由一组属性和操作组成。
  • 属性是用来描述对象静态特征的数 据项,是对客观世界实体所具有性质的抽象。操作是用来描述对象动态特征。
  • 类是对对象的抽象,是对 具有相同属性和相同操作的一组相似对象的定义。
  • 封装是指把对象的属性和操作结合在一起,组成一个独立的单元。
  • 继承表示类之间的层次关系,它使得某类对象可以自动拥有另外一个或多个对象的全部属 性和操作。
  • 多态是一种使父类中定义的属性或操作被子类继承后,可以有不同的实现的机制。

与面向结构化开发过程相比,为什么面向对象能更真实地反映客观世界?

  • 结构化也就是面向过程的方法:从客观事物的行为出发,肢解客观事物的整体性,从分析、设计到编程完全看不出事物的原貌。
  • 面向对象:从观察、抽象客观事物开始,就以事物原貌、事物的整体为出发点。从分析、设计、编 程一直反映事物的原貌,它利用事物具有整体性、关联性、交互性、继承性和多态性的本源特征映射领 域问题到计算机世界中。

什么是面向对象技术?面向对象方法的特点是什么?

  • 面向对象分析的目标是完成对所需求解问题的分析,确定待建的系统所要做的 工作,定义所有与待解决问题相关的类,并建立系统的模型。
  • 面向对象分析的关键是识别出问题域中的对象,并分析它们之间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。
  • 面向对象分析模型通常包括对象模型、动态模型和功能模型。对象模型是最基本、最重要、最核心的模型,描述软件系统的静态结构;动态模型描述系统的控制结构;功能模型描述软件系统必须完成的功能。这3种模型各自从不同的侧面反映软件系统的内容,相互影响、相互制约,有机的结合在一起, 全面地表达对目标系统的需求。

什么是类?类与传统的数据类型有什么关系?

  • 具有相同特征和行为的对象归结在一起就形成类,也就是说,类是具有相同属 性和服务的一组对象的集合。
  • 在面向对象方法学中,类是某些对象的模板,抽象地描述属于该类的全部对象的属性和操作。属于某个类的对象称为该类的实例。每个对象都是某个类的实例,对象的状态则包含在实例的属性中。类和实例的关系是一种抽象与具体的关系。实例是类的具体体现,类是多个实例的综合抽象。现实中没有真正的类存在,类只是对具有相同属性和行为的一组相似的对象的抽象,而现实中存在的只是某一类的具体的实例。例如,现实中没有抽象的“汽车”,人们只见到了具体的一辆辆的卡车、小轿车等。

与传统的软件工程方法相比,面向对象的软件工程方法有哪些优点?

  • 符合人类的思维习惯。面向对象的软件工程方法最重要的特点就是把事物的属性和操作组成一个整体,以对象为核心,更符合人类的思维习惯。此外,它更注重人类在认识客观世界时循序渐进、逐步深化的特点。它主张在软件开发的过程中多次反复迭代的思想。
  • 可复用性好。面向对象的软件工程方法由于采用了继承和多态的机制,极大地提高了代码的可复用性。
  • 稳定性好。面向对象的软件工程方法基于对象的概念。当目标系统的需求发生变化时,只要实体及实体之间的联系不发生变化,就不会引起软件系统结构的变化,而只需要对部分对象进行局部修改即可。
  • 可维护性好。由于利用面向对象软件工程方法开发的软件系统稳定性好和可复用性好,而且采用了封装和信息隐藏机制,易于对局部软件进行调整,因此系统的可维护性比较好。

UML 的作用和优点有哪些?

  • UML 是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。 它不是一种可视化的程序设计语言,而是一种可视化的建模语言;它不是工具或知识库的规格说明,而 是一种建模语言规格说明,是一种表示的标准;它不是过程,也不是方法,但允许任何一种过程和方法使用它。
  • 优点:更好地表现同一事物的不同方面,采用不同的视图,每个视图从一个角度看待和描述问题。 建模语言就是设计语言,是从自然语言到计算机语言的中间的过渡性语言,它提供表达设计语义的语法或图形符号用来建立软件的模型。

用例脚本有何作用?有哪 3 种描述方式?用例脚本是针对什么层次的用例?

  • 作用:只画出用例图还不能完整地表达出用户的需求,还要辅以一定形式的说明,说明每个用例里面的事件流,即业务流程,也就是用例脚本。
  • 表达方式:用例脚本用纯文字、表格、活动图 3 种方式来表述。活动图具有直观性,可以用来对文字和表格形式进行补充。
  • 针对的层次:对用例的说明称为“用例描述”,也称为“用例脚本”,它描述的是具有实际行为的 “操作用例”,也就是发生逻辑运算(如数据的增、删、改、查的操作)的用例。这些用例往往就是用例图中的叶子级用例,而这层用例在复杂系统中不提倡画在较高层次的用例图中。可以通过分层细化来表达叶子用例。
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值