软工课后习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题一
一、填空题
1.软件是计算机系统中与硬件相互依存的另一部分,是包括___程序____、___数据____及其相关文档的完整集合。

2.软件工程包括3个要素:__方法_____ 、__工具_____和___过程____ 。

3.软件开发的基本方法包括__结构化方法_____和___面向对象方法____ 。

二、选择题
1.结构化程序设计主要强调程序的( C )。

A.效率
B.速度
C.可读性
D.大小
2.开发软件需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作( B )。

A.软件投机
B.软件危机
C.软件工程
D.软件产生
3.以下说法中错误的是( C )。

A.软件的质量保证工作不能等到编码阶段结束之后再进行
B.在软件开发过程中需求是经常变化的
C.软件产品的开发过程比一般产品的开发过程更容易评价和管理
D.软件开发小组的组成人员的素质应该好,而人数则不宜过多
三、简述题
1.简述软件的特点。

2.简述软件危机的产生及表现。

3.试比较结构化方法和面向对象方法。

习题二
一、填空题
1.软件生存周期的各个过程可以分成三类,即________、________和________ ,开发机构可以根据具体的软件项目进行剪裁。

2.软件生存周期包括计划____需求分析____ 、__软件设计______ 、程序编码、__软件测试______ 、和运行维护6个阶段。

3. ___帮助软件企业对其软件过程的改变进行计划、制订以及实施。

二、选择题
1.瀑布模型本质上是一种(A)。

A.线性顺序模型
B.顺序迭代模型
C.线性迭代模型
D.及早见产品模型
2.需求分析是由分析员了解用户的要求,认真细致地调研。

分析,最终应建立目标系统的逻辑模型并写出(B)。

A.模块说明书
B.软件规格说明书
C.项目开发计划
D.合同文档
三、判断题
1.采用瀑布模型进行软件开发时,软件与用户见面的时间间隔较长,开发风险较大。

()
2.软件设计阶段的任务是程序员选取一种适当的高级程序设计语言,编写每一个功能模块。

()
四、简述题
1.什么是软件过程?它与软件工程是何关系?
2.什么是软件的生命周期?软件生命周期分哪几个阶段?
3.试比较瀑布模型、原型模型、螺旋模型和增量模型。

习题三
一、名称解释
1.可行性研究
2.技术可行性
3.经济可行性
4.需求分析
5.目标系统
6.SA
7.DFD
二、填空题
1.可行性研究的目的是用最小的代价,在尽可能短的时间内,确定_____。

2.可行性研究在进行简要需求分析和设计时,要在高层次上以_____进行。

3.需求分析阶段产生的最重要的文档是_____ 。

4.为解决一个复杂问题,往往采取的策略是_____ 。

5.SA方法中使用半形式化的描述方式表达需求,采用的主要描述工具是_____ 。

6.数据流图中有四种符号元素,它们是_____ 。

7.数据字典中有四类条目,分别是_____ 。

8.在IDEF0图中,表示系统功能的图形称为_____图形。

9.在画分层的DFD时,父图与子图的输入/输出数据流要_____ 。

10.用于描述基本加工的小说明的三种描述工具是_____ 。

三、选择题
1.研究硬软件资源的有效性是进行()研究的一方面。

A.技术可行性
B.经济可行性
C.社会可行性
D.操作可行性
2.可行性研究要进行的需求分析和设计应是()。

A.详细的
B.全面的
C.简化、压缩的
D.彻底的
3.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的()。

A.细节
B.输入与输出
C.软件的作者
D.绘制的时间
4.需求规格说明书的内容还应包括对()的描述。

A.主要功能
B.算法的详细过程
C.用户界面及运行环境
D.软件的性能
5.需求规格说明书的作用不应包括()。

A.软件设计的依据
B.用户与开发人员对软件要做什么的共同理解
C.软件验收的依据
D.软件可行性研究的依据
6.SA方法用DFD描述()
A.系统的控制流程
B.系统的数据结构
C.系统的基本加工
D.系统的功能
7.一个局部数据存储只有当它作为()时,就把它画出来。

