DMS30需求说明书.docx
《DMS30需求说明书.docx》由会员分享,可在线阅读,更多相关《DMS30需求说明书.docx(19页珍藏版)》请在冰豆网上搜索。
![DMS30需求说明书.docx](https://file1.bdocx.com/fileroot1/2022-12/13/846dd357-6bff-47c1-8750-48b08cba8a5d/846dd357-6bff-47c1-8750-48b08cba8a5d1.gif)
DMS30需求说明书
通用数据挖掘系统V3.0
需求说明书
Version1.0
文档编号TTS***
2009-7-23
达内IT集团
文档历史
版本
标题
内容
作者
时间
v1.0
需求说明书
唐亮
2009-07-23
1.编写目的
本文档的目的是明确DMS3.0项目的业务背景、业务范围、定义项目的专业名词,分析项目的核心功能和系统需求。
期望读者包括:
项目发起人、最终用户、项目投资方、项目管理团队、项目执行团队,以及其他项目关系人。
2.参考文档
【无】
3.名称解释
DMS:
数据挖掘系统(DataMiningSystem)
用户:
需要使用Unix实验室出租业务的客户,用户通过电信公司提供的帐号和密码登录指定的Unix机器,并使用Unix服务。
终端机器:
用户通过一台本地终端机器来访问我们的Unix机器,并使用Unix服务,该本地终端就是我们所说的终端机器。
在我们的程序中要记录这一终端的IP,做为向用户收费的依据之一。
登录日志文件:
在Unix机器中自动记录用户登入/登出日志的文件,该文件为:
/var/adm/wtmpx;在我们的程序中该文件也可以是程序外部指定的另一个文件。
我们的程序需要提取该文件的数据来匹配出用户登入/登出的记录,并将其作为将来的收费依据。
用户登入记录:
在登录日志文件中记录的用户登入Unix系统的日志记录,该日志记录包含用户的登录名,用户登入Unix的时刻,登录的终端机器IP等信息。
用户登出记录:
在登录日志文件中记录的用户登出Unix系统的日志记录,该日志记录包含用户的登录名,用户登出Unix的时刻,登录的终端机器IP等信息。
我们需要将用户的登入记录和登出记录匹配起来,得到一条条完整的登录信息,并计算出用户本次登录的时长。
用户的登录记录:
将用户的登入记录和登出记录按照对应关系匹配起来,形成一条完整的登录记录,登录记录中包含以下信息:
用户登录名,登入时刻,登出时刻,登录时长,登录终端机器IP等。
匹配的登入/登出记录:
等同于用户的登录记录。
未匹配的登入记录:
在登录日志文件中理论上一条登入记录跟一条登出记录匹配,但有可能在我们采集数据时用户还没有登出,所以日志文件中可能出现没有登出记录与之匹配的登入记录,这些登入记录我们将其保存在一个指定的文件中,在下次采集时再读取。
4.项目背景
5.项目业务背景
在电信的业务中,有一种Unix实验室出租业务。
只要用户向电信运营商申请一个Unix帐号,就可以远程登录Unix实验室,并使用Unix系统。
用户使用电信运营商提供的Unix实验室的服务需要缴纳一定的费用,电信运营商需要一套数据采集系统,把用户登录实验室的时间长度数据采集起来,便于在指定的时间范围内作为对用户的收费依据。
要求数据采集系统必须采集如下信息:
登录用户名,登录的时间,登出的时间,登录总的在线时间,登录的实验室IP,用户的终端IP等信息。
DMS3.0项目需要开发这样一个通用的数据采集系统程序,来采集Unix机器记录的用户登入和登出的原始记录,并将这些记录解析匹配成用户的登录记录,然后发送给数据采集服务器,在服务器端将这些数据以日期为单位保存在数据库中,然后整合这些数据形成日报表,月报表和年报表。
6.项目业务原理
任何用户登录Unix系统,Unix系统都会记录用户的登录信息,所有用户登入/登出的信息都保存在Unix的系统日志文件中。
数据采集系统就是通过读取Unix系统日志文件中用户登入/登出信息,并找出成对的登入/登出记录,得到用户登录实验室的登入时刻、登出时刻、登录时间长度等电信用户收费需要使用的数据,最后把匹配处理好的数据保存成电信工作人员可以阅读的文本文件,做为电信收费依据。
用户登录Unix系统的日志记录文件在Unix的/var/adm目录下,文件名是wtmpx,日志记录文件是一个二进制文件,在Unix中可以使用last指令查看,last命令格式为:
last[-a][-nnumber|-number][-ffilename][name|tty]
wtmpx文件中一条登录记录包含372字节,每条记录包含的数据项格式说明如下表1-1所示:
(其中黄色背景标识的数据项就是要采集的数据项)
位置范围
字节长度
含义
000-031
32
/*用户登录名*/
032-035
4
/*inittabid*/
036-067
32
/*devicename(console,lnxx)*/
068-071
4
/*进程ID*/
072-073
2
/*登录类型7-登入,8登出*/
074-075
2
/*processtermination*/
076-077
2
/*exitstatus*/
2
/*这是C数据类型补齐产生的空位*/
080-083
4
/*登录时刻*//*单位是秒*/
084-087
4
/*andmicroseconds*/
088-091
4
/*sessionID,usedforwindowing*/
092-111
20
/*reservedforfutureuse*/
112-113
2
/*significantlengthofut_host*/
114-371
258
/*登录IP*/
【表1:
用户登录记录数据项格式】
登录记录总数计算公式为:
登录记录总数=日志文件大小/372。
数据名
数据含义
是否需要采集
备注说明
logname
用户登录名
是
匹配同一次登录会话的必须数据之一
pid
进程ID
匹配同一次登录会话的必须数据之二
type
登录类型7-登入,8登出
type的值在1-8之间,但只处理7与8两种情况
logtime
登录时刻*//*单位是秒
是
要采集的数据,logtime是登入或登出时刻
logip
登录IP
是
要采集的数据
表1-2:
要读取的原始记录数据
数据名
数据含义
备注说明
logname
用户登录名
logintime
登入时刻
logouttime
登出时刻
durations
登录时间长度
logip
登录终端的ip地址
表1-3:
匹配登录记录数据
用户的登录信息数据在每一台机器上匹配好后需要发送到服务器来,服务器接收到这些匹配好的数据记录后将其保存在数据库中,形成用户登录记录明细表。
然后我们的程序需要定期的整理出日报表,月报表和年报表。
在数据库中保存的用户登录记录明细表结构如下:
数据名
数据含义
备注说明
logname
用户登录名
logintime
登入时刻
logouttime
登出时刻
durations
登录时间长度
logip
登录终端的ip地址
Labip
用户登录的实验室IP
整理成日报表后形成如下数据项:
数据名
数据含义
备注说明
logname
用户登录名
logip
登录终端的ip地址
DAY_TIME
日登录时间长度
Labip
用户登录的实验室IP
Month
用户登录月份
整理成月报表后形成如下数据项:
数据名
数据含义
备注说明
logname
用户登录名
logip
登录终端的ip地址
MONTH_TIME
月登录时间长度
Labip
用户登录的实验室IP
Year
用户登录年份
整理成年报表后形成如下数据项:
数据名
数据含义
备注说明
logname
用户登录名
logip
登录终端的ip地址
YEAR_TIME
年登录时间长度
Labip
用户登录的实验室IP
7.功能概述
DMS3.0系统主要实现以下核心功能:
数据读取,数据匹配,数据发送,数据接收,数据存储,数据整合。
8.数据读取
该功能模块的主要任务是读取Unix机器的用户登录记录文件,将文件的信息解析为程序对象,以方便匹配模块的匹配。
9.数据匹配
该模块的主要任务是将数据读取模块读取到的数据按照登入/登出的关系匹配成一条完整的登录记录。
10.数据发送
该模块的主要任务是建立客户端网络连接,将匹配好的用户登录记录以字符串的形式发送到服务器。
11.数据接收
该模块的主要任务是建立服务器端网络连接,从客户端读取匹配好的用户登录记录字符串。
12.数据存储
该模块的主要任务是将数据接收模块接收到的数据保存到指定的数据库表中。
13.数据整合
该模块的主要任务是将数据库中保存的用户登录记录明细表的数据整合成日报表,月报表和年报表。
14.系统用例
15.用例图
【DMS3.0系统用例图】
16.用例描述
16.1.1.数据采集
用例名称
数据采集
功能简述
DMS管理员运行DMS程序,完成数据采集的功能
前置条件
DMS程序已正确安装并部署
基本流
1.DMS管理员启动DMS服务端程序
2.DMS管理员启动DMS客户端程序
3.DMS客户端程序读取上次未匹配的登入记录
4.DMS客户端程序读取用户登录数据文件
5.DMS客户端程序得到用户登入/登出记录列表
6.DMS客户端程序将用户的登入和登出记录按照对应关系匹配成完整的登录记录
7.DMS客户端程序将不能成功匹配的登入记录写到文件中保存
8.DMS客户端程序将匹配好的登录记录发送到数据采集服务端
9.DMS服务端程序接收采集的数据
10.DMS服务端程序将数据写到服务端文件中保存下来
分支与异常
第1步,若启动服务端程序失败,则报告异常。
第2步,若启动客户端程序失败,则报告异常。
第3步,若上次未匹配的登入记录文件不存在,则跳过到第3步。
第4步,若读取用户登录数据文件失败,则报告异常。
第7步,若指定的写出目录不存在,则创建目录。
第7步,若创建目录或写文件失败,则报告异常。
第8步,若发送数据失败,则定时重传。
第10步,若写入文件失败,则报告异常。
后置条件
无
备注
无
16.1.2.数据读取
用例名称
数据读取
功能简述
DMS程序读取系统数据文件和上次未匹配的登入记录,形成用户登录记录列表。
前置条件
DMS客户端程序启动
基本流
1.根据系统配置信息确定上次未匹配的登入记录文件的位置。
2.读取上次未匹配的登入记录,形成用户登录记录列表。
3.根据系统配置信息确定用户登录数据文件的位置。
4.读取数据文件,将文件内容解析成用户登录记录。
5.将上一步中解析得到的用户登录记录添加到列表中。
6.返回用户登录记录列表。
分支与异常
第2步,若上次未匹配的登入记录文件不存在,则跳过到第3步。
第4步,若用户登录数据文件不存在,则报告异常。
后置条件
无
备注
无
16.1.3.读取上次未匹配的登入记录
用例名称
读取上次未匹配的登入记录
功能简述
DMS程序读取上次未匹配的登入记录,形成用户登录记录列表。
前置条件
DMS客户端程序启动
基本流
1.根据系统配置信息确定上次未匹配的登入记录文件的位置。
2.读取文件内容,将数据解析成用户登入记录。
3.创建内存列表,保存读取到的登入记录数据。
4.清空未匹配的登入记录文件。
分支与异常
第2步,若上次未匹配的登入记录文件不存在,则结束此用例。
第2步,若读取文件失败,则报告异常。
第4步,若清空文件失败,则报告异常。
后置条件
无
备注
无
16.1.4.读取用户登录数据文件
用例名称
读取用户登录数据文件
功能简述
DMS程序读取用户登录数据文件,形成用户登录记录列表。
前置条件
DMS客户端程序启动
基本流
1.根据系统配置信息确定数据文件位置。
2.备份数据文件,并删除原始数据文件。
3.根据系统配置信息确定上次未匹配的登入记录文件的位置。
4.读取上次未匹配的登入记录,形成用户登录记录列表。
5.读取数据文件,将文件内容解析成用户登录记录。
6.将上一步中解析得到的用户登录记录添加到列表中。
7.返回用户登录记录列表。
分支与异常
第2步,若找不到数据文件,则报告异常。
第2步,若备份数据失败,则报告异常。
第3步,若上次未匹配的登入记录文件不存在,则跳过到第4步。
第4步,若读取备份数据文件失败,则报告异常。
第6步,若指定的写出目录不存在,则创建目录。
第6步,若创建目录或写文件失败,则报告异常。
第7步,若指定的写出目录不存在,则创建目录。
第7步,若创建目录或写文件失败,则报告异常。
后置条件
无
备注
无
16.1.5.数据匹配
用例名称
数据匹配
功能简述
DMS程序读取用户登入/登出记录列表,按照登入/登出的对应关系匹配成完整的用户登录记录,并将本次未匹配的登入记录写到指定文件。
前置条件
已经获得用户登入/登出记录列表
基本流
1.访问用户登入/登出记录列表,按照登入/登出的对应关系匹配登录记录。
2.将未匹配的登入记录写到文件中。
分支与异常
后置条件
无
备注
无
16.1.6.匹配登录记录
用例名称
匹配登录记录
功能简述
将用户登入/登出记录按照对应关系匹配成用户登录记录,以便计算用户登录时长。
前置条件
已经获得用户登入/登出记录列表
基本流
1.定义两个列表分别用来保存登入记录和登出记录。
2.循环访问用户登入/登出记录列表,将登入记录和登出记录分检出来,分别存入登入记录列表和登出记录列表。
3.循环访问登出记录列表,每找到一条登出记录后循环访问登入记录列表,找到与之对应的登入记录,将两条对应的记录组合成用户登录记录,并将这两条记录从列表中删除。
4.循环直至所有的登出记录都处理完成。
分支与异常
后置条件
无
备注
无
16.1.7.保存未匹配的登入记录
用例名称
保存未匹配的登入记录
功能简述
将匹配之后剩余的登入记录数据保存到文件中,以便下次匹配。
前置条件
匹配登录记录完成
基本流
1.将匹配完成后,登入记录列表中剩余的记录写到文件中保存。
分支与异常
第1步,若找不到指定文件,则创建。
第1步,若创建文件失败,则报告异常。
后置条件
无
备注
无
16.1.8.数据发送
用例名称
数据发送
功能简述
采集系统客户端将匹配好的数据通过网络发送给服务器。
前置条件
用户登录记录已经匹配完成
基本流
1.建立到服务器的网络连接。
2.获得输出流和输入流。
3.包装流对象。
4.遍历匹配的用户登录记录集合,拿到一条匹配的用户登录数据记录。
5.将匹配的用户登录数据记录按照指定格式转化为字符串。
6.将字符串写到流中。
7.等待服务器的接收回应。
8.循环4-7步,直到所有匹配的登录记录处理完成。
9.关闭流对象,关闭网络连接。
分支与异常
第1步,若网络连接失败,则报告异常。
第2步,若输入流和输出流失败,则报告异常。
第6步,若写数据失败,则报告异常。
第7步,若接收回应失败,重复传送本条记录。
后置条件
无
备注
无
16.1.9.数据接收
用例名称
数据接收
功能简述
采集系统服务器接收从客户端传送过来的数据。
前置条件
服务器程序启动,客户端完成匹配,并已发送数据。
基本流
1.开启服务程序。
2.获得网络连接。
3.开启新的线程为客户服务。
4.获得输入流和输出流。
5.包装流对象。
6.循环从输入流中读取字符串,保存在本地列表中。
7.成功读取一行字符串后向服务器发送成功传送标志。
8.循环5-6步,直到所有字符串接收完成。
9.关闭流对象,关闭网络连接,终止线程。
分支与异常
第1步,若开启服务失败,则报告异常。
第2步,若获得网络连接失败,则报告异常。
第4步,若获得流对象失败,则报告异常。
第6步,若读取数据失败,则报告异常。
第7步,若写出数据失败,则报告异常。
后置条件
无
备注
无
16.1.10.数据保存
用例名称
数据保存
功能简述
采集系统服务器将接收到的数据保存到数据库。
前置条件
服务器已经接收到数据。
基本流
1.建立到数据库的连接
2.循环访问接收到的数据列表
3.将列表中的记录插入到用户登录记录明细表中
4.访问完成后关闭连接
分支与异常
第1步,若建立数据库连接失败,则报告异常。
第3步,若插入记录失败,则报告异常。
后置条件
无
备注
无
16.1.11.数据整合
用例名称
数据整合
功能简述
采集系统服务器将用户登录记录明细表的数据整合出日表,月表和年表。
前置条件
用户登录记录明细表存在
基本流
1.执行SQL语句,将用户登录记录明细表中前一天的记录按照用户名和实验室ip为条件组合,统计出每一天,用户登录某一实验室机器的总时长数据,形成日报表。
2.执行SQL语句,根据用户登录记录日报表数据整合出用户登录记录月报表。
3.执行SQL语句,根据用户登录记录月报表数据整合出用户登录记录年报表。
分支与异常
后置条件
无
备注
无
16.1.12.整合出日报表
用例名称
整合出日报表
功能简述
根据用户登录记录明细整合出用户登录记录日报表
前置条件
已经得到前一天所有用户登录记录明细
基本流
1.建立到数据库的连接。
2.执行SQL语句,将用户登录记录明细表中前一天的记录按照用户名和实验室ip为条件组合,统计出每一天,用户登录某一实验室机器的总时长数据,形成日报表。
3.关闭到数据库的连接
分支与异常
第1步,若建立连接失败,则报告异常。
第2步,若执行SQL失败,则报告异常。
第3步,若关闭数据库连接失败,则报告异常。
后置条件
无
备注
无
16.1.13.整合出月报表
用例名称
整合出月报表
功能简述
根据用户登录记录日报表整合出月报表
前置条件
已经得到上一月所有用户登录记录日报表(1-31日)
基本流
1.建立到数据库的连接。
2.创建临时表,用来存储某月份所有用户的登录日表记录。
3.循环访问每张日表,将该月份的用户登录记录查询出来,并存入临时表中。
4.查询临时表,按用户登录名和实验室IP为条件分组,计算出每个用户登录每个实验室的月登录时长,将其存入月表中。
5.关闭数据库连接。
分支与异常
第1步,若建立连接失败,则报告异常。
第2步,若创建表失败,则报告异常。
第3步,若访问表失败,则报告异常。
第4步,若访问表失败,则报告异常。
第5步,若关闭连接失败,则报告异常。
后置条件
无
备注
无
16.1.14.整合出年报表
用例名称
整合出年报表
功能简述
根据用户登录记录月报表整合出年报表
前置条件
已经得到前一年所有用户登录记录月报表(1-12月)
基本流
1.建立到数据库的连接。
2.创建临时表,用来存储某月份所有用户的登录日表记录。
3.循环访问每张日表,将该月份的用户登录记录查询出来,并存入临时表中。
4.查询临时表,按用户登录名和实验室IP为条件分组,计算出每个用户登录每个实验室的月登录时长,将其存入月表中。
5.关闭数据库连接。
分支与异常
第1步,若建立连接失败,则报告异常。
第2步,若创建表失败,则报告异常。
第3步,若访问表失败,则报告异常。
第4步,若访问表失败,则报告异常。
第5步,若关闭连接失败,则报告异常。
后置条件
无
备注
无
17.性能需求
【描述系统性能方面的需求】