期末软件工程考试复习(附图及软考推荐)

文字概念部分

1、什么是软件危机?为什么会产生软件危机?

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(1)用户对软件需求的描述不精确。
(2)软件开发人员对用户需求的理解有偏差。
(3)缺乏处理大型软件项目的经验。
(4)开发大型软件易产生疏漏和错误。
(5)缺乏有力的方法学的指导和有效的开发工具的支持。
(6)面对日益增长的软件需求,人们显得力不从心。

2、什么是软件生存周期?把生存周期划分为阶段的目的是什么?

一个软件从开始立项起,到废弃不用止,统称为软件的生存周期。
软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。

3、传统瀑布模型把生存周期划分为哪些阶段,瀑布模型软件开发有哪些特点?

制定计划、需求分析、软件设计、程序编写、软件测试和运行维护

  1. 阶段间具有顺序性和依赖性
  2. 推迟实现的观点
  3. 质量保证的观点

4、什么是软件需求?可以从哪些方面描述软件需求?

(1)软件需求主要指一个软件系统必须遵循的条件或具备的能力。这里的条件或能力可以从两个方面来理解:一是用户解决问题或达到目标所需的条件或能力,即系统的外部行为;二是系统为了满足合同、规范或其他规定文档所需具有的条件或能力,即系统的内部特性。
(2)软件需求包括3个不同的层次――业务需求、用户需求和功能需求。

a、业务需求 (Business requirement)表示组织或客户高层次的目标。业务需求通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。业务需求描述了组织为什么要开发一个系统,即组织希望达到的目标。使用前景和范围文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求文档。
b、用户需求 (user requirement)描述的是用户的目标,或用户要求系统必须能完成的任务。用例、场景描述和事件――响应表都是表达用户需求的有效途径。也就是说用户需求描述了用户能使用系统来做些什么。
c、功能需求 (functional requirement)规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求有时也被称作行为需求,因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”。功能需求描述是开发人员需要实现什么。注意:用户需求不总是被转变成功能需求。产品特性,所谓特性,是指一组逻辑上相关的功能需求,它们为用户提供某项功能,使业务目标得以满足。对商业软件而言,特性则是一组能被客户识别,并帮助他决定是否购买的需求,也就是产品说明书中用着重号标明的部分。客户希望得到的产品特性和用户的任务相关的需求不完全是一回事。一项特性可以包括多个用例,每个用例又要求实现多项功能需求,以便用户能够执行某项任务。

5、软件需求的任务是什么?要经过哪些步骤?

(1)需求分析的基本任务是深入描述软件的功能和性能、确定软件设计的约束和软件同其它系统元素的接口细节、定义软件的其它有效性需求,总之,需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的 “做什么” 的问题。
(2)主要步骤:
a、问题识别

  1. 功能需求:明确所开发的软件必须具备什么样的功能。
  2. 性能需求:明确待开发的软件的技术性能指标。
  3. 环境需求:明确软件运行时所需要的软、硬件的要求。
  4. 用户界面需求:明确人机交互方式、输入输出数据格式。

b、分析与综合,导出软件的逻辑模型
分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。用图文结合的形式,建立起新系统的逻辑模型。
c、编写文档
(1) 编写“需求规格说明书”,把双方共同的理解与分析结果用规范的方式描述出来,作为今后各项工作的基础。
(2) 编写初步用户使用手册,着重反映被开发软件的用户功能界面和用户使用的具体要求,用户手册能强制分析人员从用户使用的观点考虑软件。
(3) 编写确认测试计划,作为今后确认和验收的依据。
(4) 修改完善软件开发计划。在需求分析阶段对待开发的系统有了更进一步的了解,所以能更准确地估计开发成本、进度及资源要求,因此对原计划要进行适当修正。

6、需求规格说明书有哪些部分组成?各部分的主要内容是什么?

(1)正文的第一章内容是1.概述,包含:1.1.编写目的;1.2.术语与定义;1.3.参考资料;三个部分。
(2)第二章要给出该项目的标准和规范,在文档的后续内容编写中以及项目开发过程中必须遵照这个标准和规范进行。
(3)第三章应该说明该项目的相关假设、限制和一些依赖条件,在后续系统部署的过程中可以有参考意义。
(4)第四章“功能规格”是重点,重点介绍这个系统的角色,界面设计思路,系统的功能视图和功能点清单,以及系统的需求用例。这个内容必须详细描述,这样才能对后续的开发和测试提供指导意义。
(5)第五章“非功能规格”要对项目的性能、安全、数据的备份恢复等内容解释解释说明,一个项目除了功能完整之外,还要考虑性能、安全等相应的要求。
(6)第六章“附录”,是对软件需求规格说明书的一些补充说明文档,其中的“软件需求跟踪矩阵”是重点,这份文档是对后续需求的完善程度进行了严格的控制。

7、面向对象有哪些基本特征?

(1)封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。
(2)继承:子类拥有父类的所有数据和操作。
(3)多态:一个程序中同名的不同方法共存的情况。