A.某些加工的数据接口
B.某个加工的特定输入
C.某个加工的特定输出
D.某些加工的数据接口或某个加工的特定输入/输出
8.对于分层的DFD,父图与子图的平衡指子图的输入、输出数据流同父图相应加工的输入、输出数据流()。

A.必须一致
B.数目必须相等
C.名字必须相同
D.数目必须不等
9.需求分析阶段不适用于描述加工逻辑的工具是()。

A.结构化语言
B.判定表
C.判定树
D.流程图
10.SA方法的分析步骤是首先调查了解当前系统的工作流程,然后()。

A.获得当前系统的物理模型,抽象出当前系统的逻辑模型,建立目标系统的逻辑模型
B.获得当前系统的物理模型,抽象出目标系统的逻辑模型,建立目标系统的物理模型
C.获得当前系统的物理模型,建立当前系统的物理模型,抽象出目标系统的逻辑模型
D.获得当前系统的物理模型,建立当前系统的物理模型,建立目标系统的物理模型
11.SA方法的基本思想是()
A.自底向上逐步抽象
B.自底向上逐步分解
C.自顶向下逐步分解
D.自顶向下逐步抽象
12.初步用户手册在()阶段编写。

A.可行性研究
B.需求分析
C.软件概要设计
D.软件详细设计
四、简答题
1.可行性研究的任务是什么?
可行性研究的基本任务是对拟建项目的技术、工程、经济指标进行深入细致的调查研究、全面分析和多方案比较,从而对拟建项目是否应该建设,以及如何建设作出论证和评价。

一般来说,系统可行性研究可从技术可行性(Technical Feasibility)、经济可行性(Economic Feasibility)和运行可行性(Operational Feasibility)三个方面来考虑。

(1)技术可行性。

要确定使用现有的技术能否实现系统,就要对要开发系统的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,系统能否实现。

这里的资源包括已有的或可得到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。

技术可行性一般要考虑的情况包括,在给出的限制范围内,能否设计出系统并实现必须的功能和性能;可用于开发的人员是否存在问题。

可用于建立系统的其他资源是否具备;相关技术的发展是否支持这个系统;开发人员在评估技术可行性时,一旦估计错误,将会出现灾难性后果。

(2)经济可行性。

进行开发成本的估算以及了解取得效益的评估,确定要开发的系统是否值得投资开发。

对于大多数系统,一般衡量经济上是否合算,应考虑一个最小利润值。

经济可行性研究范围较广,包括成本-效益分析、公司经营长期策略、开发所需的成本和资源、潜在的市场前景等。

成本-效益分析的目的是从经济角度评价开发一个新的系统是否可行。

成本-效益分析首先是估算新系统的开发成本,然后与可能取得的效益进行比较和权衡。

效益分有形效益和无形效益两种。

有形效益可以用货币的时间价值、投资回收期、纯收入等指标进行度量;无形效益主要从性质上、心理上进行衡量,很难直接进行量的比较。

系统的经济效益等于因使用新的系统而增加的收入加上使用新的系统可以节省的运行费用。

运行费用包括操作人员人数、工作时间、消耗的物资等。

(3)运行可行性。

包括法律可行性和操作使用可行性等方面。

法律方面主要是指在系统开发过程中可能涉及的各种合同、侵权、责任以及各种与法律相抵触的问题。

操作使用方面主要指系统使用单位在行政管理、工作制度和人员素质等因素上能否满足系统操作方式的要求。

2.什么是需求分析?该阶段的基本任务是什么?
3.简述结构化分析方法的步骤。

4.数据流图与数据字典的作用是什么?画数据流图应注意什么?
五、应用题
1.某电器集团公司下属一个成套厂(产品组装)和若干零件厂等单位,成套厂下设技术科、生
产科、供应科等基层单位。

现要建立一个计算机辅助企业管理系统,其中:
生产科的任务是:
(1)根据销售公司转来的内部合同(产品型号、规格、数量、交货日期)制定车间月生产计划;
(2)根据车间实际生产日报表、周报表调整月生产计划;
(3)以月生产计划为依据,制定产品设计(结构、工艺)及产品组装月计划;
(4)将产品的组装计划传达到技术科,将组装月计划分解为周计划,下达给车间。

