开源项目的真实设计文档

7
你可以在互联网上找到许多开源项目(例如Linux,开放办公室等),但我没有找到任何一个具有完整,良好和真实文档的开源项目。 我不只是指源代码文档。我是说,收集客户需求,设计模式和所有文件工作。祝好!

1
我认为你不会找到一个开源项目拥有所有的设计文档。 - Aaron M
1
我仍然对使用“your”代替“you're”的程序员数量感到惊讶 :) - talonx
3个回答

12
为什么我们需要需求文档和设计文档?为了在想要特定软件的一方和负责制作该软件的另一方之间达成协议。这个文档很有用,因为它可以帮助双方高效地合作制作正确的软件。
有时,在开源软件中,你可以找到这种关系。在这种情况下,你有时可以找到前期的设计文档。如果你想向Python编程语言中添加一个功能,你必须编写一个Python Enhancement Proposal并获得批准,以确保你正在实现的东西是Python维护者愿意接受的。你可以在OpenSolaris文档的此页面中找到许多设计文档的链接;我猜这里的“客户”是Sun营销部门。最近,我为一些其他人实现的开源软件设计了一个API,并编写了规范
但是,很多开源开发遵循完全不同的模型,其中适用于一个或多个以下因素:
  • 工作单位是单个功能或错误修复。在错误跟踪系统中,您可以找到一个段落的需求文档。如果您希望这样考虑的话,较小的工作单位实际上是一个巨大的优势。封闭源代码开发通常无法遵循这种模型,因为交易成本(建立信任,确定所需内容,就范围和价格达成一致等)太高。

  • 开发人员正在为自己编写软件。如果您知道您想要什么,撰写正式的设计文档可能没有回报。(您可以在白板上写几个涂鸦。)

  • 该项目最初并不打算广泛使用。如果代码将在一小时内在您的计算机上运行并完成其工作,那么单独的设计文档会有何帮助?如果随着时间的推移,它变成其他人可以使用的东西,在什么时候应该出现过程文档呢?

  • 有一个设计文档,但未发布。请记住,这些文档的目的是帮助高效地制作正确的软件。一旦制作完成,这些文档就不是非常有用了。(另外:开源软件通常是根据公司的合同编写的。虽然完成的代码是公开的,但过程文档可能被明确或隐含地视为机密。)

  • 开发人员只是不愿意进行前期设计。我倾向于认为这太糟糕了,但遗憾的是,这是一个促成因素。

有时软件是在实现和证明之后才进行文档化的。这里是GCC手册描述其内部的一部分内容。这是Mozilla的JavaScript引擎的一部分内容。如果您对特定项目感兴趣,很容易找到示例。通过谷歌搜索linux kernel design可以找到更多免费,详细的文档

我不相信软件需求方和开发方之间的协议只是为了形式化协议本身。它还可以让开发人员保持一致性。设计文档并不仅仅是一个最初写好的文件,它会随着项目的进行而改变。Joel Spolsky在他的博客文章中对此有很好的阐述。http://www.joelonsoftware.com/articles/fog0000000036.html - bigblind

3
开源项目通常始于一种解决问题的渴望,而不像专有应用程序从开始就瞄准潜在富有的客户需求。设计模式与文档无关,只是样板设计。至于文书工作,你让它听起来像是“好事”。:)
有些开源项目在实现之前会预先详细说明设计。一个很快想到的例子是bzr DVCS。文档可以在这里找到。Martin Pool在开始工作之前花了相当长的时间对其进行了记录。

1

看一下(早期版本的)jHotDraw。这是HotDraw框架的Java版本,其中包括Erich Gamma(GoF)为其模式语言工作开发的内容。

你不太可能找到任何具有完整和最新文档(包括依赖关系图)的项目(开源或闭源)。你可能能够找到一些仅用于教育目的的非常小型的构建物。对于法律规定必须这样做的系统,文档的实际质量通常非常低,因为它们并不是为了作者或信息使用者的任何真正利益而产生的,而只是为了覆盖法律责任。

在开源项目中,有一个强烈的倾向只编写直接使用的文档,因为他们有一个非常好的工作优先级处理过程。在交接工作时需要进行沟通。文档可以提供这个功能。但在大多数开源项目中,想要某个功能的人也往往是该功能的实现者。在这种情况下,很少需要太多的文档。

开源项目需要概述文档,描述工作标准、使用的设计模式以及所有可以帮助新贡献者快速上手的内容。

如果你想真正了解如何正确管理依赖关系的困难程度,请看一下:

管理设计数据:CAD框架、配置管理和产品数据管理的五个维度 van den Hamer,P .; Lepoeter,K。 IEEE会议论文集 卷84,第1期,1996年1月,页码:42-56 数字对象标识符10.1109 / 5.476025

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接