软件工程综合练习.docx
- 文档编号:30385430
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:19
- 大小:74.68KB
软件工程综合练习.docx
《软件工程综合练习.docx》由会员分享,可在线阅读,更多相关《软件工程综合练习.docx(19页珍藏版)》请在冰豆网上搜索。
软件工程综合练习
软件工程综合练习
[填空题]
1试说明“软件生命周期”的概念。
参考答案:
同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。
[填空题]
2软件工程的基本原理有哪些?
参考答案:
1.用分阶段的生命周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查
6.开发小组的人员应该少而精
7.承认不断改进软件工程实践的必要性
[单项选择题]
3、模块内聚用于衡量模块内部各成分之间彼此结合的紧密程度。
若一组语句在程序的多处出现,为了节省空间把这些语句放在一个模块中,则该模块的内聚类型是()。
A.功能内聚
B.通信内聚
C.偶然内聚
D.逻辑内聚
参考答案:
C
[单项选择题]
4、在软件生存周期中,()阶段所占的工作量最大,约70%。
A.分析
B.设计
C.编码
D.测试
E.维护
参考答案:
E
[填空题]
5数据流图的作用是什么?
它有哪些基本成分?
参考答案:
数据流图可以用来抽象地表示系统或软件。
它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。
因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。
[填空题]
6原型化方法是用户和设计者之间执行的一种交互过程,适用于()系统。
它从用户界面设计开始,首先形成(),用户()并就()提出意见。
它是一种()型的设计过程。
参考答案:
需求不确定性高的;系统界面原型;运行界面原型;同意什么和不同意什么;自外向内
[填空题]
7在众多的设计方法中,SD方法是最受人注意的,也是应用最广泛的。
这种方法可以同分析阶段的()方法及编程阶段的()方法前后衔接。
SD方法是考虑如何建立一个结构良好的程序,提出了评价模块质量的两个具体标准——块间联系和块内联系。
SD方法的最终目标是()。
参考答案:
SA;Jackson;块间联系小,块内联系大
[判断题]
8、便于由多个人分工编制大型程序。
参考答案:
对
[判断题]
9、程序易于理解,也便于排错。
参考答案:
对
[判断题]
10、模块之间的接口叫数据文件。
参考答案:
错
[判断题]
11、模块越小,模块化的优点越明显。
一般来说,模块的大小都在10行以下。
参考答案:
错
[填空题]
12结构化程序设计有时被错误地称为“无GOTO语句”的程序设计。
请说明为什么会出现这样的说法,并讨论围绕着这个问题的一些争论。
参考答案:
严格控制GOTO语句,仅在用一个非结构化的程序设计语言去实现一个结构化的构造,或者在某种可以改善而不是损害程序可读性的情况下才可以使用GOTO语句。
大量采用GOTO语句实现控制路径,会使程序路径变得复杂而混乱,因此要控制GOTO语句的使用。
但有时完全不用GOTO语句进行程序编码,比用GOTO语句编出的程序可读性差。
例如,在查找结束时,文件访问结束时,出现错误情况要从循环中转出时,使用布尔变量和条件结构来实现就不如用GOTO语句来得简单易懂。
[判断题]
13、在着手编制程序时,重要的是采用既能使程序正确地按设计流程进行处理,又易于出错的编写方法。
参考答案:
错
[判断题]
14、编制程序时不可缺少的条件是,程序的输入和输出数据的格式都应确定。
其它各项规定都是附带的,无足轻重。
参考答案:
错
[判断题]
15、嵌套的重数应加以限制。
参考答案:
对
[判断题]
16、不滥用语言特色。
参考答案:
对
[判断题]
17、使用有意义的变量名。
参考答案:
对
[判断题]
18、注解越少越好。
参考答案:
错
[判断题]
19、应尽可能多用GOTO语句。
参考答案:
错
[填空题]
20下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。
(1) 画出该程序的控制流图,并计算其McCabe环路复杂性。
(2) 用基本路径覆盖法给出测试路径。
Pathl:
①→③ Path2:
①→②→④→⑥→„Path3:
①→②→⑤→⑥→„ (3) 为各测试路径设计测试用例。
Path1:
取n=1,datalist[0]=1,预期结果:
k=0 Path2:
取:
n=2,datalist[0]=1,datalist[1]=0,预期结果:
k=0Path3:
取:
n=2,datalist[0]=0,datalist[1]=1,预期结果:
k=1
参考答案:
[填空题]
21由RumBaugh等人提出的一种面向对象方法叫做模型化技术,即三视点技术,它要求把分析时收集的信息建立在三个模型中。
第一个模型是(),其作用是描述系统的静态结构,包括构成系统的对象和类,它们的属性和操作,以及它们之间的联系。
第二个模型是(),描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。
()包括两种图,即()和()。
()描述每一类对象的行为,()描述发生于系统执行过程中的某一特定脚本。
第三个模型是(),着重于描述系统内部数据的传送与处理,它由多个数据流图组成。
参考答案:
对象模型;动态模型;动态模型;状态迁移图;事件追踪图;状态迁移图;事件追踪图;功能模型
更多内容请访问《睦霖题库》微信公众号
[填空题]
22什么是软件项目管理?
参考答案:
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动.
[填空题]
23任何软件项目都必须作好项目管理工作,最常使用的计划管理工具是()。
当某一软件项目的进度有可能拖延时,应该()。
对于一个典型的开发项目,各开发阶段需投入的工作量的百分比大致是()。
各阶段所需不同层次的技术人员大致是(),而管理人员在各阶段所需数量也不同,相对而言大致是()。
参考答案:
PERT图;分析拖期原因加以补救;15/30/15/40;高/中高/初/中高;多/中/少/中
[判断题]
24、软件的开发单位应该建立本*单位文档的标识方法,使文档的每一页都具有明确的标识。
参考答案:
对
[判断题]
25、用户手册要使用专门的术语,并充分地描述该软件系统的结构及使用方法。
参考答案:
错
[判断题]
26、概要设计说明书中可以IPO图来说明接口设计。
参考答案:
对
[填空题]
27在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课程之间()关系。
参考答案:
关联
[填空题]
28一个汽车有四个轮子,那么类"汽车"和"轮子"之间的关系是()关系。
参考答案:
聚合
[填空题]
29在系统开发过程中为什么需要建立模型?
参考答案:
在系统开发过程中,建立模型的一个重要原因在于描述系统的复杂性。
信息系统十分复杂,而且系统的某些部分难以明了。
系统各个部分的模型有助于问题的简化,并能够使分析人员的精力一次只集中在系统的几个方面上。
同时,分析人员需要收集和处理大量的信息,模型提供了以一种容易理解的形式为后期使用存储信息的方法。
建立模型的另一个主要原因是便于交流。
开发人员可以使用模型讨论和交流系统的设计方案,用户可以从模型中更好地理解新系统所能提供的各种可能的功能,因此,模型在支持小组人员之间和与用户的交流过程中起着重要的作用。
最后,模型为以后的软件维护和升级提供了文档。
由于系统的复杂性,需要建立多个模型来涵盖细节信息,还需要使用许多不同类型的模型在不同的细节由于系统的复杂性,需要建立多个模型来涵盖细节信息,还需要使用许多不同类型的模型在不同的细节层次(或不同抽象层次)上表现系统,既包括在高层次上对系统的概括,也包括针对系统某一方面的细节描述。
[填空题]
30在软件开发完成交付用户使用后,为了保证软件在一个相当长的时期能够正常运行,就需要对软件进行维护。
试述软件维护的类型有几种并分别进行解释。
参考答案:
软件维护的类型有4种:
改正性维护、适应性维护、完善性维护和预防性维护。
(1) 改正性维护是要改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷;
(2) 适应性维护是要在软件使用过程中数据环境发生变化或处理环境发生变化时修改软件以适应这种变化;
(3) 完善性维护是在用户和数据处理人员使用软件过程中提出改进现有功能,增加新的功能,以及改善总体性能的要求后,修改软件以把这些要求纳入到软件之中;
(4) 预防性维护是为了提高软件的可维护性、可靠性等,事先采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试,为以后进一步改进软件打下良好基础。
[填空题]
31简述软件再工程的意义在于什么
参考答案:
(1) 帮助软件组织降低软件演化的风险。
当改进原有软件时必须频繁地对软件实施变更,从而降低了软件的可靠性,而软件再工程可以降低变更带来的风险。
(2) 开发一个新的软件系统需要花费大量的资金和人力,如果采用再工程,而不是扔掉原来的软件,可以部分补偿在软件上的投资。
(3) 再工程可使得程序员更容易理解程序,更容易对其开展工作,从而提高维护工作的生产效率。
(4) 再生程对已有软件进行全部或部分的改造,改进软件的功能和提高其性能,赋予软件新的活力。
[填空题]
32什么是软件工程?
软件工程和计算机科学有何区别?
参考答案:
软件工程是以计算机科学理论及其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经过时间证明是正确的管理措施和当前能够得到的最好的技术、方法相结合,以期用较少的代价获取高质量的软件。
计算机科学侧重于理论研究,其成果可应用于软件工程,而软件工程则强调如何有效的建造一个软件系统。
[填空题]
33简述一个成熟的软件机构应具有的特点。
参考答案:
建立了机构级的软件开发与维护过程。
软件人员对其有较好的理解。
一切活动均遵循过程的要求进行,做到工作步骤有次序,且有章可循;软件过程必要时可做改进,但需在经过小型实验和成本效益分析的基础上进行;软件产品的质量和客户对软件产品的满意程度不是由开发人员,而是由负责质量保证的经理负责监控;项目进度和预算是根据以往项目取得的实践经验确定,因而比较符合实际情况。
[填空题]
34简述螺旋模型的基本开发过程及螺旋模型的优点。
参考答案:
螺旋模型的基本思想是使用原型及其他方法来尽量降低风险。
可以理解为在快速原型模型的每个阶段之前都增加了风险分析。
基本开发过程:
(1)需求定义。
利用前面介绍的需求分析技术理解应用领域,获取初步的用户需求,制定项目开发计划。
(2)风险分析。
根据初始需求或改进意见评审可选用的方案,给出消除或减少风险的途径。
(3)工程实现。
利用前一节介绍的快速原型构造方法针对已知的用户需求生成快速原型。
(4)评审。
将原型提交用户使用并征询用户改进意见。
上述过程将不断迭代,直至给出用户满意的目标软件产品。
优点:
(1)螺旋模型支持用户需求的动态变化。
(2)螺旋模型中,需求分析和软件实现是互相依赖、紧密联系的软件开发活动。
(3)原型作为形式的可执行的需求规格说明,既易于为用户和开发人员共同理解,又可作为后续开发的基础。
(4)为用户参与软件开发的所有关键决策提供了方便。
(5)有助于提高目标软件的适应能力
(6)为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发风险。
[填空题]
35快速开发原型的途径有哪些?
参考答案:
废弃型:
快速建立需求规格原型;
追加型:
快速建立渐进原型法采用循环渐进;
步骤:
快速分析、构造原型、运行和评价原型、修改与改进
[填空题]
36可行性研究报告的主要内容有哪些?
参考答案:
一个可行性研究报告的主要内容如下:
(1)引言:
说明编写本文档的目的;项目的名称、背景;本文档用到的专门术语和参考资料。
(2)可行性研究前提:
说明开发项目的功能、性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。
(3)对现有系统的分析:
说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需要各类专业技术人员的数量;所需要各种设备;现有系统存在什么问题。
(4)所建议系统的技术可行性分析:
所建议系统的简要说明;处理流程和数据流程;与现有的系统比较的优越性;采用所建议系统对用户的影响;对各种设备、现有软件、开发环境、运行环境的影响;对经费支出的影响;对技术可行性的评价。
(5)所建议系统的经济可行性分析:
说明所建议系统的各种支出,各种效益;收益投资比;投资回收周期。
(6)社会因素可行性分析:
说明法律因素,对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。
(7)其他可供选择方案:
逐一说明其他可供选择的方案,并说明未被推荐的理由。
(8)结论意见:
说明项目是否能开发;还需要什么条件才能开发;对项目目标有什么变动等。
[填空题]
37试举例说明什么是功能性需求,什么是非功能性需求?
为何非功能性需求往往比功能性需求还要重要?
参考答案:
功能性需求就是软件要实现的功能需求分析。
非功能性需求,是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性。
软件产品的非功能性需求包括系统的性能、可靠性、可用性、可维护性、有效性和可移植性等。
重要性:
将非功能性需求的各项特点举例展开即可。
[填空题]
38软件设计的准则是什么?
参考答案:
(1)软件结构的准则:
顶部宽度小,中部宽度最大,底部宽度次之;在结构 顶部有较高的扇出数,在底部有较高的扇入数。
(2)模块化准则:
将系统划分成若干模块,每个模块完成一个子功能,把这 些模块集中起来组成一个整体,以满足所要求的整个系统的功能。
(3)软件独立性准则:
开发具有功能专一,模块之间无过多相互作用的模块。
[填空题]
39照“降低块间联系,提高块内联系”的设计总则对模块进行修改,具体从哪些方面进行改进?
参考答案:
1)尽可能建立功能模块;
2)消除重复功能;
3)模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获得较低的块间联系;
4)模块的大小适当;
5)模块的扇入扇出数不宜太多。
[填空题]
40层次图(即软件结构图)和层次方框图(即Jakson图)有何区别?
参考答案:
相同:
形式类似。
不同:
1.层次图描绘软件的层次结构.层层次方框图描绘的是数据结构。
2.层次图的方框表示模块或子模块。
层次方框图的方框表示数据结构整体或其子集。
3.层次图的连线表示调用关系,层次方框图表示组成关系。
层次图主要用来描绘软件的层次结构,矩形框代表一个模块,矩形框之间的连线表示模块之间的调用关系,常与IPO图一起形成HIPO图。
层次方框图主要描述系统的组成关系,一般自用域需求分析。
[填空题]
41渐增式与非渐增式各有何优、缺点?
为什么通常采用渐增式?
参考答案:
非渐增式是将所有的模块一次连接起来,简单、易行、节省机时,但测试过程难于排错,发现错误也很难定位,测试效率低;渐增式是将模块一个一个的连入系统,每连入一个模块,都要对新系统进行测试。
这种组装测试相比于非渐增式容易查出错误,并及时定位,有利于查出模块接口部分的错误,因此测试效率高。
故通常采用渐增式测试方法。
[填空题]
42简述单元测试的主要内容?
参考答案:
模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试。
[填空题]
43如果开发时间紧迫,是否可以跳过单元测试而直接进行集成测试?
参考答案:
不可以。
因为没有经过单元测试的模块会遗留大量的缺陷到集成测试阶段,而在集成测试阶段对这些缺陷定位困难,导致后续工作展开困难,修复缺陷成本成指数级增长。
[填空题]
44软件测试阶段如何划分?
参考答案:
软件测试的阶段划分为:
规格说明书审查;系统和程序设计审查;单元测试;集成测试;确认测试;系统测试;验收测试。
[填空题]
45提高软件可维护性的方法有哪些?
参考答案:
(1)建立明确的软件质量目标与优先级。
(2)使用提高软件质量的技术与工具(如模块化)
(3)进行明确的质量保证审查
(4)选择可维护性好的程序设计语言
(5)改进程序文档
(6)开发时考虑到维护
[填空题]
46什么是软件配置管理?
软件配置管理和软件维护有何不同?
参考答案:
软件配置管理是在软件生命周期内管理变化的一组活动,用来:
标识变化、控制变化、确保适当地实现了变化、向相关人员报告变化。
软件配置管理和软件维护的区别是:
软件配置管理是一组追踪和控制活动,在软件项目启动时就开始,并一直持续到软件被淘汰后才终止;软件维护是一组软件工程活动,发生于软件交付给用户并投入运行之后。
[填空题]
47简述结构化程序设计方法的基本特点。
参考答案:
1)是尽可能少用goto语句的程序设计方法;
2)每个代码块都单入单出;
3)使用控制结构:
顺序、选择和循环+Do_UNTIL和Do_CASE;
4)自顶向下逐步求精。
[填空题]
48面向对象程序设计有哪些优点?
参考答案:
并发时间短,效率高,可靠性高,所开发的程序更强壮。
由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。
程序更易于维护、更新和升级。
继承和封装使得应用程序的修改带来的影响更加局部化。
[填空题]
49试简要说明面对对象方法和结构化方法相比有何优越性,至少列出三点?
参考答案:
1、稳定性好;
2、可重用性好;
3、较易开发大型软件产品;
4、可维护性好。
[填空题]
50UML的消息类型有几种,哪几种?
参考答案:
4种;
(1)简单消息
(2)同步消息
(3)异步消息
(4)返回消息
[填空题]
51软件开发与写程序有何不同?
参考答案:
软件包含程序,程序是软件的一部分。
软件是程序、数据及其相关文档的完整集合。
程序只是为了实现软件的功能和性能要求而编写的指令序列。
[填空题]
52需求分析的难点主要表现在哪几个方面?
参考答案:
(1)问题的复杂性。
因用户需求所涉及的因素繁多引起,如运行环境和系统功能等等。
(2)交流障碍。
需求分析涉及人员较多,如软件系统用户、问题领域专家、需求工程师和项目管理员等,这些人具备不同的背景知识,处于不同的角度,扮演不同角色。
造成了相互之间交流的困难。
(3)不完备性和不一致性。
由于各种原因,用户对问题的陈述往往是不完备的,其各方面的需求还可能存在着矛盾,需求分析要消除矛盾,形成完备及一致性的定义。
(4)需求易变性。
用户需求的变动是一个极为普遍的问题,即使是部分变动,也往往会影响到需求分析的全部,导致不一致性和不完备性。
为了克服上述困难,人们主要围绕着需求分析的方法及自动化工具(如CASE技术)等方面进行研究。
[填空题]
53软件开发分哪几个阶段?
哪几个步骤?
参考答案:
软件开发分软件计划、软件开发和运行维护三个阶段;制定计划、需求分析、软件设计、编码设计、软件测试、运行维护六个步骤。
[填空题]
54什么是编码风格?
为什么要强调编码风格?
参考答案:
编码风格是在不影响性能的前提下,有效地编排和组织程序,以提高可读性和可维性。
[填空题]
55可行性研究的任务是什么?
参考答案:
首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。
然后,分析员进行简要的需求分析,抽象出该项目的逻辑结构,建立逻辑模型。
从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性,可从以下三个方面分析研究每种解决方法的可行性。
㈠技术可行性:
对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。
㈡经济可行性:
进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
㈢社会可行性:
要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
[填空题]
56非渐增式测试与渐增式测试有什么区别?
渐增式测试如何组装模块?
参考答案:
非渐增式测试与渐增式测试的测试方法有以下区别:
(1)非渐增式测试方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模块的单元测试,后一阶段完成集成测试。
而渐增式测试往往把单元测试与集成测试和在一起,同时完成。
(2)非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。
(3)渐增式可以较早的发现接口之间的错误,非渐增式最后组装是才发现。
(4)渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。
(5)渐增式比较彻底,已测试的模块和新的模块再测试。
(6)渐增式占用的时间较多,但非渐增式须更多的驱动模块、桩模块也占用一些时间。
(7)非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。
渐增式测试有以下两种不同的组装模块的方法:
(1)自顶向下组合。
该方法只需编写桩模块,其步骤是从顶层模块开始,沿被测程序的软件结构图的控制路径逐步向下测试,从而把各个模块都结合起来,它又有两种组合策略:
①深度有先策略:
先从软件结构中选择一条主控制路径,把该路径上的模块一个个结合进来进行测试,以便完成一个特定的子功能,接着再结合其它需要优先考虑的路径。
②宽度有先策略:
逐层结合直接下属的所有模块。
(2)自低向上结合。
该方法仅需编写驱动模块。
其步骤为:
①把底层模块组合成实现一个个特定子功能的族。
②为每一个族编写一个驱动模块,以协调测试用例的输入和测试结果的输出。
③对模块族进行测试。
④按软件结构图依次向上扩展,用实际模块替换驱动模块,形成一个个更大的族。
⑤重复②至④步,直至软件系统全部测试完毕。
[填空题]
57需求分析阶段的基本任务是什么?
参考答案:
需求分析阶段的基本任务是要准确的定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。
本阶段要进行以下几方面的工作:
(1)问题识别。
双方确定对问题的综合需求,这些需求包括:
功能需求、性能需求、环境需求、用户界面需求,另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。
(2)分析与综合,导出软件的逻辑模型。
分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。
这里也包括对数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成份,并用图文结合的形式,建立起新系统的逻辑模型。
(3)编写文档。
编写“需求规格说明书”、编写初步用户使用手册、编写确认测试计划、修改完善软件开发计划。
[填空题]
58软件生产经历了几个阶段?
各有何特征?
参考答案:
软件生产至今已经历了三个阶段:
(1)程序设计时代(1946
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 综合 练习