【软件工程】习题及答案

第一章 习题

一、选择题
1.关于引起软件危机的原因,下列选项中,错误的是【 】
A.软件难以维护
B.软件开发的成本难以控制
C.软件的实现缺乏好的算法
D.没有评测软件产品质量的标准
2. 下列关于软件与硬件比较的叙述中,错误的是【 】
A.软件产品的成本容易控制,而硬件的成本难以控制
B.软件开发与硬件生产同样可以采用工程化方法进行管理
C.软件的进度比硬件的进度控制要困难
D.对软件和硬件产品都需要进行质量确认
3.因为程序运行环境、用户使用程序的习惯等因素可能对程序产生新的需求,导致程序需要变更,这种变更被称为【 】
A.软件开发 B.软件复用
C.软件演进 D.软件调试
4. 软件开发的过程需要严格按照先进行需求分析,再进行系统设计,根据设计方案进行编码的软件过程模型是【 】
A.瀑布模型 B.原型模型
C.螺旋模型 D.统一过程模型
二、简答题

  1. 什么是软件?什么是软件工程?什么是软件过程?
  2. 软件需求分析分为哪几个阶段?
  3. 瀑布模型将软件开发分为哪几个阶段?瀑布模型有什么缺点?
  4. 原型模型的基本思想是什么?
  5. 统一过程模型包括哪些软件开发活动?
  6. 在Scrum模型中如何定义冲刺?每日冲刺会议的15分钟内,开发团队成员需要回答哪三个问题?
  7. 请你举出三个适合采用敏捷开发模型的软件项目的实例。

第一章 习题答案

一、选择题答案
1.C 2.A 3.C 4.A
二、简答题答案

  1. 软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及其相关文档的完整集合。软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科,软件工程的基本思想是按工程化的原则和方法组织软件开发。软件过程是为了获得软件产品,在软件工具的支持下由软件工程师遵循一定的步骤完成的一系列软件工程活动。
  2. 软件需求分析的过程可分为以下四个阶段:
    1)可行性研究。
    2)分析用户需求。
    3)描述需求。
    4)需求有效性验证。
  3. 瀑布模型将软件过程划分为需求定义、系统和软件设计、实现与单元测试、集成与系统测试、运行与维护几个阶段。瀑布模型的缺点是:在软件开发过程中很难严格按照瀑布模型按部就班地进行软件开发。
  4. 原型模型的主要思想是首先建立一个能够反应用户主要需要、可运行的软件原型,让用户体验未来系统的概貌,以引导用户提出更为具体、确定的需求。然后,通过与用户的沟通反复改进原型,最终实现完全符合用户需求的软件系统。
    5.统一过程模型包括的活动有:沟通、策划、建模、构建、部署。
    6.需求、分析、设计、演化和交付活动中的每一个活动,其工作任务在相对较短的时间盒(时间盒是一个项目管理术语,表示为完成某些任务而分配的时间段)的期限内完成,称为一个冲刺。每日冲刺会议的15分钟内,开发团队成员需要回答的三个问题是:
    1)自上次团队例会后做了什么?
    2)遇到什么困难?
    3)下次例会前计划做些什么?
    7.手机端的在线购物系统、医院手机端挂号及信息查询APP、抖音APP都适合采用敏捷开发模型。

第二章 习题

一、选择题
1.需求分析的任务是【 】
A.确定客户需要目标系统实现的功能,并提供需求规格说明书
B.确定客户需要目标系统应该达到的时间性能,并提供需求规格说明书
C.确定客户需要系统提供什么样的用户界面,并提供需求规格说明书 D.确定目标系统的功能和非功能需求,并提供需求规格说明书
2. 关于需求分析的步骤,下列选项中正确的是【 】
A.先建立系统的业务模型,再建立系统的逻辑模型
B.先建立系统的逻辑模型,再建立系统的业务模型
C.对业务系统模型进行完善后,再建立系统的逻辑模型
D.先对系统的逻辑模型进行完善后,再建立业务系统的模型
3. 需求规格说明书中,用于对数据进行描述的工具是【 】
A.数据流图 B.数据结构图
C.数据字典 D.数据加工图
4. 下列关于模块独立性的叙述中,正确的是【 】
A.模块间的耦合性仅取决于模块间接口的复杂性
B.模块之间的连接越松散耦合性就越高
C.模块之间的耦合性越高模块的独立性就越强
D.模块的独立性越强系统的可维护性越高
5. 下列关于SC图的叙述中正确的是【 】
A.SC图通常用于描述模块的内部结构
B.SC图用于描述软件系统的模块结构
C.SC图由输入模块构成
D.SC图由输入和输出模块构成
6. 一个完整的模块应当包括【 】
A.执行规定功能的部分和输入部分
B.输入部分、执行规定功能的部分和输出部分
C.执行规定功能的部分和出错处理部分
D.执行规定功能的部分、出错处理部分及返回值
7. 下列图表,用于详细设计的是【 】
A.SC图 B.N-S图 C.数据流图 D.判定树
8. 在程序流程图中,用于表示预定义处理的图标是【 】
A. B. C. D.

