《哈工大软件工程2011年春季试题》由会员分享,可在线阅读,更多相关《哈工大软件工程2011年春季试题(12页珍藏版)》请在金锄头文库上搜索。
1、哈尔滨工业大学 2011 年春季学期 软件工程软件工程 试题试题(A) 题号 一 二 三 总分 分数 第第 1 页页 (共共 12 页页) 学号学号 姓名姓名 注:本试卷满分注:本试卷满分 100 分,按分,按 50%折算计入课程成绩。折算计入课程成绩。 一一 分析与设计题分析与设计题(55 分分) 根据下面描述的项目背景,完成分析与设计建模。为便于理解和避免歧义,答题过程中 所有的名称 根据下面描述的项目背景,完成分析与设计建模。为便于理解和避免歧义,答题过程中 所有的名称(类、属性、方法、包、硬件等类、属性、方法、包、硬件等)均需用中文给出。均需用中文给出。 近年来,突发公共事件成为社会瞩
2、目的焦点。大学校园的突发事件也成上升趋势,如失 火、群体冲突、教学矛盾等,可能干扰学校正常的工作秩序,而事件处置不及时、措施不得 当是事件发展恶化的主要原因。HIT 为及时处理突发公共事件、减轻突发公共事件带来了危 害、降低突发公共事件带来的不利影响,于近期成立了突发公共事件应急办公室,建立了应 急值守热线 8641-1109,并拟开发应急值守系统。 应急办公室采用公开招标的方式面向全校确定系统的开发团队,要求各团队首先提供系 统建议方案、项目计划和报价。计算机学院 08 级本科生麦坤带领的“银弹”团队参与投标,凭 借在软件工程课学过的相关知识,撰写了项目建议书,项目计划开发周期共 4 周,需
3、求分析、 设计、开发、测试各 1 周时间,项目总预算 10,000 元。 银弹团队的方案以最短的开发周期和最低的报价成功中标,麦坤马上带领团队开始着手 进行需求分析,由于应急办公室刚刚成立,谁也说不清需要什么功能。银弹团队通过网上查 询资料和头脑风暴整理了项目需求,并采用用例驱动的方法对需求进行了描述,他们绘制的 系统用例图如下: 应急预案启动 事件接报 事件编辑 快速通报 值守人员 现场人员 地理信息系统 应急组织 上级单位 短信邮件系统 将其他用例联 系起来。该用例的详细描述如下: 用例名称:用例名称:事件接报 参与者:参与者:值守人员、现场人员、应急组织、上级单位 主场景主场景(常规事件
4、流常规事件流): 1. 值守人员接到电话报警; 2. 触发“事件编辑”用例,值守人员编辑事件; 3. 值守人员判别事件的类型,触发“快速通报”用例,通过短信/Email 通知现场人员到达事发现场; 4. 触发“事件跟踪与反馈”用例,值守人员接收现场人员的反馈,记录事件跟踪信息; 5. 值守人员对事件进行归档,关闭事件。 扩展扩展(备选事件流备选事件流): 针对第 2 步: 2a. 新事件 1) 值守人员启动一个新事件进行编辑; 2) 值守人员在电子地图上标注事件位置; 3) 值守人员记录事件的基本信息。 2b. 已报过警事件 1) 值守人员查询并选择已有事件,进行编辑; 2) 值守人员添加事件
5、的更多信息。 针对第 4 步中现场人员提供的反馈: 4a. 事件是假警 1) 现场人员反馈事件不存在; 2) 值守人员删除事件; 3) 值守人员追查报警人员并进行处理。 4b. 事件是普通事件 1) 现场人员反馈事件是普通事件,并在现场成功处置; 2) 跳转 2b,值守人员将现场人员反馈的信息记录到事件中; 4c. 事件是重大事件 1) 现场人员反馈事件是重大事件; 2) 跳转 2b,值守人员将现场人员反馈的信息记录到事件中; 3) 值守人员将事件标记为“重大”,触发“应急预案启动”用例; 4) 触发“快速通报”用例,通过短信和邮件向应急组织与上级单位通报事件情况; 5) 现场人员持续跟踪事件
6、,随时了解进展情况并反馈;跳转 2b,值守人员补充录入事件的详 细处理结果信息。 试 题:软件工程 学号: 姓名: 第第 3 页页 (共共 12 页页) 1. (15 分分)根据根据“事件接报事件接报”用例的描述,识别其中涉及的边界类、控制类和实体类,简要解释各类的作 用。进而建立领域模型 用例的描述,识别其中涉及的边界类、控制类和实体类,简要解释各类的作 用。进而建立领域模型(class diagram),图中应包含各实体类的关键属性和方法。,图中应包含各实体类的关键属性和方法。 试 题:软件工程 学号: 姓名: 第第 4 页页 (共共 12 页页) 2. (15 分分)基于第基于第 1 题
7、识别出来的边界类、控制类、实体类及其操作,绘制题识别出来的边界类、控制类、实体类及其操作,绘制“事件接报事件接报”的的 UML 对象顺 序图 对象顺 序图(object sequence diagram)。 试 题:软件工程 学号: 姓名: 第第 5 页页 (共共 12 页页) 3. (15 分分)设计该应急值守系统的体系结构,绘制系统的物理部署模型设计该应急值守系统的体系结构,绘制系统的物理部署模型(deployment diagram),并简要 阐述如此设计的原因。 ,并简要 阐述如此设计的原因。 试 题:软件工程 学号: 姓名: 第第 6 页页 (共共 12 页页) 4. (10 分分)
8、针对针对“事件编辑事件编辑”用例,设计一个集成化的图形用户界面用例,设计一个集成化的图形用户界面(GUI),使之能够支持,使之能够支持“事件接报事件接报”用 例中提及的与事件编辑相关的所有功能。绘制该 用 例中提及的与事件编辑相关的所有功能。绘制该 GUI 的原型草图,并简要陈述用户的使用的原型草图,并简要陈述用户的使用/操作流程。操作流程。 试 题:软件工程 学号: 姓名: 第第 7 页页 (共共 12 页页) 二二 测试题测试题(25 分分) 1. (10 分分)使用快速通报功能给上级部门发送邮件时,需要校验收件人使用快速通报功能给上级部门发送邮件时,需要校验收件人 E-mail 地址的正
9、确性,地址的 有效性规则如下: 地址的正确性,地址的 有效性规则如下: E-mail 地址具有以下统一的标准格式:用户名主机域名; 用户名由字母(A-Z 和 a-z)、数字(0-9)、下划线( _ )、连接符( - )、点号( . )组成; 主机域名是用点号( . )分隔的字符串组成,字符串由字母、数字和连接符组成,但不能以连接 符开头和结尾; 用户名和主机域名均不能以点号开头、不能以点号结尾,且不能连续出现两个或更多的点号。 完成以下题目:完成以下题目: (1) 使用等价类划分方法,识别有效等价类和无效等价类;使用等价类划分方法,识别有效等价类和无效等价类; (2) 为该模块设计一组黑盒测试
10、用例为该模块设计一组黑盒测试用例(包括输入数据、覆盖的等价类、期望的输出结果包括输入数据、覆盖的等价类、期望的输出结果)。 试 题:软件工程 学号: 姓名: 第第 8 页页 (共共 12 页页) 2. (15 分分)下面是下面是“银弹银弹”团队使用团队使用 ASP 开发的判断邮箱地址有效性的程序代码,阅读程序并回答以下 问题: 开发的判断邮箱地址有效性的程序代码,阅读程序并回答以下 问题: 1 Function IsValidEMail(strEMail) 2 Dim names, name, i, c 3 isValidEMail = True 4 names = Split(strEMai
11、l, “) 5 For Each name In names 6 If Len(name) = 0 Then 7 isValidEMail = False 8 Exit Function 9 End If 10 For i = 1 To Len(name) 11 c = LCase(Mid(name, i, 1) 12 If InStr(“abcdefghijklmnopqrstuvwxyz_-.“, c) = 0 And Not IsNumeric(c) Then 13 isValidEMail = false 14 Exit Function 15 End If 16 Next 17 If
12、 Left(name, 1) = “.“ Or Right(name, 1) = “.“ Then 18 isValidEMail = false 19 Exit Function 20 End If 21 Next 22 End Function (1) 绘制控制流图;绘制控制流图; (2) 计算环形复杂度计算环形复杂度(或称圈复杂度或称圈复杂度); (3) 列出所有的基本路径;列出所有的基本路径; (4) 设计测试用例设计测试用例 (包括输入数据、期望结果、实际执行结果包括输入数据、期望结果、实际执行结果)。 注:为降低书写量,答题中尽量使用行号。若需要将某一行拆分 为多行,请以 注:为降
13、低书写量,答题中尽量使用行号。若需要将某一行拆分 为多行,请以n.1、n.2、n.3的形式表示的形式表示(n为需要拆分的行号为需要拆分的行号) Split():使用参数:使用参数2将参数将参数1分割为多个子串,返回一个数组;分割为多个子串,返回一个数组; Len():返回字符串参数的长度;:返回字符串参数的长度; LCase():返回字符串参数的小写形式;:返回字符串参数的小写形式; Instr():判断参数:判断参数1字符串中是否包含参数字符串中是否包含参数2字符串,返回字符串,返回boolean; Mid():从参数:从参数1中返回起始位置为参数中返回起始位置为参数2和长度为参数和长度为参
14、数3的子串;的子串; IsNumeric():判断参数是否为数字变量,返回:判断参数是否为数字变量,返回boolean; Left():返回参数:返回参数1从左侧算起指定数目从左侧算起指定数目(参数参数2)的子串;的子串; Right():返回参数:返回参数1从右侧算起指定数目从右侧算起指定数目(参数参数2)的子串;的子串; 试 题:软件工程 学号: 姓名: 第第 9 页页 (共共 12 页页) 试 题:软件工程 学号: 姓名: 第第 10 页页 (共共 12 页页) 三、软件项目管理题三、软件项目管理题(20 分分) “银弹”团队有 4 人,都是计算机学院 08 级本科生,大家只在软件工程课
15、学习过软件项目开发,没 有在实际的项目开发经验。项目中标后,“银弹”团队很兴奋,在队长麦坤的带领下,他们首先用一周 的时间进行了需求分析,撰写了近 70 页的需求规格说明。用户看到他们很快拿出了这么详细的需求报 告后非常满意,但是对于各种计算机专业的分析模型不是很理解,也没有提出太多意见。团队按瀑布 过程开始了软件设计,并在一周后拿出了设计文档,客户表示看不懂文档,但是对团队的效率表示满 意。麦坤感到很轻松,设计完成后,一半的工作已经完成了,一切顺利,当天他们去 KTV 庆祝了一番! 在开发的过程中“银弹”团队遇到了些麻烦,首先 GIS 相关的技术大家都没有接触过,如何在地图 上进行标注并将地
16、图集成到软件界面中花费了近 3 天的时间才解决。而发邮件和发短信的功能实现简 直就是噩梦,看似简单的发邮件功能足足用了 4 天时间,而且还经常出现未知错误导致邮件发送失败, 短信功能最后根本就没实现,负责开发的同学没有任何设备接口开发经验,短信设备的串口通讯程序 一直没调通。这时候团队的组织也出现了问题,大家抱怨麦坤投标时承诺的功能太多了、时间太紧了、 报价太低了! 功能基本开发完已经延迟了 1 周多的时间,在客户的不断催促中来不及测试就部署到用户的环境 中。由于开发时没有关注环境变量及代码的统一管理,不同人员自己设置了环境参数,导致在客户环 境中软件不能运行。用了 2 天时间,反复修改调试了部分代码才能够在客户机器上运行起来。团队变 得急