1系统设计目标复旦大学精品课程.docx
《1系统设计目标复旦大学精品课程.docx》由会员分享,可在线阅读,更多相关《1系统设计目标复旦大学精品课程.docx(24页珍藏版)》请在冰豆网上搜索。
1系统设计目标复旦大学精品课程
版本:
0.1
负责人:
汪艺杰(062053020@)潘彦威(062053003@)刘向斌(052053031@)
审批人:
戴开宇
(kydai@)
WebAnalytics系统
项目需求说明文档
更改记录
版本
状态
日期
0.1
文档草稿
2007-3-16
1引言
1.1项目目的
项目的目的是把《高级WEB技术》课程所涉及的基础知识应用于实际WEB开发应用中,做到学以致用。
我们希望通过“WebAnalytics系统”这个课程项目来培养和考察同学对高级WEB技术的综合开发应用能力。
1.2项目范围
项目所涉及的高级WEB技术范围主要如下:
1.XML的综合应用(DTD/Schema、DOM/SAX、XSL/X-Path/XSLT)
2.J2EE的综合应用(JSP/Servlet、JDBC、JNDI、JavaMail、EJB、JAXP)
3.WebServices的基础应用(以J2EE平台为主,可选跨平台集成应用)
4.对象/关系数据库映射的基础应用(Hibernate、JDO)(可选)
5.轻量级J2EE开发框架的基础应用(Struts、JSF、Spring)(可选)
6.可复用J2EE基础设计模式的应用(可选)
“WebAnalytics系统”项目分为两个子项目,分别在学期期中和期末时进行提交和验收,具体的时间表参见第1.5节“时间安排”以及最新的课堂或BBS通知。
1.3项目分组
考虑到项目本身具有一定的复杂性和工作量,所以允许以每组3至4人为单位进行项目团队开发。
分组以自愿组合为原则,但未能及时组队的同学由我们随机安排并通知。
1.4项目答疑
项目需求方面的答疑由任课教师和全体TA们共同完成。
答疑方式以电子邮件为主,如有任何建议和意见请及时与我们取得联系。
1.5时间安排
PROJECT1:
从2007-3-27至2007-5-621:
00、提交后两周内组织进行面试和评分
PROJECT2:
从2007-5-8至2007-7-121:
00、提交后两周内组织进行面试和评分
2概述
2.1系统设计目标
首先,我们介绍一下什么是WebAnalytics系统。
WebAnalytics系统核心过程是挖掘Web日志和客户端信息,经过数据预处理,将其中系统需要的信息存入数据库中,再提取、分类数据,以满足相应的各种查询、分析功能需求。
这些功能主要有访问者终端浏览器信息,访问者终端操作系统版本信息,访问者终端操作系统语言信息、访问者终端显示属性信息、访问者终端Flash版本查询,访问者终端浏览器支持JAVA与否,页面点击率及访问人数、站点点击率及访问人数等。
2.2系统特征
我们的WebAnalytics系统有两部分组成:
WebAnalytics主系统(信息获取及存储、用户管理)和WebAnalytics扩展(信息查询、报表生成器及web服务)。
本项目必须是基于B/S架构的,部署在J2EE应用服务器上,这是本项目的重点。
2.3系统设计思想
Web服务器日志记录了用户访问本站点的详细信息。
典型的Web服务器日志包括以下信息:
IP地址、请求时间、方法(如GET)、被请求文件的URL、HTTP版本号、返回码、传输字节数、引用页的URL(指向被请求文件的页面)和代理。
但是,由于本地缓存、代理服务器和防火墙的存在,使得Web日志中的数据并不精确,直接在其上进行挖掘非常困难,而且有可能导致结果的错误。
我们可以用一种onepixel的方法来实现。
先在客户端放置一个1*1点的像素,用它向服务端发送各类用户信息。
1*1的像素点不会影响原本网站的构架以及UI结构,同时能满足稳定收集到用户浏览信息,是一个非常好的设计方法。
这样子我们就能比较准确地获取Web日志信息。
可视化:
采用可视化的技术图形界面的方式表示最有价值的模式。
这部分我们主用JFreeChart来实现图形报表的生成。
2.4约束条件
必须独立按时完成,不可以代工和抄袭。
对于开源项目的参考和开源框架的应用是鼓励的,但不能够直接套用现成的开源项目来交付。
2.5前提和依赖
可以熟练编写HTML、CSS、JavaScript。
掌握XML和JSP/Servlet的基础应用,对数据库设计、J2EE架构和WebServices有一定的了解。
3功能性需求
3.1系统模型
完整的架构如下图所示:
图3-1系统整体构架图
由图3-1的系统架构图可以看出系统主要包括三个主要功能模块:
数据收集及存储;分析、统计、查询;报表生成及web服务。
3.2主系统
3.2.1数据收集模块
包括前台的嵌入网页的JavaScript代码和后台接受数据的Servlet。
先在客户端放置一个1*1点的像素,用它向服务端发送各类网站访问者的信息。
在具体的网页上的表示形式就是嵌入一段JavaScript代码。
1*1的像素点不会影响原本网站的构架以及UI结构,同时能满足稳定收集到用户浏览信息,是一个非常好的设计方法。
代码1:
functiontt_Void(){return;}//空函数
varimg=newImage(1,1);
img.src=url;//servlet的具体URL
img.onload=function(){tt_Void();}
代码1完成了1*1的像素点向服务器发送信息的工作。
1)访问者识别:
统计网站访问者的信息,首先要区分不同的访问者。
在客户端写Cookie的方法来区别用户。
对于网站的新访问者,随机生成一个足够大的Cookie值来唯一代表这个访问者,同时设置这个Cookie值的失效时间为30分钟。
认为同一个访问者在30分钟内重复访问网站只算一个人,30分钟后为新的访问者。
2)获取访问者信息:
前台的JavaScript能收集到的访问者信息有:
浏览器类型,屏幕象素,颜色,语言,flash版本,是否支持Java等等。
在JavaScript中,浏览器的类型,操作系统语言,flash版本,支持Java与否可以通过navigator对象获得,屏幕象素及颜色深度可以从screen中获取。
代码2能够获取访问者浏览器的类型,操作系统语言信息,支持Java与否,屏幕象素及颜色深度,至于flash版本信息请查阅相关资料。
JavaScript获取的信息get方式传到Servlet。
代码:
functiontt_getBrowserInfo()
{
varsr="-",sc="-",ul="-",fl="-",je=1;
varn=navigator;
if(self.screen)
{
sr=screen.width+"x"+screen.height;
sc=screen.colorDepth+"-bit";
}
elseif(self.java)
{
varj=java.awt.Toolkit.getDefaultToolkit();
vars=j.getScreenSize();
sr=s.width+"x"+s.height;
}
if(n.language)
{
ul=n.language.toLowerCase();
}
elseif(n.browserLanguage)
{
ul=n.browserLanguage.toLowerCase();
}
je=n.javaEnabled()?
1:
0;
return"&screenSize="+sr+"&screenColor="+sc+"&screenLan="+ul+"&javaEnabled="+je;
}
浏览器的版本信息,操作系统信息可以通过Servlet中获取的HttpServletRequest中获取。
代码3中获取的ps_agent是形如”Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50727;.NETCLR3.0.04506.30)”这样的一段字符串,通过简单的解析最终提取浏览器和操作系统信息。
比如:
“MSIE”就是对应MicrosoftIE浏览器,3.01则是浏览器的版本号,而“WindowsNT5.1”这个串中“Windows”为操作系统,“NT5.1”为版本号。
代码3:
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Stringps_agent=(request).getHeader("User-Agent");
System.out.println(ps_agent);
System.out.println(request.getParameter("navigator"));
}
获取访问者信息后,在后台把数据相应地存到数据库以备查询。
附件Demo.rar中是一个简单的从JavaScript向Servlet发送数据的演示程序。
3.2.2用户管理模块
用户管理模块分为三个部分:
用户注册,用户登陆和用户站点信息管理。
用户注册:
1)注册信息填写,包括用户名、密码、用户有效email地址(客户端判断email地址是否有效)。
2)用ajax技术来动态判断注册名的是否有效
3)用户填写注册信息,注册成功后,向用户提供的email地址发送一封注册成功信息,并提供链接激活注册用户。
用户登陆:
1)提供找回密码功能:
生成一个随即密码发送到用户注册时候填写的email。
用户站点管理:
1)一个注册用户可以添加多个想对其进行track的网站。
2)添加站点必须提供站点名字、站点url。
3)站点管理页面必须呈现如下信息:
站点名、UId、注册时间、数据分析页面连接以及删除连接。
4)站点客户端javascript代码拷贝文本显示:
3.2.3查询模块
查询模块必须包括如下信息的查询列表:
访问者终端浏览器信息,访问者终端操作系统版本信息,访问者终端操作系统语言信息、访问者终端显示属性信息、访问者终端Flash版本查询,访问者终端浏览器支持JAVA与否,页面点击率及访问人数、站点点击率及访问人数。
1)访问者终端浏览器信息:
按照浏览器类型分类
包含浏览器版本信息、使用该种浏览器访问该站点的用户人数、该版本浏览器访问数量在该种类浏览器访问数量中所占比例、所占比例的圆柱图。
如下图:
2)访问者终端操作系统版本信息:
包含访问者终端操作系统名字、使用该种操作系统访问该站点的用户人数、使用该操作系统的访问数量在所有操作系统访问总数量中所占比例、所占比例的圆柱图。
如下图:
3)访问者终端操作系统语言信息:
包含访问者终端操作系统语言、使用该种语言操作系统访问该站点的用户人数、该语言操作系统访问数量在所有操作系统访问总数量中所占比例、所占比例的圆柱图。
如下图:
4)访问者终端显示属性信息:
包含访问者终端屏幕分辨率及颜色质量、使用该种屏幕分辨率及颜色质量的访问终端访问该站点的用户人数、该种访问人数在所有访问总数量中所占比例、所占比例的圆柱图。
如下图:
5)访问者终端Flash版本查询:
包含访问者终端Flash版本信息、使用该种Flash版本访问该站点的用户人数、使用该种Flash版本访问数量在访问总数量中所占比例、所占比例的圆柱图。
如下图:
6)访问者终端浏览器支持JAVA与否:
包含访问者终端浏览器是否支持JAVA、使用是/否支持JAVA浏览器访问该站点的用户人数、使用是/否支持JAVA浏览器访问数量在访问总数量中所占比例、所占比例的圆柱图。
如下图:
7)页面点击率及访问人数:
页面Url以及访问该url的页面访问次数。
如下图:
8)站点点击率及访问人数:
绘出按时间和站点点击率及访问人数为横纵坐标的图标。
如下图:
3.2.4报表生成模块
报表生成模块和查询模块类似,不同的是把数据按照不同的表现方式表现出来,尽量形象简单的说明问题。
在这里主要使用JFreeChart来实现图形报表的生成。
并且至少要实现三种以上的报表效果(具体的效果可以自己根据显示数据的不同而自己定义)。
比如说,可以实现如下所示的一些效果:
此外,在生成报表的同时,还可以将结果转成XML格式和Excel格式的数据提供下载。
访问人数,访问次数,浏览量数据都可以通过相应的数据库查询获得。
下面是一个XML文件。
xmlversion="1.0"encoding="UTF-8"?
>
2006/5/17
3
2006/5/18
2
2006/5/17
6
2006/5/18
8
2006/5/17
1
2006/5/18
1
3.2.5WebService模块
查询服务还应该以WebServices的方式通过HTTP协议上的WSDL标准进行发布。
这样可以让某个被监测的站点在自己的网页上面通过调用服务器发布的webservices来显示自己网站的一些统计访问信息。
具体显示的数据和形式由客户端决定,但是服务器端应提供所有的数据及相应的查询接口。
比如,在某个被监控的网站上面,在首页或者某个链接上面,可以查看自己网站的一些统计信息。
但是,这些统计信息是存储在数据服务器那里,所以,这个被监控的网站就要调用数据服务器那边提供的webservice来得到具体的数据,并且按照一定的格式显示出来。
下面这个图显示了一个比较具体的例子。
至于需要显示的内容,可以用一个下拉框来提供3-5种的数据来让用户选择,然后根据需要显示相应的数据,或者用一个链接在一个新的页面更加清楚的来显示。
但是,服务器端应提供所有的数据及相应的查询接口。
页面主内容
4非功能性需求
4.1可靠性
系统必须是稳定的、健壮的。
用户执行合法操作、输入合法数据,应得到功能性需求部分描述的预期结果,不能出现程序的堆栈信息或是自定义的错误页面。
用户执行非法操作,不能出现程序的堆栈信息,应出现自定义的错误页面。
用户输入非法数据,应返回输入非法数据的页面,并提示输入数据非法。
4.2安全性
系统必须是安全的、完整的。
4.3易用性
系统必须是可用的、易用的。
功能性需求部分未定义的系统流程,可以自己定义处理的流程。
这些自定义的流程。
要符合用户的操作习惯,简单易用。
4.4灵活性
系统必须是灵活的、能够适应一定需求变化的。
可以考虑采用分层架构以及设计模式进行粒度、职责划分,以增强系统的灵活性。
4.5设计约束
1.权限验证逻辑使用后台EJB实现
2.表现层使用JSP/Servlet或表现层框架实现
3.搜索服务使用WebServices实现
4.邮件服务使用JavaMail实现
5.报表(各类统计图形)生成使用JFreeChart实现
5接口
5.1用户界面
自行设计界面风格和美工效果,以简洁易用为目标。
5.2硬件接口
能够顺畅运行在512M以上内存的X86个人计算机上。
5.3软件接口
1.数据库:
Oracle、DB2、SQLServer、MAXDB、MySQL、TaminoXML等
2.J2EE应用服务器:
WebLogic、WebSphere、Tomcat+JBOSS、Geronimo等
3.WebServices开发包:
Axis、Systinet、WSDP、.NETXMLWebServices等
4.集成开发环境:
Eclipse、JBuilder、NetBeans、WSAD、VisualStudio.NET等
5.操作系统:
Windows2000、XP和2003
6.浏览器:
IE5.5以上和FireFox1.0以上
6交付物
6.1PROJECT1
6.1.1WebAnalytics主系统(数据收集模块、用户管理模块)
源代码和可以直接部署的WAR/JAR/EAR包(包括用到的非J2EE标准的各种扩展JAR包、数据库连接JAR包和开源工具JAR包等)。
6.1.2项目相关文档
项目文档统一用doc格式提交。
团队分工安排表和自我评分表附在项目设计文档最后,最终只提交一份文档。
项目设计文档:
项目的用例提炼、架构概要设计、关键功能详细设计。
团队分工安排表:
团队成员名单、各自参与的任务、对整个project的贡献百分比。
自我评分表:
按照评分细则进行自我评估以及扩展功能点的说明。
6.2PROJECT2
6.2.1WebAnalytics扩展(信息查询、报表生成器及web服务)
源代码和可以直接部署的WAR/JAR/EAR包(包括用到的非J2EE标准的各种扩展JAR包、数据库连接JAR包和开源工具JAR包等)。
6.2.2项目相关文档
项目文档统一用doc格式提交。
团队分工安排表和自我评分表附在项目设计文档最后,最终只提交一份文档。
项目设计文档:
项目的用例提炼、架构概要设计、数据库设计、关键功能详细设计。
团队分工安排表:
团队成员名单、各自参与的任务、对整个Project的贡献百分比。
自我评分表:
按照评分细则进行自我评估以及扩展功能点的说明。
6.3可交付物要求
可交付物需要有一份清单以及运行、配置的说明,成员名单以及组长的联系方式以便有问题是能够及时联系。
7评分细则
Project要求采用MVC(Model-View-Controller"的缩写)模式设计,评分标准主要
依据于各个功能点实现效果和整体架构。
MVC与J2EE架构的对应关系是:
View处于WebTier或者说是ClientTier,通常是JSP/Servlet,即页面显示部分。
Controller也处于WebTier,通常用Servlet来实现,即页面显示的逻辑部分实现。
Model处于MiddleTier,通常用服务端的javaBean或者EJB实现,即业务逻辑部分的实现。
图1阐述了MVC模式中视图、控制器和模型之间的关系和功能。
7.1Project1
Project1占Project总分的40%。
假设Project1的满分为40分,对于各个功能点实现情况的评分细则如下:
编号
域
功能点描述
分值
1
用户管理模块
用户注册
6
2
用户管理模块
用户登陆
2
3
用户管理模块
用户站点信息管理
4
4
数据收集模块
客户端JavaScript
7
5
数据收集模块
数据处理及存储的Servelt模块
7
6
数据库
数据库设计、数据访问封装、实体关系映射
6
7
界面
界面友好度
2
8
文档
项目设计文档、团队分工安排表、自我评分表
4
9
代码
有一定的测试代码和必要的注释、命名规范
2
注:
1.延期扣分规定:
每延1天(不足1天算为1天)扣2分,延期超过5天即不再接受递交。
特殊情况除外。
2.对于有创新性的功能点扩展或改进,请在文档中说明,可酌情加1-2分。
7.2Project2
Project2占Project总分的60%。
假设Project2的满分为60分,对于各个功能点实现情况的评分细则如下:
编号
域
功能点描述
分值
1
查询模块
页面正常显示和数据可以正常输入
3
2
查询模块
结果正确返回并且正常显示
10
3
报表模块
报表结果可以正常的生成
5
4
报表模块
可以生成多种类型的报表
5
5
WebService模块
服务器端可以提供正常的webservice接口
5
6
WebService模块
客户端可以正常的调用webservice,并且在自己的页面上显示
6
7
主系统
系统功能完整并且正常
4
8
数据库
数据库设计、数据访问封装、实体关系映射
3
9
架构
分层架构、设计模式应用、职责划分、系统的灵活性
6
10
美工
页面大方美观
3
11
文档
项目设计文档、团队分工安排表、自我评分表
6
12
代码
有一定的测试代码和必要的注释、命名规范
4
注:
1.延期扣分规定:
每延1天(不足1天算为1天)扣3分,延期超过5天即不再接受递交。
特殊情况除外。
2.对于有创新性的功能点扩展或改进,请在文档中说明,可酌情加1-5分。