1、选择题(20/2)1/3是期中考试中的题。2、辨析题(3/5)回答对错,并说明原因3、简答题(2/5)面向对象设计原则,判断是否合理面向对象的(类)设计原则:单一职责原则:一个类应该仅有一个职责。此原则基本途径就是提高内聚性,如果一个类承担的职责过多,那么这些职责就相互依赖,一个职责的变化可能会影响另一个职责的履行。其实OOD的实质,就是合理的进行类的职责分配。开放-封闭原则:对于扩展是开放的,对于修改是封闭的;OCP原则的关键是“抽象”;多态保证了扩展的开放性;开放意味着实现是可替换的。依赖倒置原则:面向接口编程;抽象不应该依赖于细节,细节应该依赖于抽象;高层模块和低层模块以及客户的模块和服务模块都应依赖于接口,而不是具体实现;依赖倒置原则的核心是“抽象”和“间接”,抽象的稳定性决定了系统的稳定性接口隔离原则(ISP)从一个客户类的角度来讲,一个类对另外一个类的依赖性应当是建立在最小的接口上的。不能强迫用户去依赖那些他们不使用的接口。使用多个专门的接口比使用单一的总接口要好里氏替换原则(LiskovSubstitutionPinciple)最少知识原则(LeastKnowledgePrinciple)合成/聚合复用原则(Composite/Aggregate甘特图:甘特图以水平线段表示任务的工作阶段;线段的起点和终点分别对应着任务的开工时间和完成时间;线段的长度表示完成任务所需的时间。特点:从甘特图上可以很清楚地看出各子任务在时间上的对比关系,可以标明各任务的计划进度和当前进度,能动态地反映软件开发进展情况。但是,它难以反映多个任务之间存在的复杂的逻辑关系。工程网络:它是采用网络图来描述一个项目的任务网络。特点:不仅可以表达子任务的计划安排,还可以在任务计划执行过程中估计任务完成的情况,分析某些子任务完成情况对全局的影响,找出影响全局的区域和关键子任务,以便及时采取措施,确保整个项目的完成。能力成熟度模型:五个等级从低到高是:初始级、可重复级、已定义级、已管理级和优化级各级别特点:1.初始级软件过程的特征是无序的,有时甚至是混乱的。几乎没有什么过程是经过定义的,项目能否成功完全取决于个人能力,管理是反应式(消防式)2.可重复级建立了基本的项目管理过程,以追踪成本、进度和功能性。必要的过程规范已经建立起来了,使得可以重复以前类似项目所取得的成功。在这一级,有些基本的软件项目管理行为、设计和管理技术,是基于相似产品中的经验确定的,因此称为“可重复”。3.已定义级用于管理和工程活动的软件过程已经文档化和标准化,并且已经集成到整个组织的软件过程中。所有项目都使用文档化的、组织批准的过程来开发和维护软件。这一级包含了第2级的所有特征。4.已管理级已收集了软件过程和产品质量的详细度量数据,使用这些详细的度量数据,能够定量地理解和控制软件过程和产品。这一级包含了第3级的所有特征。处于第4级的公司为每个项目都设定质量和生产目标,并不断地测量这两个量,当偏离目标太多时,就采取行动来修正。5.优化级通过定量的反馈能够实现持续的过程改进,这些反馈是从过程及对新想法和技术的测试中获得的。这一级包含了第4级的所有特征。4、计算题(1/5)考作业题(1)刚开始测试时程序中总共有多少个潜藏的错误?(2)为使MTTF达到60h,必须再改正多少个错误?回答的内容(1)本体采用的是分别测试法,所以可以估计出测试前程序中的错误总数:B0:表示t=0时错误总数;B1:表示T=T1时测试员一发现的错误;B2:表示T=T1时测试员二发现的错误;bc:表示两个测试员共同发现的错误。则:B0=B2/bc*B1=24/6*20=80;(2)测试员一发现并改正20个错误时,MTTF达到10,则MTTF=1/k(ET/IT-Ec/IT)即10=24000/k(80-20)---k=40为使MTTF达到60,则60=24000/(40*(80-Ec))则Ec=70所以还需要改正70-20=50个错误5、设计题(3/10)6、1、有了对目标的一般描述就可以开始写程序了,我们以后可以再补充细节。7、标准答案:错误。对用户要求没有完整、准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因。对问题和目标的准确认识是解决任何问题的前提和出发点,对用户要求没有准确认识就匆忙着手编写程序,就如同不打好地基就盖高楼一样,最终必然垮台。事实上,越早开始写程序,完成它所需要的时间往往越长。8、9、2、用面向对象语言编写的系统一定是面向对象的设计。10、标准答案:错误。使用何种语言来编写程序是无关紧要的,如果程序的依赖关系是倒置的,它就是面向对象的设计;如果程序的依赖关系不是倒置的,它就是过程化的设计。3、划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。标准答案:错误。模块规模应该适中,一个模块的规模不应过大,也不能过小。当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本(工作量)确实减少了;但是,随着模块数目增加,设计模块间接口所需要的工作量也将增加。1、在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。标准答案:错误。在软件开发的不同阶段进行修改需要付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;而在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时再引入变动,当然需要付出更高的代价。2、一个类中如果包含有多于一个的职责,那么无论何种情况下都要将该类中的多于一个的职责分开,否则会造成程序的脆弱性。标准答案:错误。职责是否应该分开依赖于具体的应用:如果应用程序的变化会影响到类中某一种职责,那么就应该将它与另一种职责分离,这样做可以避免客户应用程序和类中的职责耦合在一起;如果应用程序的变化总是会导致两个职责的同时变化,那么就不必分离它们。实际上,分离它们会带来不必要的复杂性。阅卷教师11、三、12、13、简答题(本大题共2小题,每题5分,共10分。)14、15、1.多个软件工程师合作开发一个项目,各开发者之间需要两两互相通信。假设每一条通信路径的开销为300LOC/年(LOC为代码行数)。16、(1)设有6名软件工程师,如果单独工作,每个人的生产率是6500LOC/年,那么由这6名软件工程师组成的项目组的生产率是多少?17、(2)在这一年期限的最后两个月,又增加了两名工程师,新增成员的个人生产率为4500LOC/年,那么这8人组成的项目组全年完成的开发工作量又是多少条代码行?18、19、标准答案:(1)6名软件工程师之间需要建立的通信路径为:6*(6-1)/2=15(条)20、每一条通信路径的开销为300LOC/年,所以共计花费300*15=4500(LOC/年)21、由于每人的生产率是6500LOC/年,则共计生产率为:22、6*6500–(300*15)=34500(LOC/年)23、(2)如果从第11月开始增加2个人,则通信路径增加了:8*(8-1)/2–15=13(条)24、所以通信开销增加了:(300/12)*2*13=650(LOC)25、而这2人的开发工作量为:(4500/12)*2*2=1500(LOC)26、则总计工作量为:34500+1500–650=35350(LOC)27、28、29、2.CMM将软件过程的成熟度分为哪几个级别?请简述最低级别的特点。30、31、标准答案:初始级、可重复级、已定义级、已管理级和优化级。CMM一级即初始级,其特点为:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力;管理是反应式(消防式)。32、1.某公司对已开发的软件产品采用错误植入模型来进行测试和评估。评测部对待测软件人为植入了15个故障;在开始测试的一小段时间内,发现了200个固有故障;发现了植入的故障2个,被测程序的机器指令条数为105。请问:33、(1)被测程序的固有故障的个数N的值是多少?34、(2)若通过一段时间后,发现的错误个数为1490时,则此程序的平均无故障时间是多少?35、36、标准答案:37、(1)N=(Ns*n)/ns=(15*200)/2=1500(个)(2分)38、(2)MTTF=1/(K*εr)=IT/(K*(N-Ec))=105/(200*(1500-1490))=50(小时)(3分)39、40、41、2.请问常用于制定进度计划的工具有哪两种?任意说出其中一种工具的特点。42、43、标准答案:常用于制定进度计划的工具有Gantt图和工程网络。(2分)44、甘特图以水平线段表示任务的工作阶段;线段的起点和终点分别对应着任务的开工时间和完成时间;线段的长度表示完成任务所需的时间。特点:从甘特图上可以很清楚得分地看出各子任务在时间上的对比关系,可以标明各任务的计划进度和当前进度,能动态地反映软件开发进展情况。但是,它是难以反映多个任务之间存在的复杂的逻辑关系。45、工程网络是采用网络图来描述一个项目的任务网络。46、特点:不仅可以表达子任务的计划安排,还可以在任务计划执行过程中估计任务完成的情况,分析某些子任务完成情况对全局的影响,找出影响全局的区域和关键子任务,以便及时采取措施,确保整个项目的完成。(3分)数据流图40-46页+实验2面向对象需求分析过程(考类图实验5和状态图实验6)实验7是综合,实验4讲解Rose如何用测试(考白盒或黑盒)白盒:控制流程图:语句覆盖用例A=1;B=1;C=1;A=20;B=20;C=20;序号判定输入预期输出123ABCXYZ1FFF1111232TTT202020102030基本路径测试用例环形复杂度为4,,则需要四条独立的路径:路径一:1-2-3-5-6-8-9-11路径二:1-2-3-5-7-8-9-11路径三:1-2-4-5-6-8-10-11路径四:1-2-4-5-7-8-9-11序号判定输入预期输出123ABCXYZ1TTT2020201020302TFT10530102303FTF1151012034FFT11201230黑盒:解:设三角形的三条边分别为A,B,C。如果它们能够构成三角形的三条边,必需满足:A0,B0,C0,且A+BC,B+CA,A+CB。如果是等腰的,还要判断是否A=B,或B=C,或A=C。对于等边的,则需判断是否A=B,且B=C,且A=C。列出等价类表:输入条件有效等价类无效等价类是否三角形的三条边(A0)(1),(B0)(2),(C0)(3),(A+BC),(4)(B+CA)(5),(A+CB)(6)A=0(7),B=0(8),C=0(9),A+B=C(10),A+C=B(11),B+C=A(12)是否等腰三角形(A=B)(13),(B=C)(14),(A=C)(15)(A!=B)and(B!=C)and(A!=C)(16)是否等边三角形(A=B)and(B=C)and(A=C)(17)(A!=B)(18),(B!=C)(19),(A!=C)(20)测试用例的设计:输入(A,,B,C)的值:(3,4,5)覆盖等价类(1),(2),(3),(4),(5),(6)满足即为一般三角形。(0,1,2)覆盖等价类(7)不能构成三角形(3,3,5)覆盖等价类(1),(2),(3),(4),(5),(6),(13),为等腰三角形(3,4,5)覆盖等价类(1),(2),(3),(4),(5),(6),(16)不是等腰三角形,为一般的三角形。(5,5,5)覆盖等价类(1),(2),(3),(4),(5),(6),(17)是等边三角形(3,3,4)覆盖等价类(1),(2),(3),(4),(5),(6),(13),(20)不是等边三角形,为等腰三角形复习内容:课件实验作业某学校计算机教材购销系统有以下功能:学生买书,首先填写购书单,计算机根据各班学生用书表及售书