二、简答题
1.软件需求分析的任务是什么?需求分析的步骤是什么?
2.需求规格说明书包括哪些内容?有哪些图、表可用于描述需求?
3.需求分析工具由哪几部分组成?
4.什么是软件设计?软件设计分为哪两个步骤?
5.软件系统结构设计的内容有哪些?
6.软件的数据结构设计包括哪些内容?
7.软件详细设计要完成哪些工作?
8.什么是模块?什么是模块的独立性?
9.可以从哪些方面改善系统的初始模块结构?
10.在详细设计阶段,设计人员需要完成哪些任务?
三、应用题
1.银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并打印出存款存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。请用数据流图描绘本系统的功能。

  1. 画出下列伪码程序的程序流程图和盒图。
    START
    IF P THEN
    WHILE q DO
    f
    END DO
    ELSE
    BLOCK
    g
    n
    END BLOCK
    END IF
    STOP

第二章 习题答案

一、选择题答案
1.D 2.A 3.C 4.D 5.B 6.D 7.B 8.D
二、问答题答案
1.需求分析的任务在于完全弄清用户对软件系统的确切要求,并用需求规格说明书的形式表达出来。
需求分析的步骤如下:
1)通过对现实环境的调查研究,获得当前系统的具体模型。
2)去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型。
3)分析当前系统与目标系统的差别、建立目标系统的逻辑模型。
4)对目标系统进行完善和补充,并写出完整的需求说明。
5)对需求说明进行复审,直到确认文档齐全,并且符合用户的全部需求为止。
2.需求规格说明书主要包括以下内容:
1)引言。
2)数据描述。
3)功能描述。
4)性能描述。
5)质量保证。
可用于描述需求的图、表有:数据流图、数据结构图、数据字典、判定树、判定表。
3.需求分析工具由需求描述语言、需求描述数据库、处理和分析系统组成。
4.软件设计是一个把软件需求转化成软件表示的过程。软件设计分为概要设计和详细设计两个步骤。
5.软件系统结构设计的内容有:
1)将一个复杂的系统按功能划分成模块的层次结构。
2)确定每个模块的功能,建立与已确定的软件需求的对应关系。
3)确定模块间的调用关系。
4)确定模块间的接口,即模块间传递的信息。设计接口的信息结构。
5)评估模块划分的质量及导出模块结构的规划。
6.数据结构设计确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计
7. 详细设计过程中,需要完成的工作是:
1)确定软件各个组成部分内的算法以及各部分的内部数据组织。
2)选定某种过程的表达形式(程序流程图、盒图、伪代码等)来描述各种算法。
3)进行详细设计的评审。

8.一般把用一个名字就可调用的一段程序称为“模块”。模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而与软件系统中其他的模块的接口是简单的。
9.可以从以下方面改善系统的初始模块结构:
1)模块功能的完善化
2)消除重复功能,改善软件结构。
3)设计功能可预测的模块,但要避免过分受限制的模块。
4)模块的作用范围应在控制范围之内。
5)尽可能减少高扇出结构
6)控制模块的大小
10.在详细设计阶段,设计人员的任务如下:
1)为每个模块确定采用的算法。选择某种适当的工具表达算法的过程,写出模块的详细过程性描述。
2)确定每一模块使用的数据结构。
3)确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及关于模块输入数据、输出数据及局部数据的全部细节。
4)为每一个模块设计出一组测试用例,以便在编码阶段对模块代码进行预定的测试
三、应用题答案

  1. 答案:

2.程序流程图:

盒图:

第三章 习题

