数学与信息学院(软件学院)《软件工程实验》指导书编写:梁早清朱凯严尚维林毅申完成人信息学号姓名主要角色和任务比重朱凯2016年修订分组至少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分的学生人数占所有参加考试人数的百分比)。
进入统计界面,选择成绩统计的具体菜单项(平均分、最高分、最低分、优秀率、良好率、不及格率),系统将显示所需要的统计值。
学生查询成绩:为保护隐私,学生输入自己的学号,由于预先在个人基本信息中保存了每个学生的手机号,在界面上点击获取手机验证码,要求60秒内在界面上回填并提交验证码,若超时或未收到则需要重新获取手机验证码。
如果学号和验证码都通过,系统将按照点名成绩、课堂作业成绩、课后作业成绩、期末考试成绩、总评成绩显示查询结果。
如果学号和验证码不能验证通过,提示查询失败。
简单起见,不考虑注册、登录、学生和教师的个人基本信息录入等环节,假设已经有了这些数据。
二、要求:采用结构化分析与设计方法,完成软件需求分析文档(含模型)、设计文档和测试计划三份文档。
具体分解到实验课每一周的任务见后页:具体要求:准备部分:熟悉Visio用法这一部分安排一周时间(课上2课时)。
学生参考附件1和附件2中的内容,熟悉Visio 绘制数据流图(DFD)和模块调用关系图的用法。
说明:数据流图对应教材P69 5.2节。
模块调用关系图对应教材P91 5.6节中的结构图,只是叫法略有不同。
第一部分:需求分析文档这一部分安排两周时间(课上4课时)。
第一周按分组完成这一部分文档,并打印纸质版。
第二周课上交换后相互批改纸质版文档,然后老师评讲。
具体评分细节参考附件3。
需求分析文档主要由以下4部分构成:(1)分层数据流图由顶层图的模型开始,逐层分解,就这个系统而言,大致上分3层即可分解到位。
要求耐心细致地用Microsoft Visio工具画图,然后粘贴矢量图到Word文档中。
体会数据流图的划分,体会Visio功能的方便。
需要注意的地方参考教材P76开始的分层数据流图的审查一节。
(2)数据字典只需定义出数据流词条即可。
要求与数据流图一致,按教材上的格式做。
参考教材P84数据流条目和数据项条目的格式。
(3)实体-关系分析模型为数据库设计奠定基础,即给出E-R图(模型)。
实体-关系模型是在数据库课堂上学的,软件工程所用到,请参考数据库教材中的有关章节。
(4)加工规约加工规约严格讲属于数据字典的范围,此处单独作为第4点旨在强调它的重要性,它为模块的内部实现细节奠定基础。
注意,只需要对应数据流图中的底层加工(即基本加工)进行规约。
要求采用结构化英语/汉语描述(伪码描述加工规约亦可)。
参考教材P88 5.5节。
第二部分:设计文档这一部分安排两周时间(课上4课时)。
第一周按分组完成这一部分文档,并打印纸质版。
第二周课上交换后相互批改纸质版文档,然后老师评讲。
具体评分细节参考附件3。
设计文档主要由以下4部分构成:(1)软件体系结构设计由数据流图转换到软件的模块调用关系图,不需要转换细节,直接给出两个结构图(即初始图和优化之后的模块调用关系图)。
要求耐心细致地用Microsoft Visio工具画图,然后粘贴矢量图到Word文档中。
图太大的话考虑是不是分解过细,另外将Word页面横向排版也可以部分缓解图过大的幅面画不下的麻烦。
(2)模块接口说明(写出每个模块实现的功能,模块名称,模块的参数和返回值)所定义的模块的个数应该与模块调用关系图中出现的模块个数一致。
针对模块之间的调用关系,需要给出二者的耦合关系,比如数据耦合、控制耦合等。
举例:模块名称getAverage中文释义求列表中数据的平均值并返回参数list列表名称、size列表长度返回值average,浮点,保留一位小数格式上要写出每个模块的功能描述,定义模块的名称(英文定义,可用中文解释),模块的参数(英文定义,可用中文解释)和返回值(英文定义,可用中文解释)。
(3)各模块内部的设计即详细设计,又叫部件及设计。
需要针对每个模块定义其内部需要用到的数据结构/变量,模块内的执行逻辑,模块内的执行逻辑可以用伪代码或程序流程图的形式给出。
体会:老师课堂上所提:如果模块划分的过粗,如果画流程图会很多结点很复杂。
(4)界面设计给出界面的原型并截图到文档里,若为Web形式的软件需要制作静态页面,在浏览器展示后截图;如果是桌面版的软件,可以用C#或Java Swing制作,运行后截图到文档里)。
老师课堂上展示的界面原型是用Axure RP Pro工具很快画的。
注意:软件的所有功能必须在界面中有展示,比如,录入数据要有录入界面、查询要有查询的录入界面和返回查询结果的界面等等。
体会:课堂上讲的软件过程模型中的原型模型(原型法)。
第三部分:测试文档这一部分安排两周时间(课上4课时)。
第一周按分组完成这一部分文档,并打印纸质版。
第二周课上交换后相互批改纸质版文档,然后老师评讲。
具体评分细节参考附件3。
针对每个功能(或模块)做测试用例设计。
提示:针对每个模块的功能做黑盒测试,主要采用等价类和边界值法。
如果没有边界值或边界值不明显,可以只采用等价类法。
说明:白盒测试需要考虑软件的内部结构,若所有模块都做,工作量过大,此次试验不考虑白盒测试方法。
这一部分的训练放在平时作业里进行。
第四部分:综合性试验文档这一部分安排的课堂时间只剩一周(2课时),由学生按老师给出的文档的格式做好后提交。
格式模板由老师另外提供。
根据同学之间批改的意见和老师逐步评讲的情况,修正前面3次试验的文档,形成涵盖需求、设计和测试三个过程的综合性实验文档提交。
(提醒非常重要:这个文档需提交到学院要求存档。
若缺少这个文档,准备好重修。
)附件1 熟悉Visio软件中数据流图的画法安装:在百度中搜索Visio2010安装程序,安装完成后激活(破解)。
使用:只介绍与绘制数据流图模型有关的内容。
注意:机房版本可能不是2010版,但操作大致相同。
参考步骤:1.打开visio软件,从开始菜单“Microsoft Office” “Microsoft Visio 2010”进入程序。
2.进入软件之后的界面如下所示。
3.模板类别中,选择“软件和数据库”,进入如下图所示的界面。
4.选择“数据流图表”,进入如下图所示的界面。
绘制数据流图主要用到以下四个元素(符号),与教材上的符号略有差异,但不影响理解。
4中基本元素(符号)的说明如下:这里的“流程”也就是教材中介绍的“加工”的概念,可以视为一个处理器。
“接口”即教材中介绍的“外部实体”的概念,可以是用户(即人),也可以是与系统有交互的其他软件系统。
“数据存储”是一个抽象的概念,用于存放需要永久保存的数据,它的实现方式可以使文件或数据库。
“数据流”用于连接有意义的两个符号,带有方向,比如从“接口(外部实体)”到“流程(加工)”的数据流可以反映数据流是如何从用户进入到本层系统的某个加工中去的。
数据流图模型一般是从顶层图逐步细化(求精,refine)到底层图,一次分解一个上层的加工,分解过程中保持数据流的平衡和符号的命名规则(注意阅读和复习教材中的有关论述)。
细化在visio软件的数据流模型中也有对应,绘图窗口底部有一个选项卡,如下图所示。
当前画布是“顶层流程”,后面那个“小纸片左上角有黄色星”的按钮点击可以新建下一层的层次模型。
若按教材的命名规则,对顶层图细化之后是0层图,因此可建立0层图,如下图所示。