软件工程导论复习

目录

单项选择题

1.  数据字典是对如下内容的描述(    )。

2.  结构化软件需求分析模型不包括(    )。

3.  软件工程是指导计算机软件开发和(    )的一门工程学科。

4.  最适合风险管理的软件开发过程模型是(    )。

5.  (    )不是软件危机的突出表现。

6.  软件工程三要素不包括 (     )。

7.  原型模型的主要特点之一是(    )。

8.  软件生命周期划分为(   )三个阶段,而每一阶段又可分为若干更小的阶段。

9.  瀑布模型的关键不足在于(    )。

10.  在软件维护的内容中,占维护活动工作量比例最高的是(     )。

11.  软件维护是指(     )。

12.  关于软件维护的说法错误的是(     )。

13.  为了提高软件的可维护性,在编码阶段应注意(     )。

14.  软件可行性研究一般不考虑(     )。

15.  可行性分析中,系统流程图用于描述(     )。

16.  一个模块把数值作为参数传送给另一个模块,这种耦合方式称为(     )。

17.  变换流的DFD由三部分组成,不属于其中一部分的是(     )。

18.  软件设计在下面哪个阶段进行(     )。

19.  详细设计的任务是确定每个模块的(     )。

20.  下面说法正确的是(     )。

判断题

21.  原型化开发方法包括生成原型和实现原型两个步骤。

22.  软件工程过程应该以软件设计为中心,关键是编写程序。

23.  在可行性研究中最难决断和最关键的问题是经济可行性。

24.  需求分析和系统设计是最复杂的两个阶段,因此软件生命周期中时间最长的阶段一般就是两者之一。

25.  编码的依据是详细设计说明书。

26.  设计用户界面只需要计算机科学的理论和知识,而不一定需要认知心理学以及人-机工程学、语言学等学科的知识。

27.  单元测试通常由开发人员而不是测试人员来完成。

28.  瀑布模型的优点之一是,如果发现问题修改的代价很低。

29.  软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。

30.  过程描述语言可以用于描述软件的系统结构。

简答题

31.  软件需求分析的过程也称之为需求开发,请描述需求开发包括哪几个步骤?

32.   概述瀑布模型、原形模型、增量模型、螺旋模型分别适用于什么项目的开发? 

33.  写出模块内聚和耦合由低到高的七个层次。关于内聚和耦合的设计原则是什么?

34.  概述在软件测试执行期间,按顺序要进行哪四个阶段的测试及主要测试内容。

分析设计题

为了控制新冠疫情,现计划开发健康码APP,功能如下:通过手机号码注册为个人用户后,可查询健康码状态(红、黄、绿),以及核酸检查结果(阴、阳)。检疫人员批量将个人用户核酸检结果输入系统。若检测结果为阳性则该用户的健康码将转为红码。若个人用户为密接人员,防控办可将其健康码赋为红码或黄码。当个人健康码被赋为黄码后,需短信通知该用户进行核酸检测。当个人健康码被赋为红码后,系统生成隔离任务书给警察对该用户施行隔离。防控办可查询疫情报告。

绘制数据流程图(顶层之下一层)。

将前面小题绘制的数据流程图,转化为软件结构图。

选择前一小题软件结构图中的一个过程,绘制N-S图描述其逻辑处理过程。要求所选过程不能是注册、登录、用户管理等通用功能,必须是与健康码业务相关的功能。

论述题


单项选择题

1.  数据字典是对如下内容的描述(    )。

 A) 数据加工、数据存储、数据流、数据字段

B) 数据加工、数据存储、数据流、数据元素

C) 数据加工、数据存储、数据流、数据项

D) 数据加工、数据存储、数据流、数据起点和终点

参考答案:C

解析:定义问题,不过我一直觉得数据元素和数据项是类似的,硬要说的话是个被包含关系

数据字典的内容:

  1. 数据加工(Data Processing):描述数据在系统中的处理过程。
  2. 数据存储(Data Storage):描述数据存储在系统中的位置和结构。
  3. 数据流(Data Flow):描述数据在系统中的流动路径。
  4. 数据项(Data Elements):描述数据的基本单位,包括数据项的名称、类型、取值范围和含义。

2.  结构化软件需求分析模型不包括(    )。


A) 数据字典
B) 功能模型
C) 用例模型
D) 行为模型
参考答案:C

