软件研发,是一群人的智力活动,复杂度如同是构造通天塔,如果没有统一的沟通方式和语言,互相的理解会出现偏差,进而导致项目问题。
以下,是在个人总结的在开发的过程中,结合实用的工具来提升每个开发活动的方法。如果应用到平常的研发活动中,会很避免很多研发中的基础问题。

总体上研发工具包括以下工具,这里指的主要是处于稳定期的,大家常用的工具。
Eclipse,Intellj,Maven,Git,
Confluence 管理项目的文档
Jira 来管理工作进展,
Kibana来查询log。http://storysky.blog.51cto.com/628458/1158707
Dubbo admin管理工具

服务端开发的行为准则
功能设计
需求管理, 使用 Confluence来保存文档,拆分系统story。拆分到不同的模块。
功能管理,使用 Jira来管理拆出来的任务,需要开发及时的更新进度。
技术设计,使用confluence保存所有的架构设计,详细设计,数据库设计
架构设计,使用StartUML保存。
详细设计,使用StarUML产出类图,序列图
数据库设计,保存建表的SQL语句。

开发阶段
代码规范,依赖 Sonar来解决Java代码中的静态语法问题,不同语言,不同解决办法。
代码格式,依赖CheckStyle来解决代码格式问题。
代码提交,依赖工具Phabricator来做CodeReviw。和Git结合的工具。Gerrit。
单元测试,针对单个模块的逻辑单元测试。
集成测试*,针对主流程的集成测试,正常的数据输入流程。单独的部署并运行的工程,测试核心功能。类似白盒测试。 ---难度巨大, 需要在项目开始的时候,就构建一个这样的工程。
持续集成,使用Jenkins工具来做持续集成,编译,运行单元测试。

功能联调*,必须人工参与。

测试阶段
测试环境,使用 Jenkins工具部署,提供独立的部署环境。开发提供代码路径。
测试用例*,针对用例有特定的管理系统,可以执行对代码的黑盒测试。最好是可以通过代码、针对接口完成。
代码扫描,使用 Sonar扫描代码,并将问题发邮件给对应的模块owner。
问题管理,使用 Jira来管理测试过程中出现的bug。

发布管理
预发发布,一键发布,为系统准备好隔离的环境,需要准备线上测试的账号。
正式发布,一键发布,管理好线上机器,发布包。
灰度发布,针对新的APP发布,仅开放给部分的特定用户(城市,id)维度,


研发过程中,有些工作是用来提高系统可用性的。
配置管理,解决运行过程中的配置变化问题。配置变动无需重启。
并发测试,针对核心接口的性能压测。满足xxx个并发请求。
结果可视,测试结果的数据可视,上线信心充分。
业务监控,流量监控,错误率监控。实时感知线上问题。可以考虑 PinPoint

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