图书预定订书系统供书单位供书书目订书清单要书单位要书书目要书结果要书单位1选择检查2整理归类要书书目订书结果预定书目供书单位供书书目D1订单留底已定书目3登记预定书目新订书目供书单位订书清单飞机票预定系统旅行社旅客订票单取票通知单机票取票单旅行社1分类并检验订票单2订票有效订票单D1航班目录航班信息旅客取票单3记账有效取票单4机票准备账单机票旅行社取票通知单D2记账文件账单D3机票文件机票信息机票信息机票预定病人时钟护士患者监护系统生理信号日期时间要求报告护士警告信息病情报告病人1接收信号生理信号2分析信号生理信号3产生警告信息危急病人信息护士警告信息时钟4定时取样生理信号生理信号日期时间5更新日志定时的生理信号6产生病情报告护士要求报告病情报告D1患者安全范围D2患者日志日志数据日志数据患者Createdentry/GetCourseInfoCreateCourse[needcreateacourse]indatabaseaddcourse修改exit/updatedatabase...deleteexit/updatedatabaseupdate修改课程deletecourseafterthistermupdateafterthisterm可选课numMAX不可选num=MAXnum=MAXafterthistermafterthisterm陆地内存旅客列车汽车列车货运列车客车货车客机货机专用轻型机客轮货轮空中交通工具客货混合轮无预定entry/reset部分预定event退订/退订数预订数event预订/预订数空位数预订/预订数+=已定数[退订数=已预订数]预订关闭关闭关闭预定完预订[预订数=空位数]取消航班退订/已预订数-=退订数关闭闲置复印do/复印卡纸do/警告缺纸do/警告复印命令完成命令卡纸故障缺纸故障排除卡纸故障装满纸封面目录前言附录书章1..n1..n插图表格节1..n1..n0..n0..n0..n0..n句子段1..n1..n1..n1..n主菜单进入文件菜单进入文件菜单打开文件[文件不存在]文件打开关闭文件退出返回主菜单打开文件[文件存在]退出鼠标键盘显示器汉王笔微机机箱主板电源硬盘软盘光盘优盘主机固定储存器活动储存器储存器内存面向对象设计原则单一职责原则:一个类应该仅有一个职责。注意:职责是否应该分开依赖于具体的应用。开放-封闭原则:在设计一个软件系统模块(类、方法)的时候,应该可以在不修改原有的模块(修改封闭)的基础上,能够扩展其功能(扩展开放)。在面向对象的程序中是可以做到的,利用面向对象的抽象和多态。程序对于修改不是100%封闭!一种抽象只能处理一类变化。抽象后的系统对这类变化是封闭的,但是对于其它类型的变化仍然不是封闭的。依赖倒置原则——系统框架设计的核心原则。高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。使用何种语言来编写程序是无关紧要的,如果程序的依赖关系是倒置的,它就是面向对象的设计;如果程序的依赖关系不是倒置的,它就是过程化的设计。接口隔离原则使用多个专门的接口比使用单一的总接口要好。不能强迫用户去依赖那些他们不使用的接口。程序所依赖的接口中不要包含该程序不使用的方法。下面的设计是否合理,如果不合理,请说明原因并给出修正后的设计。(本题10分)说明:(1)Retangle类有两个方法,一个方法画矩形,另一个方法计算矩形的面积。其中draw()方法调用area()方法。(2)有两个不同的应用程序使用Retangle类。一个是ComputationalGeometryApplication,它是计算几何图形面积的,它依赖Retangle类的area()方法,但是它从来不用draw()方法。另一个是GraphicalApplication,它是绘制图形的,它主要依赖Retangle类的draw()方法,也有可能会用到area()方法。标准答案:这个设计违反了“单一职责原则”。Retangle类有两个职责,第一个职责是绘制矩形,第二个职责是计算矩形的面积。解决办法:把两个职责分离开,分离到两个完全不同的类中。(3分)(7分)17.项目管理五个等级从低到高是:初始级、可重复级、已定义级、已管理级和优化级。1.初始级软件过程的特征是无序的,有时甚至是混乱的。几乎没有什么过程是经过定义的,项目能否成功完全取决于个人能力。处于这个最低成熟度等级的组织,基本上没有健全的软件工程管理制度。由于软件过程完全取决于当前的人员配备,所以不可能准确地预测产品的开发时间和成本。2.可重复级建立了基本的项目管理过程,以追踪成本、进度和功能性。必要的过程规范已经建立起来了,使得可以重复以前类似项目所取得的成功。在这一级,有些基本的软件项目管理行为、设计和管理技术,是基于相似产品中的经验确定的,因此称为“可重复”。3.已定义级用于管理和工程活动的软件过程已经文档化和标准化,并且已经集成到整个组织的软件过程中。所有项目都使用文档化的、组织批准的过程来开发和维护软件。这一级包含了第2级的所有特征。4.已管理级已收集了软件过程和产品质量的详细度量数据,使用这些详细的度量数据,能够定量地理解和控制软件过程和产品。这一级包含了第3级的所有特征。处于第4级的公司为每个项目都设定质量和生产目标,并不断地测量这两个量,当偏离目标太多时,就采取行动来修正。5.优化级通过定量的反馈能够实现持续的过程改进,这些反馈是从过程及对新想法和技术的测试中获得的。这一级包含了第4级的所有特征。甘特图以水平线段表示任务的工作阶段;线段的起点和终点分别对应着任务的开工时间和完成时间;线段的长度表示完成任务所需的时间。特点:从甘特图上可以很清楚地看出各子任务在时间上的对比关系,可以标明各任务的计划进度和当前进度,能动态地反映软件开发进展情况。但是,它难以反映多个任务之间存在的复杂的逻辑关系。工程网络是采用网络图来描述一个项目的任务网络。特点:不仅可以表达子任务的计划安排,还可以在任务计划执行过程中估计任务完成的情况,分析某些子任务完成情况对全局的影响,找出影响全局的区域和关键子任务,以便及时采取措施,确保整个项目的完成。2、一个类中如果包含有多于一个的职责,那么无论何种情况下都要将该类中的多于一个的职责分开,否则会造成程序的脆弱性。标准答案:错误。职责是否应该分开依赖于具体的应用:如果应用程序的变化会影响到类中某一种职责,那么就应该将它与另一种职责分离,这样做可以避免客户应用程序和类中的职责耦合在一起;如果应用程序的变化总是会导致两个职责的同时变化,那么就不必分离它们。实际上,分离它们会带来不必要的复杂性。3、划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。标准答案:错误。模块规模应该适中,一个模块的规模不应过大,也不能过小。当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本(工作量)确实减少了;但是,随着模块数目增加,设计模块间接口所需要的工作量也将增加。三、简答题(本大题共2小题,每题5分,共10分。)1.某公司对已开发的软件产品采用错误植入模型来进行测试和评估。评测部对待测软件人为植入了15个故障;在开始测试的一小段时间内,发现了200个固有故障;发现了植入的故障2个,被测程序的机器指令条数为105。请问:(1)被测程序的固有故障的个数N的值是多少?(2)若通过一段时间后,发现的错误个数为1490时,则此程序的平均无故障时间是多少?标准答案:(1)N=(Ns*n)/ns=(15*200)/2=1500(个)(2分)(2)MTTF=1/(K*εr)=IT/(K*(N-Ec))=105/(200*(1500-1490))=50(小时)(3分)二、辨析题:分析对错并说明理由。(本大题共4小题,每题5分,共20分。)1、有了对目标的一般描述就可以开始写程序了,我们以后可以再补充细节。标准答案:错误。对用户要求没有完整、准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因。对问题和目标的准确认识是解决任何问题的前提和出发点,对用户要求没有准确认识就匆忙着手编写程序,就如同不打好地基就盖高楼一样,最终必然垮台。事实上,越早开始写程序,完成它所需要的时间往往越长。2、用面向对象语言编写的系统一定是面向对象的设计。标准答案:错误。使用何种语言来编写程序是无关紧要的,如果程序的依赖关系是倒置的,它就是面向对象的设计;如果程序的依赖关系不是倒置的,它就是过程化的设计。3、划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。标准答案:错误。模块规模应该适中,一个模块的规模不应过大,也不能过小。当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本(工作量)确实减少了;但是,随着模块数目增加,设计模块间接口所需要的工作量也将增加。三、简答题(本大题共2小题,每题5分,共10分。)2.CMM将软件过程的成熟度分为哪几个级别?请简述最低级别的特点。标准答案:初始级、可重复级、已定义级、已管理级和优化级。CMM一级即初始级,其特点为:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力;管理是反应式(消防式)。