6. 代码的构建-代码的构建虽然只是整个项目工作的一小部分,但往往是明显的部分。其他同样重要的工作还包括需求、体系结构、分析、设计以及测试。在没有开发流程(所谓的“编码加修正”)的项目中,也会有这些任务,只不过被统称为“编程”而已。构建代码的佳实践包括每日构建和冒烟测试。Martin Fowler 进一步提出了 连续集成(continuous integration),这个概念还集成了单元测试和自测试代码概念。注意,即使连续集成和单元测试是通过 XP 流行起来的,您也可以在所有类型的项目中使用这些佳实践。我建议使用标准框架(比如 Ant和 JUnit)使构建和测试自动进行。(冒烟测试的关键点是用典型的测试用例来测试典型的可能应用和过程。采用JUnit,NuUnit
等测试框架后可以保证冒烟测试的自动化,持续集成这个概念很重要,持续集成重要的目的是尽早的发现和解决问题)
7. 对等审查 - 审查别人的工作很重要。经验证明这种方法可以及早消除问题,审查和测试一样有效,甚至比测试还有效。开发流程中任何构件都需要审查,包括:规划、需求、体系结构、设计、代码以及测试案例(test case)。Karl Wiegers 的文章 Seven Deadly Sins of Software Reviews 说明了执行对等审查的正确方法。对等审查有助于以快的速度提高软件质量。
8. 测试 - 即使日程安排再紧也不可以推迟或省去测试。测试是需要计划的软件开发的一个必不可少的部分。提前测试也很重要;这意味着要在开始编码前安排好测试案例,测试案例的开发与应用程序的设计和编码同时进行。同样也有许多现成的测试模式。
9. 性能测试 - 测试通常是用于检查应用程序缺陷的后一招。它是劳动密集型工作,通常只检查编码缺陷。体系结构和设计上的缺陷可能会漏掉。一种检查体系结构缺陷的方法是在部署应用程序之前对其进行模拟负载测试,并在性能问题真正成为问题前处理它们。(性能测试暴露的问题更多都是由于架构设计在对非功能性需求方面考虑不足)
10. 配置管理 - 进行配置管理涉及到了解组成您的系统或项目的所有构件的状态,管理这些构件的状态并发布系统的不同版本。配置管理比单独的源代码控制系统(比如 Rational Clearcase)管理的内容更多。同样也有针对配置管理的佳实践和模式 [13]。
11. 质量和缺陷管理 - 为项目建立质量优先级和发布标准很重要,这样可以制定一个计划来帮助开发小组开发出高质量的软件。当对项目进行编码和测试时,缺陷的出现和修正比率有助于测量代码的成熟程度。使用链接到源代码控制管理系统的缺陷跟踪系统也很重要。例如,使用 Rational ClearCase 的项目还可以使用 Rational ClearQuest。使用缺陷跟踪,可以在准备发布项目时对项目进行测量(gauge)。(小型项目可以使用一些开源免费的缺陷管理功能,如Bug Tracker等)
12. 部署(Deployment)- 部署是向用户发布应用程序的后阶段。如果您的项目进行到了这一步 - 那恭喜您啦!但仍然会有可能出错的地方。您要制定部署计划,并且您可以使用 Construx Web 站点上的部署清单。(硬件环境,软件环境,部署方法和步骤)
13. 系统操作与支持(System operations and support)- 没有操作部门不能部署和支持新应用程序。支持范围对于回答和解决用户问题至关重要。为缓解问题流,应用程序缺陷跟踪系统中引入了支持问题数据库。
14. 数据迁移(Data migration)- 多数应用程序都不是全新的,而是改善或者重写的现有应用程序。从现有的数据源迁移数据这本身通常是一个比较大的项目。这不是初级程序员能做的。它与新应用程序一样重要。通常新应用程序的业务规则更好,数据质量有可能更高。提高数据质量是一个复杂的主题,已经超出了本文讨论的范围。
15. 项目管理(Project management)- 项目管理是项目取得成功的关键。本文描述的许多其他的佳实践都和项目管理有关,出色的项目经理已经知道了这些现有的佳实践。我们推荐的项目管理权威著作是 Steve McConnell 编写的 Rapid Development [14]。如果把项目管理的其他清单和技巧的数目考虑进去,您会感到大吃一惊,居然有那么多的项目经理不知道这些技巧,并且也没有从以前的项目中吸取教训,比如:“如果没有计划好,等于计划着要失败。”一种管理困难项目的方法是通过使用时间定量(timeboxing)。
16. 衡量是否成功 - 您可以根据卡内基梅隆大学软件工程学院(Software Engineering Institute at Carnegie Mellon University)的业界标准软件能力成熟度模型(Capability Maturity Model,CMM)来衡量您的开发流程。多数项目处于 1 级(初级)。如果按照上面描述的佳实践和附带的文章,软件开发项目实施指南,中的执行,可以开发出更加成熟的软件,使项目取得成功。(软件能力成熟度和项目本身是否成功能否直接划等号?)
结束语
本文提供了一系列有助于提高软件开发项目成功率的佳实践。遵循这些佳实践,您的项目成功的机会会更大。