8、UML中提供了哪9种图?试述每种图所描述的内容。

(1)用例图
描述角色以及角色与用例之间的连接关系。说明是谁要使用系统,以及他们使用该系统可以做些什么。
(2)类图
类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切地说,是一种静态模型类型。
(3)对象图
与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
(4)活动图
描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
(5)状态图
描述类的对象所有可能的状态,以及事件发生时状态的转移条件,可以捕获对象、子系统和系统的生命周期。
(6)序列图(时序图)
序列图是用来显示参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。
(7)协作图
和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。
(8)构件图(组件图)
描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。
(9)部署图(配置图)
用来建模系统的物理部署。例如,计算机和打印设备或者是路由器设备等等,以及它们之间是如何连接的。

9、软件需求和软件分析有哪些异同?

需求分析一般是分析用户需求,针对用户的需要提供的解决办法。
软件分析是对需求的实现性的分析,模块构成,页面组织、性能要求,设计规划等。
相同:都要针对用户的需求,有会对软件的功能、组织、流程、表现、性能等进行分析设计。
区别:需求分析业务性更强,偏重对用户的分析,软件分析技术性更强,更偏重于实现。
一般来说,需求分析产物是需求规格说明书,软件分析一般产品是架构设计说明书。

10、什么是面向对象分析?其主要思想是什么?

(1)面向对象:是一种以对象为中心的编程思想,就是通过分析问题,分解出一个一个的对象,然后通过不同对象之间的调用来组合解决问题。建立对象的目的不是为了完成某个步骤,而是为了描述某个事物在解决整个问题的过程中的行为。
2)主要思想:任何事物都可以理解为对象,其主要特征:继承。封装。多态。特点:代码好维护,安全,隐藏信息。

11、面向对象设计的任务是什么?

面向对象的系统设计分为两个阶段即总体设计和详细设计:
(1)总体设计:总体设计的主要任务是设计一个简单、清晰的系统体系结构包括系统架构设计、子系统设计、包的设计等内容。
(2)详细设计:详细设计的主要任务是识别出系统运行过程中所使用的类以及类之间的关系并为所有的类给出尽可能详细的定义和规范的说明包括设计类图的建立、界面设计、数据库设计等。

12、集成测试有哪几种实施策略?试比较他们的优缺点?

(1)非渐增式集成
即在短时间内把所有系统组件一次性集成到测试系统中,用最少的用例来验证整个系统,不考虑组件之间的依赖性和存在的风险。
优点:容易理解,可以多人共同并行开工,对资源的利用率较高。
缺点:所检测出的问题定位和修改比较困难,还会遗漏许多接口上的问题。
(2)渐增式集成
渐增式集成的策略有很多种:
a、自顶向下集成:自顶向下集成首先要集成主控制模块,然后从软件控制层次结构向下逐步集成,可以采用深度优先或者广度优先进行集成测试,主要验证接口的稳定性。
优点:能够较早的验证主要的控制点和判断点,如果主控制出现问题能够及时发现。
缺点: 桩的开发和维护是该方法的最大问题,底层模块增加,系统越来越复杂,底层模块从测试会越来越不充分。
b、自底向上集成:对底层模型的行为进行较早的验证,早期可能出现并行的测试。
优点:不再需要桩模块
缺点: 对顶部的验证推迟了,设计上的错误不能被及时发现,随着顶层的集成,对产品底部的异常越来越难发现。
c、三明治集成:三明治集成属于混合式集成,综合了自顶向下和自底向上集成的优缺点;测试的时候,将被测软件分成三份,中间一份为目标层,目标层的上部分采用自顶向下集成策略,下部分采用自底向上集成策略。最后在目标层进行会和。
优点:改进自自顶向下和自底向上集成方法,根据进度将完成的模块尽可能的进行集成有助于尽早发现缺陷,避免在集成阶段大量缺陷涌现。
缺点:最大的缺点就是对中间层的测试不够充分。

13、面对对象测试策略和传统测试策略有何区别?

(1)单元测试:前者中最小的测试单元是封装起来的类和对象,同时把操作作为类的一部分来测试;后者单元测试与编码在同一阶段进行,测试最小的可编译的程序单元。
(2)集成测试:前者主要采用基于线程的测试方法或基于使用的测试方法;后者主要采用渐增式测试方法,即自顶向下集成测试方法或自底向上集成测试方法,同时还采用回归测试。
(3)确认测试:两者都是集中检查用户可见的动作和用户可识别的输出,前者为了导出确认测试用例,测试人员应该认真研究动态模型和描述系统行为的脚本;但后者常用Alpha测试和Beta测试。

图片例题部分

部分图片题目可能重复或者类似,大家在复习的同时也可自行查找资料。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

因为淋过雨,所以想为更多的人打伞,希望这篇文章能够帮助到你们!

猜你喜欢

转载自blog.csdn.net/qq_45566213/article/details/127149525