《软件工程》综合性实验指导.docx
《《软件工程》综合性实验指导.docx》由会员分享,可在线阅读,更多相关《《软件工程》综合性实验指导.docx(12页珍藏版)》请在冰豆网上搜索。
《软件工程》综合性实验指导
《软件工程》设计实验指导书
实验题目:
MIS系统的设计与实现
课程名称:
软件工程
计划学时:
16
撰稿人:
王建文
一、 实验目的:
软件工程实验课的目标是:
通过一个小型软件项目的开发,使学生理论与实践相结合,体会项目开发各阶段所面临的问题,探索相应的解决办法,从而理解软件工程的过程、方法、工具三个要素。
学生在实验中的收获将包括:
1.掌握从需求理解、概要设计、详细设计、编码、测试、到产品发布的软件开发全过程;
2.掌握规范化软件开发流程;
3.更深刻理解面向对象分析和设计的思想,培养面向对象开发的思维方式;
4.培养快速学习新的知识,并在实践中运用的能力;
5.掌握在项目中快速应用外部技术的能力。
二、实验内容
以4个学生为一个团队,开发一个小型的信息系统。
选题如下表所示:
系统名称
功能概述
复杂程度
电子名片管理系统
(1)增加、删除、修改、分类和查询名片
(2)登录管理
(3)名片数据与Excel的导入、导出管理
一般
实验室考勤管理系统
(1)电子签到
(2)电子签退
(3)考勤统计
一般
电子资源管理系统
(1)资源分类管理
(2)资源管理(上传、下载、审核、发布)
(3)资源权限管理
(4)资源使用情况统计
中等
选课系统
(1)课程库管理(增加、删除、修改课程)
(2)用户注册、导入
(3)课程信息维护
(4)学生选课
(5)选课结果通知
(6)打印选课名单
中等
在线考试系统
(1)考生管理
(2)成绩查询
(3)考题管理
(4)登录
(5)自动出题
(6)自动判分(包括编程题)
(7)防作弊
复杂
电子作业管理系统
(1)实验课程管理
(2)用户管理
(3)角色和权限管理
(4)作业上交
(5)作业批改
(6)作业成绩统计与发布
(7)防作弊
复杂
在线电子商务系统
用户:
(1)注册/登陆/忘记密码/管理个人信息
(2)查询货物
(3)购物车管理
(4)提交订单
(5)信用卡支付
(6)查询历史购物记录
网上购物商店:
(1)手工接受/拒绝订单
(2) 用E-mail通知客户
(3)派送货物给用户
(4)库存管理
(5) 销售统计
复杂
自拟题目
自拟题目应由学生提出项目构思,交老师批准后实施。
三、实验要求
1.软件工程综合性实验要求学生采用“项目小组”的形式,结合具体的开发项目进行设计。
班级按项目小组进行分组,每组不得超过4人,每个小班中各小组的选题不得重复。
小组成员分别担任项目经理、技术经理、配置管理员、测试负责人等角色,分工合作。
2.文档及代码应按规范编写,按时提交
3.最后提交的文档和代码:
(1)需求规约说明书
(2)设计说明书(包括数据库设计)
(3)测试用例文档
(4)帮助文档(含功能展示视频)
(5)项目源代码
(6)测试项目代码
(7)项目的安装文件(Setup.exe)
五、考核形式
1.实验成绩评定方法
(1)小组组长报告
(2)组员介绍各自的工作
(3)演示工作成果
然后由授课教师对小组打总分,各小组组长把总分分配给组员,作为每位同学的实验课成绩。
以促进组员分工合作,提高小组工作质量。
2.实验成绩评定参考标准
(1)工程文档是否符合规范;
(2)图、表是否规范且重点突出、图文并茂;
(3)开发过程中是否能正确使用软件工程工具;
(4)项目分析、设计、测试质量高低;
(5)演示效果好坏
四、实验步骤
根据软件工程方法,按项目启动、需求分析、概要设计、详细设计、编码实现、测试六个主要阶段实现一个系统,对每个阶段进行评审,并形成相应文档。
以下六个阶段并非完全按照顺序进行,而是依据敏捷方法的思想,以软件架构为中心,通过分析、设计、实现、测试工作的多次迭代不断完善整个系统。
序号
实验项目名称
实验内容
学时
实验要求
实验类型
每组人数
1
项目启动
1.成立项目小组
2.项目角色与职责分配
3.项目风险评估与技术路线确定
2
必做
设计
4
2
需求分析
1.功能需求
UserCase分析
数据库需求分析
2.非功能需求
安全性、可用性等
3.系统原型
4.测试用例与测试工具准备
4
必做
设计
4
3
概要设计
1.系统架构设计
2.概念类设计
3.数据库设计
4.编写关键实现技术的Demo
4
必做
设计
4
4
详细设计
1.类/模块详细设计
2.界面设计
3.数据结构与算法设计
2
必做
设计
4
5
编码实现
1.编码实现
2.单元测试
2
必做
设计
4
6
软件测试
1.集成测试
2.系统测试
2
必做
设计
4
(一)项目启动
1.实验目的
成立项目小组,分配每个成员的职责,确定项目的基本目标,以便小组成员能够协调行动,合作完成项目开发。
2.实验内容
(1)成立项目小组,选出项目经理,分配每个成员的角色,每个角色的职责可参考表1.1
(2)评估选题的风险,在讨论的基础上确定题目,初步商定技术路线
(3)在项目管理服务器上创建项目,分配组员账号,学习使用方法
3.实验要求
实验完成后应提交以下内容:
(1)项目组成员基本信息表。
该表是用来记录团队的分工情况的,它记录了所有成员所担当的职务,即在团队中的角色,还有每个人的联系方式等。
(2)项目周报。
该表是用来记录跟踪团队本周的工作内容、进度、人员调度、客户沟通记录、项目大事纪等项内容,以及发现的问题。
还要进行风险跟踪和问题跟踪。
另外一项重要内容就是给出下周的工作计划。
(3)第一次会议记录。
会议记录是用来记录团队的所有会议内容的备忘性文件。
由项目经理指定的记录人负责将会议记录草稿整理后填写,发送给与会人员,并放在VSS上,以备团队成员查阅。
会议发起人要跟踪会议遗留的尚未解决问题,并督促解决。
4.思考题
(1)项目开发首先要做的事是什么?
(2)你认为该软件应具备的最重要的特性是什么?
(3)你认为怎样分工是最合理的?
(4)软件开发过程需要经历哪些阶段?
(5)软件开发过程各阶段的里程碑是什么?
5.附录文档
(1)项目小组成员职责表
(2)项目组成员基本信息表
(3)软件工程项目工作周报
(4)项目例会记录表
(二)需求分析
1.实验目的
确定各组所开发项目的需求,在此基础上完成系统的用例分析模型和用例文档。
2.实验内容
(1)功能需求分析:
UserCase分析,数据库需求分析
(2)非功能需求分析:
安全性、可用性、性能等
(3)创建系统原型
(4)根据需求检查列表评审需求
(5)测试用例与测试工具准备
3.实验要求
需求分析切不可直接讨论软件所包含功能,而应按需求的三个层次逐步展开。
需求的三个层次包括:
业务需求、用户需求和功能需求。
业务需求(Businessrequirement)表示组织或客户高层次的目标。
业务需求描述了组织为什么要开发一个系统,即组织希望达到的目标。
用户需求(userrequirement)描述的是用户的目标,或用户要求系统必须能完成的任务。
用例、场景描述和事件――响应表都是表达用户需求的有效途径。
也就是说用户需求描述了用户能使用系统来做些什么。
功能需求(functionalrequirement)规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。
功能需求描述是开发人员需要实现什么。
实验完成后应提交以下内容:
(1)需求规格说明书
(2)评审记录表
(3)系统原型
4.思考题
(1)需求分析在软件开发中的重要性?
(2)针对所开发项目的用例模型,谈谈识别Actor和UseCase的方法?
(3)用例之间有哪几种关系?
怎样表示?
(4)怎样组织对该工作的评审?
5.附录文档
(1)需求规格说明书
(2)评审记录表
(三)概要设计
1.实验目的
在已经理解了用户需求的基础上,将整个项目分割成“模块”,并确定系统的基础架构。
2.实验内容
(1)系统架构设计
(2)概念类设计
(3)数据库设计
(4)编写关键实现技术的Demo
3.实验要求
概要设计注重宏观上和框架上的设计,包括软件系统的总体结构设计、全局数据库设计、外部接口设计、功能部件分配设计和部件之间的接口设计。
概要设计说明书的核心工作是确定模块所包含的类(精确到类即可,不必细化类成员),此时允许对类的成员等细节尚不太清楚。
在将模块的功能点准确把握和描述的基础上,把模块映射成一系列的类,用类图将类间关系描述出来。
另外,要进行数据库的概要设计,即确定数据库引擎,以及数据库的表结构和表间关系图。
在概要设计说明书中,需要将整个系统所使用的模块名称、类名称、数据库名称和表名称规范化,并在整个系统的所有文档和程序中使用规范化名称。
实验完成后应提交以下文档:
(1)概要设计说明书
(2)关键实现技术Demo
4.思考题
(1)系统设计和需求分析的关系是什么?
两者必须先后关联吗?
(2)怎样描绘系统的体系结构?
(3)怎样绘制符合规范的类图?
(4)怎样组织对设计阶段工作的评审?
5.附录文档
(1)概要设计说明书
(四)详细设计
1.实验目的
这个阶段是在前一阶段概要设计已搭好的框架上,对概要设计进行细化。
2.实验内容
(1)类/模块详细设计
(2)界面设计
(3)数据结构与算法设计
3.实验要求
详细设计说明书需要覆盖概要设计说明书的全部内容,同时要作为程序设计和实现的依据,因此,它更加注重微观上和框架内的设计。
具体就是将概要设计中描述的类,给出其所有成员的细节的详细描述,细到要将函数成员的处理逻辑用流程图描述出来,以及所需要的数据成员罗列出。
还要罗列出所使用的用户自定义类型、常量等。
于是经此阶段的工作所产生的详细设计,距编码实现只有一步之遥。
这意味着即使编码人员没参与前几个阶段的工作,仅仅依据详细设计,就能完成代码的编程。
一般情况下,系统的概要设计说明书由系统设计师来完成,主要是需要系统设计师模块划分能力和总体把握能力,但详细设计一般是由高级程序员来完成,完成详细设计时更看重的是编程经验和编程能力。
详细设计必须满足以下要求:
(1)一致性。
详细设计的要求应该与需求分析报告所描述的需求一致、同时还要与概要设计一致。
同时,详细设计的各项要求之间也应该是一致的。
(2)合理性。
详细设计所提出的设计方法和标准应该是合理的、恰当的,是在目前的技术水平情况能实现的。
(3)可追踪性。
对详细设计所提出的各项要求应该可以在需求分析报告、概要设计报告中可追溯到。
(4)可行性。
根据详细设计进行编码、测试、操作和维护应该是可行的,任何一个有经验的编码工程师都可以根据详细设计的文档来完成编码工作。
实验完成后应提交以下文档:
(1)详细设计说明书
4.思考题
(1)详细设计与概要设计的区别与联系是什么?
(2)怎样组织对详细设计阶段工作的评审?
5.附录文档
(1)详细设计说明书
(五)编码实现
1.实验目的
实现系统功能。
2.实验内容
(1)根据详细设计说明书实现整个系统
(2)对每个编写完成的类同步进行单元测试
3.实验要求
首先由组内技术较强最熟悉开发平台的两个成员,用半天时间在VSS上搭建起项目编码框架,创建起所有文件名、函数(空函数体),统一规划名称。
然后将编码任务分配给团队成员。
团队成员用checkout取下项目框架中自己的那部分,编码后用checkin放回。
业务层、实体层的类在实现的同时,根据测试用例,编写单元测试代码,提交单元测试报告。
4.思考题
(1)怎样合理选择软件开发的工具?
(2)怎样在系统实现中采用快速原型法?
(3)怎样进行用户说明手册和使用手册的编写。
(4)总结项目实施中的得失。
5.附录文档
(1)单元测试报告
(六)测试
1.实验目的
测试系统功能,找出系统BUG,修正系统的设计与实现,验证系统实现与需求的符合程度。
2.实验内容
(1)集成测试
(2)系统测试
3.实验要求
系统是站在用户的角度上,从外观界面上检验其功能。
分为:
1.功能的逻辑测试;2.输入输出操作测试。
测试依据:
项目需求书。
指导思想:
以外行人的使用可能检验程序,以程序员的专业眼光发现错误。
测试步骤如下:
(1)运行程序,对照“测试用例”,观察程序运行行为。
(2)对于发现的疑似BUG,先草填“BUG记录表”,由BUG确认者确认后成为正式“BUG记录”,并予以编号,进入BUG管理流程。
(3)BUG修改后要重新对程序模块进行测试,以确保对BUG修改的正确。
4.思考题
(1)集成测试与功能的不同点是什么?
(2)BUG修正后为什么要进行回归测试?
5.附录文档
(1)系统测试报告