一、选择题
1.下列关于对象与类的关系的描述正确的是【 】
A.对象是类的一种实例 B.对象是类中的操作
C.对象是类的封装 D.对象是类中的属性
2.下列关于用例图的叙述中,正确的是【 】
A.用例图用于描述系统的业务 B. 用例图用于表示系统中类的构成
C.用例图用于描述系统的功能 D.用例图用于表示系统的状态变化
3. 下列选项中,用于显示对象间处理过程分布的图是【 】
A.协作图 B.部署图
C.时序图 D.状态图
4. 基于用例实现的面向对象的建模需要完成的任务不包括【 】
A.了解系统的业务流程,建立活动图模型。
B.从用户与系统交互的角度,确定目标系统功能,建立用例模型。
C.基于用例,通过时序图描述系统内各对象之间的交互关系。
D.了解系统的部署需求,建立部署模型
5. 在需求分析阶段表示目标系统与其他外部系统的关系的模型是【 】
A.系统的静态模型 B.上下文模型
C.系统的组件模型 D.MVC模型
6. 下列选项中,适合作为类的属性的是【 】
A.学生 B.计算机
C.服装 D.手机型号
7. 下列选项中,适合作为类或对象的是【 】
A.员工 B.员工姓名
C.员工所述部门 D.员工身份证号
8. 下列模型能被自动转换为程序代码的是【 】
A.包图 B.组件图
C.类图 D.部署图
9. 时序图中不包括【 】
A.对象 B. 生命线
C.对象的属性 D.活动棒
10. 表达类之间一般性与特殊性关系的是【 】
A.泛化关系 B. 聚合关系
C.关联关系 D.部分与整体的关系
11. 下列关于MVC模式的叙述中,正确的是【 】
A.MVC用视图、数据、操作三个部分组织程序
B.MVC模型将系统分为界面层、业务逻辑层和数据访问层
C.MVC将应用程序划分为视图、控制器、模型三个核心部件
D.MVC应用程序被分成用户界面、计算程序、输出程序三个核心部分
二、简答题
1.说明统一建模语言的用途和适用范围。
2.在面向对象的分析中,主要使用哪5种类型的ULM图?
3. 基于用例实现的面向对象的建模由哪几个步骤组成?
4.总结在面向对象分析过程中进行类图建模的基本步骤。
5.时序图的任务是什么?时序图中包含哪些要素?
6.状态图的作用是什么?如何识别对象的状态空间?
7.面向对象设计要完成哪些工作?面向对象软件设计的基本步骤是什么?
三、应用题
1.用非正式分析法分析确定下述杂货店问题中的对象并确定对象类之间可能有的继承关系。
一家杂货店想使其库存管理自动化。这家杂货店拥有能够记录顾客购买的所有商品的名称和数量的销售终端。顾客服务台也有类似的终端以处理顾客的退货。它在码头有另一个终端处理供应商发货。肉食部和农产品部有终端用于输入由于损耗导致的损失和折扣。
2.建立下述牙科诊所管理系统的分析类模型。
王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软件系统来管理预约。
当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。
系统能够按病人姓名和日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关于所有病人的每天和每周的工作安排。
3.请用面向对象方法分析设计下述的图书馆自动化系统。
设计一个软件以支持一座公共图书馆的运行。该系统有一些工作站用于处理读者事务。这些工作站由图书馆馆员操作。当读者借书时,首先读入客户的借书卡。然后,由工作站的条形码阅读器读入该书的代码。当读者归还一本书时,并不需要查看他的借书卡,仅需读入该书的代码。客户可以在图书馆内任意一台个人电脑上检索馆藏图书目录。当检索图书目录时,客户应该首先指明检索方法(按作者姓名、书名或关键词)。

第三章 习题答案

一、选择题答案
1.A 2.C 3.A 4.D 5.B 6.D 7.A 8.C
9.C 10.A 11.C

