习题参考答案天津大学计算机科学与技术学院.docx
- 文档编号:8881207
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:18
- 大小:308.87KB
习题参考答案天津大学计算机科学与技术学院.docx
《习题参考答案天津大学计算机科学与技术学院.docx》由会员分享,可在线阅读,更多相关《习题参考答案天津大学计算机科学与技术学院.docx(18页珍藏版)》请在冰豆网上搜索。
习题参考答案天津大学计算机科学与技术学院
第1章软件与软件工程
1、软件及软件工程定义
答:
软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。
软件=程序+数据+文档
程序=算法+数据结构
软件工程:
为了克服软件危机,在软降的开发生产过程中采用工程化的方法,采用一系列科学的,现代化的方法和技术开发软件,将工程化的思想贯穿到软件开发和维护的全过程。
2、软件危机的原因
答:
软件危机答:
软件开发和维护过程中遇到的一系列严重问题。
导致软件危机的原因:
1)软件的规模加大、复杂性提高、性能增强
2)软件是逻辑产品,尚未完全认识其本质和特点
3)缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法
4)用户对软件需求的描述和软件开发人员对需求的理解往往存在差异,用户经常要求修改需求,开发人员很难适应
5)软件开发的技术人员和管理人员缺乏软件工程化的素质和要求,对工程化的开销认识不足
3、简述瀑布模型及其特点
1.试简述瀑布模型软件开发方法的基本过程。
答:
1)软件开发过程与软件生命周期是一致的;2)相邻二阶段之间存在因果关系;3)需对阶段性产品进行评审
4、简述一下螺旋模型及其特点
答:
螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:
(1)制定计划:
确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2)风险分析:
分析评估所选方案,考虑如何识别和消除风险;
(3)实施工程:
实施软件开发和验证;
(4)客户评估:
评价开发工作,提出修正建议,制定下一步计划
5、简述一下原型模型及其特点
答:
原型模型的优点是:
(1)可及早为用户提供有用的产品。
(2)可及早发现问题,随时纠正错误。
(3)减少技术、应用风险,缩短开发时间,减少费用、提高生产率。
(4)通过实际运行原型,提供直接评价系统的方法,促使用户主动参与开发活动,加强了信息反馈,促进各类人员的协调,减少误解,适应需求变化,能有效提高系统质量。
原型模型的缺点是:
(1)缺乏丰富而强有力的软件工具和开发环境。
(2)缺乏有效的管理机制,还未建立起自己的开发标准。
(3)对设计开发环境要求较高。
(4)在多次重复改变原型的过程中,程序员会感到厌倦。
(5)系统的易变性对测试有一定影响,难于做到彻底测试,更新文档较为困难。
适用范围:
软件需求不明确、设计方案有一定风险的软件项目。
第2章软件项目管理
1、自底向上的成本估算法的特点。
答:
精度高,但缺少子任务(模块)间的联系
2、某项目总的功能点(FP)估算值是310,基于过去项目的人均月生产率是5.5FP,该项目总成本的估算值为560,000元,试估算月均人力成本。
答:
3、CMM
答:
即软件能力成熟度模型,是由美国卡内基-梅隆大学软件工程研究所(CMU/SEI)推出的评估软件能力与成熟度的一套标准,该标准基于众多软件专家的实践经验。
CMM侧重于软件开发过程的管理及工程能力的提高与评估,是国际上流行的软件生产过程标准和软件企业成熟度等级认证标准,它更代表了一种管理哲学在软件企业中的应用。
4、下面是某个程序的流程图,画出程序图并计算它的McCabe复杂性度量。
答:
程序图如下:
结点数n=6,弧数m=7,p=2,则有
V(G)=m-n+p=7-6+2=3.
第3章需求分析基础
1、请解释自顶向下,逐步求精。
答:
将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。
2、某银行的计算机储蓄系统功能是:
将储户填写的存款单或取款单输入系统,如果是存款,系统记录存款人姓名﹑住址﹑存款类型﹑存款日期﹑利率等信息,并打印出存款单给储户;如果是取款,系统计算清单给储户。
请用DFD描绘该功能的需求,并建立相应的数据字典。
数据流名称:
取款单、存款单
别名:
无
简述:
顾客存/取款时填写的单据
来源:
顾客
去向:
核查
数据流量:
200份/天
组成:
日期+[取|存款金额]+姓名+地址+[存/取款类型]+密码+{账号}
数据流名称:
存款凭证
别名:
无
简述:
顾客存款后得到的凭据
来源:
银行存款系统
去向:
顾客
数据流量:
200份/天
组成:
日期+存款金额+储户姓名+储户地址+存款类型+账号+利率+操作员
数据流名称:
结算单
别名:
无
简述:
顾客取款时得到的利率清单
来源:
银行储蓄系统
去向:
顾客
数据流量:
200份/天
组成:
取款日期+取款金额+储户姓名+储户地址+存款类型+利息+总金额+操作员
数据流名称:
存/取款信息
别名:
无
简述:
系统检查确认后得到的存/取信息
数据流名称:
存/取款信息
别名:
无
简述:
系统检查确认后得到的存/取信息
来源:
银行储蓄系统
去向:
登录
数据流量:
200份/天
组成:
日期+[存|取款金额]+储户姓名+储户地址+存款类型+账号+利率+密码+操作员
数据流名称:
付款信息
别名:
无
简述:
存储系统处理的取款信息
来源:
银行储蓄系统
去向:
付款处理
数据流量:
200份/天
组成:
日期+取款金额+储户姓名+储户地址+存款类型+账号+利息+总金额+操作员
数据存储名称:
账卡
别名:
无
简述:
存放用户信息及存取款情况
组成:
储户姓名+储户地址+账号+|日期|+[存/取款金额]+存款类型+利率+密码+操作员
组织方式:
数据文件,以储户姓名或账号为关键字进行索引
查询要求:
要求能立即查询并修改
数据项名称:
存款类型
别名:
无
简述:
国家规定的几类存款方式
类型:
字符串
长度:
2位
取值范围及含义:
00:
定期;01:
零存整取;10:
活期;11:
定/活两便
加工名:
核查
编号:
激发条件:
接受存款单或取款单
输入:
存款单或取款单
输出:
认定的合格的村/取款信息
加工逻辑:
根据账卡及用户存/取款单据
if单据=存款单then
存款单据是否填写规范,是否与现金一致
else
审核是否为有效取款单,取款金额不得超出存款金额,密码是否正确
3、(15分)某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:
1.每门课程都有3到6个单元构成,每个单元结束后会进行一次测试,其成绩作为这门课程的平时成绩。
课程结束后进行期末考试,其成绩作为这门课程的考试成绩。
2.学生的平时成绩和考试成绩均由每门课程的主讲教师上传给成绩管理系统。
3.在记录学生成绩之前,系统需要验证这些成绩是否有效。
首先,根据学生信息文件来确认该学生是否选修这门课程,若没有,那么这些成绩是无效的;如果他的确选修了这门课程,再根据课程信息文件和课程单元信息文件来验证平时成绩是否与这门课程所包含的单元相对应,如果是,那么这些成绩是有效的,否则无效。
4.对于有效成绩,系统将其保存在课程成绩文件中。
对于无效成绩,系统会单独将其保存在无效成绩文件中,并将详细情况提交给教务处。
在教务处没有给出具体处理意见之前,系统不会处理这些成绩。
5.若一门课程的所有有效的平时成绩和考试成绩都已经被系统记录,系统会发送课程完成通知给教务处,告知该门课程的成绩已经齐全。
教务处根据需要,请求系统生成相应的成绩列表,用来提交考试委员会审查。
6.在生成成绩列表之前,系统会生成一份成绩报告给主讲教师,以便核对是否存在错误。
主讲教师须将核对之后的成绩报告返还系统。
7.根据主讲教师核对后的成绩报告,系统生成相应的成绩列表,递交考试委员会进行审查。
考试委员会在审查之后,上交一份成绩审查结果给系统。
对于所有通过审查的成绩,系统将会生成最终的成绩单,并通知每个选课学生。
请采用结构化方法对这个系统进行分析与设计,试画出顶层数据流图和分层数据流图,并给出说明。
参考答案
图1顶层数据流图
图2分层数据流图
第4章软件设计基础
1、什么是软件体系结构?
你能说出几种典型的软件体系结构?
软件体系结构确定了系统的组织结构和拓扑结构,显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
•仓库模型
•客户机/服务器模型
•分布式对象结构
•抽象机模型
2、简述“高内聚低耦合”的含义,并举例说明在软件设计中如何实现“高内聚低耦合”。
答:
答:
内聚:
又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。
耦合:
也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。
高内聚,低耦合在软件工程的基本要求,主要是说模快之间和模块内部之间的关系紧密程度,高内聚就是提高模快内部的关联程度,低耦合当然就是降低模快之间的关联程度
举例:
(合理即可)
3、下面给出一个求实函数方程F(x)在自变量区间[a,b]中的全部实根的算法。
首先阅读此程序,然后
(1)画出消去全部goto语句的结构化程序流程图。
(2)将它改成N_S图和和PAD图。
(3)计算该程序的McCabe复杂性度量。
在算法中,a与b是区间[a,b]的两端点值;eps1与eps2是用户要求的求解精度。
如果区间中点的函数值的绝对值小于eps1或新的小区间的长度小于eps2,就认为这个中点为根。
floatBinRoot(floata,floatb,floateps1,floateps2){
floatlow=a,high=b,mid,fmid;
floatflow=Func(low),fhigh:
=Func(high);
labelL1,L2,L3;//标号说明,给定某些程序地址
if(flow*fhigh>0.0){BinRoot=0;gotoL3;}//无实根
L1:
mid=(low+high)/2;fmid=Func(mid);
if(abs(fmid)<=eps1){
L2:
BinRoot=mid;gotoL3;
}
elseif(high-mid<=eps2)gotoL2;
elseif(flow*fmid>0.0){low=mid;flow=fmid;gotoL1;}
else{high=mid;gotoL1};
L3:
}
答:
(1)程序流程图
(2)N-S图:
PAD图:
(3)环路复杂性度量V(G)=6
下面是某个程序的流程图,试分别用N-S图和PAD表示之,并计算McCabe复杂度。
答:
N-S图如下图所示
PAD图如下图所示
McCabe复杂度为6
4.(10分)画出求2010-2510年间闰年程序的N-S图表示PAD图,并计算程序的McCabe复杂度。
McCabe复杂度为5
5、(10分)有一个短信系统:
收发人员负责发送短信给用户和从用户接收短信。
短信系统提供的功能需求为:
1)短信发送:
填写发送内容,选择发送用户,并指明是否要回执,然后通过(无线终端或短信网关)发送短信。
2)短信接收:
从无线终端或短信网关读取短信内容,并显示查看。
请用DFD(数据流图)描绘该短信系统的功能需求,并将DFD转换为软件结构图。
第5章程序设计语言和编码
1、选择程序设计语言的一般准则
答:
1).项目的应用领域。
应尽量选取适合某个应用领域的语言。
2).算法和计算复杂性。
3).软件的执行环境。
要选取机器上能运行且具有相应支持软件的语言。
4).性能因素。
应结合工程具体性能来考虑。
5).数据结构的复杂性。
要根据不同语言构造数据结构类型的能力选取。
6).软件开发人员的知识水平以及心理因素。
要特别注意选择语言时,尽量避免受外界的影响,盲目追求高、新的语言。
2、结构化程序设计特点
答:
1).自顶而下、逐步求精:
这种逐步求精的思想符合人类解决复杂问题的普遍规律,从而可以显著提高软件开发的效率。
体现了先全局,后局部、先抽象后具体的方法,使开发的程序层次结构清晰,易读、易理解还易验证,因而提高了程序的质量。
2).单入口和单出口的控制结构:
结构化的程序是由且仅由顺序、选择、循环三种基本控制结构组成,既保证了程序结构清晰,又提高了程序代码的可重用性。
3、影响程序效率的因素
答:
1).算法对效率的影响
2).存储效率
3).输入输出效率
第6章软件测试
1、黑盒测试
答:
不考虑程序的内部结构与特性,只根据程序功能或程序的外部特性设计测试用例。
2、下面是选择排序的程序,其中datalist是数据表,它有两个数据成员:
一是元素类型为Element的数组V,另一个是数组大小n。
算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey(),一是交换两数组元素内容的操作Swap():
:
voidSelectSort(datalist&list){
//对表list.V[0]到list.V[n-1]进行排序,n是表当前长度。
for(inti=0;i intk=i;//在list.V[i].key到list.V[n-1].key中找具有最小关键码的对象 for(intj=i+1;j if(list.V[j].getKey() if(k! =i)Swap(list.V[i],list.V[k]);//交换 } } (1)试画出此程序段的流程图和程序图; (2)给出判定覆盖的测试路径; (3)设计判定覆盖的测试用例。 答: (1)程序的流程图和程序图分别如下 (2)判定覆盖的测试路径有5条: ①③ ①②⑤⑧…… ①②⑤⑨…… ①②④⑥…… ①②④⑦…… (3)为各判定覆盖测试路径设计测试用例: 路径①③: 取n=1 路径①②⑤⑧……: 取n=2, 预期结果: 路径⑤⑧③不可达 路径①②⑤⑨……: 取n=2, 预期结果: 路径⑤⑨③不可达 路径①②④⑥⑤⑧③: 取n=2,V[0]=2,V[1]=1,预期结果: k=1,V[0]=1,V[1]=2 路径①②④⑥⑤⑨③: 取n=2,V[0]=2,V[1]=1,预期结果: k=1,路径⑨③不可达 路径①②④⑦⑤⑧③: 取n=2,V[0]=1,V[1]=2,预期结果: k=0,路径⑧③不可达 路径①②④⑦⑤⑨③: 取n=2,V[0]=1,V[1]=2,预期结果: k=0,V[0]=1,V[1]=2 3、试分别设计如图所示的程序的语句覆盖、判定覆盖、条件覆盖测试用例。 答: 语句覆盖测试用例: 【(2,0,4),(2,0,3)】覆盖ace 判断覆盖测试用例: 【(2,0,4),(2,0,3)】覆盖ace; 【(1,1,1),(1,1,1)】覆盖abd; 或 【(2,1,1),(2,1,2)】覆盖abe; 【(3,0,3),(3,1,1)】覆盖acd; 条件覆盖测试用例: 【(1,0,3),(1,0,4)】覆盖abe; 【(2,1,1),(2,1,2)】覆盖abe; 或 【(2,0,4),(2,0,3)】覆盖ace; 【(1,0,1),(1,0,1)】覆盖abd; 【(2,1,1),(2,1,2)】覆盖abe 测试用例只要合理就是正确的。 第7章软件维护 1、软件维护 答: 是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。 2、软件维护类型有那几种,在对学校公文系统进行维护主要增加了公文群发功能,这次维护属于那种维护? 答: A、完善性维护 B、纠错性维护 C、适应性维护 D、预防性维护 学校公文系统的维护属于完善性维护 第8章软件重用技术 1、软件重用 答: 软件重用就是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。 2、软件重用就是代码重用吗? 为什么? 答: 不正确,软件重用不仅是对程序的重用,它包括对软件生产过程中任何活动所产生的制成品的重用。 如: 项目计划、可行性报告、需求定义、分析模型、详细说明、源程序和测试用例等等。 3、简述软件重用及其优点 答: 软件复用是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的,提高软件的生产力。 软件重用的优点: (1)提高软件生产率,降低软件生产代价; (2)提高软件质量; (3)互操作性好; (4)推动标准化; (5)支持原型开发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 参考答案 天津大学 计算机科学 技术学院