技术科的任务是:
(1)根据生产科转来的组装计划进行产品结构设计,产生产品装配图给生产科,产生外购需求计划给供应科,并产生产品自制件物料清单;
(2)根据组装计划进行产品工艺设计(冲压、喷漆、焊接等),根据产品自制件物料清单产生工艺流程图给零件厂。

供应科的任务是:
(1)根据技术科的外购需求计划和仓库的缺货通知单及月盘存表制定采购计划给采购员;
(2)对采购来的材料进行库存管理(登录、查询、修改、删除)。

请根据以上文字叙述画出企业管理系统的分层DFD图。

2.假设某航空公司规定,乘客可以免费托运行李的重量不超过30公斤。

当行李的重量超出30公斤时,对一般舱的国内乘客超重部分每公斤收费4元,对头等舱的国内乘客超重部分每公斤收费6元。

对国外乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。

试画出相应判定表。

设乘客托运行李的重量为W,则判定表如表3-1所示。

表3-1 题2的判定表
习题四
一、填空题
1.变换型系统由3部分组成:________、________和________ 。

2.模块分解的基本原则是________ 。

3.在软件开发过程中必须遵循的软件工程原则有:________ 、________ 、________和________模块独立性。

二、选择题
1.模块本身的内聚是模块独立性的重要度量因素之一,在七类内聚中,具有最强内聚的一类是(D)。

A.顺序性内聚
B.过程性内聚
C.逻辑性内聚
D.功能性内聚
2.某模块的功能是打印录取通知书或不录取通知书,调用模块可通过向此模块传递布尔标志信息决定本次调用哪种通知书的打印,这种模块之间的耦合称为(D)。

A.数据耦合
B.混合耦合
C.公共耦合
D.控制耦合
3.模块间的(B)称为模块的耦合,它是衡量模块间结构性能的重要指标。

A.调用关系
B.信息联系方式
C.层次关系
D.界面
4.在结构化方法中,N-S图应属于软件开发中的哪一阶段?(A)
A.详细设计
B.需求分析
C.总体设计
D.编程调试
5.PAD(Problem Analysis Diagram)图是一种(B)工具。

A.系统描述
B.详细设计
C.测试
D.编程辅助
三、判断题
1.总体设计的任务是设计系统的框架和概貌。

()
2.子系统之间数据的依赖性要尽量大。

()
3.在模块结构图中,调用的箭头总是由被调用模块指向调用模块。

()
4.一个合理的子系统内部联系强。

()
5.过程设计语言是可执行的。

()
四、简述题
1.如何理解模块的独立性?用什么指标来衡量模块的独立性?
2.结构设计有哪些原则?
3.软件详细设计的主要任务是什么?
4.软件详细设计的原则是什么?
5.详细设计的工具有哪几类?请比较它们的优缺点?
五、应用题
根据以下数据流程图画出模块结构图
2.试用PAD图、N-S图和PDL语言表示下面的框图。

习题五
一、名词解释
1. 软件测试
2.黑盒法
3.白盒法
4.渐增式测试
5.非渐增式测试
6.调试
7.编码
8.程序设计风格
二、填空题
1.软件测试是为了__发现程序错误_______而执行程序的过程。

2.运行被测程序的方法称为__动态_______测试。

3.动态测试中,主要测试软件功能的方法称为___黑盒______法。

4.选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻辑覆盖标准称为___判定覆盖______ 。

5.要覆盖含有循环结构的所有路径是不可能的,一般通过限制___循环次数______来测试。

6.用等价类划分法设计测试用例时,如果被测程序的某个输入条件规定了取值范围,则可确定一个合理的等价类和___二个无效等价类______ 。

7.凭经验或直觉推测程序中可能存在的错误而设计测试用例的方法是__错误推测法______。

8.集成测试中的具体方法是__非渐增式和渐增式______。

9.确认测试阶段的两项工作是___1.进行确认测试2软件配置审查_____。

10.在单元测试中,测试一个模块时,需要设计__驱动模块、桩模块______。

