当前位置:首页 > 软件工程试题2
1. 假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。一旦发现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明你做出选择的理由。
答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原模型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。
综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。
2.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对公布。你打算采用哪种软件生命周期模型?为什么?
答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。
这个项目是开发该公司已被广泛应用的字处理软件的新版本,从上述事实至少可以得到3点结论:第一,旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求,没必要再专门建立一个原型系统来分析用户的需求;第二,该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广大用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开发式的,以利于今后的改进和扩充。
综上所述,采用增量模型来完成这个项目比较恰当。 开发模型 特点 适用场合 传统软件过程 瀑布模型 线性模型 需求明确 中小型 快速原型模型 用户介入早 需求模糊 小型软件 软件演化模型 增量模型 迭代 ,OO开发 (易于维护) 螺旋模型 不确定性 大型 构件集成模型 领域工程 中型 形式化方法 转换模型 形式化SRS 理想化 净室模型 形式化增量开发 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位的二进制整数具有2个可能的值,因此,具有两个整数输入的程序应该具有2个可能的输入。
每微秒(us)可进行一次测试,即每秒可进行10个测试,因此,每天可进行的测试数为
610 60×60×24×10=8.64×10
13这等于每年大约可进行365*8.64*10exp(10)=3.139×10个
66432测试。
26416*1018??105 改:13133.319*103.319*10所以做完全部测试将至少需要10年(即10万年)。
7.对一个包含10 000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。
要求:
5(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间?的关系曲线。在画这条曲线时你做了什么假设?
(2)为做到MTTF=100h,必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误?还有多少个错误潜伏在程序中?
答:(1)假设在程序的平均无故障时间MTTF和测试时间?之间存在线性关系,即
MTTF=a+bt
根据题意可知,当?=1时MTTF=10,当?=2时MTTF=15,把这些已知的数据代入上列方程后得到下列的联立方程式
?a?b?10? ?a?2b?15 解上列联立方程得出a=5,b=5
因此,MTTF与?之间有下列关系
MTTF=5+5t
根据上列方程式画出平均无故障时间MTTF与测试时间?的关系曲线,如图4.2所示
(2)为使MTTF=100h
MTTF=100h=5+5t,==>t=19,集成测试时间:19 ,需要的测试时间可由方程式得出
MTTF?
10000K(ET?EC(?))
注:Ec(t):在0-t时间内纠错数,Et:调试前错误数,MTTF:平均无故障时间
根据题意可知,改正了15个错误后MTTF=10,改正了25个错误后MTTF=15,把这些已知的数据代人上列方程之后,得到下列的联立方程式
10000?10??K(ET?15)???15?10000?K(ET?25) ? 解上列联立方程式得到ET=45,K=33.33.
已知当集成测试结束时,t=19
100?
1000033.33(45?Ec(19))
所以 EC(19)?42
共分享92篇相关文档