1、 软件开发质量管理提升系统SDIMS咨询与通讯子系统的设计与实现摘 要软件开发质量管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,从而对成本、人员、进度、质量、风险等进行分析和管理的活动。为了对软件开发进行有效的管理,新太软件开发质量管理提升系统,以下简称Suntek-SDIMS,正是基于目前软件开发企业的现状,结合了新太的软件项目管理经验(SPMS)而设计开发的一套管理平台,来帮助企业提高软件开发管理质量。Suntek-SDIMS以软件开发生命周期为中心,基于软件工程过程和项目管理过程两个方面来构建软件开发管理工具,为项目组、高级管理者提供方便有效的项目计划、任务跟踪、问题处理、
2、需求管理、缺陷管理、配置管理、质量管理、培训等工具。咨询模块结合系统知识库,通过知识库解答和统计有关软件开发过程中的任何问题。咨询模块负责解答用户在项目开发过程中遇到的问题,除了普通知识解答,咨询模块还有多个功能,一是回复项目相关问题,如用户想知道项目进度如何时,可以直接使用咨询系统向助手询问“项目进度怎么样了”,系统会详细回答用户的问题,并告诉你有多少任务已经完成,多少任务未完成,有什么重要任务需要优先处理。二是统计数据,用户可以直接向咨询系统询问统计的数据,比如“项目有多少测试人员”这样的问题,系统给出回复的同时,提供链接让用户知道这些测试人员的姓名。三是执行功能,用户向系统输入“打开我的
3、任务列表”,系统自动转到任务管理,用户便可以进行任务管理的操作。通讯模块是系统重要的一部份,功能有即时通讯,历史记录,文件传送,图片传送,屏幕截图,远程桌面。异地开发人员在开发过程使用即时通讯来联系,知道项目进展情况。而客户使用通讯模块可以向软件开发人员进行远程桌面连接,开发人员通过远程桌面帮助客户解决软件产品使用中的问题。同时通讯模块是SDMIS系统各个模块的连接点,系统相关功能贯穿整个系统,通过此功能主管可以查看各开发人员的任务,可以向开发人员分配任务,某个重要的任务系统会自动进行任务提醒。关键词: 软件质量提升; 即时通讯;中文分词 Suntek-SDMIS consultation a
4、nd communications subsystem design and implementation AbstractThe quality management in software development is to insure the software project s favorable complete within the cost, schedule, quality, then at the same time analysis and management the cost, schedule, quality and risk. In order to deve
5、lop software effectively, Suntek software development quality improve management system, hereinafter referred Suntek-SDIMS, is based on current status of software enterprises, help enterprises improve the quality of management in software development, combining project management experience (SPMS) a
6、nd the design of software management platform. Suntek-SDIMS, bases on software development life cycle, constructs two sides, process of software engineering and project management, for the project team and Senior managers.It provides convenient and effective development in projects.It contains tasks
7、 tracking, bug management, defect management, configuration management, quality management, training and other tools. Consultation modules combine knowledge database, answer and process any problems in software developmen though knowledge database. Consultation module is to answer questions encounte
8、red when users development software in the project, in addition to general knowledge answering, there are several functions in consultation module, first response project related issues, such as users would like to know how is the progress of the project, he can direct access the Help System and ask
9、, how is the project progress, the system will reply to users in detail, and tell you how many tasks have been completed, how many of unfinished tasks, what are the important tasks of priority. Second, statistical data, users can asked directly to the Consultation System to statistical data, for exa
10、mple, number of testing engineer in project, the system give links to get the names of the testing engineer. Third, the implementation of functions, user input to the system, opened my task list, the system automatically open the task management, Users will start the task management operation. Commu
11、nications module is an important part of SDMIS, it contain function of instant communications, the historical record, file transfer, picture transmission, screenshots, Remote Desktop. Romote development staff in the development can use instant communication, get contract the progress of the project.
12、 And the customer can use communications module to get help from software developers though remote desktop, to solve issues of software products. communications module is link point of SDMIS system, system-related functions throughout the system, this function can check the tasks of staff in develop
13、ment of the mandate, and allocate tasks to the staff. The certain important task system will automatically reminded.Key words: software quality improvement; intenet message; the Chinese phrase Separation 目 录1.绪论11.1 选题背景及目的11.1.1 选题背景11.1.2 选题目的11.2 国内外研究状况21.2.1 Msn Message的聊天机器人小布21.2.2 集成工具Firefl
14、y与SDMIS比较31.3 课题研究方法41.4 系统及开发环境41.5 论文构成及研究内容42模块需求分析62.1 咨询模块需求分析62.2 通讯模块需求分析73模块的设计83.1 咨询模块总体设计83.1.1 中文分词的原理83.1.2 中文分词和咨询系统93.1.2 词语的匹配103.2 通讯模块总体设计133.2.1 界面133.2.2 功能133.3 咨询模块详细设计133.3.1 自动回复143.3.2 统计数据143.3.3 执行功能153.4 通讯模块详细设计153.4.1 界面153.4.2 功能163.5 数据库163.5.1 语句库163.5.2 回复句库173.5.3
15、词库173.5.4 消息信息数据库183.5.5 消息本体数据库184模块的实现194.1 咨询模块的实现194.1.1 客户端194.1.2 服务端194.1.3 结果过多的处理方法204.1.4 最终界面204.2 通讯模块的实现234.2.1消息通讯234.2.2文件传送254.2.3图片传送264.2.4屏幕截图264.2.5远程桌面274.2.6系统结合功能285 结论30致谢31参考文献32附录331咨询模块客户端代码331.1咨询模块执行功能331.2客户端发送代码361.3客户端执行解析后的功能382通讯模块部分代码422.1显示即时消息422.2远程桌面452.3发送本地屏幕
16、462.4模拟键盘操作远程桌面461.绪论1.1 选题背景及目的1.1.1 选题背景随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件开发质量管理引入开发活动中,对开发实行有效的管理。从概念上讲,软件开发质量管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,从而对成本、人员、进度、质量、风险等进行分析和管理的活动。 新太软件开发质量管理提升系统,以下简称Suntek-SDIMS,正是基于目前软件开发企业的现状,结合了新太的软件项目管理经验(SPMS)而设计开发的一套管理平台,来帮助企业提高软件开发管理质
17、量。Suntek-SDIMS以软件开发生命周期为中心,基于软件工程过程和项目管理过程两个方面来构建软件开发管理工具,为项目组、高级管理者提供方便有效的项目计划、任务跟踪、问题处理、需求管理、缺陷管理、配置管理、质量管理、培训等工具。Suntek-SDIMS内部集成了网络协同办公OA及即时通讯功能,通过灵活的二次开发设计工具,并结合项目管理工具,帮助企业顺利实施项目的各类管理流程。SDIMS是集咨询、培训、工具为一体的全套IT企业质量管理提升方案。对于项目任务的发送接收以及中间处理过程,系统提供即时通知功能,迅速通知相关人员处理相关的任务及项目流程,大大减轻人力跟踪监督的工作。1.1.2 选题目
18、的在系统已经成型的基础上,我完成了结合系统平台各种功能的咨询与通讯模块,以此可以作为本论文的选题。图1.1 SDMIS构架图SDMIS的构架图如上,本系统得咨询与通讯模块在应用服务层,与系统的需求过程,任务管理过程紧密相连接。从设计到完成和完善总共用了近2个月时间。2个模块客户端用同一窗口,因此先完成的是通讯模块,再完成咨询模块。2个模块使系统在方便性方面提高很大,开发使用的是Delphi7,和DatabaseUnity数据库,咨询模块用到了最大匹配算法,解决了用户输入的识别问题。通讯模块中,为了做出专业的界面,在PS上也下足了功夫,最后完成了多个功能,消息通讯,历史纪录,文件传送,远程控制,
19、系统功能结合。1.2 国内外研究状况1.2.1 Msn Message的聊天机器人小布 打开并登录,然后在主窗口中点击“添加联系人”,将电子邮件地址为“MrRobot090”的机器人小布添加进来,稍等片刻,就会出现机器人小布将你添加到他的联系人中的对话框,“确定”之后就可以与机器人小布聊天了。小布是智能机器人,会根据人的提问“聪明的”给出答案(如图1-1 机器人小布)。图1.2 机器人小布Msn机器人比较优秀,回答的时候并不单一,有时候会给人很多随机应变的答案,什么情况下都给人友好的感觉,不过它也有很多不足的问题,需要用户“教”,我的开发目标是一个结合项目知识库,能友好应变用户的机器人。1.2
20、.2 集成工具Firefly与SDMIS比较集成工具Fi refly软件工程和SDMIS一样是集成工具,也有即时通讯功能,与系统的各个功能结合紧密。表1.1 Firefly与SDMIS比较FireflySDMIS即时通讯功能简单,能与系统结合紧密即时通讯基本功能齐全,与系统结合紧密扩展性能支持大规模开发灵活,适合小中大规模的开发1.3 课题研究方法 本课题安全按照软件工程的思想来实施的。明确需求,设计系统。当需求得到确认后,进入到设计阶段。进行概要设计、数据库设计等,并确认设计方案的可行性。依据设计,开发系统。按照设计阶段的设计过程,开发在线工作日志管理系统。测试系统,修改BUG。除了在编码的
21、时候采用单元测试的方式来测试。在系统完成后还对系统进行一次完整的测试,找出系统存在的各种问题并修改。整个开发的过程采用迭代式开发。每一次迭代均由需求分析、设计、编码、测试等阶段组成,为整个系统增加一个可定义的、可管理的子集。每一个迭代过程都会进一步完善系统功能,满足用户需求。像QQ,MSM大家都比较熟悉的即时通讯软件,他们能够几乎实时传送消息给接收人,他们有各自的协议,能够实现显示图片,发送文件,远程控制,语音视频这样的重要功能,我的模块就必须有这些重要的基本功能,而且要和合同管理,需求管理,计划管理,提醒模块紧密结合。当然我没有QQ源代码,我必须根据自己的技能和找到的资料,来完成这个模块。我
22、原来有做过即时通讯的软件,现在就要加上上述的几个重要功能。及时通讯模块较难之处在于与各个模块结合协议的制定,并且希望能够结合到未来新加入的新模块。信息智能咨询模块可以为各个小型数据领域通用,这个模块是使用中文分词算法得到用户的词语,再在关键字数据库中找到匹配的多个关键字,通过这些关键字能模糊的得到用户想查询的功能,然后就可以通过这些功能回答用户提出的问题了。1.4 系统及开发环境系统使用WindowsXP/2000/2003 开发环境Delphi7。1.5 论文构成及研究内容本文主体部分由五大部分构成:1. 绪论部分主要介绍选题背景及目的,以及国内外研究状况和课题研究方法。2. 咨询模块,通讯
23、模块的需求分析。3. 咨询模块,通讯模块的总体设计,包括硬件和软件环境,咨询模块词语匹配的算法和原理。4. 咨询模块,通讯模块的详细设计及实现,总体结构流程,功能分配,数据库设计以及系统界面设计。5. 结论、致谢及参考文献。2模块需求分析2.1 咨询模块需求分析咨询模块主要在“咨询”上,用户通过向系统提问来得到答案。本模块的重点是通过对用户问题分析,得到用户需要哪些问题,重点想知道的是什么。本模块就是让系统明白用户的意思,至少能够从用户的提问中找到有用的信息,作出接近用户意思的回复。通过词库,使用最大匹配算法得到关键词,从这些关键词和语句库中的句子相比较,可以找到最符合的句子,再通过回复句库返
24、回回复语句给客户端,客户端处理各种异常后就可以呈现给用户了。词库-语句库-回复句库也并不一定很智能,只要数据库录入时语句精确,词语没有遗漏,使用起来还是很能达到指用户语义的程度。咨询模块除了回复项目方面的问题,还可以做很多事情,比如查询电话号码,航班号,还可以执行功能,如让程序打开Baidu网页,打开于某用户聊天的窗口。在网上发现类似的机器人有天气预报,星座咨询,节气常识,比赛得分查询等等功能。机器人小布还有许多不错的功能,如查询天气预报、今日星运、万年历、大城市公交车站、区号邮编、成语等等。你只要在对话框中输入“?”,机器人小布就会告诉你有关他具有的功能及查询格式的所有信息(见图2.1)。图
25、2.1 机器人小布2.2 通讯模块需求分析由于通讯模块的通用行,基本需求就有个,一是发送短消息,二是文件传送,三要窗口能显示图片,四是历史记录。在项目开发和客户验证过程中,可能需要向用户演示软件功能,因此需要有远程桌面和语音视频功能。以下是功能说明发送短消息:要求发送内容带表情符号,发送后字体保持不变。文件传送:从安全方面考虑,发送需经过双方确认,否则不能发送文件。显示图片:能直接在聊天窗口显示图片。屏幕截图:截取屏幕的一部分发送给对方。远程控制:发起方可操作接收方的桌面。由于开发时间比较短,计划实现以下功能,消息通讯,文件传送,图片传送,屏幕截图,远程桌面。3模块的设计3.1 咨询模块总体设
26、计系统设计为CS结构服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server,典型的CS结构倒是可以配置成瘦服务器端胖客户端的模式,客户端需要安装专用的客户端软件。 CS的优点是能充分发挥客户端的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。客户端服务端图3.1 咨询模块结构图中服务端比较复杂,负责了分词,匹配,查询,输出等工作。3.1.1 中文分词的原理3.1.1.1 中文分词概论众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才
27、能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我/ 是 /一个 学生。m分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。3.1.2 中文分词和咨询系统中文分词对咨询系统来说,最重要的是找到最少的关键字,通过关键字来判断用户的咨询的是什么意思。中文分词是中文信息分析中的一大难题,和英文分词不同,中文分词无法直接确定分词。3.2.2.1 英
28、文分词英文词语按空格分开,词态也很有规律1)数字:123,456.781 90.7% 3/8 2)缩略(包含不同的情况):A 字母点号字母点号组成的序列,比如:U.S. i.e. 等等;B 字母开头,最后以点号结束,比如: Mr. eds. 3)包含非字母字符,比如:AT&T Micro$oft4)带“-”词串,比如:three-years-old,one-third,so-called5)带 “撇” 的词串,比如:Im cant dogs lets6)带 空格 词串,比如:and so on,ad hoc对数字的识别算法如下:digit = 0 | 1 | 2 | 3 | 4 | 5 | 6
29、 | 7 | 8 | 9图3.2 数字识别状态图对于英文的识别,使用Tokenization算法:Tokenization算法的一般过程(1)对一个待分析的字符串(S),从左到右进行扫描,读入当前字符(char)到候选词数组(W i ),并将指针(pointer)前移,i=i+1;(2)看char是否为词分隔符(事先可以预定义空格以及一般标点均为词分隔符);(3)如果char是词分隔符,并且W不是空格,将W中从起始位置到i-1位置的字符作为一个词汇单位输出,同时将S中的W部分删去,然后清空W,转入(1),如果char是词分隔符,且W是空格,将S中的W部分删去,清空W,转入(1);(4)如果不是
30、词分隔符,看指针是否已经指到字符流尾部;(5)如果指针已经指到字符流尾部,将当前W从起始位置到i-1位置的字符作为一个词汇单位输出,结束。(6)如果不是字符流尾部,转入(1);3.2.2.2中文分词的不确定性 中文分词不象英文分词那么简单,中文词语的不确定性注定了中文信息难以识别处理,从语句到词串,是一个降低不确定性的过程。如,汉字的简繁转换: 後 对应 后 文本校对( 改错别字): 抛妻别字 对应 抛妻别子 (字音编码输入)一个句子可能因为算法不同而得到不同的结果:利益让公司不看重大项目的风险利益 让 公司 不 看重 大项目 的 风险利益 让 公司 不看 重大 项目 的 风险又如:这小巷车很
31、难过 3.1.2 词语的匹配3.1.2.1 词语匹配仅仅会分词还不够,如果真的要让机器人了解人说的话,肯定需要一些人工智能的算法。我们就是做个机器人玩玩,没必要研究的那么深。人工智能走到现在,太聪明的聊天机器人也少之又少。而且,让专业的研究人员去研究就好了,我们仅仅就是玩玩。所以我们就用一个最简单的办法。我们的方法是,让机器人找这一句话的关键词,这句话大概的词性搭配,再去语料库里面找到符合这样规则的回答的话。比如对方说:“谁是项目经理”我们先用分词算法,把这句话分成“谁/是/项目经理”,然后找出关键词“项目经理”。同时把这句话的词性搭配也记录下来。 这样,当找到关键词“项目经理”在词语库中的时
32、候,我们再来找是否有类似这这句话词性搭配的回答,如果有,随机回答出一句:“这个项目的项目经理是某某人”,这样,可以给聊天者比较好的感觉。那么问题来了,如何找出关键词呢?找出这句话中长度最长的词作为关键词。没有为什么,因为这样速度会快些。如果一句话中所有的词都被扫描成为关键词,再去查库,会出现些匹配上的问题。可以这样处理:把与关键字匹配的结果都列出来。提问者的问题不会太长,我想提问者的问题也不会有十几个关键字把。在少量的关键字下,就可以找到比较符合用户意思的问题语句。3.1.2.2 最大匹配算法图3.3 最大匹配算法流程图用户提出这样的问题“项目开发人员总共有多少人”。最终结果应该为表3-1中例
33、子所示。表3.1 分词示例项目开发人员总共有多少人分词过程如下所示:(1)S2=;S1不为空,从S1左边取出候选子串W=项目开发人员;(2)查词表,“计算语言学”在词表中,将W加入到S2中,S2=“项目开发人员/ ”,并将W从S1中去掉,此时S1=总共有多少人;(3)S1不为空,于是从S1左边取出候选子串W=总共有多少人;(4)查词表,W不在词表中,将W最右边一个字去掉,得到W=总共有多少;(5)查词表,W不在词表中,将W最右边一个字去掉,得到W=总共有多;(6)查词表,W不在词表中,将W最右边一个字去掉,得到W=总共(7)查词表,W在词表中,将W加入到S2中,S2=“项目开发人员/ 总共/
34、”,并将W从S1中去掉,此时S1=有多少人;(8)S1不为空,于是从S1左边取出候选子串W=有多少人;(9)查词表,W不在词表中,将W最右边一个字去掉,得到W=有多少;(10)查词表,W不在词表中,将W最右边一个字去掉,得到W=有多;(11)查词表,W不在词表中,将W最右边一个字去掉,得到W=“有”,这时W是单字,将W加入到S2中,S2=“项目开发人员/ 总共/ 有 ”,并将W从S1中去掉,此时S1=多少人;(12)S1不为空,从S1左边取出候选子串W=多少人;(13)查词表,W不在词表中,将W最右边一个字去掉,得到W=“多少”,这时W是单字,将W加入到S2中,S2=“项目开发人员/ 总共/
35、有/ 多少/ ”,并将W从S1中去掉,此时S1=人;(14)S1不为空,从S1左边取出候选子串W=人;(15)查词表,W不在词表中,将W最右边一个字去掉,得到W=“人”,这时W是单字,将W加入到S2中,S2=“项目开发人员/ 总共/ 有/ 多少/ 人/ ,并将W从S1中去掉,此时S1= ;(16)S1为空,输出S2作为分词结果,分词过程结束。3.1.2.3 算法缺陷一是不能处理有歧义的词语。像“路很难过”这样的句子,“难过”和“难”,“过”这样的单字词无法判断,目前的解决办法是加入词语组合概率因子,通过多层概率表来判断是单字还是词语的一个单字。不过这样查询起来会比较慢。二是匹配算法从左到右提取
36、子串和从右到左提取子串得到词语可能不符。如“我不看重大笔的钱”这样的句子,就会出现问题,若从左到右分词则结果是“我 不看 重大 笔 的钱”,而从右到做的结果是“我 不 看重 大笔 的 钱”,目前处理方法是否定词要作为单字,碰到带否定词的词语就要多判断了。3.1.2.4 确定结果确定结果就是得到分出的词语,词语用TStrings来保存。在delphi中Tstrings可以保存词语数组,保存了结果,就可以与待符合的语句进行匹配了。3.2 通讯模块总体设计3.2.1 界面以淡蓝色为主体,带输入框,信息显示框,辅助按钮框(用于系统结合)3.2.2 功能消息通讯:发送文字消息,可以显示表情。文件传送:可
37、以发送文件。文件传送在日常工作比较重要,速度和准确度高。图片传送:发送图片文件的时候可以直接显示在信息显示框中。屏幕截图:在软件开发中,屏幕截图经常使用到。可截取屏幕一区域存为图片。远程桌面:在帮助客户解决问题时有时会用到。可以远程控制对方桌面。系统功能:结合了任务管理模块。3.3 咨询模块详细设计3.3.1 自动回复语句库回复语句相关数据库SQL图3.4 自动回复数据库关系以用户提问“谁是本项目的项目经理?”为例1去标点符号,如果有多个标点则分句,每句重复第2步。2对用户提问进行分词。用到最大匹配算法,找到数据库保存的关键字,关键字有“谁/ 是/ 本项目/ 项目经理”3按每对关键字在回复语句
38、库中查询,很可能得到多个匹配结果4下面要判断最符合提问的回复语句,有2个小技巧可以提高准确度,1个是最长的词语往往是用户的主要意思,若以评分的方式评最符合的语句,3分最高,这个词语可以评3分。第2个技巧是可以判断词语出现顺序。5以这样的方式计算符合度,普通词匹配2分,顺序1分,3字以上词3分(可能根据具体要求不同可修改)6得分最高的符合语句“谁 是 这个 项目本项目 项目经理”评分是2+2+3+3+1+1+1+1=14。7为了提高效率,可以让得分高于8分就认为匹配。8得到匹配语句后,确定回复语句9通过回复语句的 SQL,通过数据库查询结果10显示结果。结果为回复语句+SQL查询结果。3.3.2
39、 统计数据语句库回复语句相关数据库返回sumSQL图3.5 统计数据数据库关系以用户提问“本项目有多少开发人员?”为例1去标点符号,如果有多个标点则分句,每句重复第2步。2对用户提问进行分词。用到最大匹配算法,找到数据库保存的关键字,关键字有“本项目/有/多少/开发人员”3-7与 字回复相同8得到匹配语句后,确定回复语句9通过回复语句的 SQL,通过数据库查询结果,求总和(SUM)。10显示结果。结果为回复语句+SQL查询结果。3.3.3 执行功能客户端收到解析的功能若为“执行功能”类型则可直接执行功能。例如用户输入“打开项目需求管理”1去标点符号,如果有多个标点则分句,每句重复第2步。2对用
40、户提问进行分词。用到最大匹配算法,找到数据库保存的关键字,关键字有“打开/项目/需求管理”3-7与 字回复相同,数据库中符合语句为“打开执行/运行/open 需求管理”8得到匹配语句,他的类型为执行功能F3,F3表示打开需求管理的窗口。9通过代码执行功能。3.4 通讯模块详细设计3.4.1 界面见附件的UnitPersonalChat.dfm(需要有Delphi7环境)。3.4.2 功能消息通讯:使用系统内部函数sendmidmessage,实现点对点的消息发送,用转义实现表情传送。文件传送:使用Tsocket组件实现文件传送图片传送:使用TiceRichEdit组件实现能显示图片的RichE
41、dit组件。屏幕截图:属于简单图像操作功能远程桌面:利用模拟鼠标键盘可以操作远程桌面系统功能:结合了任务管理模块。3.5 数据库3.5.1 语句库语句库保存的是可能被用户提问中使用到的句子,句子求简单,通用性强,范围广,各种同意的词语前可以用特殊符号(,)表示。例如项目经理想知道项目有多少缺陷,他会有多种问法,比如,本项目有多少bug,项目有多少缺点。入库时句子就可以写成: 本项目项目 有 多少bug缺陷/缺点。入库时句子中词语保持顺序,词语间按空格为单位隔开。考虑到会有英文的存在入库时英文都转为小写。对应的回复自然是对本问题回复的回复句库的回复编号。语句所属类别表示一个适用范围,比如对项目有
42、关的询问可以与需求有关的询问分为2种功能。表3.2 语句库名称表作用语句编号SentenceID语句功能Type语句类别分为查询,统计,执行功能语句Sentence对应功能编号FunctionID对应回复编号ReplyID语句所属类别Sort区分查电话,问候这样的功能3.5.2 回复句库回复语句自然是对语句库的回复,当语句库中匹配到句子,便从本库提出回复语句,返回给用户。SQL用于查询结果,如用户提问列出本项目的客户,即可用sql里的表名和条件找出符合要求的客户。语句所属类别,对不同类别的句子的区分。表3.3 回复句库名称表作用回复编号ReplyID回复功能Type语句类别分为查询,统计,执行
43、功能回复语句SentenceSQLSql查询表名+条件,用于统计语句所属类别Sort区分查电话,问候这样的功能3.5.3 词库词语重复率高,不同类别词语可以通用一个sort。表3.4 词库名称表作用词语编号WordID名称表作用词语Word词语所属类别Sort不同类别来区分同一词语3.5.4 消息信息数据库以下是储存消息的数据库,ChatInfoDB,不保存消息本体,节省了空间:表3.5 CharInfoDB名称表名作用编号InfoID发送者Sender接收者Receiver消息IDMessageID对应ChatMessageDB的消息ID时间Time附加功能1Addition1可以完成文件传
44、送等功能附加功能2Addition2可能用到多个3.5.5 消息本体数据库以下是储存消息的数据库,ChatMessageDB,保存消息本体。表3.6 ChatMessageDB名称表名作用编号InfoID消息IDMessageID消息本体Message消息内容字体名FontName字体大小FontSize字体类型FontType字体颜色FontColor字体有效范围Scale包括开始位置和结束位置4模块的实现4.1 咨询模块的实现4.1.1 客户端4.1.1.1 自动回复以下代码可以参见附件自动回复需要由客户端发送用户输入的问句到服务端,用特殊的标记告诉服务器,问句是询问状态。由服务端坐做分词
45、处理,查找符合的回复语句和SQL部分,由SQL中的表和条件得出答案,再由客户端上显示出。界面如6.3中的图6-1。4.1.1.2 统计数据详细代码见附件。统计数据的回复语句与自动回复不同,是回复语句1+统计结果+回复语句2这样的形势,例如“本项目共有7个bug”,其中7是统计结果 ,前面后面的句子分别是回复语句1和回复语句2。4.1.1.3 执行功能详细代码见附件客户端需要处理大量细节上的问题,其中执行功能部分已经在附录中给出。客户端代码定义了F1到F23的23个功能。4.1.2 服务端4.1.2.1 自动回复服务端接到用户问句后,对问句分词,与语句库中语句匹配到句子,判断是到句子是自动回复,从回复句库中的SQL中查得回复结果,然后把回复语句和结果合并后返回回给客户端。若找不到结果,可以用数据库保存的专门用于出错或者没有结果的语句。4.1.2.2 统计数据服务端接到用