##1 需求分析
###1.1 需求分析组成部分
需求分析的内容是针对待开发软件提供完整、清晰、具体的要求,确定软件必须实现哪些任务。具体分为功能性需求、非功能性需求与设计约束三个方面.
(1).功能性需求
功能性需求即软件必须完成哪些事,必须实现哪些功能,以及为了向其用户提供有用的功能所需执行的动作。功能性需求是软件需求的主体。开发人员需要亲自与用户进行交流,核实用户需求,从软件帮助用户完成事务的角度上充分描述外部行为,形成软件需求规格说明书。
(2).非功能性需求
作为对功能性需求的补充,软件需求分析的内容中还应该包括一些非功能需求。主要包括软件使用时对性能方面的要求、运行环境要求。软件设计必须遵循的相关标准、规范、用户界面设计的具体细节、未来可能的扩充方案等。
(3).设计约束
一般也称做设计限制条件,通常是对一些设计或实现方案的约束说明。例如,要求待开发软件必须使用Oracle数据库系统完成数据管理功能,运行时必须基于Linux环境等。
成果物:
需求分析文档
###1.2 软件需求分析模板
1、分析业务需求
(1) 时间需求:输入、输出频率,输入、输出响应时间,各种功能恢复时间等;
(2) 处理容限、精度、采样参数的分辨率,误差处理等;
(3) 可靠性的MTBF要求,可维护性、安全性要求等。(对可能的不正常的输入给以正常响应是可靠性的重要内容,这属于功能性需求。)
2、分析用户需求
1)诱导客户需求 — 沟通过程
2)确认客户需求
###3、分析功能需求
1)功能需求的完整性和一致性
对功能的描述应包含与功能相关的信息,并应具有内在的一致性(即各种描述之间不矛盾、不冲突)。应注意以下几点:
(1) 给出触发功能的各种条件(如:控制流、运行状态、运行模式等);
(2) 定义各种可能性条件下的所有可能的输入(包括合法的输入空间和非法的输入空间);
(3) 给出各种功能间可能的相互关系(如各个功能间的控制流、数据流、信息流,功能运行关系:顺序、重复、选择、并发、同步);
(4) 给出功能性的主要级别(如:基本功能、可由设计者选择逐步实现的功能、可由设计者改变实现的功能等);
(5) 尽可能不使用“待定”这样的词。所有含有待定内容的需求都不是完整的文件,如果出现待定的部分,必须进行待定部分内容说明,落实负责人员、落实实施日期。
2)功能描述的无岔意性和可追踪性
需求功能描述的无岔意性、可追踪性和规范化:
(1) 功能描述必须清晰地描述出怎样输入到怎样输出,并且输入、输出描述应对应有数据流描述、控制流描述图,这些描述必须与其它地方描述一致;
(2) 可以用语言、方程式、决策表、矩阵或图等对功能的描述。如果选用语言描述必须使用结构化的语言,描述前必须说明该步骤(或子功能)的执行是顺序,选择,重复,还是并发,然后说明步骤逻辑。整个描述必须单入单出。
(3) 描述时,每一个功能名称和参照编号必须唯一,且不要将多个功能混在一起进行描述,这样便于功能的追踪和修改。
(4) 功能描述应注意需求说明和程序设计的区别。需求设计仅仅是软件的功能设计,它给出软件运行的的外部功能描述,以及为了实现这一外部功能必须做哪些事情(采用和种数据结构,定义多个模块,接口间的接口等)是设计阶段的事情,功能描述不应涉及到那些细节问题,以避免给软件设计带来不必要的约束。
###4、需求分析相关工具
效果图描述。主要是用户UI界面的描述反映用户需求功能;
逻辑图描述。根据用户需求功能,使用抽象化理论,以及需求分析理论,对用户需求功能进行全面的分析,建立功能性逻辑关系图,流程逻辑关系图等;
关系图表描述。主要是对信息关系、数据库表格、接口函数等描述;
工程数学描述。分析用户需求,分析用户需求信息,运用工程数学进行算法推导,进行合理化需求分析推导;
甘地图描述。主要是软件项目工作安排,开发周期预估;
其它方法描述。保证完整性合理性的有效描述
###5、需求评估
1)满足客户需求
2)保证可实施
3)工作周期
4)需求不可更改性
##2 本项目的需求分析
###2.1 功能性需求
图文前端功能:
(1)图文分类标签
(2)图文卡片式展示
(3)分页功能
(4)搜索功能实现
(5)图文详情页面
图文后端功能
(1)标签自定义,内容增删改查功能
(2)文章内容管理,增删改查
(3)图片上传
(4)美化编辑器模块
数据统计页面
(1)页面布局(左侧树形导航)
(2)美化表格展示
(3)highcharts实现统计图展示
###2.2 非功能性需求
性能:用户访问量最高支持达到 QPS:1w/s (1) 响应时间 (2) QPS, TPS
QPS: query per second
TPS: transition per second
运行环境: Ubuntu-16.04
遵循标准:PEP8
用户界面设计的具体细节:页面尽量美观,支持搜索,分页展示,有图片文件上传,有编辑器,有图表
未来可能的扩充方案: 接入爬虫系统,将原始数据进行爬虫采集
###2.3 设计约束
数据库:MySQL
环境:Ubuntu
##3 详细设计
成果物:产生详细文档。
主要包括部分有:功能模块划分,接口定义,类图,业务流程图,数据库设计 (使用工具:visio, rose设计), 技术选型(采用什么技术路线,架构设计)等。
关于软件详细设计文档模板见附件《软件详细设计文档模板.doc》
###3.1 功能模块划分
整个平台系统分为三个模块
(1)美文前端模块
(2)美文后端管理模块
(3)数据统计模块
###3.2 接口定义
提供接口通信方式:RPC(thrift协议), HTTP(S) 协议
RPC协议:
RPC是一种C/S架构的服务模型,server端提供接口供client调用,client端向server端发送数据,server端接收client端的数据进行相关计算并将结果返回给client端。
HTTP协议:
HTTP协议是建立在B/S架构的服务基础上。接口通信:HTTP协议 — 基于TCP协议的, 建立三次握手才能进行HTTP应用层数据收发。
HTTPS协议:
基于HTTP协议,HTTP + SSL
访问接口说明:
(1)首页卡片式页面展示:
接口URL: /art/index?page=1&t=1
方法:GET
输入参数说明:
page: 第几页
t: 标签类别,整数标识 eg: 0--全部 1--爱情小说 2—科幻小说
输出:
渲染首页卡片式页面
(2) 页面搜索功能:
接口URL: /art/search?key=XXX&page=1
方法:GET
输入参数说明:
key: 搜索的关键词
输出:
渲染搜索列表页面
(3)详情页面功能:
接口URL: /art/detail?id=7
方法:GET
输入参数说明:
id: 文章id,(点击某一个具体的文章,传入文章id)
输出:
渲染详情页面
(4) 数据统计页面:
创建一个新的app名称: statics
接口URL: /statics/index
方法:GET
输入参数说明:
无
输出:
渲染统计页面布局
(5)xadmin 登陆功能
接口URL: /xadmin
/xadmin
方法:GET
输出:
渲染xadmin管理页面(支持主题)
(6) 会员的登陆和注册
和xadmin管理后台用户信息不同,会员信息是用户登陆前端页面的用户信息。
注册接口:/art/register/
功能点:实现提交用户名, 密码,邮箱 三个维度信息。注册表单,会员数据模型,注册逻辑处理
登陆接口:/art/login/
功能点:
(7) 留言板
接口url: /message
方法:POST
功能:通过定义消息表单,处理用户提交的留言信息,提交信息到后台,字段校验,错误信息展示等