二、问答题答案
1.统一建模语言UML是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它可用于对系统的需求分析、设计、浏览、配置、维护和信息控制,适合对诸如由计算机软件、固件或数字逻辑构成的离散系统建模。
2.在面向对象的分析中,主要使用活动图、用例图、时序图、类图、状态图。
3.基于用例实现的面向对象的建模由以下几个步骤组成:
1)通过与用户沟通了解用户的基本需求。
2)确定系统的边界,定义系统做什么和不做什么,以及目标系统和其他外部系统的交互关系,建立上下文模型。
3)了解系统的业务流程,建立活动图模型。
4)从用户与系统交互的角度,确定目标系统功能,建立用例模型。
5)通过识别问题域内的全部实体对象和类,包括定义其属性和方法、类之间层次关系建立系统静态结构模型。
6)基于用例,通过时序图描述系统内各对象之间的交互关系。
7)识别对象的行为和系统的工作过程,利用状态图从事件驱动角度分析对象状态的变化,完善类图。
8)迭代地执行步骤1)~7),直到完成模型的建立。
4.在面向对象分析过程中进行类图建模的基本步骤如下:
1)识别类与对象
2)识别属性
3)确定操作
4)识别关联
5.时序图的主要任务包括如下几项:
1)表达设计人员心中关于将来程序在运行时的对象协作模型
2)验证软件领域模型类图的正确性。
3)为程序员提供编码的蓝图。
时序图中包含的要素有:对象、消息、生命线。
6.状态图的作用是什么?如何识别对象的状态空间?
状态图用来描述一个类对象在不同用例间状态的迁移。
对象状态空间识别步骤如下:
1)识别对象在问题域中的生命周期。
2)确定对象生命周期阶段的划分策略。
3)重新按阶段描述对象生命周期,得到候选状态。
4)识别对象在每个候选状态下的动作,并对状态空间进行调整。
5)分析每个状态的确定因素(对象的数据属性)。
6)检查对象状态的确定性和状态间的互斥性。
7.面向对象软件设计需要完成的工作包括:数据设计或类设计、体系结构设计、接口设计、构件设计。
面向对象软件设计的基本步骤如下:
1)通过建立模型表示系统或产品的体系结构。
2)为各类接口建模,这些接口在软件和最终用户、软件和其他系统与设备及软件和自身组成的构件之间起到连接作用。
3)详细设计系统的软件构件。
三、应用题答案
1.答案:

2.答案:

  1. 答案:

第四章 习题

一、单项选择
1.下列选项中,移动应用不同于传统主机应用的特点是【 】
A.应用与网络相关
B.需要友好的用户界面
C.需要采用工程化方法进行应用开发
D.移动应用需要支持更多样化的人机交互方式
2.关于开发移动应用技术的叙述中,正确的是【 】
A.由于移动设备资源有限,因此开发移动应用适合采用机器级语言
B.由于移动设备硬件的多样性,因此应该在移动硬件上直接开发移动应用
C.针对不同平台的移动应用需要在不同的环境下分开开发
D.移动应用的规模较小,因此其开发适合采用瀑布模型
3. 下列选项中,正确的移动应用开发的5个迭代阶段是【 】
A.可行性分析、需求分析、设计、测试、维护
B.需求分析、设计、编码、测试、维护
C.需求分析、设计、编码、稳固、部署
D.需求分析、设计、开发、稳固、部署
4. 下列选共享中,可用于移动应用的界面设计的是【 】
A.任务模型 B.内容模型
C.接口模型 D.设计模型
5.移动计算环境的层次按照由强控制到弱控制的顺序,三个层次依次为【 】
A.软件即服务层、平台即服务层、基础设施即服务层
B.基础设施即服务层、平台即服务层、软件即服务层
C.平台即服务层、软件即服务层、基础设施即服务层
D.软件即服务层、基础设施即服务层、平台即服务层、
6. 下列选项中,WebApp界面设计中的美学设计不要关注的是【 】
A. 用户界面的功能 B.用户界面的内容
C. 用户界面的布局 D.用户界面的响应时间
7. 导航语义单元是【 】
A.一个导航页面 B.一组关于导航信息的集合
C.一组导航选项 D.信息和相关的导航结构的集合
8. 关于手势测试,下列叙述正确的是【 】
A.手势测试对于所有的移动设备都是必须的
B.通过自动化工具来完成手势测试是效率较高的方法
C.手势测试需要考虑移动设备输入屏幕的大小差异
D.手势测试的结果不会影响移动应用的可访问性
二、问答题
1.移动应用有哪些特征?
2. 例举一些解决移动应用开发的技术因素。
3.哪些因素会影响移动设备电池的待机时间?
4.移动应用的设计包括哪些内容?
5.移动应用提供的处理功能完成哪些任务?
6.移动应用的导航测试要测试哪些内容?
7.为了移动应用的安全性可采取的技术有哪些?
8.导致移动应用性能低的原因有哪些?
9.负载测试和压力测试的任务分别是什么?
三、某网上药店的移动App,主要为满足老年人的购药需求而设计。药店可提供典型功能,而且还为每位客户维护数据库,以便提供药物信息,并且向用户提供可能的药物间潜在的互作用的警告。针对这一移动 App,用户界面的设计应该注意哪些问题?用户体验测试应该包括的内容是什么?

