您如何管理项目生命周期?

时间:2009-01-29 21:02:56

标签: version-control project-management

您如何管理项目生命周期?

例如:您是否从模板开始?您是否使用SVN等版本作为权威来源?您是否存档项目,如果是,何时以及如何?当项目恢复(工作恢复)时,如何处理?您是否使用自动脚本来执行创建IIS站点,数据库,存档,启动等操作?

特别感兴趣的是管理不同发展点的许多项目。

4 个答案:

答案 0 :(得分:6)

开发:我们不是从模板开始,因为世界变化足够快,使模板维护成为全职工作。我们鼓励每个人使用相同的IDE(Eclipse),以便他们可以在他们的环境中互相帮助。

项目管理:我们正在使用GForge来管理我们的项目。 Sourceforge略胜一筹,但GForge便宜得多,并且拥有不同的许可费模式。 GForge整合了CVS,SVN,文档存储,问题跟踪器,并且很好地集成了所有内容。这样可以轻松查看项目所在的位置。打开问题,关闭连接代码更改的问题,所有内容都集成在一起。

版本控制虽然我们尝试过SVN,但我们切换回CVS,因为它更符合我们的需求并且工作正常。

备份:我们的GForge服务器(包含所有项目和源代码)正在VMWare EX服务器上运行。备份每天在VM级别完成,如果我们认为由于某种原因需要更频繁的恢复点,我们会制作VM快照。

恢复项目:这在我们的业务中很常见。每个项目都有它的所有库和CVS中的构建要求。该项目始终有一个最新的开发手册,该手册描述了运行开发环境的所有步骤,并且有一章介绍了非默认的所有事项,需要注意。我们尝试在尽可能默认的环境中构建软件,以便开发人员不必花费数天来调整他们的设置。

几乎所有项目都是使用Maven构建的,这也为我们的开发人员提供了便利。通常只需要几步就可以恢复项目:

  • 下载eclipse
  • 通过SSH连接到CVS(extssh内置于Eclipse中)
  • 签出项目(默认“签出”选项)
  • 运行“Maven Eclipse”并刷新Eclipse
  • 在Eclipse中运行unittests以查看是否一切正常。

构建:我们所有的项目都建立在单独的构建服务器上。如果所有单元测试都成功,每天早上构建服务器都会完成构建并标记CVS。在白天,每小时构建一次,当有失败时,团队会自动收到电子邮件。通常我们每个项目使用一个构建服务器,它是一个简单的luntbuid服务器(Linux,Tomcat,Luntbuild)。

构建服务器,有时甚至是开发人员机器都是VM。这使得恢复项目非常容易。从文件服务器获取VM,启动它,你就可以了。

构建服务器创建每日站点,显示单元测试覆盖率统计信息,复杂性度量,CVS活动和开发人员活动(谁更改了什么以及何时更改)。

我们所有的软件都内置了自建数据库脚本。将配置文件指向数据库,启动软件,并确定它需要对数据库本身做什么。这真的很方便,因为构建服务器可以启动软件。无需特殊步骤。我们的客户也很高兴,他们永远不必担心他们的数据库或升级脚本。

整个项目生命周期在GForge中进行管理,记录和跟踪,并添加了一些外部电子表格以进行预算跟踪,因为这样更容易。

你是否有一个集成的项目服务器,我认为拥有一个系统非常重要。这使您可以在项目之间切换开发人员而不会丢失它们。它节省了时间。特别是当客户在2或3年后回复您的旧软件修改时(是的,会发生这种情况)。

我们使用的所有东西都是开源的(你甚至可以使用GForge的开源分支)。它不在工具中,而是你如何使用它们。

答案 1 :(得分:2)

这取决于工作的性质。在私人客户的家中工作时,我首先为客户打开一个文件夹,其中包含一系列标准文档,我自定义这些文档,例如合同,发票,报表,需求,测试,代码存储库等。随着项目的开发,我根据需要添加/修改目录。

如果我必须返回项目,我会重新打开该目录,对于任何非常见组件,创建一个新目录。例如,如果我的客户端构建了一个Web应用程序,现在他们需要第二个应用程序,我将使用相同的目录来创建发票和合同,并为代码库,需求和测试创建新目录。

在备份方面,我将工作存档到我达到里程碑的任何地方,但代码除外,我每天至少备份这些代码。在每个项目结束时,当我关闭合同时,我将整个目录压缩并将其存储在远程服务器上。

答案 2 :(得分:1)

我创建了包含项目阶段的文件夹,例如“初始化软件过程”,我们放置了类似商业建议的文档,我们使用另一个文件来满足构建,发布,会议记录等要求。

我们将这些保存在subversion存储库中,但它实际上取决于您使用的是哪种方法,还取决于您如何处理配置管理以及您希望如何组织。是的,我们在大多数工件上使用模板,因此我们在某种程度上保证了产品的质量。

答案 3 :(得分:1)

至于源代码,我们在Subversion存储库中拥有它。每次发布后,我们都会创建一个分支 - 新功能只会添加到当前分支(下一个版本将基于该分支),在当前和旧分支中完成关键错误修复(因此我们可以为该版本提供修补程序)客户目前有)。

至于属于某个版本的所有文件 - 来自规划&资源表到我们创建的软件的规范,测试用例,用户和技术手册等 - 我们将它们存储在Sharepoint门户网站中。此Sharepoint站点的优点是用户可以通过网站访问(因此无需授予对您的存储库的管理访问权限;-),您可以精确控制访问权限,并且您可以启用版本控制。我们还使用标记来标记文档是属于特定版本(例如Service Pack xy)还是产品,或者它是否通常有效。

关于脚本,我们使用几个来执行例如每晚构建加单元测试(我们通常为最后一个和当前版本执行此操作),还要在外部测试服务器上部署完整的软件解决方案(包括IIS站点创建,数据库数据模型升级......)。这些是nant脚本,为路径,版本号等使用了大量变量。因此,为新版本复制和修改它们非常容易。