11.与编码风格有关的因素有数据说明、语句构造、输入/输出、效率等,其中还有一个重要
的因素是__源程序文档化______。

三、选择题
1.测试的关键问题是(B)。

A.如何组织软件评审
B.如何选择测试用例
C.如何验证程序的正确性
D.如何采用综合策略
2.软件测试用例主要由输入数据和(C)两部分组成。

A.测试计划
B.测试规则
C.预期输出结果
D.以往测试记录分析
3.成功的测试是指运行测试用例后(B)。

A.未发现程序错误
B.发现了程序错误
C.证明程序正确
D.改正了程序错误
4.下列几种逻辑覆盖标准中,查错能力最强的是(D)。

A.语句覆盖
B.判定覆盖
C.条件覆盖
D.条件组合覆盖
5.在黑盒测试中,着重检查输入条件组合的方法是(D)。

A.等价类划分法
B.边界值分析法
C.错误推测法
D.因果图法
6.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是(A)。

A.系统功能
B.局部数据结构
C.重要的执行路径
D.错误处理
7.软件测试过程中的集成测试主要是为了发现(C)阶段的错误。

A.需求分析
B.概要分析
C.详细设计
D.编码
8.不属于白盒测试的技术是(D)。

A.路径覆盖
B.判定覆盖
C.循环覆盖
D.边界值分析
9.集成测试时,能较早发现高层模块接口错误的测试方法为(A)。

A.自顶向下渐增式测试
B.自底向上渐增式测试
C.非渐增式测试
D.系统测试
10.确认测试以(A)文档作为测试的基础。

A.需求规格说明书
B.设计说明书
C.源程序
D.开发计划
11.项目的应用领域是选择编程语言关键的因素之一,不适合作为项目应用领域的类型是
(D)。

A.系统软件
B.数据处理与数据库应用
C.实时处理
D.UNIX操作系统
12.为了提高易读性,源程序内部应加功能性注释,用于说明(A)。

A.模块总的功能
B.程序段或语句的功能
C.模块参数的用途
D.数据的用途
13.程序设计语言的心理特性在语言中表现不应包括(C)。

A.歧义性
B.简洁性
C.保密性
D.传统性
14.程序设计语言的工程特性其中之一表现在(A)。

A.软件的可重用性
B.数据结构的描述性
C.抽象类型的描述性
D.数据库的易操作性
15.程序设计语言的技术特性不应包括(D)。

A.数据结构的描述性
B.抽象类型的描述性
C.数据库的易操作性
D.软件的可移植性
四、简答题
1.软件测试的目的是什么?软件调试的目的是什么?
2.白盒法有哪些逻辑覆盖标准?这些标准有什么关系?
3.属于黑盒法的测试用例设计方法有哪几种?试对这些方法作比较。

4.软件测试要经过哪几个阶段?各个阶段与什么文档有关?
5.渐增式测试与非渐增式测试有哪些区别?用渐增式测试时具体采用什么方法和策略组装模块?
6.在项目开发时,选择程序设计语言通常考虑哪些因素?
7.什么是程序设计风格?应在哪些方面注意培养良好的设计风格?
五、应用题
下图描述了某个子程序的处理流程,根据判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等五种覆盖标准,从供选择的答案中分别找出满足相应标准的最小的测试数据组。

(1) a=5b=1(2)a=5b=-1
(3) a=5 b=1 (4) a=5 b=1
a=-5 b=-1 a=0 b=-1
(5) a=5 b=-1 (6) a=5 b=1
a=-5 b=1 a=0 b=0
a=-5 b=-1 a=-5 b=-1
(7) a=5 b=1 (8) a=5 b=1
a=0 b=1 a=0 b=-1
a=0 b=-1 a=-5 b=1
a=-5 b=1 a=-5 b=-1
流程图如下:
习题六
一、填空题
1.用例之间的关系可以有包含关系、__扩展关系____和_泛化关系_____ 。

2.面向对象的基本特征包括:抽象、封装、__继承____和__多态____ 。

3.类与类之间可以具有关联、聚合、______和__泛化____等关系。