解析:数据需求分析的模型实际就是主要集中在功能和数据的组织和描述,那传统包括的就是数据字典、功能模型和行为模型。用例模型是UML里面的一种技术,是描述系统的功能需求和用户交互的

3.  软件工程是指导计算机软件开发和(    )的一门工程学科。


A) 分析
B) 设计
C) 编程
D) 维护
参考答案:D

解析:开发和维护成套的,分析、设计、编程实际上可以算作开发的一部分了

4.  最适合风险管理的软件开发过程模型是(    )。


A) 瀑布模型
B) 增量模型
C) 螺旋模型
D) 快速原型模型
参考答案:C

解析:

你会发现每个时期都会有风险分析的存在,但其他选项是没有这么全面的

5.  (    )不是软件危机的突出表现。


A) 对软件开发成本和进度的估计常常很不准确
B) 无法完成功能复杂的软件
C) 用户对“已完成的”软件系统不满意现象经常发生
D) 软件产品的复杂性增加,可靠性、质量却在下降
参考答案:B
解析:常见的表现:

  • 对软件开发成本和进度的估计常常很不准确。
  • 用户对“已完成的”软件系统不满意现象经常发生。
  • 软件产品的复杂性增加,可靠性、质量却在下降。

所以直接选B,功能复杂不代表是软件危机,软件危机关心的是开发过程中的质量问题

6.  软件工程三要素不包括 (     )。


A) 对象
B) 过程
C) 工具
D) 方法
参考答案:A
解析:定义:软件工程的三要素是过程、方法、工具

7.  原型模型的主要特点之一是(    )。


A) 开发完毕才见到产品
B) 及早提供工作软件
C) 及早提供全部完整软件
D) 对需求变化适应性差
参考答案:B
解析:A、B选项都太极端了,D完全错,原型模型正是为了适应需求变化而设计的,它通过不断的迭代和用户反馈来完善需求。只有B选项算是折中的表达了

8.  软件生命周期划分为(   )三个阶段,而每一阶段又可分为若干更小的阶段。


A) 软件定义、软件开发、软件维护
B) 需求分析、系统设计、编程实现
C) 软件计划、软件开发、软件部署
D) 软件编程、软件测试、软件运行
参考答案:A
解析:软件的生命周期就是定义、开发、维护

BCD选项本质都是软件开发的子阶段,排除。

9.  瀑布模型的关键不足在于(    )。


A) 过于简单
B) 不能适应需求的动态变更
C) 过于灵活
D) 各个阶段需要进行评审
参考答案:B
解析:瀑布模型:

这种模型你一往下面走就一泻千里,想往回头就得走到开头去,开发中的需求变更一般是不能实时更新的

10.  在软件维护的内容中,占维护活动工作量比例最高的是(     )。


A) 改正性维护
B) 适应性维护
C) 预防性维护
D) 完善性维护
参考答案:D

解析:完善指的就是改进和增强。真要细谈的话ABC都占不了多少时间,D属于长期性的工作

11.  软件维护是指(     )。


A) 维护软件的正常运行
B) 软件的配置更新
C) 对软件的改进,适应和完善
D) 软件开发期的一个阶段
参考答案:C
解析:A描述的是运行维护,本质上是改进;B的配置更新本质上是适应;D完全是对不上

所以C才是一个高度概括

12.  关于软件维护的说法错误的是(     )。


A) 软件维护是软件生命周期中占用时间最长的一个阶段
B)  软件维护不只是修改软件中的错误
C) 软件维护对于开发商来说是无利可图的
D) 在编码过程中添加适当的注释,可以降低软件维护的难度
参考答案:C

解析:直接看语义就好了,就你C毛病最多

13.  为了提高软件的可维护性,在编码阶段应注意(     )。


A) 保存测试用例和数据
B) 提高模块的独立性
C) 避免文档的副作用
D) 养成好的程序设计风格
参考答案:D

解析:A指的是测试,跟编码没关系;B是设计方面的;C在讲文档,跟我代码有什么关系呢

D、比如写注释这样就是好的程序设计风格

14.  软件可行性研究一般不考虑(     )。


A) 是否有足够的人员和相关的技术来支持系统开发
B) 待开发的软件是否会有质量问题
C) 是否有足够的工具和相关的技术来支持系统开发
D) 待开发软件是否有市场、经济上是否合算
参考答案:B

