您好,欢迎访问三七文档
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]数字零=03位数字=3{数字}38位数字=非零数字+7位数字7位数字=7{数字}7数字=[0|1|2|3|4|5|6|7|8|9]注:[|]:或关系,{}:重复关系,+:和关系,...:基本数据元素,..:连接符5.办公室复印机的工作过程大致如下:未接收到复印命令时处于闲置状态,一旦接收到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸,装满纸后处于闲置状态,准备接受复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。请用状态转换图描绘复印机的行为。答:从问题陈述可知,复制机的状态主要有闲置、复印、缺纸和卡纸。引起状态转换的事件主要是复印命令、完成复印命令、发现缺纸、装满纸、发现卡纸故障和排除了卡纸故障。注:状态、事件6.如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,那么这个程序有多少种可能的输入?如果每微秒可进行一次测试,那么对所有可能的输入进行测试需要多长时间?答:每个32位的二进制整数具有322个可能的值,因此,具有两个整数输入的程序应该具有642个可能的输入。每微秒(us)可进行一次测试,即每秒可进行610个测试,因此,每天可进行的测试数为60×60×24×610=8.64×1010这等于每年大约可进行365*8.64*10exp(10)=3.139×1310个测试。改:5131813641010*319.310*1610*319.32所以做完全部测试将至少需要510年(即10万年)。7.对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。要求:(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间的关系曲线。在画这条曲线时你做了什么假设?(2)为做到MTTF=100h,必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误?还有多少个错误潜伏在程序中?答:(1)假设在程序的平均无故障时间MTTF和测试时间之间存在线性关系,即MTTF=a+bt根据题意可知,当=1时MTTF=10,当=2时MTTF=15,把这些已知的数据代入上列方程后得到下列的联立方程式15210baba解上列联立方程得出a=5,b=5因此,MTTF与之间有下列关系MTTF=5+5t根据上列方程式画出平均无故障时间MTTF与测试时间的关系曲线,如图4.2所示(2)为使MTTF=100hMTTF=100h=5+5t,==>t=19,集成测试时间:19,需要的测试时间可由方程式得出))((10000CTEEKMTTF注:Ec(t):在0-t时间内纠错数,Et:调试前错误数,MTTF:平均无故障时间根据题意可知,改正了15个错误后MTTF=10,改正了25个错误后MTTF=15,把这些已知的数据代人上列方程之后,得到下列的联立方程式)25(1000015)15(1000010TTEKEK解上列联立方程式得到TE=45,K=33.33.已知当集成测试结束时,t=19))19(45(33.3310000100cE所以42)19(CE错误总数:45也就是说,当集成测试结束时总共改正了42个错误,还有45-42=3个错误潜伏在程序中。8.为什么在开发大型软件时,采用面向对象范型比采用结构化范型较易取得成功?答:结构化技术要么面向处理(例如面向数据流的设计方法),要么面向数据(例如面向数据结构的设计方法),但却没有既面向处理又面向数据的结构化技术。用结构化技术开发出的软件产品的基本成分是产品的行为(即处理)和这些行为所操作的数据。由于数据和对数据的处理是分离的,尽管开发者把程序划分成了许多模块,但是这些模块之间的联系却是比较紧密的(耦合性高,模块独立性低),因此,使用结构化范型开发出的软件产品本质上是一个完整的单元。由此带来的后果是软件规模越大,用结构化范型开发软件的技术难度和管理难度就越大。与结构化技术相反,面向对象技术是一种以数据为主线,把数据和处理相结合的方法。面向对象范型把对象作为由数据及可以施加在这些数据上的操作所构成的统一体。用面向对象范型开发软件时,构成软件系统的每个对象就好像一个微型程序,有自己的数据、操作、功能、和用途,因此,可以把一个大型软件产品分解成一系列本质上相互独立的小产品来处理(分解、细化,模块化),不仅降低了软件开发的技术难度,而且也使得对软件开发工作的管理变得相对容易了。9.为什么说夏利牌汽车是小汽车类的特化(继承),而发动机不是小汽车类的特化?答:夏利牌汽车具有小汽车的全部属性和行为,它只不过是一种特定品牌的小汽车,因此,夏利牌汽车可以从基类(小汽车)派生出来,也就是说,夏利牌汽车是小汽车类的特化。发动机是组成小汽车的一种零件。小汽车还是车身、车灯、轮子等许多种其他零件,小汽车所具有的许多属性和行为发动机都不具有,因此,发动机不能从小汽车类派生出来,它不是小汽车类的特化。10.什么是对象?它与传统的数据有何异同?答:(1)对象是用面向对象方法学开发软件时对客观世界实体的抽象,它是由描述实体属性的数据及可以对这些数据施加的所有操作封装在一起构成的统一体。传统的数据是用传统方法学开发软件时对客观实体的抽象,但是,这种抽象是不全面的:数据只能描述实体的静态属性,不能描述实体的动态行为。必须从外界对数据加操作,才能改变数据实现实体应有的行为。(2)对象与传统数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体。必须发消息请求对象主动地执行它的某些操作,处理它的私有数据,而不能直接从外界对它的私有数据进行操作。11.什么是模型?开发软件时为什么要建立模型?(1)所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型:由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。更进一步讲,模型是一种思维工具,利用这种工具可以把知识规范地表示出来。(2)众所周知,在解决问题之前必须首先理解所要解决的问题。对问题理解得越透彻,就越容易解决它。在开发软件的过程中,为了更好地理解客户要求解决的问题,往往需要建立问题域的模型(清晰/准确性)。为了开发复杂的软件系统,系统分析员应该从不同角度抽象出目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足客户对目标系统的要求,并在设计过程中逐渐把和实现有关的细节加进模型中,直至最终用程序实现这个模型。对于那些因过分复杂而不能直接理解的系统,特别需要建立模型,建立的目的主要是为了降低复杂性。人的头脑每次只能处理少量信息,模型通过把系统的重要部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂程度。12.试建立下述订货系统的用例模型(用例图),数据流图(DFD)。假设一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的终端把事务报告给订货系统。当某种零件的库存数量少于库存量临界值时就应该再次订货。答:从对这个订货系统的需要可以知道,仓库管理员通过放在仓库中的终端把零件入库/出库事务报告给订货系统,系统接收到事务信息之后应该处理事务;采购员需要使用订货系统提供的产生报表功能,已获取订货报表。用例模型:,数据流图(DFD):2层注:用例图:系统边界:矩形,用例:椭圆,参与者:小人,关联:直线数据流图:源/终点:方框,加工:圆框,数据流向:箭头,文件或数据库:双杠13.为什么说面向对象方法与人类习惯的思维解题方法比较一致(一致性)?答:人类认识客观世界、解决现实问题的过程是一个渐进的过程。人的认识需要在继承以前的有关知识上的基础上,既包括从一般到特殊的演绎思维过程,也包括从特殊到一般的归纳思维过程,面向对象方法学中通过建立类等级而获得的继承特性支持从一般到特殊的演绎思维过程(继承)。人在认识和解决复杂问题时使用的最
本文标题:软件工程试题2
链接地址:https://www.777doc.com/doc-1991134 .html