依赖
二、选择题
1.计算机由中央处理器、内存、软盘、显示器、键盘、鼠标等组成。

那么计算机类和这些类之间的关系是(D)。

A.泛化关系
B.实现关系
C.包含关系
D.聚集关系
2.下列UML图形中,()不属于UML的静态视图。

A.类图
B.部署图
C.构件图
D.包图
3.下列关于面向对象的说法中,错误的有(B)。

A.面向对象方法的一个重要思想,就是尽可能模拟人类习惯的思维方式来进行软件开发,使描述问题的问题域与实现解法的解空间在结构上尽可能一致
B.“分而治之”的思想是面向对象的最基本的特征
C.封装是一种信息隐蔽技术,封装可用于把数据(属性)和方法(函数)包围起来,以实现事物
独立性
D.面向对象方法与传统的软件工程方法相比,具有比较明显的优势,在各个层面对软件的开发都有着非常积极的影响
三、判断题
1.参与者是系统的一部分,是用例图的重要组成部分。

(错)
2.面向对象建模的目的就是要为正在开发的系统指定一个精确、简明和易于理解的对象模型。

(对)
3.在面向对象方法中,类和对象是相同的。

(错)
4.面向对象分析、面向对象设计、面向对象编程、面向对象测试必须按照顺序来进行,不能颠倒或重复。

(错)
四、简述题
1.简述什么是对象,什么是类。

2.简述面向对象的开发过程。

3.简述UML的建模机制有哪两种?每种建模机制通过哪些图来表达?
4.试分别举例说明UML中类之间的关系有哪些?
习题七
一、填空题
1.面向对象分析的步骤包括:分析问题域建立用例模型、发现和定义对象和类__识别对象…______、________ 、________和________ 。

P147
2.面向对象分析的第一步就是分析用户需求,在此基础上建立___用例_____模型。

3.用户需求包括系统的功能、性能、可靠性等非技术性要求,其中需求分析阶段需要着重考虑的是用户对系统的__功能______要求。

二、选择题
1.在使用用例图对系统进行分析建模时,需要对参与者进行建模。

参与者之间的关系主要有
(C)。

A.关联关系
B.依赖关系
C.泛化关系
D.以上都不是
2.在使用用例图对系统进行分析建模时,需要对用例之间关系进行建模。

用例之间的关系主要有:(D)。

A.包含关系
B.扩展关系
C.泛化关系
D.ABC都是
3.从软件功能需求来看,分析类根据其功能和作用可以划分为(D)。

A.实体类
B.边界类
C.控制类
D.ABC都是
三、判断题
1.参与者是与系统进行交互的外部实体,参与者只能由人来承担。

(错)
2.对象的内部特性包括对象的属性和服务。

(对)
3.一般—特殊结构又称继承关系,表示“hasa”关系。

(错)
4.通过对用例场景建立用例图,可以为类添加需要的行为(方法),同时也有可能发现系统中需要而在前面工作中并没有发现到的类。

(对)
四、简述题
1.简述面向对象分析的步骤。

2.简述需求获取的主要方法。

五、应用题
1.某科技开发企业聘用了多名员工(Employee),每个员工的信息包括员工号码、姓名、性别、地址和出生日期等信息。

员工分为管理人员(Manager)、研究人员(Researcher)、工程师(Technician)、技术工人(Worker)和保安人员(SecurityPersonnel)等。

该公司目前承担多个科研项目(Project),每个项目由一个由各种人员组成的项目小组(ProjectGroup)承担,项目小组由一名研究人员负责。

一个研究人员仅可以负责一个项目小组。

其他成员可以参加多个项目组。

项目信息包括项目名称、开始日期、利润和项目工期等信息。

公司在每个月末给每个员工邮寄一张支票,支票上的
数额与项目的利润和工期相关。

请绘制一张类图描述上述情况。

要求:给出相关的类、属性和类之间的关系。

2.试使用顺序图描述学生选课用例相关的对象交互行为。

3.饮料销售机用于顾客自助购买饮料。

