需求分析说明书,即系统详细的开发流程,本文简单谈谈我是怎么写的,由于本人资历尚浅,可能写的也并不规范,当作经验之谈。想要完成一个需求分析说明书,我个人觉得,需要的知识有抽象转实体,实体提取,实体联系,其实就是数据库的知识,此外还有统一建模语言UML,用来构建各种图,还有确定设计模式,使用何种技术栈最能解决这个需求,技术栈就是前后端使用何种语言,若有移动端,API及文档如何编写,服务器使用哪种,文件服务器怎么设置,怎么解决高并发问题,基本的安全知识等等。
一、拿到系统功能需求书
我本人做了一些项目,非专业人士能给的,无非就是简单的罗列功能,有些好的最多能给的加个功能模块,模块下对应的详细功能,真的不能再多了。下面是我之前做的一个项目需求。
业务知识库 系统提供问答管理功能,可对工程认证业务知识库进行问题录入、问答导入、问答打出、同时对业务知识进行分类,支持单个录入、批量导入、快速添加业务知识问答,每个问答包括标准文法、相似问法、答案,机器人会根据问答知识库来回答用户的提问; 问答设置 添加问答时先选择问答分类,设置问答标准问法,相似问法、关联问题、标准答案。谁知问答的状态,启用或停用。 还可通过固定模板,对问题进行批量导入。 问答逻辑设置 系统设计自动默认推送的问题列表的层级逻辑。 业务知识问答 业务知识问答分为问题列表推送,精准回答、模糊匹配问答、模糊引导问答、智能学习及未知学习; 1.问题列表推送 页面自动推送常见问题,又用户自行选择,引导用户咨询和增加答题精准度,用户打开问答窗口时,默认推送该列表,按照问题点击次数降序排列; 2.精准回答 客户提问能精准匹配业务知识库的问答只是,机器人将根据问答学习提供准确答案。 3.模糊匹配问答 用户提问与业务知识库有语法顺序、名词、动词、形容词等加入情况,机器人通过语义理解分析,匹配业务知识,并给出准确回答。 4.模糊引导问答 用户提问的问题比较模糊,机器人根据语义分析理解匹配到多个问题不能准确回答,会推送给用户一个建议问题列表,客户可根据需求选择问题,机器人将推送选择问题的回答。 5.智能学习 当用户问的问题比较模糊,机器人不能准确回答,会给客户一个建议问题列表,当客户第一次选择问答的时候,机器人会自动将此问题推荐为用户选择问题的相似问法,管理员可在后台操作是否进行关联。 6.未知学习 机器人不能回答的问题,系统自动记录至未知学习列表,同时记录该问题的询问次数,管理员可根据问题提问频率看是否添加到知识库中,也可忽略或关联到其他问题中。 报表分析 1.热点问题报表 热点问题统计实现对用户常问问题进行统计排名,系统自动对用户常问50问题进行统计排名,管理员可选择不同问题分类进行统计 2.采纳率统计 用户收到机器人反馈的问题后可选择采纳或不采纳,系统将统计不同答案的采纳率以便修改知识库。
可以看到,一个系统,就这么多字,然后让你负责,技术栈无所谓。如果看到这个能随便写,那就不用往下看了。如果你看到这个一筹莫展,那请往下看,可能会对你有帮助。
二、导图软件提取关键字
为了让大家能直观的看到这个结构,我就不提取关键字了,直接复制下来,原则上是不能直接复制的,因为导图的描述字不宜过长,这是我专门交了2000块钱学习的导图怎么弄的一点知识。直接看结果:
需求分解后的导图
三、设计数据库
1、对导图的每个模块中进行实体提取
怎么进行实体提取,实体直观的就是名字,不直观的就是要推断,就是我前面说到的抽象转实体。从上面的导图中,可以看到,直观的实体有知识库问答、用户、问答类别、以及未知问答等,要推断的实体接着往下看。
2、找出实体间的关联关系
在结构化数据库中,实体间的关联主要有1对1,1对多,多对多三种关系,关系的良好设计能减少数据库的冗余性。因为涉及到公司的数据,我不会把所有的关系都写下来。对以上三个关系,我每个举一个例子。1对1就不说了,1对多如分类对问答,一个问答只能对应一个分类,而一个分类能对应多个问答,这就是1对多,所以问答表中必有一个字段是外键,并且关联分类表中的主键。多对多的例子就是,一个问答能关联多个问答,而这个问答也能被多个问答关联,这就是多对多的关系,在数据库设计中,两个多对多的实体一般要对应三张表,第三张表中有两个外键分别对应两个实体表的主键。
3、推断实体表
在推出关联后,就可以推断实体表了,找出一些联系,或者一些事实,并用新的实体表来描述,这就是抽象转实体。
4、给实体表添加字段
字段就是表的属性,对应表的列。找属性和找实体差不多,属性就是实体的特征,如用户的属性,可以有性别,年龄,密码等等。字段在开发过程中是可以继续添加的,记住,一旦确定了表间的关系后,尽量不要修改,不然会陷入很难受的地步。
四、写标准的需求文档
功能有了,数据库有了,现在就要把详细的需求文档写出来,详细的需求文档可以说是开发过程的引导,一切开发工作都是照着需求文档弄的。所以,想要写规范的需求文档需要一个规范的需求文档模板。根据这个规范的需求模板,来写你的内容。
一个好的需求的文档模板目录大概如下:
Catalog 目 录 1 Introduction 简介 5 1.1 Purpose 目的 5 1.2 Scope 范围 5 2 General description 总体概述 5 2.1 Software perspective 软件概述 5 2.2 User characteristics 用户特征 5 2.3 Software function 软件功能 5 2.4 Assumptions & Dependencies 假设和依赖关系 5 3 Specific Requirements 具体需求 5 3.1 Functional Requirements 功能需求(详细描述) 5 3.2 Performance Requirements 性能需求 6 3.3 External Interface Requirements 外部接口需求 7 4 Overall Design Constraints 总体设计约束 7 4.1 Standards Compliance 标准符合性 7 4.2 Runtime Limitations 环境约束 7 4.3 Technology Limitations 技术限制 8 5 Software Quality Attributes 软件质量特性 8 6 Dependencies 依赖关系 8 7 Other Requirements其他需求 9 7.1 Database 数据库 9 7.2 Operations 操作 9 7.3 Localization 本地化 9 8 Issues To Be Determined 待确定问题 9
需求文档就是把以上的内容清楚的描述出来,注意在功能需求那把模块具体写清楚,甚至开发过程的简单流程。至此,需求分析文档初步完成。