1北京邮电大学2011——2012学年第二学期《软件工程》期末考试试题B卷考试注意事项一、学生参加考试须带学生证或学院证明,未带者不准进入考场。学生必须按照监考教师指定座位就坐。二、书本、参考资料、书包等与考试无关的东西一律放到考场指定位置。三、学生不得另行携带、使用稿纸,要遵守《北京邮电大学考场规则》,有考场违纪或作弊行为者,按相应规定严肃处理。四、学生必须将答题内容做在试卷上。考试课程软件工程考试时间2012年6月5日题号一二三四五六七八总分满分1010203030得分阅卷教师一、判断题(共10题,每题1分,共10分)1.导致软件项目失败的主要原因是采纳的技术和工具,而管理过程是次要的。(×)2.面向对象分析(OOA)和面向对象设计(OOD)分别采用不同的概念和表示法。(×)3.软件配置管理是一种标识、组织和控制修改的技术,也是一种质量保证活动。(√)4.模块划分得越小,总的软件开发成本就越小。(×)5.在进行变换映射时,数据流边界的选择是唯一的。(×)6.在协作图中,对象A接收了对象B一条消息,那么表明对象B具备了处理该条消息的职责。(×)7.通过软件测试,可以表明软件中不存在错误。(×)8.面向对象设计中最关键的活动是正确地给对象分配职责。(√)9.在项目面临进度延期的情况下,总是可以通过增加人力在后期跟上进班级:学号:班内序号:姓名:-------------------------------------------------------------------装-----------------------------------------订--------------------------------------线----------------------------------------------------------------------------------------------------------------------------2度。(×)10.用例控制器不需要实现系统操作,但外观控制器需要。(×)3二、单项选择题(共10题,每题1分,共10分)1.软件工程对于软件开发最主要的贡献是(C)。A.解决了软件危机的所有问题B.进一步提高了软件开发效率C.规范了软件开发的各项活动D.解决了软件项目管理的难题2.RUP模型定义与以下哪一个模型更加贴近(B)。A.瀑布模型B.多个微型的瀑布模型C.演化模型D.螺旋模型3.结构化软件设计与OO软件设计的关系用以下哪一个描述更加贴近(B)。A.没有关系B.本质一样,但方法不同C.结构化是OO的一部分D.OO是结构化的一部分4.UML顺序图可以表示以下什么模型(D)。A.用例模型B.领域模型C.设计模型D.用例模型+设计模型5.UML活动图除了能描述业务流程外,还可以描述(C)。A.系统顺序图B.领域模型C.程序流程D.对象的交互6.结构化的功能结构图中,传入模块的结构有(D)。A.一个上级模块B.一个下属模块C.一个处理模块D.包含前三个模块7.当模块的作用范围不在其控制范围之内,则需要进行以下调整(B)。A.将判定所在的模块下移B.将判定语句上移C.判定所在模块上移,但判定语句不上移D.不做调整8、面向对象的详细设计特指(D)。A.对象的类设计B.对象之间的调用关系设计C.每个对象的属性定义D.每个对象的方法定义9.面向对象设计原则中的开闭原则是指(C)A.允许改动原有的方法定义B.允许改动类的定义C.只允许添加新功能D.不允许添加也不允许改动10.软件集成测试的对象是(B)。A.软件代码B.详细设计说明书C.需求分析规格说明书D.用户需求说明书4三、简答题(4题,共20分)1、面向对象分析阶段与面向对象设计阶段有什么不同?相对于结构化需求分析与设计,面向对象的分析与设计有什么优势?(5分)参考答案:分析阶段针对的是现实世界,把需求转化为用面向对象概念描述的系统分析模型,以便于理解问题域和系统职责(1.5分);设计阶段需要考虑与具体实现有关的问题,目标是产生一个符合具体实现条件的设计模型(1.5分)。OOD模型以OOA模型为基础,且OOA和OOD采用一致的表示法,使得从OOA到OOD不存在转换,两者能够紧密衔接,大大降低了从OOA过渡到OOD的难度、工作量和出错率(2分)。2、什么是模块的信息隐藏?独立性强的模块应该是高内聚低耦合的,请分别列举两种高内聚类型和两种低耦合类型。(5分)参考答案:信息隐藏是指,每个模块的实现细节对于其它模块来说是隐蔽的。就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。(1分)2种高内聚:功能内聚、信息内聚(2分)2种低耦合:非直接耦合、数据耦合(2分)3、UML中类图的作用是什么?UML中类之间包含哪些关系?(5分)参考答案:UML类图用于描述类以及类之间的关系。(1分)UML中类之间的关系可分为:关联、聚合、继承和依赖。(4分)4、学校向某公司购买了一套办公管理系统,运行期间发生了如下事件:(1)系统运行两月后,需要将SQLServer数据库更换为Oracle数据库;(2)教务处发现一次性打印100份试卷会出错;(3)财务处要求在系统中增加移动办公功能;(4)软件公司采用更先进的技术将报表组件重构以增强灵活性。请说明以上四类事件分别对应于哪一类软件维护工作。(5分)参考答案:(1)适应性维护;(2分)(2)改正性维护;(1分)(3)完善性维护;(1分)5(4)预防性维护。(1分)四、应用题(3题,共30分)1、已知某数据流图通过“变换映射”所对应的系统功能结构图如下所示,其中D是中心变换部分。假设需要将E作为中心变换部分,请给出相对应的系统功能结构图。(10分)主模块取得f4取得f2Bf4f2f2f4取得f1Af1f1f2取得f5取得f3Cf3f3f5f5Df6给出f8G给出f10f8f10f10f8H给出f11f10f11f11f4f5f7给出f7F给出f9f7f9f9f6给出f6Ef6f7f8参考答案:主模块取得f4取得f6取得f2Bf4f2f2f4f7取得f1Af1f1f2取得f5取得f3Cf3f3f5f5f6E给出f7f6给出f8G给出f10f8f10f10f8H给出f11f10f11f11Df4f5f6f7f8F给出f9f7f9f9评分要点:(1)主模块(0.5分)6(2)一级模块:输入模块“取得f6”(0.5分);一个中心变换模块“E”(0.5分);两个输出模块“给出f7”“给出f8”(1分)(3)二级及以下模块:“取得f4”和“取得f5”和“D”(1.5分);“取得f2”和“B”(1分);“取得f3”和“C”(1分)“取得f1”和“A”(1分)“F”和“给出f9”(1分);“G”和“给出f10”(1分);“H”和“给出f11”(1分)模块间的数据流和数据流图中的数据流相对应,错一个扣0.5分,最多扣3分2、平面坐标系中存在两个点,分别为a(x1,y1),b(x2,y2),对其限定如下:1)点a位于第一象限2)点b位于x轴3)ab间距离大于3且不超过9问题:假定测试程序能接受一切符合上述规定的坐标输入,请根据a、b两点的规格说明,分别划分等价类。(10分)参考答案:输入条件有效等价类无效等价类a点坐标x10,y10(1)x1≤0,y1≥0(2),x1≤0,y1≤0(3),x1≥0,y1≤0(4)b点坐标y2=0(5)y2≠0(6)ab间距离(7)(8)(9)评分要点:(1)输入条件1分,有效等价类3分(每个1分),无效等价类6分(每个1分)(2)输入条件除上述基本内容外,可有自己定义的条件(3)有效等价类中内容缺少一个扣1分,无效等价类中缺少一个扣1分(4)有效和无效等价类中如果缺少标号扣1分(5)有效和无效等价类中没有以坐标作为输入条件描述的,一律先扣一半的分,再考虑条件描述是否正确。如对于输入条件“a点坐标”,有效等价7类描述为“点a位于第一象限”,无效等价类描述为“点a位于第二、三、四象限”,首先扣掉一半的分(每个0.5),再考虑描述是否正确。3、已知某程序流程图结构如下所示。345891021671213循环3次循环5次11问题:(1)假设用白盒测试法进行“穷举测试”,则所包含的不同执行路径数为多少条?(2分)(2)用基本路径法(McCabe)导出对应的程序控制流图,并计算控制流图的环路复杂性V(G)(5分)(3)给出一组独立路径集(3分)评分要点:(1)第2问中程序控制流图3分,环路复杂性2分。(2)程序控制流图不限于参考答案中图的节点数和边数,但关键5个判断节点必须出现,少1个扣0.5分;直接给出环路复杂性,没有任何计算方法说明的,扣1分。(3)独立路径集条数不能超过6,每条独立路径至少包含一条在其他独立路径中从未有过的边。8参考答案:(1)内循环3次,每次循环2个选择,共23=8条路,加上其它2条路,共10个选择;外循环5次,每次循环10个选择,共105=10000条(2)程序控制流图12111109876543213三种计算方式计算环路复杂性(可选)第一,因为区域数有6个,所以V(G)=6第二,欧拉公式,V(G)=E-N+2=17-13+2=6第三,V(G)=P+1=5+1=6,P为控制流图中的判定节点数(3)一组独立路径集Path1:1—139Path2:1—2—3—7—12—1—13Path3:1—2—3—4—5—12—1—13Path4:1—2—3—4—6—12—1—13Path5:1—2—3—4—6—8—9—11—6—12—1—13Path6:1—2—3—4—6—8—10—11—6—12—1—13五、综合题(1题,共30分)某医院希望实现病人挂号自动化,并设置大屏幕自动叫号的方式避免病人排队缴费。经过分析,基本需求如下:挂号处:经过需求分析之后,具有以下已知条件:1、已知病人使用的自助挂号机的用例图:2、已知挂号处领域模型103、已知下面的系统事件和对应的操作契约系统事件_1:填写病历注册信息用例范围:挂号前置条件:开始自助挂号后置条件:创建一个病历实例;自助挂号机与该病历实例建立关联;修改病历属性:姓名、身份证号、性别、地址、手机号码、email。系统事件_2:选择挂号费最少用例范围:挂号前置条件:选择挂号模式后置条件:与医生和科室建立关联或者与队列建立关联问题一:(20分)1、根据已知条件,针对系统事件_1和系统事件_2,分别画出该用例对应的软件设计模型中的“顺序图”(8分);并根据GRASP中信息专家模式确定每个对象的方法定义(4分)。注意使用Controller和DBfacade对象。(12分)系统事件_1问题分析:该系统事件属于病人使用自助挂号机进行挂号后(前置条件:开始自助挂号),为此对应的用例是“挂号”而非“注册病历”。系统事件“填写病历注册信息”为创建病历实例之后,为此可认为此时病历11的实例对象已经存在;自助挂号机为“外观”控制器,由它接收系统事件并将具体信息转发给病历对象,可以认为它们之间建立了关系。填写完成后病历对象会将实例信息通过DBfacade对象与数据库进行同步。加分部分:病历创建完成后,自助挂号机会将病历ID和挂号单所需要的信息传递给挂号单。系统事件_2问题分析:该事件是病人在挂号的过程中选择一种挂号模式:挂号费最少。方案一,自助挂号机将从科室/医生对象中或者从医生的队列中获取医生的挂号和排队信息,以供病人选择挂号的医生等,并由自助挂号机将选择的医生信息和挂号费信息传递给挂号单。其中科室对象负责确定医生级别和挂号费,医生对象负责获取医生基本信息及排队信息。方案二,自助挂号机作为控制器委托挂号单对象获取挂号模式的信息,以便病人选择医生后挂号单与医生对象之间建立关联。方案1:方案2:122、自助挂号机进入挂号之前具有挂号、查病历号、注册病历号和查询排队信息这几种操作。自助挂号机开始工作后,可以执行病历注册、选择挂号模式、缴费以及打印挂号单等操作,以上任何操作如果超过30秒未执行后续操作,则退出