论坛互动团队工作流程规范总结
前言
本流程规范由论坛互动组成员总结而成,在日后的工作中将根据项目开发流程的情况不断总结,更新此规范,务求提高开发的效率和项目的质量。
敏捷宣言及原则
宣言
我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:
- 个体和互动 高于 流程和工具
- 工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 响应变化 高于 遵循计划
也就是说,尽管右项有其价值,我们更重视左项的价值。
原则
- 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
- 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
- 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
- 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
- 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
- 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
- 可工作的软件是进度的首要度量标准。
- 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
- 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
- 以简洁为本,它是极力减少不必要工作量的艺术。
- 最好的架构、需求和设计出自自组织团队。
- 团队定期地反思如何能提高成效,并依此调整自身的举止表现。
需求阶段
- 开发、QA、用户一起讨论需求
- 确定需求的边界和测试边界
- 引导用户确认需求
- 需求在sprint中不能变更
- 需求的统一与检测
需求会议后,把需求列表放置上SVN上,在开发的过程中,开发人员需要对照需求列表,务必在实现功能的同时考虑此功能模块对应的所有需求点。
在功能实现的过程中,对应每一个需求点与用户方作出详细确认,如需修改需求列表的,修改后同步到SVN上,确保大家都能在SVN上拿到最新的需求列表。
设计阶段
- 数据库和代码设计方案及时共享
- 评估前要先想好自己的方案
- 在脑海中自己过一遍实现方案
- 不要过度设计
- 使用UML统一描述功能【李剑文】
开发阶段
- 遵循代码规范,确保代码可读性【秦鸿源】
- 建立代码沟通和审查机制【丁健勇】
- 重复的工作建立自动化脚本
- 功能完成演示
- 以前的bug分类总结
- 每天思考占时最长和最短的需求
- 建立应用相关的信息文档【待定】
- 新模块的开发
在做新模块新功能时,前期的讨论、准备和模块设计的时间充裕一些,把问题考虑周全,定出合理的模块实现方案。
在新模块的实现后,需要大家对新模块进行代码审核,让组员熟悉新模块的代码结构和实现方式,期间还可以提出优化方案,以便日后维护。
- 代码规范
对于新接口和特殊逻辑的代码接口,必须加上注释。
避免在代码上或者页面上出现硬编码(如forumId=19)的方式,应该采取静态常量来表示。
- 代码管理
对线上问题进行修复后,应该把主干上的代码及时合并到开发的分支上。
在开发提交SVN中,开发人员要写清楚提交代码对应的功能点或者对应修复的Bug ID。
- 功能测试
对于多人合作完成的功能模块,应该有人负责整合这个功能,并对其进行测试。
对于自己实现的功能,在实现完成后必须对照需求列表进行自测。
开发人员之间可以根据需求列表进行交叉测试,保证模块功能的质量。
自测阶段
- 重视单元测试【待定】
- 开发环境与其他系统有交互的,需求在开发的过程中确保与其他系统连通,并进行测试
- 代码提交SVN前跑测试
- 自动化回归测试【陈阳】
- 送测前成果展示,并预留修改时间
QA测试阶段
- 与QA一起搭建测试环境
- 测试包的更新
测试更新包应该由专门的开发人员统一负责打包并提交给测试人员。
更新打包时需要对主干上的代码进行对比,看是否还存在没有从主干上合并到分支的代码,如果有的话,需要先从主干合并到分支上。
考虑使用Hudson和脚本自动打包,由测试人员自己从SVN上拿到打好的测试包,更新到服务器。
- 按照优先级修复bug,不能只看自己的bug
- 仔细确认是否真正的是bug,合并重复的bug
- 测试完后将bug进行分类总结
- 用户验收会议
在大版本测试完成后,应该举行用户验收会议,让用户确认功能的完成。
- 回归测试
把测试包更新到测试环境的同时,需要列出本次更新有增加或者删除的jar包,配置文件,SQL语句,将来用于上线。
使用测试包进行回归测试时,测试人员应该先把测试机上原来的代码全部清空,再使用上线包进行测试。
把修改过的配置文件也打包在测试包上,测试人员与开发人员进行沟通,对比增加的内容并修改。
在测试人员进行回归测试的同时,开发人员也应该在测试环境上对本Sprint自己所做的功能进行检查。
上线阶段
- 严格按照上线计划执行
- 更新包必须经过测试
- 大版本要有预上线
- 上线比告知用户的时间提前,预留充足的异常处理时间
- 上线风险管理
定期进行对线上环境的检查,保证线上环境的正确性和可靠性。
以后对于项目上线都选择网上用户数量较少的时间(如早上),控制项目对用户影响的风险。
对于上线时需要运行的SQL语句,需要明确是在代码更新前运行还是代码更新后才运行,以免数据更新和代码更新的时间差内出血影响应用的状况。
对于新功能新插件,上线时我们可以先屏蔽入口,待上线后详细检查功能后,再对用户开放入口。
报障处理
- 固定时间处理报障,辨别优先级
- 丰富线上故障查找信息
- 提高报障处理效率(小工具、Q&A、用户接口人)
其他
- 按优先级处理事情,有效利用时间做重要的事
- 遇到问题多与有相关经验的同事交流
- 休息好,保持积极心态
- 不仅要把事情做完,更要做好
- 避免被打扰,与经常沟通的同事约定要时间
- 团队成员有统一的思想
- 持续反馈结果,不管是好是坏,勇于面对现实
- 加强组内沟通
- 项目时间管理
注重时间管理,提高对时间的敏感度,尽能力保证在承诺的时间内交付产品。
如果存在延迟的可能,应该及时地、尽早地提出,共同讨论原因,调动资源,重新确定解决方案。
- 项目效率管理
注重工作过程中的效率,当用户方、测试方提出紧急问题时,应及时到第一现场,用最有效的沟通方式观察问题和解决问题。
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)