第四章 习题答案

一、选择题答案
1.D 2.C 3.D 4.A 5.B 6.D 7.D 8.C
二、问答题答案
1.移动应用的特征有:强调用户体验、需求及环境较复杂、技术难度更高。
2.解决移动应用开发需要的技术包括:
1)多元化的硬件和软件平台。
2)多种开发框架和程序设计语言。
3)多种具有不同规则和工具的应用商店。
4)开发周期短。
5)用户界面的限制以及传感器与设备之间交互的复杂性。
6)环境的有效利用。
7)电源管理。
8)安全保密性、隐私模式和策略。
9)计算和存储限制。
10)依赖外部服务的应用。构
11)测试的复杂性。
3.影响移动设备电池的待机时间的因素有:背光、存储器读写、无线网络连接的使用、专业硬件设备的利用以及处理器速度。
4.移动应用的设计阶段的工作包括体系结构设计、导航设计、界面设计以及内容设计。
5.移动应用提供的处理功能完成哪些任务?
6.移动应用的导航测试要测试的内容有:
1)确保允许WebApp用户经由 WebApp游历的机制都是功能性的。
2)确认每个导航语义单元都能够被合适的用户类获得。
7.为了移动应用的安全性可采取的技术有:使用防火墙、鉴定、加密和授权技术
8.导致移动应用性能低的原因有:服务器端资源缺乏、不合适的网络带宽、不适当的数据库容量、操作系统不够强大、设计不良的WebApp功能以及可能导致客户-服务器性能下降的其他硬件或软件问题。
9. 负载测试是在多种负载级别和多种组合下,对真实世界的负载进行测试。压力测试是将负载增加到强度极限,以此来确定App 环境能够处理的容量。负载测试的目的是确定 WebApp和其服务器环境如何响应不同的负载条件。对移动 App 进行压力测试是要在极限运行条件下力图查找错误。
三、应用题答案
答案:为了获得一致的界面,首先要用可视化设计建立一致的外观。在设计中强调界面的布局和导航机制的形式,界面信息不易过多。为了指导用户的交互操作,要使用户能直观地理解界面。为了提供导航选项,可以选择网页中位置固定的含义简洁、明确的导航菜单,可以选择使老年人更容易识别和理解的图标作为导航元素,也可以选择链接到内容主题或WebApp功能的生动、易懂的图像。要特别注意在内容层次的每个级别上都应提供一种或多种导航机制。
用户体验测试应该包括的内容:与用户体验相关的测试包括手势测试、虚拟键盘输入、语音输入和识别、警报和异常条件。

第五章 习题

一、单项选择
1.下列选项中,不会采用白盒法进行软件测试的测试阶段是
A.单元测试 B.组合测试
C.系统测试 D.模块测试
2. 关于驱动模块的叙述,下列选项中正确的是
A.驱动模块用于代替被测模块的子模块
B.驱动模块用于代替被测模块的调用模块
C.仅在单元测试阶段需要编写驱动模块
D.仅在组合测试阶段需要编写驱动模
3.对求整数绝对值的函数进行黑盒测试所设计的测试用例中,应将输入数据划分为的等价类个数为
A.1 B.2 C.3 D.4
4. 对求整数绝对值的函数进行判断覆盖测试,至少需要设计的测试用例个数为
A.2 B.3 C.4 D.5
5. 下选项中,软件测试对象一般不包括的是
A.源程序 B.可执行程序
C.概要设计说明书 D.详细设计说明书
6. 关于软件测试的原则,下列说法正确的是
A.软件测试应该尽可能由程序开发者自己完成
B.在编码阶段不需要进行软件测试
C.软件测试工作的目标是保证程序没有错误
D.测试用例需要作为测试文档的一部分予以保留
7. 下列选项中,单元测试阶段进行的路径测试需要测试的内容包括
A.运算的优先次序是否存在错误
B.程序的输入参数的类型是否正确
C.OPEN语句与CLOSE语句是否正确
D.是否存在循环边界值引起的错误
8. 下列方法中,适合于调试小程序的方法是
A.白盒法 B.回溯法
C.黑盒法 D.归纳法
9. 关于测试用例的设计,下列叙述正确的是
A.测试用例中的输入数据必须是合法数据
B.测试用例必须由程序员通过分析程序结构生成
C.测试用例中应该包含程序运行的预期结果
D.测试用例应该覆盖所有的输入/输出组合
10. 某计算机系统的整型数长度为32位,若一个软件系统有两个整型输入数据,一个整型输出数据,则该系统采用穷举测试需要运行的测试案例数量为
A.232个 B.248个 C.264个 D.296个
二、问答题
1.软件测试的目的是什么?
2.什么是黑盒测试?什么是白盒测试?
3.组装测试有哪几种组装模块的方式?
4.什么是系统测试?
5.确认测试阶段需要完成哪些工作?
6.软件测试是否能保证软件没有错误?
7.软件测试的目标是什么?
8. 软件的静态分析工具有哪些功能?动态测试工具有哪些功能?
三、应用题
1.请为下列C语言程序设计语句覆盖和路径覆盖的测试的测试用例。
#include <stdio.h>
int main(){
int A, B, X;
X=0;
scanf(“%d%d%d”,& A,& B);
if(A > 1 && B == 0){
X = X *100;
}
if(A == 2 || B == 2){
X = X + 1;
}
printf(“X = %d\n”, X);
return 0;
}
2、设计一个求整数绝对值的函数并给出用于对其进行黑盒测试的等价类。

