软件工程复习材料有答案.docx
《软件工程复习材料有答案.docx》由会员分享,可在线阅读,更多相关《软件工程复习材料有答案.docx(27页珍藏版)》请在冰豆网上搜索。
软件工程复习材料有答案
一、写出下列缩写英文的中文涵义[30T]
【参考答案】
计算流体动力学()
数据流图()
面向对象分析方法()
结构化分析方法()
结构化设计()
结构化编程()
成熟度模型()
能力成熟度模型集成()
统一建模语言()
计算机辅助软件工程()
极限编程()
客户机/服务器网()
浏览器和服务器结构()
构架权衡分析方法()
页描述语言()
软件质量保证()
模型-视图-控制器()
循环冗余码校验()
相互广播系统()
基于构件的软件开发()
图形用户界面()
结构化查询语言()
平均恢复前时间()
平均失效前时间()
平均无故障时间()
正式技术复审()
计划评审技术()
软件配置管理()
关键路径方法()
二、概念[34]
[1]在《计算机科学技术百科全书中》,对计算机软件作出如下定义:
计算机软件指计算机系统中的程序和文档,前者是计算任务的处理对象和处理规则的描述;后者是为了便于了解程序所需的阐述性资料。
[2]软件和硬件具有完成不同的特性,软件是设计开发的,而不是传统意义上生产制造的。
工具三个方法、分过程、软件工程是一种层次化技术,是建立在以质量焦点为基础的,[3]
研究层次的综合技术。
[4]软件工程是应用计算机科学、数学及管理学等原理,开发软件的工程,其框架可概括为:
目标、过程和原则。
[5]结构化设计方法中,要把数据流图转换成软件结构,若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一个路径来执行,这种特征的称为事务型的数据流图。
[6]数据流图仅反映系统必须完成的逻辑功能,所以它是一种功能模型。
[7]耦合性是定性度量模块独立性的标准之一,它根据模块的外部特征提出的,是对软件系统结构中各模块间相互联系紧密程度的一种度量,也称块间关系。
[8]衡量软件的独立性有两个定性的度量标准,即耦合和内聚。
[9]任何程序都可由选择结构、循环结构和顺序结构3种基本控制结构构造,其共同点是单入口、单出口。
[10]统一过程()是一种用例驱动的迭代式增量开发过程,每次迭代过程中主要的工作流包括捕获需求、分析、设计、实现和测试等,这种软件过程的用例图式通过分析得到。
[11]软件开发是一个自顶向下逐步细化和求精过程,而软件测试是一个自底向上或相反顺序集成的过程。
[12]软件测试的目的是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。
[13]软件质量定义为:
与所确定的功能和性能需求的一致性;与所成文的开发标准的一致性;与所有专业开发的软件所期望的隐含特性的一致性。
[14]是软件规模的一种量度,它表示源代码行数
[15]参照以前完成的项目所耗费的总成本来推算将要开发的软件的总成本,然后把它们按阶段、步骤和工作单元进行分配,这种方法被称为自顶向下方法。
[16]在统一建模语言()中,描述系统与外部系统及用户之间交互的图是用例图。
[17]如果一个软件是给许多客户使用的,大多数软件厂商要使用几种测试过程来发现那些可能只有最终用户才能发现的错误,测试(β测试)是由软件的最终用户在一个或多个用户实际使用环境下来进行的。
[18]结构化分析方法()的一个重要指导思想是自顶向下,逐步分解.
[19]软件从一个计算机系统转换到另一个计算机系统运行的难易程度是指软件可移植性
[20]在进行面向对象设计时,采用设计模式能够复用相似问题的相同解决方案
[21]面向对象分析需要找出软件需求中客观存在的所有实体对象,然后归纳、抽象出实体类。
名词分析是寻找实体对象的有效方法之一。
[22]需求分析最终结果是产生需求规格说明书
[23]软件结构图中,模块框之间若有直线连接,表示它们之间存在调用关系
[24].在软件开发过程中,软件设计包括4个既独立又相互联系的活动,分别为体系结构设计、接口设计、数据设计和过程设计。
.
[25]进行软件项目的风险分析时,风险避免、风险监控和风险管理及意外事件计划是风险控制活动中需要考虑的问题。
[26]开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称为软件危机
[27]黑盒测试在设计测试用例时,主要需要研究需求规格说明与概要设计说明
如果一个软件是给许多客户使用的,大多数软件厂商要使用几种测试过程来发现那些[28]可能只有最终用户才能发现的错误,测试(α测试)是由一个用户在开发者的场所来进行的,测试的目的是寻找错误的原因并改正之。
[29]软件质量必须在设计和实现的过程中加以保证,为了确保每个开发过程的质量,防止把软件差错传递到下一过程,必须进行质量检验
[30]甘特()图的作用是什么?
[以课本为主]
通过条状图来显示项目,进度,和其他时间相关的系统进展的内在关系随着时间进展的情况。
[31]面向对象具有继承性、多态性、封装性、信息隐蔽等特征
[32]白盒和黑盒测试各有哪些方法。
[以课本为主]
白盒方法:
·代码检查法
·静态结构分析法
·静态质量度量法
·逻辑覆盖法
·基本路径测试法
·域测试
·符号测试
·Z路径覆盖
·程序变异
黑盒方法:
·等价类划分方法
·边界值分析方法
·错误推测方法
·因果图方法
·判定表驱动分析方法
·正交实验设计方法
·功能图分析方法
[33]软件度量有哪些方法[以课本为主]
·功能点分析(:
)
·代码行(:
)
·德尔菲法()
·模型、特征点()
·对象点()
·3功能点(3)
·度量('s)
·模糊逻辑()
·标准构件法()等
自顶向下和自底向上]以课本为主[成本估算有哪些方法[34]
三、名词解释[10T]
信息隐蔽可靠性用例正确性可移植性基线再工程重构集成测试场景
[1]信息隐蔽:
是指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。
[2]可靠性:
一个程序期望以所需的精确完成它的预期功能的程度。
[3]用例:
一组场景,用以共同描述用户的某个特定的目标。
[4]正确性:
一个程序满足它的需求规约以及实现客户任务目标的程度。
[5]可移植性:
软件从一个计算机系统转换到另一个计算机系统运行的难易程度。
[6]基线:
是指已经经过正式审核和同意,可用作下一步开发的基础,且只有通过正式的修改管理过程方能加以修改的规约说明或产品。
[7]再工程:
逆向工程+重构+正向工程
[8]重构:
就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
[9]集成测试:
也称组装测试或联合测试,是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。
组装模块的方式有两种:
渐增式测试和非渐增式测试。
[10]场景:
用户与系统之间的一个交互过程,即为实现这次交互所要经历的一系列步骤。
四、案例分析[7T]
[1]阅读以下说明和图,回答问题1至问题4。
某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:
1)每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。
课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
2)学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
3)在记录学生成绩之前,系统需要验证这些成绩是否有效。
首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,在根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则是无效的。
4)对于有效成绩,系统将其保存在课程成绩文件中。
对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。
在教务处没有给出具体处理意见之前,系统不会处理这些成绩。
5)若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。
教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。
6)在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。
主讲教师必须将核对之后的成绩报告返还系统。
.
7)根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。
考试委员会在审查之后,上交一份成绩审查结果给系统。
对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。
现采用结构化方法对这个系统进行分析与设计,得到如图
(1)所示的顶层数据流图和图
(2)所示的0层数据流图。
学生成绩成绩列表
EE2成绩审查结果成绩报告成绩管理系统课程核对后的成绩报告无效成绩通知完成通知生成成绩列表请求成绩单E3E4
图
(1)顶层数据流图
D1无效成绩
D2E2核对后的成绩报告
45生成最终成绩单成绩单
学生成绩1有效成绩记录有效成绩
成绩报告
D3记录无效成绩
验证学生信息
生成成绩列表生成成绩列表请求
课程完成通知
3无效成绩通知
2
D4D5
E4
E3
E1
图
(2)第0层数据流图
[问题1]使用说明中的词语,给出图
(1)中的外部实体E14的名称。
[问题2]使用说明中的词语,给出图
(2)中的数据存储D15的名称。
[问题3]数据流图
(2)中缺少了三条数据流,根据说明及数据流图
(1)提供的信息,分别指出这三条数据流的起点和终点。
起点终点
【分析】
本题考查的是的应用,属于比较传统的题目,考查点也与往年类似。
【问题1】
外部实体是在系统边界之外的个人和组织,它提供数据,或者接受数据输出。
根据主要功能描述:
学生成绩均由每门课程的主讲教师上传给成绩管理系统,所以主讲教师是一个外部实体,根据顶层流程图,得知E2处应填主讲教师;对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处各成绩已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。
在这里教务处是一个外部实体,应填在E4处。
根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。
考试委员会在审查之后,上交一份成绩审查结果给系统。
在这里考试委员会是一个外部实体,应填在E1处;对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。
在这里选课学生是一个外部实体,应填在E3处。
【问题2】
数据存储是保存数据的地方,将来一个或者多个过程会访问这些数据。
根据0层数据流图,在验证学生信息处有3个数据输入,根据在记录学生成绩之前,系统需要验证这些成绩是否有效。
首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。
得知由学生信息文件、课程单元信息文件、课程信息文件共3个文件帮助验证:
在生成成绩列表处也要利用到D1文件,现已输入了成绩审查结果、核对后的成绩报告,只缺学生信息文件,所以D1处应填学生信息文件;D2和D3处分别填课程单元信息文件和课程信息文件。
D4是记录有效成绩的一个输出文件,根据对于有效成绩,系统将其保存在课程成绩文件中。
知D4处应填课程成绩文件;D5是记录无效成绩的输出文件,根据对于无效成绩,系统会单独将其保存在无效成绩文件中。
,D5处应填无效成绩文件。
【问题3】
在0层数据流图中的生成成绩列表处没有课程成绩文件输入,不可能生成成绩列表。
所以在此处缺少一条从D4课程成绩文件到生成成绩列表的数据流。
生成最终成绩单没有任何输入,不符合数据输入/输出平衡,根据根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。
考试委员会在审查之后,上交一份成绩审查结果给系统。
对于所有通过审查的成绩,系统将会生成最终的成绩单,所以应根据学生信息文件和生成成绩列表才能生成最终成绩单,所以还应补充从D1学生信息文件到生成最终成绩单的数据流和生成成绩列表到生成最终成绩单的数据流。
【问题4】
程序流程图通常在进行详细设计时使用,用来描述程序的逻辑结构(功能需求)。
【参考答案】
【问题1】(4分)
E1:
考试委员会;E2:
主讲教师;E3:
学生或选课学生;E4:
教务处
分)3(】2【问题.
D1:
学生信息文件;D2:
课程单元信息文件;D3:
课程信息文件;
D4:
课程成绩文件;D5:
无效成绩文件
注:
D2和D3的答案可以互换。
【问题3】(6分)
起点终点
4或课程成绩文件或生成成绩列表D45或D1或学生信息文件生成最终成绩单
5或4或生成成绩列表生成最终成绩单
注:
数据流起点、终点全部答对才可给分,数据流不分先后顺序。
某培训中心要研制一个计算机管理系统。
它的业务是:
将学员发来的信件收集分类后,[2]
按几种不同的情况处理。
如果是报名的,则将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查该1)
然后在学生文件、课程文件上登记,并开出报告单交财务部门,财务人员开课程是否额满,出发票给学生。
学生文件和账目文件上做则由注销人员在课程文件、2)如果是想注销原来已选修的课程,相应的修改,并给学生注销单。
3)如果是付款的,则由财务人员在账目文件上登记,也给学生一张收费收据。
所示。
通过分析该问题,得数据流图如图3)中有三条数据流是错误的,请写出改正后的这三条数据流的起点和[问题31]数据流图(终点。
依据上述说明中给出的词语,将图(2]1)中的【12】处补充完整。
【】、[问题[1]账目、学生[2]
自顶向下、逐次功能展[)的类型,若要完成软件结构设计,则采用33]问题根据图(
开?
方法。
图3数据流图
学生文件
收集性文化程度年组合理等价类
学员输入数据
领科行资考1.0x数字串2.以-位数字串
十六进制整数
账目文课程文注学发分报
学账
付
3修改后数据流图图
参考数据流图
[3]某指纹门禁系统的体系结构如图(4)所示,其主要部件有:
主机()、锁控器()、指纹采集器()和电控锁()。
1)系统中的每个电控锁都有一个唯一的编号。
锁的状态有两种:
“已锁住”和“未锁住”。
2)在主机上可以设置每把锁的安全级别以及用户的开锁权限。
只有当用户的开锁权限大于或等于锁的安全级别并且锁处于“已锁住”状态时,才能将锁打开。
用户的指纹信息、开锁权限以及锁的安全级别都保存在主机上的数据库中。
3).
4)用户开锁时,只需按一下指纹采集器。
指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁打开,否则系统报警。
该系统采用面向对象方法开发,系统中的类以及类之间的关系用类图表示,图(5)是该系统类图的一部分;系统的动态行为采用系列图表示,图(6)是用户成功开锁的序列图。
图(4)体系结构
)系统类图5图(.
图(6)序列图
[问题1]图(5)是该系统类图的一部分,依据上述说明中给出的术语,给出类的主要属性。
[问题2]依据上述说明中给出的词语,将图(6)中的
(1)~(5)处补充完整。
【分析】
本题是一道使用面向对象方法进行系统开发的题目,主要考查利用的类图和序列图进行面向对象的分析。
类图是面向对象系统的建模中最常见的图。
类图显示了一组类、接口、协作以及它们之间的关系。
类图用于对系统静态设计视图建模。
在图形上,类图是顶点和弧的集合。
在类图中通常包含:
类、接口、协作、依赖、泛化和关联关系。
类图还可以含有包或者子系统,二者都用于把模型元素聚集成更大的组块。
当对系统的静态设计视图建模时,通常以下述3种方式之一使用类图。
①对系统的词汇建模。
对系统的词汇建模涉及做出这样的决定:
哪些抽象是考虑中的系统的一部分,哪些抽象处于系统边界之外。
用类图详细描述这些抽象和它们的职责。
②对简单的协作建模。
协作是一些共同工作的类、接口和其他元素的群体,该群体提供的一些合作行为强于所有这些元素的行为之和。
③对逻辑数据库模式建模。
将模式看作为数据库的概念设计的蓝图。
在很多领域中,要在关系数据库或面向对象数据库中存储永久信息。
可以用类图对这些数据库的模式建模。
序列图是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。
序列图有两个特征:
序列图有对象生命线。
对象生命线是一条垂直的虚线,表示一个对象在一段时间内存在。
在交互图中出现的大多数对象存在于整个交互过程中,所以这些对象全都排列在图的顶部,其生命线从图的顶部画到图的底部。
但对象也可以在交互过程中创建,它们的生命线从接收到构造型为的消息时开始。
对象也可以在交互过程中撤销,它们的生命线在接收到构造型为的消息时结束(并且给出一个大X的标记表明生命的结束)。
序列图有控制焦点。
控制焦点是一个瘦高的矩形,表示一个对象执行一个动作所经历的时间段,既可以是直接执行,也可以是通过下级过程执行。
矩形的顶部表示动作的开始,底部表示动作的结束(可以由一个返回消息来标记)。
还可以通过将另一个控制焦点放在它的父从另一个对象的回调所引起的)控制焦控制焦点的右边来显示(由循环、自身操作调用或.
点的嵌套(其嵌套深度可以任意)。
如果想特别精确地表示控制焦点在哪里,也可以在对象的方法被实际执行(并且控制还没传给另一个对象)期间,将那段矩形区域阴影化。
【问题1】
图3-2给出了一个不完整的类图,已经完成了面向对象分析中的认定类,下一步的工作是定义类的内部信息,本题主要考查如何从问题域中抽象出类的属性。
由于已经确定了类,寻找类的属性就相对容易了。
类是本系统中的一个关键类,与它的属性相关的描述有:
系统中的每个电控锁都有一个唯一的编号、锁的状态有两种、在主机上可以设置每把锁的安全级别。
锁的编号、锁的状态以及锁的安全级别都是用来说明的属性及特性的,也是类的关键属性。
【问题2】
序列图显示了一组对象和由这组对象发送和接收的消息。
创建序列图时,首先应确定要建模的内容。
它是针对一个用例的基本活动过程吗?
一个候选过程?
还是基本活动过程与一个或多个候选过程的组合?
本题中并没有给出用例图,但是题目的说明已经指出了图3-3所示的序列图的建模内容:
用户成功开锁的活动。
用户开锁的过程在说明中的(4)给出。
序列图是按照时间顺序组织的对象之间的交互活动,因此需要将这些活动按照时间顺序排序,并记录下参与每个活动的对象。
用户开锁的激发事件是:
用户按下指纹采集器。
①发送中断事件;指纹采集器→锁控器。
②读取用户指纹;锁控器→指纹采集器。
③请求开锁;锁控器→主机。
④读取锁的状态;主机→锁。
⑤读取用户的开锁权限;主机→用户。
⑥读取锁的安全级别;主机→锁。
⑦判断用户是否能够开锁;主机→主机。
⑧通知能够开锁;主机→锁控器。
⑨将锁打开;锁控器→锁。
【问题3】
在面向对象的建模中,有3种特别重要的关系:
依赖,它表示类之间的使用关系;泛化,它把一般类连接到它的特殊类;关联,它表示对象之间的结构关系。
聚集是一种特殊的关联。
聚集完全是概念性的,只不过要区分所谓的整体与部分。
聚集既没有改变整体与部分之间跨越关联的导航含义,也不链接整体和部分的生存周期。
组装是聚集一种形式,它具有强的拥有关系,而且整体与部分具有相同的生存周期。
在组装中,一个对象在一个时间内只能是一个组装的一部分;整体负责对它的各个部分的处置,这意味着组装必须管理它的部分的创建与撤销。
【参考答案】
【问题1】
锁的编号、安全级别、锁的当前状态
【问题2】
(1)中断事件
(2)读取用户指纹(3)读取用户开锁权限
(4)读取锁的安全级别(5)判断用户是否有权限开锁或用户是否可以开锁
【问题3】
组装和聚集都表示实例之间的整体/部分关系。
组装是聚集的一种形式。
聚集是概念性的,只是区分整体与部分。
组装具有很强的归属关系,而且整体与部分的对象生存周期是一致的。
.
或者回答:
如果没有成分对象,组装对象也不存在;在任何时候,每个给定的成分对象只能是组装对象的组成部分。
[4]某公司为本科以上学历的人重新分配工作,分配原则如下:
1)如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作。
2)如果年龄满18岁不满50岁,学历本科,不分男女,任中层领导职务,学历是硕士不分男女,任课题组组长。
3)如果年龄满50岁,学历本科,男性任科研人员,女性则担任资料员,学历是硕士不分男女,任课题组组长。
要求:
画出分析过程,得出判定表,并进行化简。
【参考答案】
(1)判定条件可能取值表:
条件名称取值符号取值数
M男M1=2
性别F女
C岁不满25Y25岁小于50岁年龄满M2=3L岁50超过G硕士文化程度M3=2本科U
(2)计算组合数2*3*2=12;
(3)初步判定表
123456789101112
FMFFFFMMMMF性别M
U文化程度GUUUGUUGGGG
CLYYYCCCY年龄LLL
√√√√组长√√√√领导
√科研
行政√
√料资员
研考√
(4)简化后的判定表
461012112,35,19
FFMM
UUGUUUCCLLY
[5]某公司员工工资管理的一部分,下图(7)、图(8)分别是同一功能的两个不同设计方
案。
8)7)图(图(
]:
分析哪种设计方案较好?
请陈述理由。
[问题【参考答案】第二设计方案好。
利用衡量模块独立性的两个标准耦合性和内聚性(模块划分时应尽量做到高内聚、低耦合,提高模块独立性)判断设计方案优劣。
第一方案图中模块B的功能是取平均工资或最高工资,可见模块B包含两个功能,故模块B内聚弱,而模块B与模块A的耦合是控制耦合,耦合程度较高,模块的相对独立性差。
而在第二方案图中,模块B分解成两个功能相对独立的模块B1和B2,模块B1和B2内聚程度高,模块B1