1、文档编号版本号_2_文档名称_详细设计说明书_项目名称:_ 垃圾邮件过滤系统_ 项目负责人:_林子豪、梁晓明、崔建鹏、吴清、张珊珊开发单位:_软件工程大作业小组_编写_林子豪、梁晓明、崔建鹏、吴清、张珊珊_校对_林子豪、梁晓明、崔建鹏、吴清、张珊珊_审核_林子豪、梁晓明、崔建鹏、吴清、张珊珊_ 2013_年_10_月_27_日 1 引言1.1 编写目的在需求说明书中,邮件过滤系统的开发人员已经清楚知道自身开发的目的,在此基础上,邮件过滤系统的详细说明书将对整个系统的开发进行实现层面上的分析和说明。在以下的详细设计报告中,将对邮件过滤系统所需要的所有详细设计进行说明。因此,在本阶段中,确定应该如
2、何具体的实现所要求的系统,以便在编码阶段把直接翻译成用具体程序语言书写的程序。面向读者对象:软件开发人员、软件测试人员。1.2 项目背景 项目来源:高东发老师 开发小组:软件工程大作业小组1.3 定义 Spam/Junk mail:垃圾邮件 贝叶斯算法:统计学上的一种概率统计方法 NB:朴素贝叶斯分类器 txt:一种文本,用作数据库,用于存储数据 NetBeans IDE:软件开发工具1.4 参考资料 软件工程导论第 5 版 张海藩编著 清华大学出版社实用软件工程 Leszek A.Maciaszek 著 机械工业出版社邮件过滤成系统需求说明书 组内成员自身编写2总体设计2.1 需求概述按照需
3、求分析文档中的规格要求,邮件过滤系统实现用户使用电子邮件通信功能,并且能过滤垃圾邮件,过滤的精确度预计达到 90%,并且实现用户个性化设置功能。2.2 软件结构邮件过滤系统 登录通讯发送接收过滤自动过滤手动设置黑名单特定词特定 IP恢复3程序描述3.1 功能 登录模块点击登录按钮,提交数据到服务器。如果用户名、密码、验证码都正确,登陆界面链接到邮箱界面;如果用户名或密码不正确,则提示用户名或密码不正确;如果用户名不存在,则提示用户名不存在;如果验证码不正确,则提示验证码不正确;如果用户名为空,则提示用户名不能为空;如果密码为空,则提示密码不能为空;如果验证码为空,则提示验证码不能为空。 收件箱
4、模块进入邮箱界面,点击“收件箱” ,转到个人收件箱目录,可以看到具体邮件的标题,点击邮件标题,进入邮件正文,查看邮件。 发件箱模块进入邮箱界面,点击“写信” ,可以进行邮件的发送。 邮件自动过滤模块本件过滤系统会自动过滤用户所收到的邮件。用户进入邮箱界面,点击“垃圾箱”可以看到系统自动过滤的疑似垃圾邮件。 设置黑名单模块进入邮箱界面,用户可以点击“设置”按钮,把具体的邮箱地址写入到输入框,点击“添加黑名单”按钮,进而设置用户默认的黑名单,以后再也不会收到该邮箱地址发给用户的邮件。 设置特定词模块进入邮箱界面,用户可以点击“设置”按钮,把一些特定的词语写入输入框,点击“添加”按钮,以后有类似字眼
5、的词语的邮件,系统都会把该邮件默认为垃圾邮件,进而过滤掉。 设置特定 IP 模块进入邮箱界面,用户可以点击“设置”按钮,把用户想要设置的 IP 地址写入输入框,点击“添加”按钮,以后从该 IP 发送给该用户的所有邮件,系统都会把该邮件默认为垃圾邮件,进而过滤掉。 邮件恢复模块进入邮箱界面,用户点击“垃圾箱”按钮,可以查看系统自动为用户过滤掉的邮件。如果用户认为被过滤的邮件并非垃圾邮件,用户可以点击该邮件下面的“恢复”按钮,则该邮件就向正常邮件一样,将显示在你的收件箱。3.2 性能 精度需求:在进行垃圾邮件判别时误判率不高于 10% 时间特性需求:响应时间应在人的感觉和视觉事件范围内。 故障处理
6、需求:发生邮件误判时可人工恢复。3.3 输出项目输入的数据是用户执行的各种操作,包括鼠标、键盘等操作。3.4 输入项目输出的数据是从服务器读取的数据,或错误警告信息。3.5 数据结构设计3.5.1 数据流词条描述 数据流名:登录信息来源:用户的输入去向:服务器内部检验部分组成:用户名,密码(验证码)流通量:每次登录输入一次 数据流名:登录结果来源:服务器去向:用户组成:返回信息流通量:每次登录返回一次 数据流名:邮件接收来源:邮件服务器去向:应用服务器组成:邮件信息流通量:以邮件数而定 数据流名:识别信息来源:邮件服务器去向:贝叶斯学习中心组成:spam 概率值流通量:以邮件数而定 数据流名:
7、处理信息来源:贝叶斯学习中心去向:垃圾邮箱组成:识别错误信息流通量:以邮件数而定3.5.2 数据文件词条描述 数据文件名:用户数据简述:存储用户信息数据文件组成:用户的各项信息 数据文件名:邮件数据简述:将邮件分类存储数据文件组成:垃圾邮件和非垃圾邮件3.5.3 加工逻辑词条描述 加工名:检验简要描述:判断用户的许可性输入数据流:登录信息输出数据流:登录结果加工逻辑:判断是否与服务器存储的用户信息相符合 加工名:判断简要描述:判断接受到的邮件是否为垃圾邮件输入数据流:识别信息输出数据流:处理信息加工逻辑:判断邮件的 spam 概率值是否在范围内3.6 算法 邮件过滤的算法所使用的算法是贝叶斯算
8、法。贝叶斯算法在邮件预处理过程中进行特征项的提取 模式匹配,从训练集合中识别出正常邮件和垃圾邮件的模式合,然后用模式集合识别垃圾邮件,再对提取出的特征项进行模糊匹配并根据匹配结果判断邮件是否为垃圾邮件。贝叶斯分类算法的工作过程如下:3.7 程序逻辑邮件收发模块:进行账号判断YN开始连接服务器发送邮件接收邮件向服务器指定 接收者邮箱接收附件 接收纯文本发送附件?结束发送含附件的 MIME 邮件附件编码 发送邮件内容邮件过滤模块:YN3.8 接口收到新邮件利用分词算法 对文本进行分词利用贝叶斯算法进行垃圾邮件概 率计算反馈模块正常邮件 垃圾邮件贝叶斯知识库统计垃圾邮件,正常邮件词汇Spam=0.8
9、?Save_Email【函数原型】boolean Save_Email( EmailBean eb) 【功能】在本地 txt 文件中以一定格式保存 EmailBean 对象【参数说明】EmailBean 是具有 getter 和 setter 的类,是表示 Email 的对象。【返回值说明】true 表示保存成功,false 表示保存失败。【使用方法】先把从邮件服务器读到的一封邮件封装成 EmailBean 对象,再调用此方法保存到文件中。Get_Email_List【函数原型】List Get_Email_List( EmailBean eb) 【功能】获得邮件持有者的所有邮件对象。【参数说
10、明】EmailBean 是具有 getter 和 setter 的类,是表示 Email 的对象。【返回值说明】是邮件对象集合。【使用方法】先构造一个 EmailBean 对象,调用此方法将从 EmailBean 对象的属性中获得邮件持有者的信息,并从对应的文件中读取所有的 EmailBean 对象。Get_Email【函数原型】EmailBean Get_Email(String ID) 【功能】获得特定的 ID 的邮件对象。【参数说明】ID 唯一地标识邮件对象,保存在文件中。【返回值说明】EmailBean 是具有 getter 和 setter 的类,是表示 Email 的对象。【使用方
11、法】略。Kill_Email【函数原型】boolean Get_Email(String ID) 【功能】删除特定 iD 的邮件对象。【参数说明】ID 唯一地标识邮件对象,保存在文件中。【返回值说明】true 表示删除成功,false 表示删除失败。【使用方法】略。Get_Contact_List【函数原型】List Get_Contact_List(ContactBean cb) 【功能】获得用户的联系人列表【参数说明】cb 是表示联系人的对象。【返回值说明】联系人对象集合。【使用方法】先构造 ContactBean 的一个对象,再调用此方法,将从 cb 中获得用户的信息,进而读取对应文件来
12、获得集合。Receive_Email【函数原型】boolean Receive_Email() 【功能】获取用户的输入信息,登录到邮件服务器并下载最新的邮件到本地。【参数说明】无。【返回值说明】是否下载成功。【使用方法】必须读取用户的输入的邮件服务器地址,帐号,密码,并传入方法中。Send_Mail【函数原型】boolean Send_Mail(EmailBean eb) 【功能】发送邮件。【参数说明】EmailBean 是具有 getter 和 setter 的类,是表示 Email 的对象。【返回值说明】是否发送成功。【使用方法】必须先构造 EmailBean 类的对象。 3.9 出错处理
13、设计出错名称 出错输出信息 出错处理对策用户名输入错误 “用户名输入错误,请重新输入”进入登录界面密码输入错误 “密码输入错误,请重新输入”进入登录界面不允许为空的输入框输入空字符“请输入” 弹回原页面的输入框3.10 存储分配该软件由高级 java 语言进行编码,直接的内存分配由 java 运行时分配。字段名 类型 长度 允许空e_name TEXT 20 e_passage TEXT 200 e_time DATATIME 8 from_add VARCHAR 50 e_context TEXT 200 subject TEXT 200 3.11 限制条件本软件不能以游客身份进入,每个用户必须要有自己的邮箱用户名和密码。且垃圾邮件判断正确率也有限制,难以避免重要邮件被当成垃圾邮件处理。在界面上控制输入输出,如果服务器端出错也会返回错误信息。3.12 测试要点测试范围 主要内容 测试方法系统登录验证 验证用户身份,进行权限控制服务器端验证垃圾邮件过滤测试 选择 1000 封垃圾邮件,测试垃圾邮件成功过滤的数目邮件过滤器