第五章 习题答案

一、选择题答案
1.C 2.B 3.C 4.A 5.B 6.D 7.A 8.B
9.C 10.A
二、问答题答案
1.软件测试的目的在于发现软件中存在的错误。一个好的、成功的测试是能发现至今未被发现的错误。
2.黑盒测试方法是测试者把被测程序看成一个黑盒,不管程序的内部结构,仅以程序的
外部功能为根据来设计测试用例。黑盒测试着重测试程序的功能是否正确,也被称为功能测试。
白盒测试是软件测试中的一种测试方式,它将测试重点放在程序的代码级。测试者需要了解程序内部的逻辑结构,从程序的逻辑结构出发,按照一定的原则设计测试用例。通过检查代码中的语句、路径、条件等,以确定代码是否满足用户需求和设计规范。
3.组装测试的方式有一次性组装方式及增殖式组装方式,增殖式组装方式分为自顶向下的组装方式、自底向上的组装方式及混合组装方式。
4.系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下对计算机系统进行一系列的组装测试和确认测试
5.确认测试阶段需要完成的工作包括:进行有效性测试、软件配置复审、进行验收测试、安装测试以及专家鉴定。
6.软件测试不能保证软件没有错误。
7. 软件测试的目标是以最少的时间和人力找出尽可能多的软件中潜在的各种错误和缺陷
8. 软件的静态分析工具的功能有:
1)检查模块中的所有变量是否都已定义,是否引用了未定义的变量,是否有已赋过值但从未使用的变量。
2)检查模块接口的一致性。检查子程序调用时形式参数与实际参数的个数、类型是否一致,输入输出参数的定义与使用是否匹配,数组参数的维数、下标变量的范围是否正确,子程序中使用的外部变量、全局变量定义是否一致等等。
3)检查在逻辑上可能有错误的结构以及不可能被执行到的程序段。
4)建立变量/语句交叉引用表、子程调用顺序表、公用区/子程交叉引用表等。利用它们找出变量错误可能影响到哪些语句,影响到哪些其他变量等。
5)检查被测程序违反编程标准的错误。例如:模块大小、模块结构、注释的规定、某些语句形式的使用,以及文档编制的规定等
6)对一些静态特性的统计功能。如:各种类型源语句的出现次数、标识符在每个语句中使用的情况、函数与过程引用情况、任何输入数据都执行不到的孤立代码段、未经定义或未曾使用过的变量、违背编码标准之处等等。
动态测试工具的功能包括:自动生成测试用例、自动生成驱动模块和桩模块、监视测试的实际覆盖程度、分析测试结果等
三、应用题答案
1.请为下列C语言程序设计语句覆盖和路径覆盖的测试的测试用例。
#include <stdio.h>
int main(){
int A, B, X;
X=0;
scanf(“%d%d%d”,& A,& B);
if(A > 1 && B == 0){
X = X *100;
}
if(A == 2 || B == 2){
X = X + 1;
}
printf(“X = %d\n”, X);
return 0;
}
语句覆盖的测试用例如第五章习题表-1所示:

输入(A,B) 预期结果X
(2,0) 1

路径覆盖的测试用例如第五章习题表-2所示:

