软件工程试题2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦发现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做出选择的理由。
答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原模型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。
综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。
2.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对公布。你打算采用哪种软件生命周期模型?为什么?
答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。
这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得到3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开发式的,以利于今后的改进和扩充。
3.请为某仓库的管理设计一个ER(实体联系图)模型。该仓库主要管理零件的订购和供应等事项。仓库向工程项目提供零件,并且根据需要向供应商提供零件。
答:建立ER图的大致过程如下所述。
(1)确定实体模型
本问题中共有三类实体,分别是“零件”、“工程项目”和“供应商”。
(2)确定联系模型
一种零件可供应多个工程项目,一个工程项目需要使用多种零件,因此,零件与工程项目之间的联系“供应”,是多对多(M:N)联系;类似地,零件与供应商之间的联系“订购”,也是多对多(M:N)联系。
(3)确定实体类型和联系类型的属性
实体类型“零件”的主要属性是零件编号、零件名称、颜色和重量。实体类型“工程项目”的属性主要是项目编号、项目名称和开个日期。实体类型“供应商”的属性主要有供应商编号、供应商名称和地址。
联系类型“供应”的属性是向某工程项目供应的某种零件的数量。联系类型“订购”的属性是向某供应商订购的某种零件的数量。
(4)把实体类型、联系类型及属性组合成ER图
注:椭圆、矩形、菱形,线段
4.某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,如果是本地电话再接着拨8位电话号码(第1位不是0),如果是外地电话则先拨3位区码,再拨8位电话号码(第1位不是0)。数据字典
请用2.8节讲述的符号定义上述的数据流图。
答:电话号码=[校内电话号码|校外电话号码]
校内电话号码=非零数字+3位数字
校外电话号码=[本市号码|外地号码]
本市号码=数字零+8位数字
外地号码=数字零+3位数字+8位数字
非零数字=[1|2|3|4|5|6|7|8|9]
数字零=0
3位数字=3{数字}3
8位数字=非零数字+7位数字
7位数字=7{数字}7
数字=[0|1|2|3|4|5|6|7|8|9]
注:[|]:或关系,{}:重复关系,+:和关系,... :基本数据元素,.. :连接符
5.办公室复印机的工作过程大致如下:未接收到复印命令时处于闲置状态,
一旦接收到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲
置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,则进入缺纸状态,
发出警告,等待装纸,装满纸后处于闲置状态,准备接受复印命令;如果复印时
发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除
后回到闲置状态。
请用状态转换图描绘复印机的行为。
答:从问题陈述可知,复制机的状态主要有闲置、复印、缺纸和卡纸。引起
状态转换的事件主要是复印命令、完成复印命令、发现缺纸、装满纸、发现卡纸
故障和排除了卡纸故障。
注:状态、事件
6.如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,
那么这个程序有多少种可能的输入?如果每微秒可进行一次测试,那么对所有可
能的输入进行测试需要多长时间?
答:每个32位的二进制整数具有32
2个可能的值,因此,具有两个整数输入
的程序应该具有642个可能的输入。
每微秒(us)可进行一次测试,即每秒可进行610个测试,因此,每天可
进行的测试数为
60×60×24×610=8.64×1010
这等于每年大约可进行365*8.64*10exp(10)=3.139×1310个测试。 改:51318
13641010
*319.310*1610*319.32>≈ 所以做完全部测试将至少需要5
10年(即10万年)。
7.对一个包含10 000条机器指令的程序进行一个月集成测试后,总共改正了
15个错误,此时MTTF=10h ;经过两个月测试后,总共改正了25个错误(第二
个月改正了10个错误),MTTF=15h 。
要求: