团队项目系统设计改进与详细设计
一、团队项目系统设计改进
任务1:
a.分析项目系统设计说明书初稿的不足,特别是软件系统结构模型建模不完善内容。
b. 将包含以上完善的内容的以《XX团队项目软件系统设计改进》为名发布在团队博客中,并在团队项目Github仓库中更新《软件系统设计说明书》。
地址:https://github.com/Sophur/Team-Project.git
二、团队项目系统详细设计
任务2:
系统功能模块设计
根据系统需求分析,家教在线管理平台划分为前台新闻、客户注册与登录、教师客户模块、学生客户模块、家长客户模块、留言消息模块、评论及反馈模块、后台管理员模块等八个功能模块。本系统采用了B/S模式,分为前台和后台,其中系统前台包括新闻、客户注册与登录、教师客户模块、学生客户模块,家长客户模块、留言消息模块、评论及反馈模块;系统后台为管理员管理功能模块。各模块存在功能上的相对独立与结构上的相互关联,例如学生客户功能模块包括查看修改个人信息、搜索教师信息、查看留言消息、发布求聘消息、评论及查看评论回复、浏览新闻等。
数据库物理结构设计
在对数据库的逻辑结构设计与实体数据特点分析的基础上,建数据库database design,再在design数据库中建立数据表。数据库中一个 表只存储一个实体或对象的相关信息,不同的实体属性要存储在不同的数据表中。本系统数据库共创建六张数据表,分别是客户类别表(tb_category)、客户表(tb_client)、新闻表(tb_news)、留言消息表(tb_message)、评论表(tb_comment)、管理员表(tb_admin)。
(1)客户类别表,作用是记录客户类别信息。
客户类别表
字段名 |
类型 |
长度 |
约束(主外键) |
含义 |
id |
整型int |
8 |
PK(主键) |
标识 |
category |
字符varchar |
30 |
否 |
类别名称 |
description |
字符varchar |
30 |
否 |
类别描述 |
(2)客户表,作用是记录客户信息。
客户表
字段名 |
类型 |
长度 |
约束(主外键) |
含义 |
id |
整型int |
8 |
PK(主键) |
标识 |
uid |
整型int |
8 |
FK(外键) |
类别标识 |
uname |
字符varchar |
30 |
否 |
用户名 |
name |
字符varchar |
30 |
否 |
姓名 |
pwd |
字符varchar |
20 |
否 |
密码 |
gender |
字符varchar |
20 |
否 |
性别 |
birthday |
日期date |
|
否 |
生日 |
|
字符varchar |
50 |
否 |
电子邮箱 |
address |
字符varchar |
50 |
否 |
地址 |
phone |
字符varchar |
20 |
否 |
电话 |
edubackground |
字符varchar |
30 |
否 |
学历 |
remark |
字符varchar |
200 |
否 |
备注 |
(3)新闻表,作用是记录新闻信息。
新闻表
字段名 |
类型 |
长度 |
约束(主外键) |
含义 |
id |
整型int |
8 |
PK(主键) |
标识 |
title |
字符varchar |
50 |
否 |
类别名称 |
author |
字符varchar |
30 |
否 |
新闻标题 |
issuedate |
日期date |
|
否 |
发布日期 |
content |
文本text |
|
否 |
类别描述 |
(4)留言消息表,作用是记录留言消息。
留言消息表
字段名 |
类型 |
长度 |
约束(主外键) |
含义 |
id |
整型int |
8 |
PK(主键) |
标识 |
userid |
整型int |
8 |
FK(外键) |
用户标识 |
username |
字符varchar |
30 |
否 |
用户名 |
time |
日期date |
|
否 |
时间 |
content |
文本text |
|
否 |
内容 |
style |
字符varchar |
30 |
否 |
类型 |
(5)评论表,作用是记录评论信息。
评论表
字段名 |
类型 |
长度 |
约束(主外键) |
含义 |
id |
整型int |
8 |
PK(主键) |
标识 |
cid |
整型int |
8 |
FK(外键) |
用户标识 |
pname |
字符varchar |
30 |
否 |
评论者姓名 |
pcontext |
文本text |
|
否 |
评论内容 |
ptime |
日期date |
|
否 |
评论时间 |
bname |
字符varchar |
30 |
否 |
受评者姓名 |
brcontext |
文本text |
|
否 |
回复内容 |
brtime |
日期date |
|
否 |
回复时间 |
(6)管理员表,作用是记录管理员信息。
管理员表
字段名 |
类型 |
长度 |
约束(主外键) |
含义 |
id |
整型int |
8 |
PK(主键) |
标识 |
adminname |
字符varchar |
30 |
否 |
账号 |
name |
字符varchar |
30 |
否 |
姓名 |
pwd |
字符varchar |
20 |
否 |
密码 |
phone |
字符varchar |
20 |
否 |
电话 |
address |
字符varchar |
50 |
否 |
地址 |
granttime |
日期date |
|
否 |
授权时间 |
authority |
整型int |
4 |
否 |
权限 |
以上6张数据表包括客户类别表、客户表、留言消息表、新闻表、评论表、管理员表,客户类别表与客户表存在父子表关系,客户类别表是客户表的父表;客户表与留言消息表和评论表之间存在父子表关系,客户表是留言消息表的父表,客户表是评论表的父表。
系统文件结构设计
本系统实现过程,先按照MVC模式编写代码,代码文件结构为:项目src文件下存放src文件下存放系统类资源包以及.java文件。其中系统结构中的模型层文件存放于包com.lanzhou.edu.entity, com.lanzhou.edu.dao,com.lanzhou.edu.dao.impl, com.lanzhou.edu.service, com.lanzhou.edu.service.impl下,视图层文件存放于WebRoot的资源文件下,控制器文件放于com.lanzhou.edu.service.action下。图中src下的com.lanzhou.edu.test包用于存放编码测试文件,com.lanzhou.edu.util为工具包,存放系统所用工具类文件。
任务3:撰写团队项目软件系统详细设计说明书
Github仓库地址:https://github.com/Sophur/Team-Project.git
任务4:
1、本次实验实施过程
刚开始觉得这次试验进行不了,因为和上次的实验差不多。但当我们一起再去看上次实验时,发现好多漏洞。然后我们就进行了讨论,通过查资料,将上次的实验进行完善。讨论之后,我们就进行了分工,将需要完善的内容实现,进而就完成了本次实验。
2、描述团队成员的具体分工、占整个实验任务的工作量比例及完成各自任务的实际时间
团队成员 | 任务 | 所需时间 | 工作量比例 |
姚慧霞 | 软件系统设计说明书 | 5h | 20% |
绽玉林、严龙 | 团队项目的系统详细设计 | 12h | 30% |
李金平、木冬梅 | 软件系统详细设计说明书 | 10h | 30% |
张存慧 | 博客撰写 | 8h | 20% |
3、总结团队项目详细设计心得
刚开始的时候觉得怎么和上次实验一样,我们做的差不多了。但当我们再回过头看实验五时,发现有好多漏洞,当时我们设计时感觉已 经完美了,现在再看,其实缺了好多东西,需要不断去改进。虽然项目的功能设计有很多不足,但是感觉我们的团队很完美,我们的团队不仅团结,而且分工合理明确。当听到有的团队的成员根本就不参与时,很庆幸我们这个团队的成员都很好。这是一个团队项目,虽然项目比较小,有时大家做的工作就比较少,但是这也是团队的体现,遇到问题大家可以一起讨论完成,而不是让某一个人孤军奋战,这样才能有效、轻松的解决项目中的问题。
4、回答以下六个问题:
(1)何谓软件体系结构、软件设计模式?
软件体系结构虽然根植于软件工程,但还处于一个研究发展的阶段,迄今为止还没有一个为大家所公认的定义。软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统的需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
软件设计模式是对软件设计经验的总结,是对软件设计中反复出现的设计问题的已被验证的成功解决之道。大量的软件设计模式都是之前从事软件设计开发的前人经过大量的实践而摸索出来的,用于帮助后来者快速高效且高质从事软件开发的。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。软件设计模式一般会包含四个基本要素:
- 模式名称:此种设计模式的名字;
- 问题:是设计者所面临的设计场景,也就是此种设计模式所适用的情况;
- 解决方案:描述设计细节,通常会采取UML等图示的方式来进行设计模式的详细描述;
- 效果:描述适用此设计模式的优势与劣势,包括面向软件的质量属性等。
(2)什么是C/S与B/S结构?
C/S结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
B/S结构,即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
(3)什么是MVC设计模式?
MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
- 视图:视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
- 模型:模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
- 控制器:控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
(4)结合项目系统设计体验,简要说明(1)、(2)、(3)的内容与软件系统设计的关系。
在进行软件系统设计设计时,其实就是确定自己系统的功能,也是在确定所采用的软件设计结构和设计模式,我们采用的是B/S结 构,MVC设计模式。确定了软件设计结构和设计模式,就是确定了系统的顶层框架,接下来才能进一步开始设计系统功能,才能设计出一个比较合理的系统。
(5)详细设计的常见工具有哪些?
- 程序流程图。程序流程图又称为程序框图,是使用最广泛然而也是用得最混乱的一种描述程序逻辑结构的工具。它用方框表示一个处理步骤,菱形表示一个逻辑条件,箭头表示控制流向。其优点是:结构清晰,易于理解,易于修改。缺点是:只能描述执行过程而不能描述有关的数据。
- 盒图。盒图是一种强制使用结构化构造的图示工具,也称为方框图。其具有以下特点:功能域明确、不可能任意转移控制、很容易确定局部和全局数据的作用域、很容易表示嵌套关系及模板的层次关系。
- PAD图。PAD是一种改进的图形描述方式,可以用来取代程序流程图,比程序流程图更直观,结构更清晰。最大的优点是能够反映和描述自顶向下的历史和过程。PAD提供了5种基本控制结构的图示,并允许递归使用。
PAD的特点有:使用PAD符号设计出的程序代码是结构化程序代码;PAD所描绘的程序结构十分清晰;用PAD图表现程序的逻辑易读、易懂 和易记;容易将PAD图转换成高级语言源程序自动完成;即可以表示逻辑,也可用来描绘数据结构;支持自顶向下方法的使用。
- PDL。PDL也可称为伪码或结构化语言,它用于描述模块内部的具体算法,以便开发人员之间比较精确地进行交流。语法是开放式的,其外层语法是确定的,而内层语法则不确定。外层语法描述控制结构,它用类似于一般编程语言控制结构的关键字表示,所以是确定的。内层语法描述具体操作,考虑到不同软件系统的实际操作种类繁多,内层语法因而不确定,它可以按系统的具体情况和不同的设计层次灵活选用,实际上任意英语语句都可用来描述所需的具体操作。用它来描述详细设计,工作量比画图小,又比较容易转换为真正的代码。
PDL的优点:可以作为注释直接插在源程序中;可以使用普通的文本编辑工具或文字处理工具产生和管理;已经有自动处理程序存在,且 可以自动由PDL生成程序代码。
PDL的不足:不如图形工具形象直观,描述复杂的条件组合与动作间对应关系时,不如判定树清晰简单。
- IPO图。IPO是指结构化设计中变换型结构的输入(Input)、加工(Processing)、输出(Output)。是对每个模块进行详细设计的工具,它是输入加工输出(INPUT PROCESS OUTPUT)图的简称,是由美国IBM公司发起并完善起来的一种工具。开发人员不仅可以利用IPO图进行模块设计,而且还可以利用它评价总体设计。用户和管理人员可利用IPO图编写、修改和维护程序。因而,IPO图是系统设计阶段的一种重要文档资料。
- 判定表。判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
判定表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例 集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操 作。判定表很适合于处理这类问题。
- 判定树。判断树(Decision Tree)是判断表的变形,一般比判断表更直观、易于理解。判断树代表的意义是:左边是树根,是决策序列的条件取值状态,右边是树叶,表示应该采取的动作。
(6)如何绘制符合规范的流程图?
- 在开始绘制流程图之前,我们必须要了解绘制的一些规则。首先是了解流程图中各种符号的含义,在左侧形状一栏里,“基本流程图形状”包含了我们绘制流程图的各种基本图形,“椭圆形”是标准流程的开始或结束,每一个流程图一般只有一个起点或一个终点。“矩形”的文字说明是流程,意思是要执行的操作,怎么处理。“菱形”是判定,这个比较直观,一般就是“是”或者“否”、“通过”或者“不通过”类似这样的判断。在平行四边形里可注明数据名、来源或者其他的文字说明。还有最重要的一个,就是连接线了,它表示执行的方向和顺序。
- 接着我们还要知道绘制流程图的相关约定。流程图的标准流向是从上到下或者从左到右,流程图中使用的连接线要保持合理的长度,并且尽量少用长线,尽量避免连接线的交叉。同时还要注意各种符号的使用,符号内的文字说明要简洁明了,书写方向通常是按照从左到右或者从上到下的顺序。
- 然后再开始绘制流程图,这样就会绘制出符合规范的流程图。