这篇文章主要介绍项目组这边软件的开发流程和生命周期。由于这是一个不断完善的过程,难免有些不足的地方,大家一起总结和更新。软件从设计,开发,测试,上线和维护是一个不断迭代的过程。为什么要不断的迭代,主要是受需求的变化和性能的要求影响的,2013是大数据爆发的一年,对性能的要求尤为突出,这里在文章最后以我们的项目为背景进行相关介绍。
1.AT
这个AT的全称是Acceptance testing验收测试。它是部署软件之前的最后一个测试操作。我们这边借鉴了用例驱动开发的原理,一开始就要写AT,其实就是测试用例。主要是介绍你开发的软件要达到什么目的,譬如点击某个按钮会出现什么效果,服务器的承受压力上限是多少访问量。这个的好处就是你能知道你要做的目的是什么,更有目标性。
2.Design
根据你做的项目的大小实际的设计量不一样。如果你做的是一整个项目,那么你的设计应该是整的系统的实现方案,你要做的是有概要设计和详细设计。需要评估你的工作总量,大的架构图,还有具体的接口确定,并给出用例图,时序图,活动图,部署图,流程图。小的项目可以不需要这么规范,只需要搞清楚你应该在那些地方改就可以了。为了自己记忆方便和跟踪方便也可以用简单的txt文档记录一些东西,作为备忘录。
3.Coding
这部分的工作实际上花费的时间并不是最多的。尤其是你只需要在原来的系统中添加部分功能时,首先搞清楚的是你涉及到哪些模块和业务范围,用到的数据库和表有哪些。编码规范是需要你掌握的,这个还好由于集团是开放的,代码在项目组中都是公开的。只要你想学一定可以学到的。再有要了解最基本的设计模式和框架,公司主要是用java,集团的牛人很多,自己基于Spring搞了一套webx框架。框架有很多的好处,最好的一点就是便于维护,不同的人只要熟悉框架可以在很短的时间内看懂系统的整体情况,可以很快的找到自己想要的代码并做添加和修改。
4.Unit testing
这个是开发人员自己完成的。自己写的代码自己去写用例测试,这样做可以方便维护,和以后的集成测试,回归测试。这个很重要,重要还有另外一个方面就是有助于一个新人很快的了解代码的功能和使用,也非常有助于新人的学习。最好的学习系统方法就是跑测试用例,从最基本的dal层开始一层一层的跑用例,再到biz,web层。这样一路跟踪下来估计就会理解不少系统的架构和构成。要养成一个好的习惯,代码在发布的时候先要通过单元测试,没有通过的一定要通过,严格的要求是要达到100%的通过率。这样才有意义,为什么呢?原因就是不仅是在web正确,而且要保证在dal,biz层每一个功能模块都要正确,这样从底层保证代码的质量,在web层或之上出了问题就会减少代码的排查范围。java不得不说有个特点就是调试bug非常困难,缩小bug的预排查范围是非常重要的。
5.Review
这个过程是可以直接提升自己代码质量和排错的最好机会。在代码写好自己也单元测试好以后,再请其他的同学帮忙看一看就能直接指出你代码中出现的问题。可以进一步减小bug出现的概率。还有就是新同学让其他同学看看,可以纠正你写的代码不规范的地方。这里体现了两个原则:现场实践和缩小范围。现场实践就是coding的能力提高最快的就是多实践,多发现问题,及时改正。
6.Turn Testing
交给其他的同学测试。这个有适用范围的,一般来说就给review的同学。如果这个功能过于复杂,就应该交给专业的测试人员。
7.Release
发布的流程应该是一个比较严格的过程。大到一个系统的上线,小到一个小功能的添加都应该遵循一个非常严格的流程,不是随随便便就上线了的。阿里巴巴这样的公司,如果是因为一个小的问题影响了几亿人的用户体验,在行业的影响是巨大的,公司的损失就更不用说了。小微这边也不例外,在产品发布之前有三套环境需要通过,开发,测试和预发布环境。每一套环境都是必不可少的,开发是软件诞生和完善的地方,测试是检验软件可不可行的地方,预发布是发布之前的最后一道保险,测试环境可能允许崩溃但是欲发布环境不允许,因为它和真实的环境是一样的。这个环境出了问题,那么软件部署到真实的发布环境(生产环境)肯定也会出问题。预生产环境出了问题后应该第一时间修复。