《软件工程》课程设计
任 务 书
一、目的、要求
通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
具体如下:
1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析 与设计,编码和测试方面的知识;
2.熟悉自动化的软件开发工具Rational Rose,并将其运用于软件开发的全过程;
3.进一步加强和提高软件工程文档的编写能力;
4.培养协作能力和团队精神。
二、主要内容
1.研究现有博客(如新浪博客等)的功能模块,初步分析用户需求。
2.运用面向对象技术、UML及RationalRose完成系统的需求分析与概要设计。
3.小组讨论数据表的结构、功能模块的具体实现,完成详细设计。
4.运用NetBeans开发平台,配合使用Dreamweaver完成编码。
5.测试阶段。
6.编写报告文档。
摘要:
本系统实现了博客的基本功能,包括对博文、相册、留言、评论等的增、改、删等一系列管理。系统利用NetBeans平台进行开发,运用RationalRose建模工具,实现博客系统的动态管理,使得用户可以实时、高效的使用自己的博客。同时还对系统的开发原理、功能特点和设计方案进行了介绍。
关键词:博客,NetBeans,Rational Rose,动态管理
一、课程设计的目的与要求
通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
具体如下:
1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;
2.熟悉自动化的软件开发工具Rational Rose,并将其运用于软件开发的全过程;
3.进一步加强和提高软件工程文档的编写能力;
4.培养协作能力和团队精神。
二、设计正文
1.概述
1.1课题题目:网上博客系统
1.2系统的主要目标:
本系统目标是实现网上博客系统所需的各种基本功能,包括用户对博文、相册、留言板、评论的一系列管理操作,同时还支持游客对博客的浏览和评论功能。
1.3系统的开发环境及运行环境:
操作系统:Windows 7
建模工具:Rational Rose V7.0
数据库系统:MySQL 5.5
开发工具:NetBeans IDE7.0.1 + Dreamweaver CS5.5
Web服务器:Tomcat 7.0.14.0
2.系统需求分析
随着网络技术的迅速膨胀,博客已经成为人们(特别是年轻人)生活中不可或缺的一部分,它给用户提供一个沟通和交流的平台,使用户可以在博客上发表文章、上传图片以及给别人留言等。我们小组开发的是一个个人网上博客系统,模仿目前比较主流的如新浪博客,系统主要可以实现用户管理、博文管理、相册管理、留言及评论管理等功能。
(1)用户管理:本系统的主要用户有注册用户、管理员、游客。注册用户拥有对自己的博文、相册、留言板、评论等的管理;管理员拥有最高管理权限,可以添加和删除用户;游客可以浏览博文、相册,同时可以对博文和相册中的图片进行评论。
(2)博文管理:用户可以发表博文,同时也可以对博文进行修改、删除,另外,还可以删除本博文的某些评论。
(3)相册管理:用户可以创建、修改、删除相册,对相册中的图片也拥有同样的操作。
(4)评论及留言管理:用户可以新增、删除评论和留言。
本系统采用权限划分,管理员享有最高权限,同时,用户登录时的密码都是经过加密处理的,增加了系统的安全性;另外,可以定期更新维护。
2.1用例图
用例图说明:
(1) 说明系统的外部角色有:游客。
(2) 系统的主要用例简介:
1)编辑博文用例:用户可以发表、浏览、修改和删除博文。
2)编辑相册用例:用户可以创建、浏览、修改和删除相册。
3)编辑留言板用例:游客和用户都可以给博主留言,博主可以删除留言。
4)编辑个人资料用例:用户登录后可以修改更新个人资料。
5)编辑评论用例:用户和游客可以对博文和相片进行评论,博主可以删除相关的评论。
6)登录用例:用户依据自己的用户名和密码登录博客系统。
7)浏览用例:用户登录后可以浏览自己的博文、相册、留言板、收到的评论;游客也可以浏览用户的博文、相册、留言板、收到的评论,同时还可以对博文、相册进行评论。
8)注册用例:游客可以通过注册成为博客系统的用户。
(3)系统用例之间的关系:
1)编辑博文用例与发表、修改、删除博文用例之间是包含关系。
2)编辑相册用例与创建、修改、删除相册用例之间是包含关系。
3)编辑留言板用例与删除留言用例之间是包含关系。
4)编辑评论用例与删除评论用例之间是包含关系。
5)编辑个人资料用例与修改个人资料用例之间是包含关系。
6)浏览用例和浏览博文、相册、留言板、评论用例是包含关系。
7)浏览博文和评论博文是扩展关系。
8)浏览相册和评论照片是扩展关系。
(4) 对关键用例的正常事件流和异常事件流的描述:
表 1 修改密码用例的正常事件流图和异常事件流
用例名称 | 修改密码 | |
参与者 | 用户 | |
描述 | 用户进行密码修改 | |
启动 | 单击“修改密码”链接 | |
前置条件 | 用户成功登录 | |
主事件流 | ||
用户 | 系统 | |
1.进入用户修改密码界面,输入旧密码一次,新密码两次 | ||
2.系统检查密码格式是否相符 | ||
3.系统检查旧密码是否正确 | ||
4.系统检验输入的两次新密码是否相同 | ||
5.如果正确,进行密码修改,转入密码修改成功界面 | ||
异常流 | ||
异常流1 | 输入旧密码不正确 | |
系统 | 返回密码修改界面,提示旧密码不正确 | |
异常流2 | 输入两次新密码不一致 | |
系统 | 返回密码修改界面,提示输入的两次密码不一致 | |
异常流3 | 输入密码的格式不正确 | |
系统 | 返回密码修改界面,提示密码格式不正确 | |
表 2 发表博文用例的正常事件流图和异常事件流
用例名称 | 发表博文用例 | ||
参与者 | 用户 | ||
描述 | 用户发表已经写好的博文 | ||
启动 | 进入发表博文界面 | ||
前置条件 | 用户成功登录 | ||
后置条件 | 尚未发表过相同标题的博文 | ||
主事件流 | |||
用户 | 系统 | ||
1.输入博文及博文的题目 | |||
2.在文本编辑框内输入要发表的博文 | |||
3.单击“提交”按钮 | |||
4.系统检测是否有相同题目的博文 | |||
5.更新博文列表,提示博文提交成功 | |||
异常流 | |||
异常流1 | 用户已经发表过相同题目的博文 | ||
系统 | 提示该标题的博文已经存在,不能再次提交 | ||
异常流2 | 用户要发表的博文标题或内容为空 | ||
系统 | 提示博文的标题或内容不能为空 | ||
2.2类图
(1)BlogControlServlet类是一个控制类。它接受web页的Post和Get请求,并根据需求调
用对应的模型类;或者跳转到对应的web页。doReg();接受注册信息的post请求,并调用PersonalInformation的方法向用户表新增一条数据,若成功则跳转到首页。
(2)index类用于显示首页的web页面,reg类用于显示注册的web页面,login类用于显示登录的web页面,article类用于显示博文的web页面,message类用于显示留言板的web页面,edit类用于显示所有的编辑操作的web页面。
(3)PersonalInformation类是系统用户个人资料类,主要属性有:用户名PI_name,密码PI_password,PI_id用户ID、用户头像PI_Avatar、PI_sex用户性别等属性;主要方法有:setPassword设置密码、getPassword获取密码、setName设置用户名、getName获取用户名。
(4)Bowen类是博文类,主要属性有:B_id博文ID、B_title博文标题、B_context博文内容、B_time博文的发表时间、B_hit博文的点击数目等;主要方法有:writeBowen发表博文、modifyBowen修改博文、deleteBowen删除博文。
(5)Album类是相册类,主要属性有:A_id相册ID、A_name相册名称、A_creattime相册创建时间、A_coveraddress相册封面地址、A_dicription对相册的描述;主要方法有:creatAlbum创建相册、deleteAlbum删除相册、modifyAlbumName修改相册。
(6)Message类是留言类,主要属性有:M_id留言ID、M_name留言者名称、M_time留言提交时间、M_context留言内容;主要方法有:deleteMessage删除留言、addMessage新增留言。
(7)Comment类是评论类,主要属性有:C_id评论者的ID、B_id被评论博文的ID、P_id被评论图片的ID、C_context评论的内容、C_time评论时间、C_name评论者的名称;主要方法有:setContext发表评论、getContext获取评论、UpdataSQL更新数据库。
(8)Picture类是图片类,主要属性有:P_id图片的ID、A_id图片所属相册的ID、P_uploadAddress、图片上传路径、P_thumbnailAddress缩略图地址;主要方法有:setUploadAddress设置上传路径、getUploadAddress获取上传路径。
2.3 顺序图
修改密码顺序图如图3所示。
首先,用户向控制类BlogControlServlet发送登录请求,身份验证通过后跳转到主页index、编辑页edit,用户再次向控制类BlogControlServlet发送修改密码请求,控制类把该请求转发给个人资料类PersonalInformation,修改密码成功后发送成功提示跳转到编辑页并显示修改结果。
用户登录成功后,向Servlet发送页面跳转请求,然后跳转至编辑页edit,编辑博文后向Servlet发送提交请求,然后Servlet转发请求至博文操作类,BowenBiz创建博文并返回显示刚发表的博文。
用户向控制类BlogControlServlet发送登录请求,身份验证通过后跳转到主页index,然后再跳转至编辑页edit,用户再次向控制类BlogControlServlet发送创建相册请求,控制类把该请求转发给相册操作类album,创建相册成功后向控制类BlogControlServlet发送成功提示,然后控制类再将创建的相册提交给编辑页edit,编辑页最终给用户一个创建相册成功的相应。
2.4协作图(可选)
用户向控制类BlogControlServlet发送登录请求,身份验证通过后跳转到主页index、编辑页edit,用户再次向控制类BlogControlServlet发送修改密码请求,控制类把该请求转发给个人资料类PersonalInformation,修改密码成功后发送成功提示跳转到编辑页并显示修改结果。
用户向控制类BlogControlServlet发送登录请求,身份验证通过后跳转到主页index,然后再跳转至编辑页edit,用户再次向控制类BlogControlServlet发送创建相册请求,控制类把该请求转发给相册操作类album,创建相册成功后向控制类BlogControlServlet发送成功提示,然后控制类再将创建的相册提交给编辑页edit,编辑页最终给用户一个创建相册成功的相应。
2.5 状态图(可选)
3.系统总体设计
3.1 设计问题域子系统
网上博客系统是实现用户对博文、相册、留言板、评论的管理维护的一个平台,整个系统分为4个模块:登录/注销模块、浏览模块、编辑模块和注册模块,具体说明如图9所示。
3.2 设计数据管理子系统
(1)数据表的设计
表3个人信息表数据表personalinformation
字段名 | 字段类型 | 字段说明 | 备注 |
PI_id | Int(11) | 用户ID,不能为空 | 主键 |
PI_name | Varchar(15) | 用户名,不能为空 | |
PI_password | Varchar(20) | 密码,不能为空 | |
PI_sex | Char(1) | 性别,默认为“男” | |
PI_birthday | Date | 出生日期,默认1900-01-01 | |
PI_avatar | Varchar | 头像 |
表4博文数据表Bowen
字段名 | 字段类型 | 字段说明 | 备注 |
B_id | Int(11) | 博文ID,不能为空 | 主键 |
B_title | Varchar(30) | 博文标题,不能为空 | |
B_context | Longtext | 博文内容,不能为空 | |
B_time | Date | 博文发表时间,默认1900-01-01 | |
B_hit | Int(11) | 博文点击数,默认为0 |
表5相册数据表Album
字段名 | 字段类型 | 字段说明 | 备注 |
A_id | Int(11) | 相册ID,不能为空 | 主键 |
A_name | Varchar(10) | 相册名称,不能为空 | |
A_creattime | Date | 创建时间,默认1900-01-01 | |
A_coveraddress | Tinytext | 相册封面地址 | |
A_discription | Tinytext | 对相册的描述 |
表6图片数据表Picture
字段名 | 字段类型 | 字段说明 | 备注 |
P_id | Int(11) | 图片ID,不能为空 | 主键 |
A_id | Int(11) | 图片所属相册ID,不能为空 | 外键 |
P_name | Varchar(20) | 图片名称,不能为空 | |
P_discription | Tinytext | 图片描述,默认为NULL | |
P_address | Tinytext | 图片上传地址,不能为空 | |
P_thumbaddress | Tinytext | 图片缩略图地址,不能为空 |
表7留言板数据表Message
字段名 | 字段类型 | 字段说明 | 备注 |
M_id | Int(11) | 留言ID,不能为空 | 主键 |
M_name | Varchar(15) | 留言者名称,默认为“游客” | |
M_context | Tinytext | 留言内容,不能为空 | |
M_time | Datetime | 留言时间,默认为1900-01-01 |
表8评论数据表Comment
字段名 | 字段类型 | 字段说明 | 备注 |
C_id | Int(11) | 评论的ID,不能为空 | 主键 |
B_id | Int(11) | 博文ID,不能为空 | 外键 |
P_id | Int(11) | 图片ID,不能为空 | 外键 |
C_name | Varchar(15) | 评论者名称,默认为“游客” | |
C_context | Tinytext | 评论内容,不能为空 | |
C_time | Date | 评论发表时间,默认“1900-01-01” |
(2)数据表之间的关
3.3 设计人机交互子系统
4. 详细设计
网上博客系统是实现用户对博文、相册、留言板、评论的管理维护的一个平台,整个系统分为4个模块:登录/注销模块、浏览模块、编辑模块和注册模块,其中复杂的方法和模块的详细设计流程图如图13所示。
5. 系统实现
本系统采用了三层架构来实现,即表现层、控制层和业务逻辑层。表现层是用来向用户展示各操作页面,如:登录,注册(仅针对游客),个人资料、博文、留言、相册、评论的管理等;控制层接受表现层的get或post请求,调用控制层的方法,将结果回送给表现层;业务层调用数据库,执行具体的增、删、改操作,返回具体的操作结果。
6. 测试
在测试中,我们首先对各个子模块进行单元测试,保证每个模块作为一个独立单元能正确运行。然后在完成所有模块后,我们将各子模块集成起来,再对它进行集成测试,找出系统设计或编码上的错误,以及验证系统是否实现了指定的功能。下面是一些具体的测试用例;
6.1 关于用户登录的测试
(1)测试用例:用户名不存在或密码错误,登录失
(2)测试用例:【’all’a’=’a,’all’a’=’a】,未注册用户直接登录博客。
6.2 关于博文管理的测试
测试用例:成功发表博文。
6.3 关于留言的测试:测试用例:用户输入1<br></br>
三、课程设计总结或结论
1.通过为期2周的软件工程课设,进一步掌握了软件工程的方法和技术,提高了软件开发的实际能
力,全面地培养了自己在工程设计、综合分析和解决问题的能力。
1.1加深了对面向对象系统的分子与设计、编码测试方面知识的认识。
1.2更加熟练的掌握了Rational Rose软件开发工具。
1.3小组各成员进一步加强和提高了工程文档的编写能力。
1.4加深掌握了J2EE、JSP等编程开发技术。
1.5培养了自己有效沟通的能力和团队协作的精神。
2.此次课设实现了网上博客所拥有的对博文、相册、留言、评论及个人资料一系列管理操作的功能
模块,在功能上基本上满足了用户的需求。但是由于时间紧张,本博客系统只是针对单用户及游客开放。不过,我们在设计数据库的时候特意保留了用户身份这一属性,便于在以后对系统进行扩展。
3.在短短的2周时间内,我们小组4人共同完成了网上博客系统的模拟实现。虽然在课设期间我们
遇到了各种各样的困难,但是我们小组成员齐心协力,互帮互助,顺利的解决了一个个问题。尽管我们做的博客系统和实际的不能相提并论,但通过此次课设,我们掌握了如何同小组的其他成员有效沟通的方法,并进一步了解了软件开发的方法和技术,为今后走上工作岗位打下了坚实的基础。
四、参考文献
[1] 郑人杰.马素霞.殷人昆《软件工程概论》机械工业出版社 2010.3 第一版
[2] 郞波 《Java语言程序设计》清华大学出版社 2011.2 第二版
[3] 郝玉龙.姜韡 《JavaEE编程技术》清华大学出版社·北京交通大学出版社2008.6 第一版
[4] 王珊.萨师煊《数据库系统概论》高等教育出版社 2006.5 第四版
[5] 邱加永.卞志城.郑经煜 《JSP基础与案例开发详解》 清华大学出版社2009.8 第一版
[6] 陈争航 《PHP5 + MySQL5 Web应用开发宝典》电子工业出版社 2008.1 第一版