敏捷项目管理:开发输出规范(时序图、接口设计、数据库表设计)

目标

通过严格的规范来统一输出、达成共识、提升质量。

时序图规范

敏捷项目管理:开发输出规范(时序图、接口设计、数据库表设计)

一、原则

  1. 有明确的交互过程的上下文。

  2. 清晰标识参与过程的交互对象。

  3. 为每个对象设置生命线。

  4. 从初始消息开始,依次画出随后消息。

  5. 考虑消息的嵌套,标示消息发生时的时间点。

  6. 说明时间约束的地点。

二、评审

评审时间:根据迭代计划时间进行(QA跟进提醒)

评审方式:会议形式

发起人员:SM组织团队主动发起邀请“评审团”参加

评审团:PO、TM、QA、技术专家、其他组SM(可选)

评审流程

  1. 以团队为单位(非个人或部分人),结合时序图上不同的角色、对象,对团队本迭代认领的故事进行串讲,包括对“需求理解”、“技术实现”和“任务分工”三大部分的介绍。

  2. “评审团”会随机抽查团队成员进行串讲。

二次评审:根据评审情况决定是否需要重复以上步骤进行二次评审。

接口规范

一、接口分类

  • 查询类接口

  • 操作类接口

  • 上传下载类接口

  • 推送类接口

二、接口编写原则

实用性

  • 数据格式:使用的数据格式,要综合考虑各个端(客户端、前端)的通用性,有较好的跨平台性,且占用字节数较少。

  • 接口执行效率(接口访问速度)

    :移动端有限的网络条件下,要求接口响应速度要快,所以在开发过程中尽量选择效率高的框架。

  • 数据量:按需分配,需要什么数据就返回什么数据,过多的数据量影响处理速度,最重要的是影响传输效率和浪费用户流量。

  • API缓存:这点比较重要,不管是文件缓存还是memcache缓存。

易用性

  • 接口、参数命名准确:无论是接口还是参数,命名都应该有意义,让人一目了然。

  • 一个页面尽可能就用一个接口:现在很多的APP页面都有广告、焦点图、文章列表等,对于这些不同格式的数据,不可能都分配一个接口,这样加大了APP请求接口数,影响响应速度。建议服务器端尽可能处理好数据后通过一个接口返回给APP客户端。

  • 接口数据、状态:接口必须提供明确的数据状态信息,不管是成功的,还是失败的。

  • 接口要有可扩展性:方便后期功能性调整,接口应具备可扩展性。

安全性

  • 接口安全:客户端和服务器通过约定的算法,对传递的参数值进行验证匹配。

  • 加密规范:在传递用户名密码时,应采用规范的加密算法如MD5、RSA、DES,进行数据通信请求。

  • 接口版本控制:对于接口版本控制,需要应对不断的APP版本升级,新、旧接口的处理,因而需要关注接口版本控制。

三、接口设计原则

  1. 尽量减少参数传递:请求接口操作时,应减少参数传递,如某些操作只需要ID不需要其他参数,这时候就应该只传递ID这个参数。

  2. 尽量避免接口重复性:调用接口时,尽量提高接口复用性,减少HTTP请求,提高程序稳定性。

  3. 数据类型规范:调用接口时,应标注参数数据类型,以及是否可为空或者默认字段,如标注了Int型字段,就不能返回“null”的String类型字段,否则容易造成程序APP出现数据类型解析异常。

  4. 编码规范:整个API接口开发过程中,应标注接口编码方式,目前建议采用UTF-8编码,UTF-8通用性以及URL请求方面都较规范。

  5. 请求方式:编写API接口应该标注请求方式,如:GET、POST

  6. GET和POST方式:在数量较小情况下可以使用GET方式,但数据量超过1024字节就应该采用POST方式,避免出现请求失败或者请求异常的问题。

  7. 返回接口调用状态:所有API接口都应该统一标识调用的成功失败信息和规范错误编码信息,以及必要的提示字段信息。

  8. 安全机制:接口应规范验证签名机制,用户登录后统一调用KEY对接口安全验证。

  9. 参数说明:应标注参数名称、是否必选、数据类型及范围、说明以及“否(必选)”传递默认的参数。

