期末总复习题软件工程.docx
《期末总复习题软件工程.docx》由会员分享,可在线阅读,更多相关《期末总复习题软件工程.docx(33页珍藏版)》请在冰豆网上搜索。
![期末总复习题软件工程.docx](https://file1.bdocx.com/fileroot1/2023-5/26/e044e428-3d35-4708-ac04-3b326f16011a/e044e428-3d35-4708-ac04-3b326f16011a1.gif)
期末总复习题软件工程
期末总复习题
2009-06-10
【一】判断题(在括号中回答Y或N)
1.软件工程的作用,主要是告诉你怎么写文档。
(N)
2.参加ACM程序设计比赛时,选手“只写代码行不写注解行”这一事实,确实说明了注解行不重要,在源程序中可有可无。
(N)
3.在软件项目开发的后期,为了加快开发进度,可以多增加几个开发人员。
(N)
4.在软件项目开发的早期,为了加快开发进度,可以多增加几个开发人员。
(Y)
5.规范化的概要设计文档比需求分析文档更重要,因为有了概要设计文档就可以进行详细设计。
(N)
6.规范的详细设计文档比源程序更重要,因为有了文档就可以写出源程序。
(Y)
7.模块间的耦合越强,则表明模块里面的内聚性越强。
(N)
8.模块的内聚越强,则表明模块之间的耦合越弱。
(Y)
9.CMM是CMMI的祖先,CMMI是CMM的后续。
(Y)
10.ISO9000是ISO9001的祖先,ISO9001是ISO9000的后续。
(Y)
11.软件配置管理就等于软件版本管理。
(N)
12.软件版本管理是软件配置管理的研究课题。
(Y)
13.敏捷开发模型就等于结对编程。
(N)
14.敏捷开发模型就是快速原型法。
(N)
15.面向元数据的开发方法就是传统意义下的Jackson方法。
(N)
16.面向过程的开发方法就是结构化方法。
(Y)
17.数据流图DFD就等于PAD图。
(N)
18.数据流图DFD就等于程序设计流程图。
(N)
19.“接口和实现分离”是软件设计原理之一。
(Y)
20.“单入口和单出口”是程序设计原则之一。
(Y)
21.程序测试不仅能证明错误的存在,也能证明错误的不存在。
(N)
22.编译系统不认识、也不编译源程序中的注解行这一事实,确实说明了注解行不重要,在源程序中可有可无。
(N)
23.若两个实体之间存在多对多的关系,则应该将第三个实体插入其中,使原来的一个多对多关系变为现在的两个一对多关系,这里的第三个实体,实际上是一个复杂的关系,也是笛卡尔积的子集。
(Y)
24.质量来源于过程,过程需要改进,改进是无止境的,这就是CMMI精神。
(Y)
25.测试只能发现程序中的错误,不能发现文档中的问题。
(N)
26.敏捷模型是轻载模型,CMMI模型是重载模型。
(Y)
27.高内聚低耦合是软件设计原理或原则之一。
(Y)
28.软件测试的目的是改正软件中的错误。
(N)应该是发现软件中的错误
29.同行评审会议中的同行专家,一般都是从公司外面聘请的。
(N)
30.软件策划应该在需求分析之前。
(N)
31.需求分析就是分析元数据与中间数据的关系。
(N)太片面
32.信息系统需求分析主要是分析元数据与中间数据的关系。
(Y)
33.项目经理的主要职责就是进行数据库设计。
(N)
34.编码阶段结束后,测试经理就应该立即着手编写测试计划。
(N)
35.软件设计就是数据库设计。
(N)
40.软件实现就是编程序。
(N)
41.软件实现主要是编程序。
(Y)
42.CMMI就是解决项目管理的工作规范化问题。
(N)
43.制定软件测试计划,一项重要工作是要将用户需求分解为测试需求,然后再将测试需求转化为测试用例。
(Y)
44.软件测试与软件调试是一回事。
(N)
45①.渐增式测试是逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。
每加入一个新模块进行一次集成测试,重复此过程直至程序组装完毕。
(Y)
45②.面向对象设计是运用类的思想,把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。
或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。
(Y)
46.结构化设计(SD)是面向数据流的设计,它是以需求分析阶段产生的数据流图DFD为基础,按一定的步骤映射成为系统的软件结构。
(Y)
47.信息隐蔽是指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。
(Y)
48.抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特征而暂不考虑它的细节,不考虑其它非本质的因素。
(Y)
49.路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径。
(Y)
50.判定/条件覆盖是指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。
(Y)
51.条件组合覆盖是指设计足够的测试用例,使的每个判定表达式中条件的各种可能的值的组合都至多出现一次,条件组合覆盖是比较强的覆盖标准。
(Y)
52.条件覆盖是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至多出现一次。
满足条件覆盖并不一定满足判定覆盖。
(Y)
53.软件工程是为了克服软件危机。
(Y)
54.软件工程是完全克服了软件危机。
(N)太绝对
【二】名词解释
1.元数据
——元数据是关于数据的数据,组织数据的数据。
如数据库概念设计中的实体名和属性名,数据库物理设计中的表名和字段名等都是元数据。
2.软件工作产品(注:
软件工作产品和‘15.软件产品’的异同···软件产品是最后一个阶段的软件工作产品。
)
——软件工作产品是指开发过程中每个阶段的文档、数据和程序,即每个开发阶段的输出制品。
3.评审与审计
——评审是对软件工作产品而言的,它针对软件工作产品的开会(评审)或汇签(评审)活动,是一次集体行为。
——审计是复查软件活动的程序是否遵守规则,是否合法。
它本身是审计员的一次个人行为。
4.不符合项
——不符合项是指没有满足要求的项。
5.黑盒测试
——黑盒测试又称功能测试。
在这里,盒子指的是被测试的软件,“黑盒”就是只知道被测试软件的外部情况,主要是界面和接口,被测试软件的内部逻辑结构和数据结构,对测试人员来说是不可见的,主要关注被测试软件的功能实现。
6.白盒测试
——白盒测试就是对程序执行路径的测试,又叫做玻璃盒测试(GlassBoxTesting)、透明盒测试(ClearBoxTesting)、结构化测试(StructuredTesting)、开放盒测试(OpenBoxTesting)、基于代码的测试(Code-BasedTesting)等等。
7.项目P.326
——项目是一次性的多任务工作,它具有确定的开始日期、结束日期、工作范围、经费预算、质量标准,以及特定的功能、性能和接口要求。
8.项目管理P.326
——项目管理是为了实现项目目标,运用相关的知识、技能、方法与工具,对项目的计划、进度、质量、成本、资源进行管理和控制的活动。
或(项目管理是指“在软件项目管理活动中,运用专门的知识、技能、工具和方法,使项目能够如期或提前实现。
”)
9.客户化
——客户化是指按照客户的实际情况,对软件产品的功能、性能、接口做适当的改动。
10.初始化
——初始化是指按照客户的实际情况,对软件产品的代码表(又称数据字典)进行初始化,即将客户的各种信息编码录入到相应的代码表中。
11.CMM与CMMI
——CMM是指“能力成熟度模型”,是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。
(即评估软件能力与成熟度等级的一套标准)
——CMMI的全称为:
CapabilityMaturityModelIntegration,即能力成熟度模型集成。
CMMI是CMM模型的最新版本。
(···CMMI是CMM的继承与发展,CMM只适用于软件企业,CMMI适合于所有的IT企业)
12.KPA与PA
——关键过程域(KPA,KeyProcessArea),它指出了企业需要集中力量改进的软件过程。
同时,也指明了为了要达到该能力成熟度等级所需要解决的具体问题。
——项目管理员(PA,ProjectAdministrator)。
13.敏捷模型或敏捷方法
——敏捷方法是在保证软件开发有成功产出的前提下,尽量减少开发过程中的活动和制品的方法。
其特点是对软件生产率的高度重视,主要适用于需求模糊或快速变化下的、小型项目组的开发。
14.软件
——软件的定义:
软件=程序+数据+文档。
现在有一种新提法正在引起关注,这种提法是:
软件=知识+程序+数据+文档。
15.软件产品
——软件产品是指不局限于特定业务领域、能被广大用户直接使用的软件系统(或软件产品是指软件开发与测试工作已经完工、并且可投入市场销售的软件产品),如操作系统、编译系统、工具系统、通用财务系统等。
16.可行性分析与软件立项(···P.63···)
——可行性分析是世界上普遍采用的一种研究工程项目是否可行的科学。
它通过各种有效的方法,对工程项目进行分析,从技术、经济、财务等方面加以评价,最终给投资决策者提供是否选择该项目进行投资的依据。
可行性分析是立项的前提,立项是可行性分析的结果。
对于软件企业,一般不叫项目可行性分析而叫立项,只有在学校、机关、科研所等单位,才叫项目可行性分析。
17.软件生存周期
——软件生存周期是指软件的使用寿命,即生产周期加上使用周期。
18.CASE工具
——CASE(ComputerAided(orAssisted)SoftwareEngineering计算机辅助软件工程。
CASE是能够提供一组能够自动覆盖软件开发生命周期各个阶段的集成的、减少劳动力的,并可以加快开发速度,提高应用软件生产率并保证应用软件的可靠品质的工具。
19.集成测试
——集成测试是指检测此前测试过的单个模块或组件,是否能完好地融入系统,与其他模块或组件正确地一起运行。
20.结构化维护P.257
——软件产品或软件项目有完善的文档,并且文档与程序代码互相匹配,两者完全一致。
对这种软件产品或软件项目的维护称为结构化维护。
21.SQAP.308
——软件质量保证(SQA,SoftwareQualityAssurance)是一套有计划、有系统的用于向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用的方法。
22.客户与用户
——客户是软件企业合同的签约方,是软件产品的销售对象。
客户是顾客的一部分。
——用户是软件产品的最终使用者,用户是客户的一部分。
23.软件质量
——所谓软件质量,就是供方提供的软件产品满足用户明确和隐含需求的能力特性的总和。
24.软件测试V模型P.222
——软件测试V模型是由开发阶段和测试阶段构成的最典型的测试模型。
开发阶段先从定义软件需求开始,然后要把这些需求不断地转换到概要设计和详细设计中去,最后形成程序代码;测试阶段是在代码编写完成以后,先做单元测试开始,然后是集成测试、系统测试和验收测试。
25.顾客、客户和用户
——顾客的范围比“客户”的范围更广泛一些,它包括潜在的客户。
——客户是软件企业合同的签约方,是软件产品的销售对象。
客户是顾客的一部分。
——用户是软件产品的最终使用者,用户是客户的一部分。
26.软件配置项
——软件配置管理中的基本单元,称为软件配置项。
27.软件功能、性能和接口
——软件功能指的是软件的作用,即使用软件所能达到的目的;
——软件性能指的是完成软件功能的效率;
——软件接口指的是软件不同部分之间的交互接口。
通常就是所谓的API——应用程序编程接口,其表现形式是源代码。
28.软件过程
——所谓软件过程,就是根据选定的生存周期模型,规定软件的开发阶段,及每一阶段的工作步骤和文档标准等内容。
29.软件里程碑和基线P.67
——里程碑是一个标记,之需要经过内部评审。
一个里程碑是一个检查点,但不一定是基线。
——基线是软件工作产品,它是经内部和外部评审过的,并且是下一阶段工作的基础。
一根基线是一个里程碑或一个检查点。
30.信息系统
——利用计算机网络技术、数字通信技术与数据库技术实现信息采集和处理的系统,称为当代信息系统。
31.集成测试
——集成测试是指检测此前测试过的单个模块或组件,是否能完好地融入系统,与其他模块或组件正确地一起运行。
32.Bug
——Bug是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出现的错误、漏洞。
33.E—R图
——E-R图也即实体-联系图(EntityRelationshipDiagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
34.概念数据模型
——概念数据模型(CDM)也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。
它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。
概念数据模型CDM,就是数据库的逻辑设计,即E-R图。
35.物理数据模型
——物理数据模型(PDM)就是数据库的物理设计,即物理表。
36.原型模型
——以某个软件原型为参照模型的开发方法,叫做原型法。
37.UML
——UML是一种面向对象的图形化的建模语言,主要用于软件的分析与设计
38.RUP
——统一软件开发过程(RUP,RationalUnifiedProcess)又称为统一软件过程,是一个面向对象且基于网络的程序开发方法论。
【三】简答题
1.软件工程中的理论、方法、标准、规范,主要来自于哪里?
即:
软件工程的源头或基础是什么?
【答】软件工程中的理论、方法、标准、规范,主要来自于IT企业软件研发的工作思路与步骤以及面向工程实践案例。
信息产业的核心是芯片与软件,软件工程是软件开发、生产、服务和管理的科学。
所以可以说软件工程是以信息产业的飞速发展为源头或基础的。
2.软件开发文档包括哪些具体文档?
【答】开发文档包括《目标程序》、《源程序》、《详细设计说明书》、《概要设计说明书》、《需求规格说明书》、《用户需求报告》、《软件合同》。
3.软件管理文档包括哪些具体文档?
【答】管理文档包括《项目开发计划书》、《测试计划》、《测试报告》、《工作日报》、《会议记录》、《开发进度报告》、《开发总结报告》,其中《开发进度报告》又分为《开发进度周报》和《开发进度月报》。
4.请详细解释软件的定义和程序的定义。
【答】软件的定义:
软件=程序+数据+文档。
这里的程序是指程序系统。
这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据。
这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档。
现在有一种新提法正在引起关注,这种提法是:
软件=知识+程序+数据+文档。
程序是计算机为完成特定任务而执行的指令的有序集合。
从应用的角度可理解为:
面向过程的程序=算法+数据结构
面向对象的程序=对象+信息
面向构件的程序=构件+构架。
5.“四种开发方法”和“五个面向实施理论”的提法对吗?
为什么?
【答】“四种开发方法”和“五个面向实施理论”的提法对,并且既精彩又实用。
首先,“四种开发方法”是指“面向过程的方法、面向对象的方法、面向数据的方法、形式化方法”,面向过程的方法来源于面向过程的程序设计,面向对象的方法来源于面向对象的程序设计,面向数据的方法就是面向元数据的方法,它来源于关系数据库程序设计,形式化方法来源于离散数学中的集合运算和逻辑运算。
四种方法各适用于不同的场合,各有优缺点,互相促进,构成一个开发方法论的多极化世界。
其次,“五个面向实施理论”是指“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”,它是在综合“四种开发方法”各自的优点之后提出的软件工程实施理论,是对前者的继承与发展。
6.“图书馆信息系统”的开发选用什么模型合适?
为什么?
【答】“图书馆信息系统”的开发选用瀑布模型比较合适。
因为瀑布模型开发阶段清晰,便于评审、审记、跟踪、管理和控制,而且“图书馆信息系统”在一定程度上符合瀑布模型的条件:
(1)它在开发时间内需求没有变化或很少变化。
(2)分析设计人员对应用领域很熟悉。
(3)低风险项目。
(4)用户使用环境比较稳定。
(5)用户提出需求以外,很少参与开发工作。
7.“精品课程网站”的开发选用什么模型合适?
为什么?
【答】“精品课程网站”的开发选用原型模型比较合适。
因为现在“精品课程网站”比较普及,很容易找到一个可以事先给客户展示的产品原型,让客户试用,在使用中收集客户意见,根据意见立刻修改原型。
原型模型开发速度快,用户意见反馈实时,有利于开发商在短时间内推广并实施多个客户,而且“精品课程网站”在一定程度上符合原型模型的条件:
(1)已有产品/产品原型,只需客户化的项目。
(2)简单而熟悉的行业或领域。
(3)有快速原型开发工具。
(4)进行产品移植或升级。
8.什么叫风险分析?
技能风险和技术风险有何区别?
【答】这里的风险分析是指软件立项过程中对产品开发、销售等可能出现的风险进行分析。
分析方法就是将一个大风险化解好多个小风险,然后一个个克服小风险。
技术风险是指采用新技术的风险程度。
技能风险是指项目组成员掌握新技术的风险程度。
二者的区别在于一个是说新技术(如新的开发工具,新的设计思想)本身的风险,一个是说人员要掌握这种新技术的风险。
9.为什么需求分析特别重要、又特别难?
P.66
【答】需求分析特别重要,是因为:
(1)许多大型应用系统的失败,最后均归结到需求分析:
要么获取需求的方法不当,使得需求分析不到位或不彻底,导致开发者反复多次地进行需求分析,致使设计、编码、测试无法顺利进行;要么客户配合不好,导致客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。
(2)需求分析的输出文档是《用户需求报告》,它既是软件生存周期中的第一个里程碑,又是客户、软件开发人员和项目管理人员三者必须遵守的一根基线,是三者共同工作的基础,是项目Alpha测试和Beta测试的准则,是供方交付产品和需方验收产品的依据。
(3)需求分析要占用整个软件开发时间或工作量的30%左右。
(4)需求获取中的错误,属于软件开发中的早期错误,它会在后续的设计和实现中进行发散式的传播。
根据以上四项原因,IT企业的高层经理,对需求分析特别重视,常常派经验最丰富的人员去作项目需求。
正因为如此,“系统分析员”才是软件行业中的最高技术职称。
需求分析特别难,是因为:
(1)用户需求具有动态性,即需求的不稳定性:
在整个软件生存周期内,应用软件的需求会随着时间的进展而有所变化,个别用户甚至会朝三暮四地变化;
(2)用户需求具有模糊性,即需求的不准确性:
由于用户的素质不是很高,业务流程不很规范,所以需求表达不很清楚也不够明确。
(3)开发者和用户要对需求达成完全一致的认识,用户要在需求报告上签字,要承担责任;
(4)中国的国有企业正处于变动期(体制改革与企业重组),中国的民营企业正处于成长期(发展壮大与不完全成熟)。
而处于变动期和成长期的企业需求是不成熟、不稳定和不规范的,这就给信息系统的需求分析增加了难度系数。
10.需求分析为什么是面向流程的?
【答】系统的功能、性能、接口、界面都是在流程中动态实时的反映出来。
在所有的流程(物流、人流、资金流、信息流、单据流、报表流、数据流)中,数据流最重要,也最具有代表性。
因为在计算机网络系统内,一切流程都表现为数据流,或者说是数据流在不同方向的投影。
而流程是动态的、实时的。
所以说,需求分析是面向流程的。
11.软件概要设计与软件详细设有什么联系与区别?
【答】《概要设计说明书》,一是要覆盖《需求规格说明书》的全部内容,二是要作为指导详细设计的依据。
它注重框架上的设计,它是软件系统的总体结构设计,全局数据库(包括数据结构)设计,外部接口设计,功能部件分配设计,部件之间的内部接口设计,它要覆盖需求规格说明书中的功能点列表,性能点列表,借口列表。
《详细设计说明书》,一是要覆盖概要设计说明书的全部内容,二是要作为指导程序设计的依据,它注重微观上和框架内的设计,它是各子系统的公用部件实现设计,专用部件实现设计,存储过程实现设计,触发器实现设计,外部接口实现设计,部门角色授权设计,其他详细设计等。
两者的设计者不同,在一般情况下,《概要设计说明书》是由系统设计师负责,《详细设计说明书》则由高级程序员负责。
12.软件企业为什么要对员工进行培训?
怎么进行培训?
【答】
P320内部培训、外部培训
13.什么叫软件发布?
软件发布要做哪些准备工作?
P.252
【答】软件发布是指将软件产品投入市场,并得到回报的一个过程。
软件发布前的准备工作:
(1)编写培训教材;
(2)产品包装设计;
(3)产品母盘制作;
(4)产品光盘刻录;
(5)软件资料印刷;
(6)销售人员培训;
(7)发布产品检验;
(8)发布产品交付;
(9)确定发布方式。
14.怎样理解“优秀的项目经理主要是干出来的,不是学出来的;是带出来的,不是教出来的”?
【答】一个人要成长为一名合格的项目经理主要不是靠学,而是靠干,当然学也很重要。
只学不干,是绝对出不来项目经理的。
光干不学,有可能会出现的情况是:
其能力本来可以做一个大项目经理,但现在只能做一个小项目经理,因为他只是一个经验主义者,缺乏理论指导,有些问题的认识可能上不去,所以不能成为大器。
总之,项目经理必须通过干才能成熟起来,只要通过学才能提高起来,“干”字当头,学在其中,干学并用,互相促进,这就是项目经理成长的道路。
15.请用树型结构图来表示软件工程研究的主要内容与方法.
【答】
16.为什么中国人实施CMMI有做秀嫌疑,而印度人一般没有做秀嫌疑?
CMMI的全称为:
CapabilityMaturityModelIntegration,即能力成熟度模型集成。
CMM/CMMI仅仅是一个体系,一个框架,他仅仅从过程和产品上对开发行为进行规范,而不是给你提供了完整的方法。
在这个框架下面,你可以选用最适合自己的过程,最有效的开发技术。
至于什么过程和什么方法,并不是最重要的。
CMM/CMMI仅仅表示你往生产好的软件走出了重要的一步,但并不是全部。
CMM/CMMI本身是一套非常有价值的过程模型,但简单的将其图腾化却是不正确的。
印度人能够把软件整体结构把握得很好,能够完成大型复杂的软件,能够形成相当好的设计与实现文档,能够在国际外包市场上占据很大比例。
而中国人整天在那里琢磨着的是数据结构、算法花样和界面花招,到最后只能成为Code高手,而不是一个庞大团队。
这些高手虽然对某些特定的开发工具非常精通,比如.net和J2EE开发平台。
但就是不能按质、按量、按时把一个大型软件稳妥而完整地开发出来。
招聘印度人,给应聘者出了一份与国内差不多的试卷,有基础概念和编程题目。
等到他们完成后,我们这些中国的自认高手惊呆了!
他们的编程题目简直像是抄袭的!
程序结构、注释、变量命名就不说了吧,全部都是极其类似!
反观中国的牛人和高手,每个人都有自己的一套。
到了新的岗位,先把前任的程序贬损一通,然后自己再开发更多的问题代码来代替它。
我们公司统计,一个软件中有4个以上版本,每个人都觉得别人做得差,自己再搞一套。
中国人,就是这个样子,还会辩解说:
“我们这样是创新”。
其实软件的发展,早就走过了求伯君(20世纪90年代的编程开才、WPS的发明人、现任金山软件股份有限公司董事长兼总裁)那个编码英雄的年代,程序员已经是个坐办公室的蓝领了。
你具备拧好一个螺丝钉的能力就可以