22月/180
【流程规范】规范文档:项目整体开发流程
流程
约定
序号
|
环节
|
负责人
|
参与人
|
约定
|
注意点
|
|
1 | 初审 | PM | RD+QA,可选参加 | 产品内需达成一致 | ||
2 | 复审 | PM | RD+QA | 评审->发现问题->修改->再评审 | ||
3 | 终审 | PM | RD+QA |
1)到达终审的前提是各方已经就需求达成一致
2)终审如果还存在需求问题则继续复审
3)终审后不再接受需求变更
4)RD需要确认设计评审时间(尽量控制在T+5之内)。
|
1)需求中需要包括demo
|
|
4 | 设计评审 | RD | PM+QA |
1)终审后T+3之内提供项目详细计划(包括测试计划)。
2)评审之前需要和各相关方线下达成一致。
3)设计评审时如出现重大问题则打回重审。
4)需产出设计文档、项目计划,项目相关文档沉淀在项目各个子模块中。
|
1)计划制定时需要注意考虑风险点和buffer
|
|
5 | 开发 | RD | PM+QA,协助 |
1)后台技术选型:http、mtthrift、medis、mysql
2)FE和后台交互方式:前端所有页面集中在一个工程中,后台所有服务通过API接口提供数据。
3)所有DAO层使用生成工具生成。
4)单元测试精力集中在service层,初期各模块负责人定义好需要单元测试的service范围。
5)项目初期定义交叉review分组,每周两次进行交叉review。
|
1)监控优先级放低 | |
6 | 联调 | RD | PM+QA,协助 |
1)接口需要在设计阶段定义好。
2)接口假数据由调用方自行组织。
3)接口提供方需要先进行接口的自测。
|
1)联调计划安排需要考虑各方进度情况。 | |
7 | 测试用例 | QA | PM+RD,协助 |
1)确认冒烟点
2)测试用例完成后需要安排用例review(PM必选,RD可选)
3)PM同学给QA开好测试task,以方便后面记录测试bug
|
||
8 | 测试 | QA | PM+RD |
1)提交测试之前保证冒烟点功能通过
2)提交测试之前需要完成codereview、静态代码检查
3)提测需要发送提测邮件
4)模块完成后QA即可介入测试
5)设计同学验收样式设计是否符合预期,PM和QA一起进行功能测试
6)测试完成后QA回复提测邮件,周知测试完成
|
1)压力测试优先级放低
2)确认浏览器支持情况
|
|
8 | 上线 | RD | PM+QA |
1)线上服务器统一收集需求统一申请
2)需要确保QA验收通过
3)上线前需要有上线计划和回滚计划
|
12月/180
【开发规范】规范文档:MySQL规范
- 基本规范
- 命名规范
- 库表设计规范
- 索引设计规范
- 字段设计规范
- SQL设计规范
- 行为规范
- 线上操作
- 数据变更
基本规范
(1) 使用INNODB存储引擎
(2) 表字符集使用UTF8
(3) 所有表和字段都需要添加注释
(4) 不在数据库中存储图⽚、文件等大数据
(5) 禁⽌从测试、开发环境直连线上数据库
命名规范
(1) 表名:必须使用小写字母,多词之间以”_“(下划线)分隔,表名非复数名词,禁止使用mysql保留字。
(2) 字段名:必须使用小写字母,多词之间以”_“(下划线)分隔,字段名使用名词,禁止使用mysql保留字。
(3) 索引名:普通索引以”idx_“ 加上字段名命名;
唯一索引以”uk_“加上字段名命名;
组合索引的命名须按顺序包含索引中的所有字段。如:”a,b“的组合索引,命名为”idx_a_b“,名称过长可适当采用缩写。
(4) 临时库、表名必须以temp为前缀,并以⽇日期为后缀,如:temp_img_syn_to_mdc_table
(5) 备份库、表必须以bak为后缀,并以日期为后缀,如:hotel_sm_boss_info_bak20150615
(6)名称应该清晰明了,能够准确表达事物的含义,最好可读,遵循“见名知意”的原则。
库表设计规范
(1) 一条完整的建表语句中应包含必要的字段、主键、合理的索引(综合代码中所用到的条件语句创建合理的索引)
(2) 字段应当有注释,描述该字段的用途及可能存储的内容,如枚举值则建议将该字段中使用的内容都定义出来
索引设计规范
(1) 主键准则
a、表必须有主键
b、建议使用自增id作为主键
(2) 重要的SQL必须被索引,比如:
a、UPDATE、DELETE语句的WHERE条件列
b、ORDER BY、GROUP BY、DISTINCT的字段
(3) 一般原则
a、创建复合索引时区分度较大的字段放在最前面,不在区分度小的数列上建立索引,例如“性别”
b、核⼼SQL优先考虑覆盖索引
c、避免冗余和重复索引
d、索引要尽量选择离散度比较大的字段,选择查询频率比更新频率高的字段。
e、索引字段的默认值不能为NULL,要改为其他的default或者空。NULL非常影响索引的查询效率。
f、 尽量不使用外键
g、 新建的唯一索引必须不能和主键重复
h、不使用%前导的查询,如like“%xxx”,无法使用索引;不使用反向查询,如not in / not like;无法使用索引,导致全表扫描
i、 尽量用多列联合索引代替多个单列索引
j、 能使用唯一索引就要使用唯一索引,提高查询效率
字段设计规范
(1) 尽可能不使用TEXT、BLOB类型
(2) 用DECIMAL代替FLOAT和DOUBLE存储精确浮点数
(3) 越简单越好:使用TINYINT来代替ENUM类型
(4) 如果可能的话所有字段均定义为not null
(5) 禁止在数据库中存储明文密码,把密码加密后存储
(6) 不允许使用ENUM
(7)使用TIMESTAMP存储时间. 因为TIMESTAMP使用4字节,DATETIME使用8个字节,同时TIMESTAMP具有自动赋值以及自动更新的特性.
SQL设计规范
(1)强烈建议使用INNER JOIN代替子查询。
(2) 避免在数据库中进⾏数学运算(MySQL不擅长数学运算和逻辑判断)
(3) 不要用select *,查询哪几个字段就select 这几个字段
(4) 使用in代替or,in的值不超过1000个
(5) 任何对列的数学运算操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要
尽可能将操作移至等号右边。
(6) limit分页注意效率。Limit越大,效率越低。可以改写limit,比如例子改写:
- select id from t limit 10000, 10; => select id from t where id > 10000 limit 10;
(7) 在SQL语句中,禁止使用前缀是%的like
(8) 不使用负向查询,如 not in/like
(9)SQL尽量简单,尽量少的包含业务逻辑,业务逻辑交给应用处理。
行为规范
1、批量导入、导出数据必须提前通知DBA协助观察;
2、批量删除更新操作,如影响条数超过1000的update、delete操作,需要联系DBA进行审查,并让DBA执行
3、线上数据回滚,申请新DB,请联系DBA;
4、不在业务高峰期批量更新、查询数据库;
5、重大项目的数据库方案选型和设计必须提前通知DBA参与