发展:我们不从模板开始,因为世界变化得足够快,使得模板维护成为一项全职工作。我们确实鼓励每个人使用相同的 IDE (Eclipse),以便他们可以在各自的环境中互相帮助。
项目管理:我们正在使用 GForge 来管理我们的项目。 Sourceforge 稍好一些,但 GForge 便宜得多,并且有不同的许可费用模型。 GForge 整合了 CVS、SVN、文档存储、问题跟踪器,并将所有内容完美地集成在一起。这样可以很容易地看到项目所在的位置。开放的问题,以及连接代码更改的封闭问题,一切都是集成的。
版本控制:虽然我们尝试过 SVN,但我们还是改回了 CVS,因为它更符合我们的需求并且工作得很好。
Backups:我们的 GForge 服务器包含我们所有的项目和源代码,在 VMWare EX 服务器上运行。每天都会在虚拟机级别进行备份,如果我们认为出于某种原因需要更频繁的还原点,我们会创建虚拟机快照。
复兴项目:这在我们的业务中很常见。每个项目在 CVS 中都有它的所有库和构建要求。该项目始终有一个最新的开发手册,其中描述了运行开发环境的所有步骤,并且有一章包含所有非默认的需要注意的事项。我们尝试在尽可能默认的环境中构建软件,以便开发人员不必花费数天时间调整他们的设置。
几乎所有项目都是使用 Maven 构建的,这也让我们的开发人员的工作变得轻松。通常恢复项目只需要几个步骤:
- 下载日食
- 通过 SSH 连接到 CVS(extssh 内置于 Eclipse 中)
- 签出项目(默认“签出”选项)
- 运行“Maven Eclipse”并刷新 Eclipse
- 在 Eclipse 中运行单元测试以查看一切是否正常。
Builds:我们所有的项目都构建在单独的构建服务器上。每天早上,构建服务器都会进行完整的构建,如果所有单元测试都成功,则会标记 CVS。白天,每小时进行一次构建,当出现故障时,团队会自动收到一封电子邮件。通常我们每个项目使用一个构建服务器,它是一个简单的 luntbuid 服务器(Linux、Tomcat、Luntbuild)。
构建服务器,有时甚至开发人员机器都是虚拟机。这使得恢复项目变得非常容易。从文件服务器获取虚拟机,启动它,然后就可以开始了。
构建服务器创建每日站点,显示单元测试覆盖率统计数据、复杂性测量、CVS 活动和开发人员活动(谁更改了什么以及何时更改)。
我们所有的软件都内置了自建数据库脚本。将配置文件指向数据库,启动软件,它就会计算出需要对数据库本身执行什么操作。这真的很方便,因为构建服务器可以启动软件。无需特殊步骤。我们的客户也很高兴,他们永远不需要担心他们的数据库或升级脚本。
整个项目生命周期都在 GForge 中进行管理、记录和跟踪,并添加了一些用于预算跟踪的外部电子表格,因为这更容易。
无论你是否有集成的项目服务器,我认为拥有一个系统非常重要。这使您能够在项目之间切换开发人员,而不会迷失方向。它节省时间。特别是当客户在 2 或 3 年后回来找您对旧软件进行修改时(是的,这种情况发生了)。
我们使用的所有东西都是开源的(您甚至可以使用 GForge 的开源分支)。重要的不是工具,而是你如何使用它们。