输入(A,B) 预期结果X
(2,0) 1
(3,0) 0
(0,2) 1
(3,1) 0
2、设计一个求整数绝对值的函数并给出用于对其进行黑盒测试的等价类。
答案:
#include <stdio.h>
int main(){
int a
scanf(“%d “,& a);
if(a > =0)
printf(”|a| = %d\n”,a)
else
printf(“|a| = %d\n”,-a);
}
用于黑盒测试的等价类有三个:正数、负数和零。
测试用例如第五章习题答案表3所示。

输入a 预期结果|a|
0 0
3 3
-3 3

第六章 习题

一、单项选择
1.任何软件交付使用后都可能需要进行软件维护,下列关于引起软件维护的原因中,错误的是
A.软件投入运行的时间太长
B.软件交付使用后发现了新的错误
C.软件使用一段时间后,用户提出了新的需求
D.软件的运行环境发生了变化,需要进行软件的迁移
2.下列软件维护类型中,因用户提出新的功能需求而进行的软件维护所属的类型是
A.完善性维护 B.适应性维护
C.预防性维护          D.改正性维护
3.下列选项中,会导致软件维护工作量和难度变大的因素是
A.软件文档丰富、详细 B.采用高级程序设计语言
C.采用结构化软件开发技术 D.采用汇编语言编写基于网络的APP
4. 软件维护工作量的模型M=p+Kc-d中,变量C的含义是
A.生产性工作量 B.对复杂性的度量
C.软件维护的工作量 D.对软件熟悉的程度
5.下列选项中,能有效提高软件可维护性的措施是
I.对源程序增加详细的注释  II.提供软件需求说明书 
III.对软件进行充分的测试  VI.提供正确而详细的软件设计文档
A.仅I  B.仅 I、III C.仅II、IV  D.I、II、III、IV
6.下列选项中,属于软件维护中修改程序所产生的副作用有
A.程序注释不详细 B.文档内容与程序不一致
C.程序的算法性能下降 D.软件的灵活性变差
7. 下列角色中,软件申请报告应该提交给
A.配置管理员 B.系统监督员
C.维护管理员 D.程序维护人员
8. 关于软件维护工作的组织,下列叙述中正确的是
A.软件维护机构的工作不需要用户参与
B.软件维护机构中任何人只能承担一种角色的工作
C.软件维护机构中的维护管理员也可以参与程序修改工作
D.必须建立正式的软件维护机构或部门以承担软件维护工作
9. 下列选项中,对于一个基于复杂深度学习框架的智能预测系统,有利于提高其系统可维护性的程序设计语言是
A.C语言 B.机器语言
C.python D.汇编语言
10. 保证软件质量的最佳方法是在软件开发的最初阶段就把质量要求考虑进去,并在开发过程每一阶段的终点设置检查点进行检查。在软件设计阶段的检查点需要完成的检查项目不包括
A.运行计划 B.维护支持计划
C.软件设计方法 D.程序复杂性

二、问答题
1.软件维护有哪几种类型?
2.如何评价软件维护的成本?
3.软件维护的组织机构应该包含哪些角色?
4.软件维护的工作步骤是什么?
5.什么是软件的可维护性?评价软件可维护性的指标有哪些?如何提高软件的可维护性?
6.可理解性好的程序有哪些特点?
三、腾讯开发的微信,你认为还需要进行哪些完善性维护?你是否发现其中有需要进行改正性维护的问题?对微信软件系统的维护应该采取哪些策略?

第六章 习题答案

一、选择题答案
1.A 2.A 3.D 4.B 5.D 6.B 7.C 8.C
9.C 10.D
二、问答题答案
1.软件维护的类型有:改正性维护、适应性维护、完善性维护、预防性维护。
2.下面的公式给出了一个软件维护工作量的模型:
M=p+Kc-d
其中,M是维护中消耗的总工作量,p是生产性工作量,K是一个经验常数,C 是因缺乏好的设计和文档而导致复杂性的度量,d是对软件熟悉程度的度量。这个模型指明,如果使用了不好的软件开发方法、软件文档不齐全、程序难以理解、原来参加开发的人员或小组不能参加维护、维护人员对软件不熟悉,则工作量及成本将按指数级增加。
3.软件维护的组织机构应该包含的角色有:维护管理员、系统监督员、修改负责人、配置管理员、维护人员。
4.软件维护的工作步骤如下图所示:

           图1 软件维护工作的一般步骤

