软件工程实验指导书(2015年修订)
华南农业大学
数学与信息学院(软件学院)
《软件工程实验》指导书
编写:梁早清 朱凯 严尚维
2014年9月,2015年9月由朱凯修订 分组至少3人至多4人。
备注:此文档仅作为《软件工程》实验指导用,其他课程的文档模板请根据其他老师提供的文档模板撰写。
软件工程实验课实验说明
本实验指导书是数学与信息学院、软件学院《软件工程实验》课程的指导书,目的在于让同学们通过这些实验,了解软件开发的过程。我们试图通过一个较为容易实现的简化的软件系统,让学生分阶段完成需求分析、体系结构设计、部件级设计等设计和功能测试的工作,并完成相应的文档。学生之间相互批改,老师统一评讲。以此让学生加深对结构化分析与设计、功能测试的方法的理解并加以掌握。
需求描述
《华南农业大学课程成绩管理系统》提供一个方便我校任课老师管理学生成绩的小型软件系统。该系统为教师提供方便的成绩管理功能,也为学生提供查询成绩的功能。系统描述如下:
学生的成绩包含以下4个部分:课堂点名成绩、课堂考试成绩、课后作业成绩和期末考试成绩。各成绩评判标准和在总成绩中所占比例如下:
1. 课堂点名3次,每次点名没有到的不得分(即记0分),到了的100分。第一次点占总成绩的1%,第二次和第三次各占总成绩的2%,课堂点名占总成绩的5%;
2. 课堂考试3次,每次满分100分,具体成绩由老师给出。其中,第一次和第二次占总成绩的7%,第三次占总成绩的6%,共20%;
3. 课后作业3次,每次满分100分,具体成绩由老师给出。其中,第一次和第二次占总成绩的8%,第三次占总成绩的9%,共25%;
4. 期末考试试卷满分100分,占总成绩的50%。
教师能通过成绩管理软件来管理学生的成绩,包含添加、删除、修改、查看、统计学生的成绩。各个功能具体描述如下:
1. 添加学生成绩:填写学号,点击添加,然后在添加界面上录入对应学生的第一次点名、第二次点名、第三次点名、第一次课堂考试、第二次课堂考试、第三次课堂考试、第一次课后作业、第二次课后作业、第三次课后作业,期末考试卷面成绩。点名用0和100分别表述每次是否有缺课。其他的成绩也利用百分制录入。以上各项成绩录入后,系统自动根据各项成绩在总成绩中所占比例计算出该学生的总成绩,并保存这些数据。
2. 查看单个学生成绩:在查询界面上,输入学生的学号,系统能够将这个学生的各项
成绩和总评成绩显示出来,如果还没有该学生的成绩,给出没有该学生成绩的提示。
3. 修改学生成绩:根据学生的学号,进入该生成绩修改界面,系统能够将该学生的成
绩显示出来,教师根据实际情况可以修改第一次点名、第二次点名、第三次点名、第一次课堂考试、第二次课堂考试、第三次课堂考试、第一次课后作业、第二次课后作业、第三次课后作业,期末考试卷面成绩,确认后保存修改的信息。
4. 删除学生成绩:在删除界面上输入学生的学号,如果不存在该学生,提示用户输入
有误;找到了该学生记录后,系统能够将该学生的成绩显示出来,并警示提示用户操作风险,取消删除操作不删除,确认删除后系统删除该学生的信息。
5. 成绩统计:成绩统计包含学生成绩由高到低排序、平均值、最大值、最小值、优秀
率(大于或等于90分的学生人数占所有参加考试人数的百分比)、良好率(大于或等于80分且低于90分的学生人数占所有参加考试人数的百分比)、不及格率(低于60分的学生人数占所有参加考试人数的百分比)。进入统计界面,选择成绩统计的具体菜单项(即排序、平均值、最大值、最小值、优秀率、良好率、不及格率),系统将显示所需要的统计值。
学生查询成绩:学生输入自己的学号和姓名,如果学号和姓名都正确,系统将按照点名成绩、课堂作业成绩、课后作业成绩、期末考试成绩、总评成绩显示查询结果。如果学号和姓名不正确,提示没有该学生的成绩。
简单起见,不考虑各类用户的注册、登录、学生和教师的个人基本信息录入等环节。
要求:
准备部分:熟悉Visio用法
这一部分安排2个课时。学生参考附件1中的内容,熟悉Visio绘制数据流图(DFD)的用法。 第一部分:需求分析文档
这一部分安排4个课时,前两个课时学生做,并打印纸质版。后两个课时相互批改纸质版文档,然后老师评讲。具体评分细节参考附件2。
(1) 分层数据流图(40分)
提示:由顶层图的模型开始,逐层分解,这个系统大致上分3层即可分解到位。要求耐心细致地用Microsoft Visio工具画图,然后粘贴矢量图到Word文档中。注意子图与父图中对应加工之间的数据流平衡。注意加工和数据流的命名。
(2)数据字典(20分)
提示:只需定义出数据流词条。要求与数据流图对应,按教材上的格式做。
(3)实体-关系分析模型(10分)
提示:为数据库设计奠定基础,即给出E-R图(或表结构)。
(4)加工规约(30分)
提示:加工规约严格讲属于数据字典的范围,此处单独作为第4点旨在强调它的重要性,它为模块的内部实习细节奠定基础。注意,只需要对应数据流图中的底层加工进行规约。要求定义方法采用结构化英语(伪码亦可)。
第二部分:设计文档
这一部分安排4个课时,前两个课时学生做,并打印纸质版。后两个课时相互批改纸质版文
档,然后老师评讲。具体评分细节参考附件2。
(1)软件体系结构设计 (30分)
提示:由数据流图转换到软件的模块调用关系图,不需要转换细节,直接给出两个结构图(即初始图和优化之后的模块调用关系图)。要求耐心细致地用Microsoft Visio工具画图,然后粘贴矢量图到Word文档中。
(2)模块接口说明(写出每个模块实现的功能,模块名称,模块的参数和返回值)(20分) 提示:写出每个模块功能描述,定义模块的名称(英文定义,可用中文解释),模块的参数(英文定义,可用中文解释)和返回值(英文定义,可用中文解释)。针对模块之间的调用关系,需要给出二者的耦合关系,比如数据耦合、控制耦合等。
(3)各模块内部的设计 (25分)
提示:即详细设计,又叫部件及设计。需要针对每个模块定义其内部需要用到的数据结构/变量,模块内的执行逻辑,模块内的执行逻辑可以用伪代码或程序流程图的形式给出。
(4)界面设计 (25分)
提示:给出界面的原型并截图到文档里,若为Web形式的软件需要制作静态页面,在浏览器展示后截图;如果是桌面版的软件,可以用C#或Java Swing制作,运行后截图到文档里) 第三部分:测试文档
这一部分安排4个课时,前两个课时学生做,并打印纸质版。后两个课时相互批改纸质版文档,然后老师评讲。具体评分细节参考附件2。
测试用例设计(等价类划分30分,等价类法测试用例设计30分,边界值分析20分,边界值法测试用例设计20分)
提示:针对每个模块的功能做黑盒测试,采用等价类和边界值法。由于没有编码(code未知),不考虑白盒测试方法。
第四部分: 综合性试验文档 这一部分安排2个课时,由学生按文档的格式做好后提交。(非常重要:这个文档需提交到学院要求存档。若缺少这个文档,准备好重修。模板由老师另外提供)
综合性实验,根据同学之间批改的意见和老师逐步评讲的情况,修正前面3次试验的文档,形成涵盖需求、设计和测试三个过程的综合性实验文档提交。
附件1 熟悉Visio软件中数据流图的画法
朱凯编写
安装:在百度中搜索Visio2010安装程序,安装完成后激活(破解)。 使用:只介绍与绘制数据流图模型有关的内容。
参考步骤:
1. 打开visio软件,从开始菜单“Microsoft Office” “Microsoft Visio 2010”进入程序。
2. 进入软件之后的界面如下所示。
3. 模板类别中,选择“软件和数据库”,进入如下图所示的界面。
4. 选择“数据流图表”,进入如下图所示的界面。
绘制数据流图主要用到以下四个元素(符号),与教材上的符号略有差异,但不影响理解。
4中基本元素(符号)的说明如下:这里的“流程”也就是教材中介绍的“加工”的概念,可以视为一个处理器。“接口”即教材中介绍的“外部实体”的概念,可以是用户(即人),也可以是与系统有交互的其他软件系统。“数据存储”是一个抽象的概念,用于存放需要永久保存的数据,它的实现方式可以使文件或数据库。“数据流”用于连接有意义的两个符号,带有方向,比如从“接口(外部实体)”到“流程(加工)”的数据流可以反映数据流是如何从用户进入到本层系统的某个加工中去的。
数据流图模型一般是从顶层图逐步细化(求精,refine)到底层图,一次分解一个上层的加工,分解过程中保持数据流的平衡和符号的命名规则(注意阅读和复习教材中的有关论述)。细化在visio软件的数据流模型中也有对应,绘图窗口底部有一个选项卡,如下图所示。
当前画布是“顶层流程”,后面那个“小纸片左上角有黄色星”的按钮点击可以新建下一层的层次模型。若按教材的命名规则,对顶层图细化之后是0层图,因此可建立0层图,如下图所示。
对“页-2”可以进行改名“0层图”。
下图中一些按钮,比如全屏显示、缩小和放大、调整页面以适合当前窗口、
扫视和缩放窗口及切换窗口。可以自行试用,不再赘述。至于如何保存visio文档就更不必多言。
下面的篇幅以教材P70页图5.4为例绘制一个数据流图,讲解visio的用法和用该软件绘制数据流图时的一些注意。
首先,以前述文字材料为参考,新建(打开)一个空的visio的数据流模型文档。
注意,不同于教材上的数据流图各个元素的摆放次序,一般为美观也便于查找数据流,约定数据流图最上层是外部实体,第二层放置加工,最下层放置文件。教材图5.4有经理、顾客与图书代理商三种类型的用户(外部实体),五个加工,两个数据存储,对应摆放的方式可以是下图里的方式。
然后,填充文字,模型将变为如下图所示的效果。
接下来,添加并连接各元素之间的数据流,这一过程注意数据流的箭头方向。
初步绘制好的数据流图如上所示,这中间已经调整过外部实体的矩形框和加
工的圆角矩形框的大小(宽度和高度)以符合视觉习惯。
接下来继续加以调整,使得这个图更加合理、方便理解。具体可以从元素的摆放位置、字体的属性(大小、是否加粗等),数据流是否标注汉字(数字或字母)、数据流图中元素的命名等方面加以调整,一般根据实际情况和个人经验来确定。
选中整个数据流图中的元素,鼠标右键的菜单中可以调整字体属性,如下图。
改为粗体,12pt字,如下图。
调整元素之间的位置(左右顺序)后,效果如下图:
再将数据流用阿拉伯数字标注并配以带文本的边框线元素加以注释,如下图。
注意各个元素的命名。外部实体和一般用名词(名词短语)命名,如顾客。加工一般用动宾短语(或宾语前置的动宾短语)命名,如图书订购、库存管理。数据流一般用名词(名词短语)或加定语修饰的名词(名词短语)命名,如订购单、核准的订购单。数据存储,一般不出现“数据库”、“文件”这种表示实现的字样,如“账务数据库”这一命名在数据流图中的表达式不严谨的,当然这种不严谨也不妨碍平时的理解,没有必要深究下去。
此外,经常把visio的数据流图嵌入到word中,一种方式是截图后粘贴到word文档中,另外一种办法是直接把模型嵌入进来。下图是直接嵌入的visio模型,二者的一个区别是直接嵌入visio模型可以在word中打开visio进行修改,若是粘贴的图片就不可以修改了,其他区别不再赘述,请用心体会。
1.订购单2.收费数据
3.核准的订购单4.发书单5.出库单6.账单
7.财务报表8.入库单.
附件2 文档评分标准
一、需求分析文档评分标准
1. 分层数据流图不是visio图画的,直接扣40分。此外,从以下几个部分考虑,出现某个方面的问题扣5分,扣完为止。 (40分)
每个加工都要有合理的命名,都要有流入的和流出的数据流。 数据流都必须有命名,两个不同的数据流命名应不同。
父加工与分解后的子图里的各加工之间的数据流要保持数据流的平衡。 数据流里的加工编号要正确。 数据流图中不含有控制流的部分。 数据流图的层次是合理的。 数据流图的布局美观。
分解后的底层加工是到位的,即以后方便程序实现的。 一般情况下,文件要有写入的数据流和读的数据流。
2. 数据字典主要从以下几个部分考虑,出现某个方面的问题扣5分,扣完为止。 (20分)
格式按教材P84页数据流条目的要求做。
数据流的条目必须与数据流图一一对应,不可增加或减少。 有关数据流组成的定义,符号必须使用正确。 只定义数据流词条,其他不必。
3. 实体-关系分析模型主要从以下几个部分考虑,出现某个方面的问题扣5分,扣完为止。 (10分)
可以是E-R图,或者直接给出数据库中的表结构。要与数据流图的文件存储部分有比较高的对应。此外,若给出的是E-R需要符号正确,实体和关系分析到位,容易设计出表。若是表结构,则需要满足3NF。
4. 加工规约主要从以下几个部分考虑,出现某个方面的问题扣10分,扣完为止。 (30分)
只对底层的加工做加工规约。
格式要求是教材P89页的结构化英语或者类似结构化英语的伪码形式。 对加工规约的描述必须与需求描述中的内容对应,不可凭主观臆造。
二、设计文档评分标准
1. 软件体系结构设计,主要从以下几个部分考虑,出现某个方面的问题扣10分,扣完为止。 (30分)
形式上,体系结构的设计结论是要得到如教材P103页的图。
软件体系结构图的初始图中的模块大致上要与前面一个文档中的数据流图中的基本加工对应上。
软件体系结构图的优化图与初始图有不同,能让人看出有模块的调整(或合并)。 两幅结构图上均要标注数据流。
2. 模块接口说明,主要从以下几个部分考虑,出现某个方面的问题扣5分,扣完为止。 (20分)
对应软件体系结构优化后的结构图,每个模块有其功能描述,模块的名称(英文定义,中文解释),模块的参数(英文定义,中文解释)和返回值(英文定义,中文解释)。 针对模块之间的调用关系,需要给出二者的耦合关系,比如数据耦合、控制耦合等。
3. 各模块内部的设计,主要从以下几个部分考虑,出现某个方面的问题扣5分,扣完为止。(25分)
根据2接口说明里面涉及的每一个模块,定义其内部需要用到的数据结构/变量。 说明模块内的执行流程,用伪代码或程序流程图的形式给出。
4. 界面设计,如果没有界面设计直接扣25分。对于不符合操作习惯的界面设计视为不认真,扣掉20分,其他情况可酌情扣0-5分。 (25分)
三、测试文档评分标准 针对每一个模块,考虑:
1. 等价类的划分方面,不可遗漏模块,少测试一个模块扣10分。此外,出现以下某个方面的问题扣10分,扣完为止。(60分)
定价类的规则划分不能太粗,由此划分出1个有效等价类和多个无效等价类,然后给出测试用例。
测试用例的形式是必须包含测试输入数据和软件预期的结果(行为)。
2. 边界值方面,不可遗漏模块,少测试一个模块扣10分。此外,出现以下某个方面的问题扣5分,扣完为止。(40分)
对于存在判定(条件)的,需要考虑边界值,没有判定的可以不考虑边界。 边界值的考虑应该是正好等于、刚刚大于或刚刚小于这种。
四、综合性试验文档评分标准 (省略)
附件3 复习材料《软件工程》教材上出现的主要知识点列举如下
1. 软件的概念 2. 软件发展的3个阶段(时间、标志、开发(组织)的方式) 3. 软件的特点 vs 硬件 4. 软件的分类 5. 软件工程的定义 6. 软件生存周期的概念及若干个阶段 7. CMM的目的 8. 瀑布模型 9. 原型 10. 原型模型 11. 螺旋模型 12. 组成基于计算机的系统由哪些元素组成 13. 需求工程的概念 14. 需求工程的六个阶段 15. 软件需求的定义 16. 需求获取的方法与策略 17. 常用的需求分析方法 18. 软件的需求规约主要包含哪些内容 19. 软件设计的任务,在回答接口设计的时候,需要讲清楚3个方面的内容 20. 软件设计的目标 21. 衡量软件设计的技术标准 22. 软件设计的过程 23. 数据抽象与过程抽象 24. 模块的概念 25. 信息隐藏的概念 26. 内聚与耦合的概念 27. 功能内聚的概念 28. 数据耦合的概念 29. 调用和返回风格的体系结构 30. 部件级设计阶段的主要工作 31. 程序流程图、判定表
32. 设计规约主要包含哪些内容 33. 结构化分析与设计 34. 结构化分析模型有哪些 35. 系统响应时间的概念
36. 人机界面设计时的常见问题有哪些 37. 人机界面设计的黄金原则是什么 38. 可用性与可用性测试
39. 标识符命名需要注意的问题 40. 序言性注释
41. 书写功能性注释需要主要哪些问题 42. 编写程序时,对数据说明应该注意哪些
问题 43. 测试用例的概念 44. 测试目的 45. 白盒测试与黑盒测试的概念 46. 白盒测试用例设计与黑盒测试用例设计 47. 各种逻辑覆盖准则之间的关系 48. 基本路径测试 49. 等价类的概念 50. V模型中四类测试的对象、依据和任务分别是什么 51. alpha测试和beta测试的概念 52. 安全保密性测试 53. 压力测试与性能测试 54. 测试完成的标准 55. 调试的目的 56. 调试过程 57. 软件维护的定义 58. 纠错性维护
59. 适应性维护 60. 改善性维护 61. 预防性维护 62. 提高可维护性的方法 63. 软件的内部属性有哪些 64. 软件质量的定义 65. 软件质量模型:McCall模型 66. McCabe环形复杂性度量 67. 软件可靠性的定义及若干度量指标 68. 计算机软件配置项 69. 软件配置 70. 基线
华南农业大学期末考试样卷(A卷)
学年第 学期 考试科目: 软件工程 考试类型:(闭卷)考试 考试时间: 120 分钟 学号 姓名 ____ 年级专业 _____________
一、选择题(每小题2分,共10分,将答案填入下表)
A.瀑布模型与软件生命周期模型的框架基本一致。
B. 增量模型特别适用于需求经常发生变化的软件,第一个增量往往包含不确定的需求。 C.原型模型的目的主要是验证算法的合理性。
D.螺旋模型将瀑布模型和增量模型的结合起来,还增加了风险分析。 2. 下列模型中,不属于结构化分析模型的是( ) A . 数据流图 B. 数据字典
C. E-R图(实体-关系图) D. 程序流程图
3. 有关数据流图的审查,以下说法不正确的是( ) A.父图与子图应平衡,数据也应守恒。
B.数据流图中的数据流,只要内容相近,即使不完全一致,也应该使用相同的命名。 C.数据流图中的每个数据流和文件都必须命名(除了流入或流出文件的数据流),并保持
与数据字典一致。
D.数据流图中的基本加工都应有一个加工规约。
4. 对于逻辑覆盖测试的几种覆盖标准,说法不正确的是( ) A.满足判定覆盖标准的测试用例一定满足语句覆盖标准。
B.满足判定/条件覆盖标准的测试用例一定满足语句覆盖标准。 C.满足条件覆盖标准的测试用例一定满足判定覆盖标准。
D.满足条件组合覆盖标准的测试用例一定满足判定覆盖标准。 5. 有关结构化的软件设计,以下说法正确的是( )
A.因为模块越小,开发和维护的难度就越小,所以,在设计模块时尽可能多地划分模块。 B.高内聚、低耦合的模块设计有利于软件的开发和维护。
C.模块的扇出(指一个模块所直接调用的其它模块数量)越大越好。 D.模块之间的接口应尽量采用全局的数据结构、共享内存等方式。
二、判断题(本大题共10小题,每小题1分,共10分。正确打“√”,
错误打“×”,请将结果填入下表)
1. 需求分析与管理活动仅限于软件开发的最初阶段。( ) 2.
清晰的数据定义是软件开发成功的关键因素之一。( ) 3. 两个模块之间仅通过参数表传递简单数据,称为数据耦合。( )
4、在数据流图中,对于还需要继续分解的非基本加工,不必写出加工说明。( )
5. 编码阶段的任务是根据需求规格说明书编写程序。( )
6. 程序的注释只是用来帮助理解程序的,编译时不生成可执行的代码,因此也是可有可
无的。( )
7. 软件测试是为了证明程序是正确的。( )
8. Alpha测试是指由软件最终用户在其工作场所自主进行的测试。( )
9. 纠错性维护在各种维护活动中所占的比重最大,约占整个维护工作的50%。( ) 10. 软件项目中,高超的编程技巧比充分的需求描述和良好的设计更重要。( )
三、名词解释(本大题共6小题,每小题5分,共30分)
1.软件工程
2.瀑布模型
3.软件测试
4.软件配置
5.模块化
6.内聚
四、简答题 (本大题共2小题,每小题10分,共20分)
1.什么是白盒测试?白盒测试用例设计中的逻辑覆盖测试包含哪些方法,请简要说明。 (第1问4分,第2问6分)
2.什么是软件维护?有哪几种类型的软件维护,请简要说明。说出3条软件维护困难的原因。(第1问3分,第2问4分,第3问3分)
五、结构化分析与设计题(本大题共20分)
有一个考试机构,每年面向社会公众举办一次某项职业技能的考试,分为初级、中级、高级等3个等级,在全国多个地点设置考场,供考生报名时自主选择。该考试机构需要开发一个报名与成绩管理的软件,功能如下:
1、考生报名
考生使用该功能自行上网录入《报名表》,内容包括:考生姓名、身份证号、联系地址、手机号码、考试等级、考场。其中,前4项内容由考生自行录入,后2项内容由考生根据系统的提示选择。考生成功报名后,自行按照考试机构官网公布的考试时间和考场地址,到报名时选择的考场参加考试,凭身份证入场,考试机构不另外制作和发放准考证。
2、考场设置
考试机构工作人员使用该功能录入《考场目录》,内容包括:考场代码、考场名称、地址。
3、录入考试成绩
考试机构工作人员使用该功能录入《成绩单》,内容包括:考生姓名,身份证号、考试等级、考试成绩。其中,前3项内容必须与考试报名资料一致,考试成绩包含“通过”和“不通过”等2个选项。
4、打印资格证书
考试机构工作人员使用该功能,为每一名通过资格考试的考生打印《资格证书》,内容包括:考生姓名,身份证号、考试等级,考场名称、通讯地址。以及一段有关“该考生在什么时间、获得什么机构颁发的、从事什么职业的资格证书”之类与考生个人资料无关的固定格式的文字描述(这部分内容不需要在数据流分析中给出),由考试机构以快递形式寄给考生。
5、打印考生名单
各考场工作人员使用该功能打印所在考场的《考生名单》,供考场工作人员手工编排考生座位、核对考生身份使用。内容包括报名在该考场参加考试的所有考生的考生姓名、身份证号和考试等级。
备注
考试时只需要按照上述需求进行分析与设计,不需要考虑考生报名后修改报名资料、撤销报名、更改成绩等其它功能,不需要考虑用户账户密码设置与校验等带有通用性的内容。
要求:
(1)数据流分析
试卷提供分解后的、不完整的底层数据流图原型,要求:①在数据流图上标出用户与加工之间的数据流方向并对数据流命名,②将图上缺少的数据文件以及加工与数据文件之间的数据流补充完整。(10分)
(2)数据字典构造
针对数据流图上的每一个数据流和数据文件,写出数据字典,只要求写出数据结构,不需要写出每个数据项的细节属性。(5分)
(3)数据库设计
根据上述分析结果进行数据库设计,要求写出每张数据表的名称和字段构成,不要求写出每个字段的具体属性,数据表名和字段名可以用中文表示,如果用英文表示,需要用中文写出其含义。(5分)
六、测试用例设计题(本大题每小题5分,共10分)
某邮箱注册功能如下:注册一个用户邮箱需要输入用户名、密码、系统随机生成的验证码(目的是为防止自动程序恶意注册)。用户名是由字母开头、后面是字母、数字或下划线,总长度6到12个字符。密码是字母与数字的组合,必须含有字母和数字,密码长度是6到12个字符。注册时,用户名不能与系统已有的用户名重名;提交时,需要输入的验证码与系统随机自动生成的验证码一致,只有满足以上这些条件,用户才能注册成功,否则注册失败。
(1)请分析该功能输入用户名、密码、验证码的等价类(请将每个等价类加上编号)
(2)根据你所分析的等价类设计测试用例(如果行数不够可以在表格后面自己添加)