2009-11-25 38 views
18

我负责找到一个很好的方式来记录我正在处理的软件项目。什么是记录软件项目的好方法和坏方法?

什么事情对文档很重要?代码和设计的文档主要以评论的形式出现在代码中?我们是否应该直接在源代码控制中使用代码来创建文本文件或Word文档?我们应该使用wiki吗?

需要考虑的因素包括当前团队创建文档的容易程度,以及其他开发人员稍后如何查找,更正和扩展文档。我从很多项目中获得的经验是,开发人员往往不写文档,因为编写系统太复杂或者开发人员不友好,而且几年后,新开发人员很难找到所写的小文档。

我对您在类似项目中使用的方法感兴趣。什么运作良好,哪些运作不好,为什么?

关于该项目的一些关键事实:

  • 该平台是C#和.NET。
  • 我们使用Visual Studio和Team Foundation Server进行源代码管理和工作项目(任务)管理。
  • 我们使用Scrum和测试驱动开发,并受到领域驱动设计的启发。
  • 该软件由一组Web服务和两个GUI客户端组成。
  • 其他客户将在未来与Web服务集成。整合将由其他团队的其他开发人员完成(所以Web服务构成一种API)。
  • SharePoint在整个开发环境中广泛使用。大多数项目都有一个SharePoint网站,包括我们的。
  • 在我们项目的SharePoint网站上,我们目前有大量MS Office文档,包括需求,设计,利益相关方演示文稿等。保持所有内容都是最新的。
  • 我们还为开发团队开发了一个SharePoint wiki,我们在这里以非结构化的方式记录事物。例子包括我们的构建脚本是如何组织的,我们的测试策略,编码指南。
  • 该软件是一个相当大的金融机构的内部应用程序。
  • 该软件由6人组成的团队在大约1年的时间内开发而成。
  • 开发人员只是为这个项目聘请的顾问,并且将来无法提供帮助(除非客户决定为此付费)。
  • 客户对如何记录此类项目几乎没有指导。
+1

请检查这些问题:http://stackoverflow.com/questions/tagged/documentation。这些适用于你的情况?你的情况与这些有何不同?重复http://stackoverflow.com/questions/501074/recommendations-for-documentation-with-an-open-source-project – 2009-11-25 11:41:22

+0

其中很多都是相关的,但我认为重新开始讨论这个主题是有用的等一下。另外,很多讨论都围绕着用于生成文档的工具等。我对这些概念更感兴趣,为什么有些方法可行,为什么其他方法失败。 – jonsb 2009-11-25 12:01:37

+0

@jonsb:请不要通过再次提问相同的问题来“重启话题”。请用新信息更新现有问题。请参考现有问题。简单地重复询问现存的问题是无礼的。我们已经回答了它。 – 2009-11-25 16:53:26

回答

3

首先也是最重要的一点,就是用NDoc可以解析它们的方式写下评论。这是让代码本身记录下来的最好方法,因为开发人员必须非常少地更改其开发实践,并且可以生成解释代码的页面,而无需查看代码。

其次,让开发人员编写文档并不容易,而让他们这样做可能是徒劳无益的。这是Fogbugz等产品发挥作用的地方。他们将帮助用门票来管理开发,帮助跟踪支票登记,并在完成迭代时生成发行说明。

总之,您最好的选择是找到适合开发者现有流程的最有效的解决方案。如果它很少影响他们的发展过程,他们将更有可能采用该系统。

+0

开发者是否阅读了使用NDoc生成的文档?或者他们是否像代码本身一样快乐阅读评论?另外,我觉得使用NDoc会让人们在代码中写很多不必要的注释,只是为了让生成的文档中包含每个类和方法。 – jonsb 2009-11-25 11:50:43

+0