解析:可行性就分成那几个部分:技术、时间、社会、经济、法律等等,质量问题属于编码时产生的问题

15.  可行性分析中,系统流程图用于描述(     )。


A) 新系统
B) 当前逻辑模型
C) 目标系统
D) 当前运行系统
参考答案:D

解析:死记,系统流程图就是通常用于描述当前运行系统的情况。

16.  一个模块把数值作为参数传送给另一个模块,这种耦合方式称为(     )。


A) 数据耦合
B) 公共耦合
C) 控制耦合
D) 特征耦合
参考答案:A

解析:定义问题,跟数值相关,其实只有A比较相符;公共耦合就是多个模块共享,比如全局变量;控制耦合就是在一个模块里面调用另一个模块的功能;特征耦合比较抽象,我理解的是就像编写函数的数据类型作为分类的关键字一样。

17.  变换流的DFD由三部分组成,不属于其中一部分的是(     )。


A) 事务中心
B) 变换中心
C) 输入流
D) 输出流
参考答案:A
解析:DFD图就是数据流图,输入,变换、输出三部分。事务中心倾向于事务处理和逻辑,和数据处理的关系不是很大了

18.  软件设计在下面哪个阶段进行(     )。


A) 编码
B) 可行性研究
C) 维护
D) 需求分析
参考答案:D

解析:不知道谁选的C,软件设计肯定是在要在编码和维护之前,需求分析之后了,但是可行性研究还在需求分析之前,所以综合下来选D最稳

19.  详细设计的任务是确定每个模块的(     )。


A) 算法
B) 功能
C) 调用关系
D) 输入输出数据
参考答案:A

解析:详细设计也是软件设计的部分,但是硬记比较好,B是肯定排除的,这是需求分析的工作

20.  下面说法正确的是(     )。


A) 经过测试没有发现错误说明程序正确
B) 测试的目标是为了证明程序没有错误
C) 成功的测试是发现了迄今尚未发现的错误的测试
D) 成功的测试是没有发现错误的测试
参考答案:C

解析:A、太绝对了

B、也绝对了,是为了尽量发现错误以求改进

D、测出错误才是好测试

判断题

21.  原型化开发方法包括生成原型和实现原型两个步骤。


A) 正确
B) 错误
参考答案:A
解析:原型化开发方法就是生成原型和实现原型两个步骤

22.  软件工程过程应该以软件设计为中心,关键是编写程序。


A) 正确
B) 错误
参考答案:B

解析:都说以软件设计为中心了,怎么仅仅只有编写程序是关键呢。

23.  在可行性研究中最难决断和最关键的问题是经济可行性。


A) 正确
B) 错误
参考答案:B

解析:其实我觉得每个可行性都稍微有点最难决断的特征,不过有提到技术可行性是关键。

24.  需求分析和系统设计是最复杂的两个阶段,因此软件生命周期中时间最长的阶段一般就是两者之一。


A) 正确
B) 错误
参考答案:B

解析:前半句不分析,软件生命周期最长的阶段应该是维护阶段才对

25.  编码的依据是详细设计说明书。


A) 正确
B) 错误
参考答案:A
解析:详细设计文档里面就是各模块的描述、算法、数据结构等信息

26.  设计用户界面只需要计算机科学的理论和知识,而不一定需要认知心理学以及人-机工程学、语言学等学科的知识。


A) 正确
B) 错误
参考答案:B

解析:认知心理学,就是好看的皮囊才能吸引用户的,没皮囊谁看你功能好不好呢

27.  单元测试通常由开发人员而不是测试人员来完成。


A) 正确
B) 错误
参考答案:A

解析:单元测试属于开发人员开发的时候顺手就做的事情

28.  瀑布模型的优点之一是,如果发现问题修改的代价很低。


A) 正确
B) 错误
参考答案:B
解析:恰恰相反,需求改变也算作发现问题修改的一环,但这个代价就很大,需要从头来一遍

29.  软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。


A) 正确
B) 错误
参考答案:A
解析:读着没什么毛病

30.  过程描述语言可以用于描述软件的系统结构。


A) 正确
B) 错误
参考答案:B

解析:过程性描述语言都着重在过程了,那当然是用于描述软件的行为的。而描述软件的系统结构应该是结构化描述语言或者图形化建模语言

简答题