5. 软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行软件修改的容易程度。
评价软件可维护性的指标有:可理解性、可测试性、可修改性、可靠性、可移植性、可使用性、效率。
提高软件的可维护性可从以下四个方面着手:建立明确的软件质量目标和优先级、使用提高软件质量的技术和工具、进行明确的质量保证审查、选择易维护的程序设计语言。
6.可理解性好的程序具有以下特点:
1)模块结构良好、功能完整、程序和文档简明。
2)代码风格及设计风格一致。
3)不使用难以理解或含糊不清的代码。
4) 使用有意义的变量名、数据名和过程名。
三、应用题答案
(此题为开放性问题,答案不唯一),以下答案供参考:、
在改善性维护方面,可以将关机后,服务器保留的文字信息的时间延长到半年或者更长。图片和视频信息仍保留三天。尚未发现需要进行改正性维护的问题。对微信软件系统的维护应该采用敏捷开发的工作方式,以固定周期进行软件维护的迭代。

第七章 习题

一、单项选择
1.下列关于软件项目管理的叙述中,正确的是
A.软件项目团队中的技术人员越多,软件开发的效率越高
B.软件项目管理的对象仅包括软件开发过程和软件产品质量
C.软件项目管理需要对软件的风险进行监控
D.软件项目管理的重点是保证软件的开发进度
2.软件开发初期要确定软件的范围,软件的范围包括
A.软件的质量和成本 B.软件产品和设计方案
C.软件产品和过程 D.软件的功能和性能
3.下列因素中,影响项目开发团队选择软件过程模型的是
A.产品本身的特性 B.开发软件所使用的工具
C.产品的应用领域 D.软件的设计方案
4.下列有关用于成本估算的IBM 模型的叙述中,正确的是
A.IBM 模型是一个静态单变量模型
B.IBM 模型是一个静态多变量模型
C.IBM 模型是一个动态单变量模型
D.IBM 模型是一个动态多变量模型
5.Coco模型用于软件项目的
A.进度估算 B.风险评估
C.成本估算           D.质量度量
6.下列选项中,可用于表示软件项目当前进度的工具是
A.甘特图 B.任务分层图
C.任务网络图            D.应用统计模型
7.若要保证整个项目能按进度要求完成,下列任务中必须保证完成的部分是
A.软件项目中的主要任务 B.工作量最大的任务
C.关键路径上的任务            D.难度最高的任务
8.下列选项中,可度量软件项目中软件生产率的指标是
A.人日 B.人月
C.代码量/人月          D.人年
二、问答题
1.软件项目管理的主要职能是什么?
2.软件项目管理的对象是什么?
3. 软件项目启动阶段需要完成的工作包括哪些?
4.软件质量可以从哪几方面进行度量?
5.软件项目的主要商业风险有哪些?
6.软件开发成本估算方法有哪三类?

第七章 习题答案

一、选择题答案
1.C 2.D 3.A 4.A 5.C 6.A 7.A 8.A
二、问答题答案
1.软件项目管理的主要职能是:
1)制定计划。规定待完成的任务、要求、资源、人力和进度等。
2)建立组织。为实施计划,保证任务的完成,需要建立分工明确的责任制机构。
3)配备人员。任用各种层次的技术人员和管理人员。
4)指导工作。鼓励和动员软件人员完成所分配的工作。
5)检验工作进展。对照计划或标准,监督和检查实施的情况。
2.软件项目管理的对象是:人员、产品、过程和项目。
3. 软件项目启动阶段需要完成的工作包括:
1)确定项目的目标和范围。目标标明了软件项目的目的,范围标明了软件要实现的基本功能,并尽量以定量的方式界定这些功能。
2)考虑可能的解决方案,标明技术和管理上的要求。
3)确定合理、精确的成本估算。
4)进行实际可行的任务分解。
5)制定可管理的进度安排。
4.软件质量可以从正确性、可维护性、完整性、可使用性几方面进行度量。
5.软件项目主要的商业风险有以下5种:
1)市场风险。实现的软件虽然很优秀但缺乏市场,缺乏需要它的用户。
2)建立的软件不适合整个软件产品战略。
3)销售部门不清楚如何推销这种软件。
4)由于课题改变或人员改变等不可预知的因素而失去上级管理部门对项目的支持。
5)预算风险。失去预算或人员的承诺
6.软件开发成本估算方法有:自顶向下的估算方法、自底向上估计法、差别估计法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值