《软件工程复习题(共8页).doc》由会员分享,可在线阅读,更多相关《软件工程复习题(共8页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上1. 美国一家公司在1982年计划用FORTRAN语言开发一个在VAX 750计算机上运行的应用程序,估计这个程序的长度为10000条FORTRAN指令。如果平均每人每天可以开发出10条FORTRAN指令,请问:(1)开发这个应用程序将用多少人日?(2)程序员月工资为4000美元,每月按20个工作日计算,这个软件的成本是多少美元?(3)1982年VAX 750计算机硬件价格约为美元,在那一年这个软件的成本在总成本中占多大比例?(4)20年后,一台性能远远优于VAX 750的微型计算机的价格约为2000美元,这时软件开发生产率已提高到平均每人每天可以开发出40条指令,而
2、程序员的月平均工资也已涨到8000美元。如果在2002年开发上述FORTRAN应用程序,则该软件的成本在总成本中占多大比例?答:(1) 开发这个应用程序大约需用1000个人日。需要指出的是,上述工作量包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试等各个开发阶段的工作量,而不仅仅是编写程序所需的工作量。(2)每月平均工作20天,故开发这个软件需要用 每人每月的平均工资为4000美元,因此这个软件的成本大约为 504000=(美元)(3)软件成本与硬件成本之和为计算机系统的总成本。这个软件的成本在总成本中所占的比例为(4)在2002年开发这个应用程序所需的工作量约
3、为这个软件的成本大约为12.58000=(美元)该软件的成本在总成本中所占的比例为2. 根据历史数据可以作出如下的假设。(1)对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:(2)存储器的价格按下面公式描述的趋势逐年下降:如果计算机字长为16位,则存储器价格下降的趋势为:在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。基于上述假设可以比较计算机硬件和软件成本的变化趋势。(1)在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少?(2)假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一
4、个字长,计算使存储器装满程序所需用的成本。(3)假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)(2)题所问。答:(1)在1985年对计算机存储容量的需求,估计是如果字长为16位,则这个存储器的价格是 =5789(美元)(2)如果一条指令的长度为一个字,则使存储器装满程序共需条指令。在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人每月可开发出1020=200条指令。为了开发出条指令以装满存储器,需要的工作量是程序员的月平均工资是4000美元,开发出条指令的成本为223714000=(美元)(3)在19
5、95年对存储容量的需求,估计为如果字长为32位,则这个存储器的价格是=7127(美元)如果一条指令为一个字长,则为使存储器装满程序共需条指令。在1995年一名程序员每天可开发出30条指令,每月可开发出6000条指令,为了开发出可装满整个存储器的程序,需用的工作量为开发上述程序的成本为6000=(美元)3. 什么是软件过程?它与软件工程方法学有何关系?答:软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。软件过程是
6、软件工程方法学的3个重要组成部分之一。4、复印机的工作过程如下:未接收到复印命令时处于闲置状态,一旦接收到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。卡 纸do/警告 排除了卡纸故障复 印do/复印 发生卡纸故障闲 置 复印命令 完成复印命令缺 纸do/警告 发现缺纸 装满纸 复印机的状态图9.画出下列伪码程序的程序流程图和盒图。P131 3题开 始p
7、F Tg q循环 while q nf q循环停 止F P T g qf n F10、如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,那么这个程序有多少个可能的输入?如果每微秒可进行一次测试,那么对所有可能的输入进行测试需要多长时间?答:每个32位的二进制整数具有232个可能的值,因此,具有两个整数输入的程序应该具有264个可能的输入。每微秒可进行一次测试,即每秒可进行106个测试,因此,每天可进行的测试数为60*60*24*106=8.64*1010这等于每年大约可进行3.139*1013个测试。因为210=1024103,所以264=(210)6.41019.2。(1019
8、.2/(3.139*1013)105,所以做完全部测试将至少需要105年(即10万年)。11、假设有一个由5000行FORTRAN语句构成的程序(经编译后大约有25000条机器指令),你估计在对它进行测试期间将发现多少个错误?为什么?答:经验表明,在类似的程序中,单位长度里的错误数ET/IT近似为常数。美国的一些统计数字告诉我们,通常:0.5*10-2ET/IT2*10-2 也就是说,在测试之前每1000条指令中大约有520个错误。假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间将发现的错误数为25000*(10/1000)=25012、一个折半查找程序可搜索按字母顺序排
9、列的名字列表,如果查找的名字在列表中则返回真,否则返回假。为了对它进行功能测试,应该使用哪些测试用例?答:为了对这个折半查找程序进行功能测试,应该使用下述测试用例:查找列表中第一个名字 预期的输出:TRUE查找列表中最后一个名字 预期的输出:TRUE 查找第一个名字后的名字 预期的输出:TRUE查找最后一个名字前的名字 预期的输出:TRUE查找位于列表中间的一个名字预期的输出:TRUE 查找不在列表中但按字母顺序恰好在第一个名字后的名字预期的输出:FALSE 查找不在列表中但按字母顺序恰好在最后一个名字前预期的输出:FALSE13、对一个包含10000条机器指令的程序进行一个月集成测试后,总共
10、改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。 要求:(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间的关系曲线。在画这条曲线时你做了什么假设? (2)为做到MTTF=100h,必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?答:(1)假设在程序的平均无故障时间MTTF和测试时间之间存在线性关系,即 MTTF=a+bA+B=10根据题意可知,当=1时MTTF=10,当=2时MTTF=15,把这些已知的数据代入上列方程后得到下列的联立方程式
11、解上列联立方程式得出a=5,b=5a+2b=15因此,MTTF与之间有下列关系 MTTF=5+5根据上列方程式画出平均无故障时间MTTF与测试时间的关系曲线 (2)为使MTTF=100h需要的测试时间可由下面的方程式得出100=5+5 得=19 即需要进行19个月的集成测试。已知平均无故障时间与单位长度程序中剩余的错误数成反比,具体到本题程序即有MTTF=10000/(K(ET-Ec()根据题意可知,改正了15个错误后MTTF=10,改正了25个错误后MTTF=15,把这些已知的数据代入到上列方程之后,解联立方程得到ET=45,K=33.33。已知当集成测试结束时MTTF=100h,即100=
12、10000/(33.33(45-EC(19) EC(19)=42 也就是说当集成测试结束时总共改正了42个错误,还有45-42=3个错误潜伏在程序中。14、在测试一个长度为48000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。经一个月测试后,甲发现并改正20个错误,使MTTF达到8h。与此同时,乙发现24个错误,其中的6个甲也发现了。以后由甲一个人继续测试这个程序。问: (1)刚开始测试时程序中总共有多少个潜藏的错误? (2)为使MTTF达到240h,必须再改正多少个错误?答:(1)本题中采用了分别测试法,因此,可估算出刚开始测试时程序中错误总数为ET=24/6*20=80
13、(2)因为8=48000/(K(ET-20)=48000/(K*60)所以K=100因为240=48000/(100(80-EC)所以EC=78为了使平均无故障时间达到240h,总共需要改正78个错误,测试员甲在与乙分别测试时已经改正了20个错误,因此,还需要再改正58个错误。1、软件=程序+数据+文档 软件程序2.、软件工程三要素:方法,过程,工具软件过程定义:软件过程是人们开发和维护软件及相关产品(如软件项目计划,设计文档、代码、测试用例及用户手册)的活动、方法、实践和改进的集合。3. 危机定义:计算机软件开发和维护过程中所遇到的一系列严重问题4.软件危机现状已完成”的软件不满足用户的需求
14、 软件产品的质量没有保证。开发进度不能保障,交付时间一再拖延。开发成本超出预算。 软件没有适当的文档主要表现是“已完成”的软件不满足用户的需求;开发进度不能保障;软件开发成本难以准确估算;软件产品的质量没有保证。5. 产生软件危机的原因:与软件的特点有关,与软件开发和维护的方法有关。6.软件生命周期一个软件从提出开发要求到废弃为止的整个时期。通常划分为:问题定义、可行性研究、需求分析、设计、实现、测试、集成、维护8个阶段。 软件生命周期是指一个软件从提出开发要求开始到该软件报废为止的整个时期。通常将软件的生命周期划分为问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、集成和测
15、试、维护阶段。 可行性研究主要是经济可行性,法律可行性,技术可行性7.软件开发模型:瀑布模型,快速原型化模型,螺旋模型模型的选择是基于软件的特点和应用领域。8.瀑布模型优缺点:为项目提供了按阶段划分的检查点;当前一活动完成后,只需要去关注后续活动;它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。 缺点:由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。9.快速原型化模型的优缺
16、点客户和开发者可以通过原型快速对需求达成一致,明确一致的需求对软件设计和实现具有重要作用;克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。(如果抛弃原型其缺点可避免。需求可变)10.螺旋模型优点:将瀑布模型和增量模型结合在一起对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。需要相当的风险分析评估专门技术,比较复杂11.软件开发方法 有结构化方法和面向对象方法结构化方法这一方法的精髓是自顶向下、逐步求精,也就是将功能逐步分解
17、,直到人们可以理解和控制它为止。面向对象方法基本思想:用对象模拟问题领域中的实体,以对象间的关系刻画实体间联系。本质是主张从客观世界固有的事物出发构造系统七、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。l 瀑布模型 优点:它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。虽然有不少缺陷但比在软件开发中随意的状态要好得多。缺点:(1) 实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型
18、的迭代是间接的,这很容易由微小的变化而造成大的混乱。(2) 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。(3) 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。(4) 会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。称之为“堵塞状态”。它是软件工程中应用最广泛的过程模型,在软件工程中占有肯定和重要的位置。增量模型优点:(1) 人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增
19、量。(2) 当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。缺点:(1) 至始至终开发者和客户纠缠在一起,直到完全版本出来。(2) 适合于软件需求不明确、设计方案有一定风险的软件项目。该模型具有一定的市场。l 螺旋模型 优点:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。缺点:(1) 需要相当的风险分析评估的专门技术,且成功依赖于这种技术。(2) 很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化 的方法失去控制。(3) 这种模型相对比较新,应用不广泛,其功效需要进一步的验证。该模型适合于大型软件的开发专心-专注-专业