武汉大学计算机学院2014-2015学年度第二学期 2013级《软件工程》期末考试试卷(A卷)专业:________________________ 姓名:______________ 学号:__________________₪₪₪₪₪₪₪₪₪₪注意:请将所有答案均写在答题纸上,并标明题号₪₪₪₪₪₪₪₪₪₪一.选择(单选)填空题(共30分,第1-28题为每小题1分;第29题为2分)软件生产的复杂性和高代价,使大型软件的生产出现危机,下述都是软件危机的主要表现,除了 1. 。
产生软件危机的原因主要有 2. 。
为解决软件危机,人们提出了软件工程的方法,即用工程化的原则指导软件的生产、维护和管理,以达到 3. 的目标。
1. (A)生产成本过高(B)开发进度难以控制(C)质量难以保证(D)硬件发展滞后,使软件产品的性能达不到用户要求2. (A)不重视需求,需求获取困难(B)开发过程的管理困难(C)生产过程缺乏科学的方法和工具(D)以上都是3. (A)节省开发成本(B)缩短开发周期(C)提高软件质量(D)经济地开发出高质量软件产品为便于进行有效地软件开发和管理,项目开发一般采用特定的软件过程模型。
瀑布模型是利用 4. 方法控制开发过程复杂性的软件过程模型,它适用于 5. 的项目。
而 6. 模型的优势在于快速完善和确定用户需求,从而降低了由于需求问题带来的软件开发风险,是一种实用的开发技术。
4. (A)项目划分(B)阶段划分(C)团队划分(D)成本划分5. (A)需求难以获取(B)需求经常变动(C)需求比较熟悉(D)风险很大6. (A)原型(B)增量(C)迭代(D)喷泉可行性研究是 7. 阶段的重要步骤,其目的是 8. 。
它的主要任务有 9. 。
为此,通常需要计算投资回收期,它是指 10. 。
7. (A)软件定义(B)软件计划(C)需求分析(D)软件管理8. (A)证明软件开发项目可行(B)证明软件开发项目不可行(C)确定软件开发项目要不要做(D)深入调研项目的用户需求9. (A)成本—效益分析(B)资源分析和风险分析(C)分析比较各种解决方案(D)以上都是10.(A)项目投资开始到停止投资的时间区间(B)项目开始到产生经济效益的时间区间(C)项目开始到完成所需的时间(D)项目的累计经济效益等于投资额所需的时间结构化分析(SA)、结构化设计(SD)、Jackson方法,都是传统的软件开发过程中常用的方法。
其中,SA实现 11. ,得到 12. 图;SD实现 13. ,得到 14. 图;而Jackson 方法实现 15. ,得到 16. 图。
SD主要依据 17. 的类型,选用不同的映射规则进行设计。
从抽象层次看, 18. 方法的抽象层次最低,主要用在详细设计阶段简化数据处理部分的设计。
11.13和15.(A)从数据结构导出程序结构(B)从数据流图导出初始软件结构(C)从数据流导出系统功能描述(D)从模块结构导出程序结构12.14.和16. (A)程序流程图(B)数据流图(C)软件结构(D)Jackson17. (A)控制流(B)数据流(C)变换流(D)事务流18. (A)SA (B)SD (C)Jackson (D)OO下列对于两个模块的关系描述中,模块独立性最高的是 19. ,最低的是 20. 。
19.和20. (A)两个模块间有调用关系,通过参数传递数据值(B)两个模块间没有调用关系,共享数据库中的同一个表(C)两个模块间有调用关系,通过参数传递标志量/开关值(D)两个模块间没有调用关系,通过GOTO语句转换控制流测试是软件开发的重要步骤。
21. 是最基本的测试环节,一般采用白盒法针对模块的逻辑结构设计测试用例进行测试; 22 主要考察模块间的接口及各模块间的关系,以黑盒法为主设计测试用例; 23. 主要依据需求分析确定的验收标准以用户为主进行测试;而 24. 则是将软件与硬件、外设等其它系统结合起来,对计算机系统进行一系列的测试。
21.22.23.和24. (A)系统测试(B)确认测试(C)单元测试(D)集成测试下列关于面向对象方法,说法正确的是 25. 。
25. (A)面向对象开发方法是利用面向对象程序设计语言进行的软件开发方法(B)Jacobson的OOSE方法建立的AM模型中包括实体对象、界面对象和用例对象(C)正方形、四边形和多边形三者是泛化关系(D)面向对象方法采用继承性实现软构件的重用,传统结构化方法无法实现重用软件管理是一项复杂而艰巨的任务,它是对 26. 阶段一切活动的管理。
软件 27. 的作用是有效地、定量地进行软件管理,从而把握软件工程过程的实际情况和它所产生的产品质量。
巡回秩数V(G)用来评价软件的 28. ,下图程序的巡回秩数为 29. 。
26. (A)需求分析(B)软件开发(C)系统设计(D)软件生存期各27. (A)度量(B)风险分析(C)测试(D)进度安排28. (A)可靠性(B)复杂性(C)安全性(D)可维护性29. (A)5 (B)6(C)7 (D)8二.简答题(共18分,每小题6分。
下列5小题中任选3小题作答,标明题号)1.人们常常认为:“软件工程让我们炮制大量的无用的文档,从而使软件开发进度延缓”。
这个观点对吗?为什么?2.Dijkstra曾经说:“Program testing can be used to show the presence of bugs, but never to show their absence!”。
试从测试的目标及作用的角度,谈谈你对这段话的理解。
3.分别采用等价类划分和边界值分析法,为int getNumDaysInYear (int year)设计测试用例。
4.假设你的任务是对一个已有的软件做重大修改,而且只允许你从下列文档中选取两份作为修改维护的依据,请问你会选择哪两份文档?为什么?① 概要设计说明书② 详细设计说明书(用某种过程设计工具描述的)③ 源程序清单(带有适当的注解)5.Brooks在《人月神话》中写道:“Adding manpower to a late software project makes it later.”你同意他的观点吗?试说明理由。
三.分析综述题(共12分。
下列2小题中任选1小题作答,标明题号)分析下列事实和说法,并回答问题:20世纪80年代之前,将结构化方法用于许多中小规模的软件项目开发获得了极大成功。
但之后人们发现,随着软件复杂性的增大,当人们把它应用于大型软件产品的开发和维护时却很少取得成功。
面向对象方法在20世纪60年代首次提出,到了90年代,已成为人们开发软件时首选的软件工程方法。
尤其在开发和维护大型软件产品时,其优势非常明显。
1.“分而治之”和抽象是人们在求解复杂问题时经常采用的思维方式,是控制复杂性的重要手段。
对比结构化方法和面向对象方法在系统分解和组织方式上的本质差异,分析产生上述现象的原因。
(6分+6分)有人说:“软件结构的好坏直接关系到系统的可维护性。
”2.你同意这个说法吗?(2分)请分别谈谈采用结构化方法或面向对象方法进行软件开发,一个好的软件结构应具备哪些特征?(5分+5分)四.应用题(共40分)假设你负责为某高校开发一个网上选课系统,实现网上在线处理选课/退课等事务,并打印各种课程表和统计表。
该网上选课系统应具有以下功能:身份验证:系统包括学生、教师和教务管理员三类用户,可利用学号/工号和密码登录系统,并维护个人信息(修改密码)。
查询:登录成功后,学生可以查询开课信息(如本学期的开课计划、课程详细信息、专业课信息、选修课信息、已选课信息等);教师可以查询所开设课程的选课情况(如选课人数、学生名单等)。
选课:学生在线选课。
系统根据选课规则进行合法性检查(如学生每学期选课学分不能超过25学分、避免上课时间冲突、重复选课、不能超过选课人数上限等),验证通过的选课成功,修改系统的选课情况表F5;错误则提示修改。
退课:学生在线退课。
系统根据退课规则进行合法性检查(如上课3周后不能退课,必修课不能退课等),验证通过的退课,修改选课情况表F5;错误则提示修改。
维护基础信息:教务管理员负责维护系统基础信息,对学生信息F1、教师信息F2和课程信息F3、开课信息F4等进行增删改和查询等操作。
统计:教务管理员查看系统生成的各类统计报表,如各院系、专业、课程的选修情况等。
打印:根据已选课程信息,学生可以打印出自己的学生课程表。
根据授课课程信息,教师可以打印出自己的教师课程表。
教务管理员可以打印各种统计报表等。
以下列出了(部分)系统关键数据的数据字典的相关内容:F1 学生信息表 =学生学号+姓名+所属院系编号+专业号+密码。
F2 教师信息表 =教师工号+姓名+所属院系编号+密码。
F3 课程信息表 =课程编号+名称+课程详细介绍。
F4 开课信息表 =课程编号+专业号+学分+限选性质+教师编号+最大选课人数+教室号F5 选课情况表 =课程编号+学生学号。
试按要求(结构化SA/SD方法或面向对象方法)进行系统分析和设计,并完成以下各题(要求写明必要的步骤):1.试用SA方法进行系统分析,并根据给出的网上选课系统的0层数据流图(如图1所示),作出求精细化后的数据流图。
(12分)2.试根据求出的数据流图,用SD方法设计系统的软件结构,并画出层次图。
(10分)3.试采用Jacobson的OOSE方法进行需求分析,给出该系统的use case图。
(10分)4.图2是用PAD图表示的该系统某模块的详细设计结果,现对它进行白盒测试。
若采用判定—条件覆盖法进行测试,则应选用下列那组测试用例?请写出分析过程(8分)。
组号测试用例①x = 1, y = 11 x = 4, y = 7②x = 2, y = 1 x = 3, y = 3③x = 3, y = 4 x = 1, y = 9④x = 4, y = 5x = 2, y = 6图2. 某模块的PAD图STARTz:= x * yz:= x+ y。