不同饮料价格不同,顾客购买饮料的过程如下:顾客首先向饮料销售机中投入硬币,饮料销售机的金额计算器负责判断硬币面值是否有效,待金额计算器累加饮料销售价格时对应饮料的选择键会亮起来,顾客可以按下选择键来购买饮料;顾客在按下选择键前或需要找零时,若按饮料销售机的退币键,饮料销售机会将剩余金额退给顾客。

试用面向对象分析的方法绘制系统的用例图。

习题八
一、填空题
1.面向对象设计的准则包括:模块化、内聚性和耦合性、__复用性_____。

P126
2.对于复杂的系统而言,降低复杂性是将系统模块化,也就是将一个复杂的大系统分解为若
干个相对简单的较小部分,称为__子系统_____ 。

3.在系统设计过程中,需要完成的主要任务有:子系统划分、体系结构设计、人机交互界面设计和___数据库设计____等相关工作。

二、选择题
1.作为系统的高层模块,子系统在设计时也应该遵循软件设计的基本策略,在划分子系统时,应该考虑的原则包括(D)。

A.模块的划分应便于总的系统设计阶段实现
B.子系统应有良好的接口
C.每个模块的功能简单明确,内容简明易懂,任务清楚明确,以便易于修改
D.以上都是
2.下列关于面向对象设计的说法中,正确的有(C)。

A.系统要完成的业务处理功能和用户界面要是紧密相关的,不能相互独立
B.面向对象系统的数据存储只能选择面向对象的数据库管理系统,而无法使用关系型数据库
C.系统分解与问题域的主题划分不同,这里的子系统既不是一个对象也不是一个功能,而是类、关联、操作、事件和约束的内聚集合
D.在进行体系结构设计时选择B/S体系结构是最好的
3.保证良好设计的类与方法的设计关系到软件的可扩充性、可靠性、可维护性和灵活性,下列关于设计类和方法中我们需要遵循的准则中错误的有(D)。

A.对类、方法、属性给出有意义的名字,以便见名知义
B.始终在构造函数内初始化数据,可以定义不同重载版本的构造函数
C.一致的排列构成每个类的元素。

例如首先定义常量,然后是构造函数,再然后是静态方法,接着是其他方法、实例变量,最后是静态变量
D.所有的属性都需要单独的存取程序、更换程序方法
4.在设计算法的过程中,算法的设计者必须做到(D)。

A.选择实现操作花费最小的算法
B.给算法选择最合适的数据结构
C.必要时定义新的内部类和操作
D.以上都是
三、判断题
1.为了使用方便,在进行类和方法设计时可以将所有的属性和字段声明为public类型。

(错)
2.类的命名可以按照自己的需要为类起名字。

(对)
3.使用abstract修饰符修饰的类可以被继承。

(错)
四、简述题
面向对象设计阶段包括那几项任务?每项任务的主要内容是什么?
五、应用题
1.如下图所示,表达了实体类人(person)类与学生(student)类、教师(teacher)类之间的继承关系。

试对这个类图进行数据库设计。

2.试对学生(student)类的DeleteStudent()方法进行算法设计。

习题九
一、填空题
1.广义的软件测试实际是由确认、验证和__测试_____3个方面组成。

2.针对OOA实现步骤主要包括:对对象的测试、对对象的属性和方法的测试、对对象外部联系的测试和_______ 。

3.面向对象软件的维护需要的两个基本条件是_______和_______ 。

二、选择题
1.良好的面向对象程序设计风格是非常重要的,在进行面向对象实现时需要遵循的准则中错误的有()。

A.尽量提高代码的可重用性,可重用性主要体现在使用自己已经编制好的类
B.尽量提高系统的可扩充性,便于系统升级和维护
C.提高系统的稳健性,使系统具备处理用户操作错误的能力
D.为了在效率与稳健性之间做出合理的折中,应该先测试,合理地确定为提高性能应该着重优化的关键部分
2.下列关于软件测试的说法中错误的有()。

A.测试是通过手工或自动方法,使用或评价一个系统的过程,以论证是否满足所规定的需求,或明确期望的结果和实际结果的差异
B.测试可以证明软件是正确的。

相关文档
最新文档