《软件工程》期末总复习题集
实用软件工程期末总复习题集
一、选择题(10题10分)
以下为本书11个章节中的全部选择题,因篇幅关系选择题只罗列了正确选项,通体标红部分考中的概率比较大,读者应重点留意。
第一章选择题:
1.下列软件中正确的是(20世纪60年代提出了软件工程的概念)
2.产生软件危机的主要原因是(软件本身的特点及开发方法不足)
3.软件工程的三要素是(方法、工具和过程)。
4.在下列选项中,(软件工程材料)不属于软件工程学科所要研究的基本内容。
第二章选择题:
5.增量模型本质上是一种(非整体开发模型)。
6.软件过程是(软件开发活动的集合)。
7.软件生命周期模型不包括(用例模型)。
8.包含风险分析的软件过程模型是(螺旋模型)。
9.软件工程中描述生命周期的瀑布模型一般包括需求分析、设计、编码、(测试)、维护等几个阶段。
10.软件开发的瀑布模型中,一般认为可能占用开发人员最多的阶段是(编码阶段)。
11.螺旋模型综合了(瀑布模型和快速原型模型)的优点,并增加了风险分析。
第三章选择题:
12.可行性研究也称为(项目论证)。
13.(技术可行性)研究往往是系统开发过程中难度最大的工作,也是可行性研究的关键。
14.研究软硬件资源的有效性是进行(技术可行性)研究的一方面。
15.软件开发计划是软件工程中的一种(管理)性文档。
第四章选择题:
16.在需求分析之前有必要进行(可行性研究)工作。
17.需求分析是一个(过程),它应该贯穿于系统的整个生命周期中,而不是仅仅属于软件生命周期早期的一项工作。
18.软件需求规格说明书的内容不应该包括(对算法的详细过程描述)。
19.软件需求分析阶段的工作可以分为以下5个方面:对问题的识别、分析、综合、编写需求文档以及(需求分析评审)。
20.进行需求分析可使用多种工具,但(PAD)是不适用的。
21.结构化分析方法的基本思想是(自顶向下、逐步分解)。
22.在E-R图中,包含以下基本要素(实体、属性、关系)。
第五章选择题:
23.面向数据流的软件设计方法可将(数据流)映射成软件结构。
24.模块的独立性是由内聚性和耦合性来度量的,其中内聚性表示的是(模块的功能强度)。
25.Jackson方法根据(数据结构)来导出程序结构。
26.为了提高模块的独立性,模块之间最好是(数据耦合)。
27.在面向数据流的软件设计方法中,一般将信息流分为(变换流和事务流)。
28.总体设计(概要设计)不包括(数据结构设计)。
29.一个模块把一个数值作为参数传递给另一个模块,这两个模块之间的耦合是(数据耦合)。
30.划分模块时,一个模块的(作用范围应在其作用范围内)。
31.详细设计的任务是定义每个模块的(算法和数据格式)。
32.下面不是结构化方法的基本原理的是(自底向上的功能分解)。
第六章选择题:
33.面向对象技术中,对象是类的实例。类有3种成分:(封装)、属性和方法(或操作)。
34.汽车有一个发动机,那么汽车与发动机之间的关系是(整体-部分)关系。
35.(封装)是把对象的属性与操作结合在一起,构成一个独立的对象,其内部信息对外界是隐藏的,外界只能通过有限的接口与对象发生联系。
36.关联是建立(类)之间关系的一种手段。
37.面向对象软件技术的许多强有力的功能和突出的优点都来源于把类组织成一个层次结构的系统。一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是(继承性),一个子类可以获得其父类的全部描述(数据和操作)。
38.所有的对象都可以成为各种对象类,每个对象类都定义了一组(方法)。
39.UML是软件开发中的一个重要工具,它主要应用于(基于对象的面向对象的方法)。
40.(用例图)是从用户使用系统的角度来描述系统功能的图形表达方法。
41.(顺序图)描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
第七章选择题:
42.面向对象模型主要由以下哪些模型组成?(对象模型、动态模型、功能模型)
43.面向对象分析的首要工作是建立(问题的对象模型)。
44.面向对象分析阶段建立的3个模型中,核心的模型是(对象)模型。
45.面向对象的动态模型中,每张状态图表示(某一个类)的动态行为。
46.在考察系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图;另一个是(状态图)。
47.对象模型的描述工具是(类图)。
48.功能模型中所有的(数据流图)往往形成一个层次结构,在这个层次结构中一个数据流图的过程可以由下一层数据流图进行进一步的说明。
49.在面向对象软件开发方法中,类与类之间主要有(继承和耦合)结构关系。
50.下面正确的说法是(类是具有相同属性和操作的对象的集合)。
第八章选择题:
51.面向对象设计阶段的主要任务是系统设计和(对象设计)。
52.(类图)是表达系统类及其相互联系的图示,它是面向对象设计的核心,是建立状态图、协作图和其他图的基础。
53.下面所列的性质中,(可视化)不属于面向对象设计的特性。
54.下列是面向对象设计方法中有关对象的叙述,其中(对象的属性集合是它的特征表示)是正确的。
55.面向对象设计中,基于父类创建的子类具有父类的所有特性(属性和方法),这一特点称为类的(继承性)。
56.下列哪项不是面向对象设计的启发规则?(尽量添加设计的变动)
57.下面哪项不是系统分解的好处?(有利于增加系统依赖性)
58.不属于任务管理子系统的是(人机交互所需输入)
59.以下哪个是人机交互子系统设计的原因?(强调人如何命令系统)
60.在软件系统中,由于需求的变化,一些对象的实现可能会发生变化。为了应对这种“易变对象”的变化,人们提出了(工厂模式)。
第九章选择题:
61.软件实现是软件产品由概念到实体的一个关键过程,它将(详细设计)的结果翻译成用某种程序设计语言编写的且最终可以运行的程序代码。
62.(Eiffel)是一种纯面向对象语言。
63.第一个体现结构化编程思想的程序设计语言是(Pascal)。
64.面对对象设计的结果,实现时(只能使用面向对象语言)。
第十章选择题:
65.软件测试的目的是(发现软件的错误)。
66.白盒测试法又称为逻辑覆盖法,主要用于(单元测试)。
67.在软件工程中,白盒测试方法可用于测试程序的内部结构,此方法将程序作为(路径的集合)。
68.成功的测试是指运行测试用例后(发现了程序错误)。
69.白盒测试是根据程序的(内部逻辑)来设计测试用例的方法。
70.在软件测试中,逻辑覆盖法属于(白盒测试方法)。
71.黑盒测试是从(用户)角度进行的测试,白盒测试是从(开发人员)角度进行的测试。
72.软件测试可能发现软件中的(错误),但不能证明软件(没有错误)。
73.使用白盒测试方法时,确定测试数据应根据(程序的内部逻辑)和指定的覆盖标准。
74.黑盒测试方法根据(软件要完成的功能)设计测试用例。
75.集成测试的主要方法有两个:一个是(增量式测试方法);另一个是(非增量式测试方法)。
76.软件测试的目的是尽可能发现软件中的错误,通常(单元测试)是代码编写阶段可进行的测试,它是整个测试工作的基础。
77.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是(系统功能)。
78.软件维护的副作用,是指(因修改软件而造成的错误)。
79.影响软件可维护性的主要因素不包括(可用性)。
第11章选择题:
80.(度量)的作用是为有效地、定量地进行管理,把握软件工程过程的实际情况和它所产生的产品质量。
81.LOC和FP是两种估算技术,但两者有许多共同的特征,只是LOC和FP技术对于分解所需要的(详细程度)不同。
82.项目团队原来有6个成员,现在又增加了6个成员,这样沟通渠道增加了多少?(4.4倍)
83.下列哪项不是风险管理的过程?(风险收集)
84.按照软件配置管理的原始指导思想,受控制的对象应是(软件配置项)。
85.下面(易用性)不是人们常用的评价软件质量的4个因素之一。
86.软件文档是软件工程实施的重要成分,它不仅是软件开发各阶段的重要依据,而且影响软件的(可维护性)。
87.CMM表示(软件过程能力成熟度模型)。
二、填空题(10空20分)
以下6小题中必考2~3道,所占分值约一多半,从第5小题开始为本书填空题剩余范围,所占分值较少,又因为第七、第十章已给出确定的填空题范围,故再出该章节的可能性不大,读者简单浏览即可。
1.大型系统的对象模型通常由5个层次构成,分别是主题层、类与对象层、结构层、属性层、服务层。
2.对象或类之间的关系有依赖、关联、聚合、组合、泛化、实现。
3.软件测试按照是否运行程序可分为静态测试和动态测试。
4.一般在软件测试过程中,既要用到黑盒测试,又要用到白盒测试。大的功能模块采用黑盒测试,小的组件采用白盒测试。
范围1:软件工程的三要素是方法、工具和过程。
范围2:软件过程又称为软件生命周期。
第一章填空题:
5.软件危机是指人们在开发软件和维护软件过程中遇到的一系列问题。
6.忽略软件开发前期的需求分析是造成软件危机的一大原因。
7.开发出来的软件产品不能满足用户的需求,即产品的功能和特性与需求并不符合。
8.软件工程分为工具层、方法层、过程层、质量保证层。
9.软件工程第一次提出在北大西洋公约组织举办的学术会议上。
第二章填空题:
10.螺旋模型是瀑布模型和快速原型模型的结合。
11.基于组件的开发模型充分体现了软件重用的思想。
12.统一软件开发过程模型是基于迭代思想的软件开发模型。
13.喷泉模型是典型的面向对象模型,具有较好的可移植性。
14.采用RUP,可以从初始开始不断迭代,可以多次执行各个工作流程。
第三章填空题:
15.可行性研究的结论有3种:可行、基本可行、不可行。
16.经济可行性研究主要研究开发和运行所需要的成本和得到的效益。
17.计划可行性研究主要是估计项目完成所需要的时间并评估项目预留的时间是否足够。
18.可行性研究主要包括战略可行性、操作可行性、计划可行性、技术可行性、社会可行性、市场可行性、经济可行性、风险可行性。
19.技术可行性研究是系统开发过程中难度最大的工作,也是可行性研究的关键。
20.技术可行性研究主要关注待开发的系统的功能、性能和限制条件。
21.成本效益分析的第一步是估算开发成本、运行费用和新系统带开的经济效益。
22.任务分解技术最常用的方法是按开发阶段划分任务。
23.纯收入是软件生命周期中软件系统的累计经济效益与投资之差。
第四章填空题:
24.需求分析的步骤为需求获取、分析建模、需求描述和需求验证。
25.需求可以分为两大类:功能性需求和非功能性需求。
26.需求管理是一种用于查找、记录、组织和跟踪系统需求变更的系统化方法。
27.功能分解方法将一个系统看成若干功能模块组成。
28.面向对象的分析方法的关键是识别问题域内的对象。
29.数据流图主要分为Yourdon和Gane两种表示方法。
30.状态转换图是一种描述系统对内部或外部事件响应的行为模型。
31.结构化分析方法通常强调自顶向下、逐层分解的方法。
32.分析模型应该包括功能模型、数据模型和行为模型。
33.中层数据流图是对顶层数据流图的细化。
第五章填空题:
34.模块化的基本原则是高内聚、低耦合。
35.模块结构图之中如果两个模块之间有直线连接,表示它们之间存在调用关系。
36.变换型DFD由输入、变换、输出组成。
37.程序控制分为顺序、选择、循环3种基本结构。
38.伪代码的优点是不仅可以作为设计工具,还可以作为注释工具。
39.流程图是对过程、算法、流程的一种图形表示。
40.数据设计包括程序级的数据结构设计、应用级的数据库设计两个方面。
第六章填空题:
41.对象是客观实体的抽象表示,由数据和对数据的操作两部分组成。
42.类是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的实例。
43.UML的静态建模机制包括用例图、类图、对象图、包图。
44.在UML中,泳道把活动图中的活动划分为若干组,并将划分的组指定给对象,这些对象必须履行该组所包含的活动。
45.顺序图是用来反映若干个对象之间动态协作关系的一种交互图。它主要反映对象之间已发送消息的先后次序和对象之间的交互过程。
46.用例图是从用户使用系统的角度来描述系统功能的图形表达方法。
47.部署图就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物流结构。
48.类图是面向对象设计的核心,是建立状态图、协作图和其他图的基础。
第七章填空题:
49.面向对象分析的首要工作是建立问题的对象模型。
50.数据流图中的处理对应于状态图中的活动或动作,数据流对应于类图的对象或属性。
51.功能模型中包含两类数据存储,分别是类的数据存储和不属于类的数据存储。
52.对象模型由问题域中的对象及其相互的关系组成。
53.对象模型的描述工具是类图。
第八章填空题:
54.数据管理子系统包括永久数据的存取,它隔离了物理的数据管理方法。
55.存储服务用来协调每个需永久保存的对象的存储。
56.问题域子系统也称问题域部分。
57.在问题域子系统中,稳定性是在类似系统中重用分析、设计和编程结果的关键因素。
58.系统需求最易变动的就是加工和子加工。
59.在设计问题域子系统的时候,对于调整需求,通常首先简单修改面向对象分析模型。
60.面向对象技术的基本特征主要为抽象性、封装性、继承性和多态性。
61.在调整继承层次时,使用一种只有单继承和无继承的编程语言时,需要将多继承转换为单继承。
62.在优化对象设计时,提高效率的技术有增加冗余关联、调整查询次序和保留派生属性。
63.软件设计模式一般分为创建型模式、结构型模式和行为型模式。
第九章填空题:
64.机器语言采用0和1为指令代码来编写程序。
65.汇编语言采用一组助记符来代替机器语言中晦涩、难懂的二进制代码。
66.开发软件时,应该根据待开发软件的特征及开发团队的情况考虑使用合适的编程语言。
67.编码风格是指源程序的编写习惯例如变量的命名规则、代码的注释方法、缩进等。
68.注释可以分为序言注释和行内注释。
69.注释的位置应与被描述的代码相邻,注释可以放在代码的上方或右方,不可放在下方。
70.比较知名的命名规则有微软公司的匈牙利法。
71.标识符的长度应当符合最小长度与最大信息量原则。
72.命名规则尽量与采用的操作系统或开发工具的风格一致。
73.效率是对计算机资源利用率的度量。
第十章填空题:
74.在软件测试工作中,存在二八定律,即约80%的错误会集中存在于约20%的代码中。
75.软件测试模型是指软件测试全部过程、活动或任务的结构框架。
76.通过描述每个经过用例的可能路径,可以确定不同的用例场景,这个流经路径要从用例开始到结束,遍历其中所有基本流和备选流。
77.在确认测试的过程中仅使用黑盒测试技术。
78.在进行单元测试时,被测试的单元本身不是独立的程序,需要为其开发驱动模块和桩模块。
79.集成测试一般由测试人员和开发人员完成。
80.功能测试是系统测试中最基本的测试,它不管软件内部是如何实现的。
81.系统测试中,健壮性测试包括容错性测试和恢复测试。
82.β测试由最终用户实施,通常开发组织对其的管理很少或不管理。
83.软件维护可分为纠错性维护、适应性维护、完善性维护、预防性维护4类。
84.简单地说,软件部署就是将开发的软件拿给用户使用,给用户配置环境(包括硬件、软件的安装以及环境变量的设置等),使开发的软件能被用户正常使用的过程。
85.软件再工程是一类工程活动,它将逆向工程、重构和正向工程组合起来,将现存系统重新构造为新的形式。
第11章填空题:
86.一般来说,随着项目进展,对项目内容了解越多,估算也会越来越精确。
87.使用“主程序员组”的组织方式,可提高效率,减少总的人/年(或人/月)数。
88.Gantt图是一种能有效显示行动时间规划的方法,也称为横道图或条形图。
89.PERT图也称“计划评审技术”,它采用网络图来描述一个项目的任务网络。
90.进行配置控制是配置管理的关键,包括访问控制、版本控制、变更控制和产品发布控制等。
91.软件过程能力成熟度模型是用于评估软件能力与成熟度的一套标准。
92.软件开发风险是一种不确定的事件或条件,一旦发生,会对项目目标产生某种正面或负面的影响。
93.总体上说,软件工程文档可以分为用户文档、开发文档和管理文档三类。
94.软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员、产品、过程和项目进行分析和管理的活动。
95.根据ISO 9126标准的定义,软件质量的特性包括功能性、可靠性、可用性、效率、可维护性和可移植性。
三、判断题(10题10分)
以下是本书11个章节中给出的全部判断题,判断题每套卷每章节最多出1道,还有些是课本以外的,通体标红部分为ab两套卷中极大可能会出的,读者应重点牢记。
第一章判断题:
1.软件就是程序,编写软件就是编写程序。(错❌)
2.软件危机的主要表现是软件需求增加,软件价格上升。(错❎)
3.软件工程学科出现的主要原因是软件危机出现。(对✅)
4.软件工程工具的作用是为了延长软件产品的寿命。(错❎)
第二章判断题:
5.瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(错❎)
6.螺旋模型在瀑布模型和增量模型的基础上增加了风险分析。(错❎)
如果这么问:该模型(螺旋模型)将瀑布模型与快速原型模型结合起来,并且加入了这两种模型均忽略的风险分析。(对✅)
7.软件工程过程应该以软件设计为中心,关键是编写程序。(错❎)
8.极限编程属于增量模型。(错❎)
第三章判断题:
9.软件开发计划是软件工程中的一种技术性文档。(错❎)
10.可行性研究过程也称为项目论证过程。(对✅)
11.投资回收期越长,获得利润就越快,项目就越值得开发。(错❌)
12.代码行技术是成本估算技术的一种。(对✅)
第四章判断题:
13.用于需求分析的软件工具,应该能保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。(对✅)
14.需求分析是开发方的工作,用户的参与度不大。(错❌)
15.需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性研究的依据。(错❎)
16.需求分析的主要目的是制定软件开发的具体方案。(错❎)
17.需求规格说明书描述了系统每个功能的具体实现。(错❎)
18.非功能性需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。(对✅)
19.需求分析阶段的成果主要是需求规格说明书,但该成果与软件设计、编码、测试以及维护关系不大。(错❎)
20.分层的DFD可以用于可行性研究阶段,描述系统的物理结构。(错❎)
21.信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。(对)
22.在需求分析阶段主要采用图形工具来描述的原因是图形的信息量大,便于描述规模大的软件系统。(错❌)
23.设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能。(对)
第五章判断题:
24.判定表的优点是容易转换为计算机实现,缺点是不能描述组合条件。(错)
25.面向数据结构的设计方法一般都包括下列任务:确定数据结构特征;用顺序型、选择型和循环型3种基本形式表示数据。(对)
26.模块独立性要求高耦合、低内聚。(错)
27.软件设计说明书是软件概要设计的主要成果。(错)
28.软件设计中设计详审和设计本身一样重要,其主要作用是避免后期付出高昂的代价。(对)
29.划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。(错)
30.结构化设计方法是一种面相数据结构的设计方法,强调程序结构与问题结构相对应。(错)
31.所有的数据流图都可以看作变换型数据流图。(错)
32.数据耦合是高耦合。(错)
33.文件一般用于长期存储,数据库一般用于临时存储。(错)
范围1:一般来讲,在模块划分时,应当尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。(对✅)
第六章判断题:
34.UML是一种建模语言,是一种标准的表示,是一种方法。(错)
35.类图用来表示系统中类与类之间的关系,它是对系统动态结构的描述。(错)
36.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。(错)
37.顺序图用于描述对象是如何交互的且将重点放在消息序列上。(对)
38.继承性是父类与子类之间共享数据结构和消息的机智,这是类之间的一种关系。(错)
39.多态性增强了软件的灵活性和复用性,允许用更为明确、易懂的方式去建立通用软件,多态性和继承性相结合使软件具有更广泛的复用性和可扩充性。(错)
40.类封装比对象封装更具体、更细致。(错)
41.用例之间有扩展、使用、组合等几种关系。(错)
42.活动图显示动作及其结果,着重描述操作实现中所完成的工作,以及用例实例或类中的活动。(错)
43.UML支持面向对象的主要概念,并与具体的开发过程相关。(错)
44.部署图用于描述系统硬件的物理拓扑结构以及在此结构上执行的软件。(对)
第七章判断题:
45.模型是对现实的简化,建模是为了更好地理解所开发的系统。(对✅)
46.在面向对象的需求分析方法中,建立动态模型是最主要的任务。(错❎)
47.面向对象分析阶段建立的3个模型中,核心的模型是功能模型。(错❎)
48.对象模型的描述工具是状态图。(错❎)
49.两个对象之间的关联关系只能有一个。(错❎)
第八章判断题:
50.在面向对象的设计中,应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有信息隐藏。(对✅)
51.面向对象分析和设计活动是一个多次反复迭代的过程。(对✅)
52.关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。(错❎)
53.面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型。(对✅)
54.常见的任务有事件驱动型任务、时钟驱动型任务、优先任务、关键任务和协调任务等。(对✅)
55.设计任务管理子系统时,当系统中存在3个或3个以上的任务时,就应该增加一个任务,用它作为协调任务。(对✅)
56.用指针可以方便地实现单向关联。(对✅)
57.如果某个关联包含链属性,不同关联重数的实现方法相同。(错❎)
58.不可以用独立的关联对象实现双向关联。(错❎)
59.增加冗余关联可以提高访问效率。(对✅)
60.在面向对象分析过程中,可以忽略对象模型中存在的冗余关联。(错❎)
61.设计模式是从大量或成功实践中总结出来并被公认的实践和知识。(对✅)
第九章判断题:
62.C语言是一种纯面向对象语言。(错❌)
63.进行程序设计语言的选择时,首先考虑的是应用领域。(对✅)
64.良好的个人编码风格是一个优秀的程序员所应具备的素质。(对✅)
65.项目的应用领域是选择程序设计语言的关键因素。(对✅)
66.FORTRAN、Pascal、C语言和汇编语言都是科学计算中可选用的语言。(错❎)
第十章判断题:
67.软件测试是对软件需求规格说明、软件设计和编码的最全面也是最后的审查。(错❎)
68.如果通过软件测试没有发现错误,则说明软件是正确的。(错❌)
69.白盒测试无须考虑模块内部的执行过程和程序结构,只需了解模块的功能即可。(错❎)
70.软件测试的目的是尽可能多地发现软件中存在的错误,并将它作为纠错的依据。(对✅)
71.测试用例由输入数据和预期的输出结果两部分组成。(对✅)
72.白盒测试是结构测试,主要以程序的内部逻辑为基础设计测试用例。(对✅)
73.软件测试的目的是证明软件是正确的。(错❎)
74.单元测试通常应该先进行“人工走查”,再以白盒测试为主,辅以黑盒测试进行动态测试。(对✅)
75.白盒测试是一种静态测试方法,主要用于模块测试。(错❎)
76.在等价类划分法中,为了提高测试效率,一个测试用例可以覆盖多个无效等价类。(错❎)
77.功能测试是系统测试的主要内容,用于检查系统的功能、性能是否与需求规格说明相同。(对✅)
78.适应性维护是在软件使用过程中,用户对软件提出新的功能和性能要求,为了满足这些新的要求而对软件进行修改,使之在功能和性能上得到完善和增强的活动。(错❎)
第11章判断题:
79.代码行估算法是比较简单的定量估算软件规模的方法。(对✅)
80.功能点估算法依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。(对✅)
81.常用的制定进度计划的工具主要有Word和Excel两种。(错❌)
82.民主制程序员组的一个重要特点是,小组成员完全平等,享有充分民主,通过协商做出技术决策。(对✅)
83.主程序员组的两个关键特性是专业化和层次性。(对✅)
84.现代程序员组中,技术组长既对技术工作负责,又负责非技术事务。(错❎)
85.风险有两个显著特点:一个是不确定性;另一个是损失。(对✅)
86.回避风险指的是风险倘若发生,就接受后果。(错❎)
87.软件质量保证的措施主要有基于非执行的测试(也称为复审)、基于执行的测试和程序正确性证明。(对✅)
88.总体上说,软件工程文档可以分为用户文档、开发文档和管理文档3类。(对✅)
89.文档是影响软件可维护性的决定因素。(对✅)
90.软件生命周期的最后一个阶段是书写软件文档。(错❎)
91.CMM是指导软件开发的一种面向对象的新技术。(错❎)
四、简答题(5题20分)
1.通常有哪几种软件开发方法?
答:①结构化方法;②面向数据结构方法;③面向对象方法;④面向数据的方法;⑤形式化方法。
2.敏捷方法的核心价值观有哪些?(抑或《敏捷软件开发宣言》中给出的价值观有哪些?)
答:敏捷思想的核心价值观大体包括以下几个方面:①注重个人与交互;②重点关注可以工作的软件;③提高客户参与程度;④以积极的心态响应需求变化;⑤敏捷联盟强调的价值观是这一流派的核心。
3.可行性研究的任务有哪些?
答:战略可行性研究、操作可行性研究、计划可行性研究、技术可行性研究、社会可行性研究、市场可行性研究、经济可行性研究、风险可行性研究。(简记“8词口诀”:战略操作 计划技术 社会市场 经济风险)
4.常用的需求获取的方法有哪些?
答:①问卷调查;②访谈;③实地操作;④建立原型。
5.软件设计的活动有哪些?(抑或软件设计分别有哪些活动?)
答:软件设计的活动主要包括:①结构设计:定义软件系统各主要部件之间的关系;②数据设计:将模型转换成数据结构的定义;③接口设计:软件内部,软件和操作系统间以及软件和人之间如何通信;④过程设计:系统结构部件转换成软件的过程描述。
6.如何着手从自然语言描述的用户需求中画出用例图?
答:①首先根据需求确定系统应具备的功能;②再确定这些用例之间的关系;③最后弄清用例中有哪些参与者;④把参与者参与的用例表现出来,从而完整表达用户需求。
7.请简述面向对象的设计原则。
答:①单一职责:一个类只允许有一个职责;②开闭原则:软件实体应对扩展开放,对修改关闭;③里氏替换原则:所有引用基类必须能透明地使用子类的对象;④接口隔离原则:多个特定接口好于一个通用的总接口;⑤依赖倒置原则:依赖抽象而非依赖实现,抽象不应该依赖细节,细节应该依赖抽象。高层模块和低层模块都应当依赖抽象;⑥迪米特原则:一个对象应该与尽量少的对象有接触。
8.在选择编程语言时,通常要考虑哪些因素?
答:①待开发系统的应用领域,即项目的应用范围。不同的应用领域一般需要不同的语言;②用户的要求;③软件开发人员的喜好和能力;④系统的可移植性要求;⑤算法和数据结构的复杂性;⑥平台支持。
9.软件测试应该划分为几个阶段?各个阶段应重点测试的内容是什么?
答:①单元测试:单元测试是针对软件设计的最小单位——程序模块进行正确性检验的测试工作。它的目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的各种错误。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行独立地进行单元测试;②集成测试:集成测试也叫做组装测试。一般在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统;③确认测试:确认测试也叫有效性测试。是在模拟的环境下,验证软件的所有功能和性能及其他特性是否与用户的预期要求相符。通过了确认测试之后的软件,才具备了进入系统测试阶段的资质;④系统测试:系统测试是在真实的系统运行的环境下,检查完整的程序系统能否和系统(包括硬件、外设、网络和系统软件、支持平台等)正确配置、连接,并最终满足用户的所有需求;⑤验收测试:验收测试是软件产品检验的最后一个环节。按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。
10.请简述软件质量的定义。
答:软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。
五、应用题(4题25分)
1.复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令时则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。试用状态转换图描绘复印机的行为。

2.假设某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定树表示每种条件组合相对应的动作。
答:

3.假定一个部门的数据库包括以下信息。 1)职工的信息:职工号、姓名、地址和所在部门。 2)部门的信息:部门所有职工、部门名、经理和销售的产品。 3)产品的信息:产品名、制造商、价格、型号及产品的内部编号。 4)制造商的信息:制造商名称、地址、生产的产品名和价格。 试画出这个数据库的E-R图。
答:答案不唯一,合理皆可。

此图中有1处错误,注意职工和部门间的从属关系属于多对1(n:1)。
4.银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名、住址或电话号码、身份证号码、存款类型、存款日期、到期日期、利率及密码等信息,并打印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印利息清单给储户。 请用实体-关系图描绘系统中的数据对象。
答:

5.请将二维表格中的图用Jackson图来表示。

答:

6.将下面给出的伪码转换为N-S图(盒图)。
S1;
if (x<=5)
S2;
i=1;
while(i>=3)
{
S3;
i=i+1;
}
if (y<0)
S4;
else
S5;答:伪码转换为N-S 图如下:

7.请将下面具有边界的数据流图映射成结构图。

答:

8.程序代码规范化表达题,具体题型是给一串顶格写的代码程序,你用规范化的代码书写风格(注意缩进什么的)抄写一遍即可。
六、综合题(1题15分)
9.某图书馆借阅系统有以下功能:
(1)借书:根据读者的借书证查询读者档案,若借书数目未超过规定数量,则办理借阅手续(修改库存记录及读者档案),超过规定数量者不予借阅。对于第一次借阅者则直接办理借阅手续。
(2)还书:根据读者书中的条形码,修改库存记录及读者档案,若借阅时间超过规定期限则罚款。
请对以上问题,画出分层数据流图(顶层图、0层图、1层图)。
答:

10.如下面C函数:
void sort(int iRecordNum, int itype)
10 {
20 int x = 0;
30 int y = 0;
40 while (iRecordNum-- > 0)
50 {
60 if (itype == 0)
70 break;
80 else
90 if (itype == 1)
100 x = y + 10;
110 else
120 x = y + 20;
130 }
140}答:(1)画出程序控制流图。

(2)计算圈数(环形复杂度)。选择任意一种方法即可
方法1:V(G)=3(封闭区域)+1=4
方法2:V(G)=10(条边)-8(节点)+2=4
方法3:V(G)=3(判断结节4、6、9)+1=4
(3)导出测试路径。
路径1:40→140
路径2:40→60→70→140
路径3:40→60→90→100→130→40→140
路径4:40→60→90→120→130→40→140
(4)设计测试用例。
根据(3)所得到的独立路径,并设计测试用例的输入数据和预期输出,可获得可执行的测试用例(集),如下表所示。
- 感谢你赐予我前进的力量

