我们只是熟能生巧而已。卓越来自于习惯,而非一时的行为。
亚里士多德
微软的团队划分:软件管理: 保证设计
开发 : 保证实现
测试 : 完善的检查每条路径,保证测试覆盖
传统软件开发流程:
瀑布模型
顺序进行。重视文档。文档的fix作为里程碑。
通过在分析和设计阶段进行仔细的工作,避免错误。
适合质量要求高,需求变化不大的项目。
如产品的维护作业或者移植作业等。
敏捷方法:
Scrum
首先对功能按照优先级进行划分,选出功能加入sprint backlog,然后一般以30天为周期。
完成定义的功能并保证完全可用。
对小型的相对自治的团队格外有效。
xp极限编程
通过与客户的紧密合作,更快的完成迭代和完美的代码。
存在问题:需求不稳定,缺乏文档,难以扩展到大型团队。
但xp的某些方法相当有借鉴性:
程序员测试 单元测试
代码重构
结对编程
持续集成 每完成一个关键任务,程序会被集成并编译入系统。
编码标准
尽早进行质量控制,尽早暴露出问题。
改进工作流程,态度决定一切。
质量控制应该及早应用于开发流程:
1.保证及早发现涉及和实现的问题。
2.让程序员有时间对代码和设计的修改做出响应。
3.测试员可以保证完成测试覆盖。
4.开发进度如期完成。
在软件开发过程中应用如下实践:
1.应用类设计和原型开发。
2.元编程增加灵活性和可维护性。
3.设计时考量性能,伸缩性,安全性。
4.学习有效地管理内存。
5.进行防御性编码。
6.主动进行调试。
7.采用自动化单元测试,并建立可重复的测试流程。
8.实现代码覆盖测试。