31.  软件需求分析的过程也称之为需求开发,请描述需求开发包括哪几个步骤?

答案:

1)需求获取(需求调查):通过调研访谈、实地考察等方法开展的需求收集、发现、提炼等活动。
2)需求分析(需求描述):对获取的需求从系统的角度进行分析与描述。
3)编写文档:撰写需求规格说明书。
4)需求验证(需求评审):对需求文档进行一致性、完整性、现实性与有效性进行验证。

解析:先做调研,再做分析,编写需求规格说明书,最后评审

32.   概述瀑布模型、原形模型、增量模型、螺旋模型分别适用于什么项目的开发? 

答案:

1)、瀑布模型适用于软件需求明确,开发技术成熟,工程管理较严格情形。(质量要求高,周期长、开型项目)。
2)、原形模型适合于时间相对较短,需求不太明确,可以先尽快构建成一个原型的应用系统。
3)、增量模型灵活性很强,适用于软件需求不明确、设计方案有一定风险的软件项目,一次投资性投资太高或功能太多也可考虑增量模型。
4)、螺旋模型适合于大型复杂系统,风险较高的项目,吸收了“演化(推进)”概念,可使开发人员和客户了解对每个演化层的风险,继而做出反应。

解析:瀑布模型不用说,需求明确,不会出现需求更改的情况下就用它,而且项目管理要严格,开发过程中不会出现问题
原型模型就是让你能快速拿一个demo出来给客户看,给需求不明确的项目用的

增量模型也是需求不明确时(尤其是加需求的),就一点一点往上面补充,

螺旋模型使用于风险大的系统(看风险分析那么多),多演化多推进,基本每个阶段都能分析演化层的风险,进而调整

33.  写出模块内聚和耦合由低到高的七个层次。关于内聚和耦合的设计原则是什么?

答案:

内聚由低到高的顺序是:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。
耦合由低到高的顺序是:非直接耦合、数据耦合、特征耦合、控制耦合、外部耦合、公共耦合、内容耦合。
设计原则:高内聚低耦合。
解析:死记

34.  概述在软件测试执行期间,按顺序要进行哪四个阶段的测试及主要测试内容。

答案:

1)单元测试:单元模块内和模块之间的功能测试、容错测试、边界测试、约束测试、界面测试、重要的执行路径测试,单元内的业务流程和数据流程等。
2)集成测试:主要测试单元之间的接口,包括集成后的功能测试、业务流程测试、界面测试、重要的执行路径测试、容错测试、边界测试、约束测试及接口测试等。
3)系统测试:是对整个软件系统与运行环境的总测试,对系统的整体性能,功能,安全性,可靠性等方面的综合测试。在系统测试阶段,也可根据需求规格说明书验证软件是否满足需求,称之为确认测试。
4)验收测试:测试产品是否符合最终用户的要求或者合同的要求。验收测试是软件正式交付使用之前的最后一个阶段。


解析:单元测试就是以模块为主的测试,包括功能、容错、边界(边界值)、约束(对应输入类型)、界面、重要的执行路径等测试,还包括模块内的业务流程和数据流程

集成测试则是在单元测试基础上测试单元之间的接口,突出一个集成,还是功能、容错等等

系统测试是对软件系统和运行环境的测试,除了相关的测试,还有验证是否符号需求规格说明书

验收测试,是指项目交付之前的最后一次测试阶段,最后再检查一次符不符合客户要求

分析设计题

为了控制新冠疫情,现计划开发健康码APP,功能如下:通过手机号码注册为个人用户后,可查询健康码状态(红、黄、绿),以及核酸检查结果(阴、阳)。检疫人员批量将个人用户核酸检结果输入系统。若检测结果为阳性则该用户的健康码将转为红码。若个人用户为密接人员,防控办可将其健康码赋为红码或黄码。当个人健康码被赋为黄码后,需短信通知该用户进行核酸检测。当个人健康码被赋为红码后,系统生成隔离任务书给警察对该用户施行隔离。防控办可查询疫情报告。

绘制数据流程图(顶层之下一层)。

解析:直接分析流程:里面出现的实体有个人用户、检疫人员、防控办、警察;数据存储在于用户信息库、健康码状体库、核酸结果库、密接人员信息库、隔离任务库、疫情报告库

那首先顶层设计上如下:

往下扩充则变成:

将前面小题绘制的数据流程图,转化为软件结构图。

答案:生成的软件结构图

选择前一小题软件结构图中的一个过程,绘制N-S图描述其逻辑处理过程。要求所选过程不能是注册、登录、用户管理等通用功能,必须是与健康码业务相关的功能。

答案:这里我取查询健康码吧

我随便画的,不要拷打我


论述题

35.  新冠疫情下,某校急需一款在线教学系统。时间紧任务重。由于你曾在大学阶段的软件工程科目取得了优异成绩,因而获得了这一机会被安排为项目经理负责该项目的开发任务,请结合该系统的业务、所学的软件工程知识,论述你开发该项目的过程,要求不少于500字。

我这里拿gpt-4o跑一个论述来,感觉这种题只要能有自己的观点应该都好得分:

作为项目经理,我将负责开发一个在线教学系统,以应对新冠疫情下的紧急需求。整个开发过程将严格按照软件工程的标准流程,包括可行性研究、需求分析、概要设计、详细设计、编码实现、测试和维护等阶段。以下是详细的开发过程分析。

### 一、可行性研究

在项目启动之初,我们首先进行可行性研究。通过对当前市场需求、技术可行性、经济可行性和时间可行性的评估,我们确定该项目在技术上可以实现,并且在经济和时间上也是可行的。通过与校方和教学人员的初步沟通,我们确认在线教学系统的需求紧迫且具备高优先级,项目必须快速上线以满足教学需求。

### 二、需求分析

可行性研究完成后,我们进入需求分析阶段。通过与校方领导、教学人员、学生等利益相关者进行详细的沟通,我们收集并确定了系统的功能需求和非功能需求。功能需求包括用户注册与登录、课程管理、在线直播授课、作业布置与提交、考试与测评、讨论区、消息通知等;非功能需求包括系统的性能要求、安全要求、可扩展性和易用性等。通过需求分析文档(SRS)的编写,我们确保所有的需求被准确记录和确认。

### 三、概要设计

在概要设计阶段,我们对系统进行模块划分,确定系统的总体结构。系统主要包括用户管理模块、课程管理模块、在线直播模块、作业与考试模块、讨论区模块和通知模块等。我们将系统架构设计为基于微服务的架构,以提高系统的可扩展性和维护性。概要设计文档中详细描述了各模块的功能和相互关系,并确定了关键技术选型,如选择合适的直播技术和数据库系统。

### 四、详细设计

详细设计阶段,我们对每个模块进行详细的设计,确定每个模块的内部结构和实现方式。详细设计文档(DDD)将包括模块的类图、时序图、数据库设计、接口设计等。通过详细设计,我们确保每个模块的实现细节清晰可见,并为后续的编码工作提供详细指导。

### 五、编码实现

编码阶段,我们按照详细设计文档进行系统的编码实现。为了提高开发效率和代码质量,我们采用了敏捷开发的方法,将开发过程划分为多个迭代,每个迭代都完成一定功能的实现并进行测试。开发过程中,我们使用版本控制工具(如Git)进行代码管理,确保团队成员协同工作。代码编写过程中,我们严格遵循编码规范和最佳实践,以提高代码的可读性和可维护性。

### 六、测试

测试阶段,我们进行单元测试、集成测试、系统测试和验收测试。通过单元测试,我们确保每个模块的功能正确性;通过集成测试,我们验证模块之间的接口和交互;通过系统测试,我们确保整个系统的功能和性能达到预期;通过验收测试,我们邀请校方和教学人员进行系统体验,确认系统满足所有需求。测试过程中,我们使用自动化测试工具提高测试效率,并记录和跟踪所有发现的问题,确保问题在发布前得到解决。

### 七、维护

系统上线后,我们进入维护阶段。通过监控系统运行情况,我们及时发现并解决运行中的问题。我们还根据用户反馈,不断优化系统性能和用户体验,并根据需求变化进行功能扩展。维护阶段包括定期的系统更新、漏洞修复和技术支持等。

### 总结

通过以上规范的软件工程过程,我们将确保在线教学系统的高质量和高可靠性。在开发过程中,我们结合所学的软件工程知识和最佳实践,通过科学的管理和高效的开发方法,按时交付满足需求的在线教学系统。该系统将为学校在疫情期间的正常教学提供有力支持,同时提升学校的数字化教学水平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值