我一直在研究的项目是用java编写的,我们对JDoc进行了评论,而且我发现评论getter和setter以及其他一些东西可能有些过火,但同时它的优点养成总是至少写一两句关于该方法的习惯。我们不会写入传递给函数的每个参数或函数的每个返回值的信息,但我们总是至少放置1个句子来解释我们正在做的事情。是的,作为一名开发人员,我查看了文档,他们更容易阅读,并且更容易找到功能。 – Zoidberg 2009-11-25 12:15:41

6

G'day,

绝对使用维基。我推荐TWiki,因为它是一个优秀和广泛的维基实现,不需要太复杂的安装和管理。

这里有一些初步想法。

分类:

开始了与你想要营造的初始本体,但

  • 让人们根据需要添加新的类别或子类别,
  • 让人们根据需要修改(子)类别,也许按照此协议达成协议,所以对于基本上相同的东西,您不会得到多个名称的碎片。
  • 让任何初始(子)类别如果留空,就会枯萎并死亡。在项目结束时执行此操作,因为有些区域可能只有项目结束时才会有条目。

标记:

开始使用标签云。顺便提一下,这是TWiki的一个很好的插件,可以在项目的早期阶段开始分类内容。改造标签几乎是不可能的。提前开始标记也可以让人们搜索可能已经存在的信息,而不是在多个地方找到相同的信息。

HTH我会回来,并添加更多的点,因为我认为他们。

+1

恕我直言,维基百科对于静态信息非常有用,但是如果你有一个项目有几个不同的版本,你也需要对文档进行版本管理。所以文档应该像源代码一样流入分支。 – schoetbi 2009-11-27 14:27:47

+0

@schoetbi,我同意,但这是文档的一个非常具体的领域。当一个项目的不同版本发生拆分时,我已经看到维基工作非常成功。当发生分裂时,创建新页面以记录版本的个性。也就是说,一个页面覆盖了常见的方面,然后该页面通过链接更新到用于指定新版本的不同特定方面的新页面。 – 2009-11-27 15:01:38

8

对我来说最糟糕的是比缺少文档是多余的的文档。

请记住,是的:记录您的项目非常重要,而且您的文档的主要部分始终有风险永远不会被读取。

因此,我认为一个好的出发点在于考虑您的文档更像是您可能用于向您的项目介绍新开发人员的内容,而不是您对软件内部工作的详细描述。

+2

伟大的一点,太多的文档,你最终花费尽可能多的时间来维护文档,因为你维护项目。 – Zoidberg 2009-11-25 12:11:46

+2

举一个你知道的软件的例子,它有“超过必要的文档”。即使文档不会被读取,它也可以帮助程序员更好地理解问题并查看差距和可能的错误。 – 2011-12-12 03:35:00

+1

@kami我认为这一点超出了文档不被阅读和进入,难以维护。如果您对3个核心功能进行更改,您是否需要更新60个页面?有一个权衡,找到平衡很重要。 – vol7ron 2013-04-30 13:49:28

10

我认为要记录的最重要的事情是决定。这适用于从需求到架构选择的所有内容。模块X的要求是什么?这些要求在体系结构中如何表示?你为什么选择建筑模式A而不是B?有什么好处?源代码也是如此:众所周知,评论为什么要好得多

无论您使用Wiki还是使用Word制作的需求文档,您如何记录这些决定无关紧要。更重要的是这些文件始终是最新的,任何人都可以轻松访问它们。正如你所说,这可以通过使用wiki或将文档放在源代码控制之下来实现。如果只有少数人可以访问他们,他们更有可能不会更新,不必在必要时阅读。

我们对当前的项目使用维基,它工作得很好。任何人(开发人员,管理人员和客户)都可以轻松访问,并且历史可以跟踪更改,因此您知道发生了什么变化以及原因。此外,我们试图以一种有意义的方式记录代码并记录主要的设计决策。我们尽量不要记录太多,例如小事情,因为总是很难保持这些东西是最新的,这是不值得的努力,恕我直言。

+1

+1。这真是一个非常棒的点。 – 2009-11-30 17:07:19

相关问题