四、管理与实施

  • 版本管理:接口的任何修改都有迹可循,有提交记录,可以结合使用rap+gitlib的wiki进行管理。

  • 接口需提供测试用例:为了方便接口使用者高效的进行接口联调、希望接口提供者能提供一个默认的接口测试用例。

五、评审

  • 评审时间:根据迭代计划时间进行(QA跟进提醒)

  • 评审方式:会议形式

  • 发起人员:SM组织团队主动发起邀请“评审团”参加

  • 评审团:PO、TM、QA、技术专家、其他组SM(可选)

  • 评审流程

  1. 以团队为单位(非个人或部分人),对新增、修改的接口的设计思路进行讲解。

  2. “评审团”结合“接口编写原则”和“接口设计原则”进行评审。

  • 二次评审:根据评审情况决定是否需要重复以上步骤进行二次评审。

数据库表设计规范

  • 示例:E-R图

敏捷项目管理:开发输出规范(时序图、接口设计、数据库表设计)

  • 补充:E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

一、原则

  • 有明确的所属数据库说明。

  • 表名称命名规范

  1. 使用小写英文以及下划线组成,尽量说明是那个应用或者系统在使用的。

  2. 相关应用的数据表使用同一前缀,如社群circle_

  3. 备份数据表名使用正式表名加上备份时间组成。

  • 字段名称命名规范

  1. 字段名称使用单词组合完成,首字母小写,后面单词的首字母大写,如userId

  2. 表与表之间的相关联字段要用统一名称,不好的案例:live_profile表中biz_id对应的是circle_id

  • 字段类型规范

  1. 用尽量少的存储空间来存数一个字段的数据,如:能用varchar(20)的就不用varchar(255)

  2. 表与表之间的相关联字段要统一格式,不好的案例:如表1中string类型的账号0123456,在表2中转成int类型的123456

  • 完整性约束规范

  1. 尽量避免NULL

  2. 根据业务特性,合理的用Check来实现约束,如直播号价格>=0

  • 合理创建索引

  1. 结合表的大小、读写频率,合理创建索引。

  • 数据物理删除

  1. 用isDelete标识数据删除状态(0:正常 1:删除)

  • 尽量使用视图

  1. 简单性:看到的就是需要的

  2. 安全性:通过视图用户只能查询和修改他们所能见到的数据

  • 混用范式化和反范式化,减少数据冗余、局部依赖、传递依赖

  • 范式优点

  1. 范式化的更新操作通常比反范式化要快

  2. 当数据较好地范式化时,就只有很少或者没有重复数据,所以只需要修改更少的数据

  3. 范式化的表通常更小,可以更好地放在内存里,所以执行操作会更快。

  4. 很少有多余的数据意味着检索列表数据时更少需要 DISTINCT 或者 GROUP BY语句。

  • 反范式优点

  1. 不需要关联表,则对大部分查询最差的情况——即使表没有使用索引——是全表扫描。 当数据比内存大时这可能比关联要快得多,因为这样避免了随机I/0。

  2. 单独的表也能使用更有效的索引策略。

二、输出格式

  • 表名: circle_xx

  • 日期:2018-04-28

  • 版本:1.0

  • 描述:保存社群基本信息

  • 具体内容

  • circleId int,自动增量 用户代码

  • circleName char(12) 用户名字

  • ......

三、评审

  • 评审时间:根据迭代计划时间进行(QA跟进提醒)

  • 评审方式:会议形式

  • 发起人员:SM组织团队主动发起邀请“评审团”参加

  • 评审团:PO、TM、QA、技术专家、其他组SM(可选)

  • 评审流程

  1. 以团队为单位(非个人或部分人),对新增、修改的数据库表的设计思路进行讲解。

  2. “评审团”结合“数据库表设计原则”进行评审。

  • 二次评审:根据评审情况决定是否需要重复以上步骤进行二次评审。

写在最后

需要pdf的朋友,可以私信“开发输出规范”

阅读起来可能更加的清晰方便

敏捷项目管理:开发输出规范(时序图、接口设计、数据库表设计)

pdf截图


分享到:


相關文章: