跳转到主要内容
Chinese, Simplified

一种常见的敏捷实践是尽可能推迟所有可交付文档的创建,在实际交付之前创建它们。例如,最好在发行版开发结束时编写系统概览,因为您知道自己实际构建了什么。同样,大多数用户和支持文档也最好在生命周期的末尾编写。图1比较了传统的和敏捷的文档方法,显示了在整个SDLC中创建和维护文档所投入的相对总工作量。从根本上说,这种策略是等到信息稳定之后再在文档中捕获它。

注意,在生命周期的早期捕获投机性信息(例如需求或设计细节)通常是有风险的,因为这些细节可能会发生变化。这些类型的工件通常不包括在您的可交付文档中,除非在涉及到法规问题的情况下,所以在它们的创建和维护上投入大量精力没有多大意义。

图1所示。贯穿软件开发生命周期的文档。

值得注意的是这两种策略的不同之处:

  • 敏捷人员在项目的早期进行建模和计划,但是他们不编写详细的文档。敏捷人员将在项目开始时投入一些时间来设想初始需求和初始体系结构。他们这样做是因为人们会问这样的问题,比如你要做什么,要花多少钱,要花多长时间,以及你要如何建造它。这意味着您需要进行一些高级需求和体系结构建模,但这并不意味着您需要编写大量详细的规范。从建模中获得价值,即不需要花费不必要的文档来考虑问题。敏捷人员还将创建一个高级计划,显示预计的交付日期、主要依赖项等等。
  • 敏捷人员仍然创建详细的规范。敏捷人员以即时(just-in-time, JIT)为基础,而不是预先捕获细节。他们还喜欢以测试的形式编写可执行规范,而不是静态文档。当您采用测试驱动开发(TDD)方法时,这很容易实现。最后,敏捷者通常比传统主义者做更多的规范,但是我们用不同的方式来做。
  • Agilists仍然编写支持文档。支持文档,如用户手册、操作手册和支持手册,是任何系统开发项目的重要交付物。敏捷主义者和传统主义者一样,一旦系统稳定下来,就会在生命周期的末尾编写这些文档。然而,由于敏捷人员将文档视为一种需求,所以我们将评估编写文档的工作量,并要求涉众将其与所有其他需求一起按优先级排列。由于利益相关者的参与和控制水平更高,当涉及到这类文档时,敏捷者往往比传统主义者更有效率(当你给人们在如何投资方面变得非常聪明、非常迅速的事情贴上可见的价格标签时)。
  • 敏捷人员仍然编写系统概述文档。仍然需要为需要维护系统的人员提供高级概览文档。但是,由于敏捷人员编写的代码比传统人员编写的代码质量更高,并且他们的代码有一个回归测试套件(实际上是系统的详细规范),您将发现您只需要一个主要由关键的高层图组成的简要概述。敏捷人员更强的纪律性,以及由此产生的更高的质量水平,导致对详细文档的需求更少(无论如何,这些文档总是过时的,进一步加剧了传统项目的质量挑战)。
  • 敏捷者的成本曲线更低。图1中的敏捷曲线不仅较低,而且不那么陡峭。通过在生命周期的早期编写文档,传统主义者在整个生命周期中增加了文档维护成本。

这种做法的风险概况

一旦信息稳定下来,等待文档化可以降低成本和与文档化相关的几个风险:

  • 财务风险。降低了成本,因为您不会浪费时间记录更改的信息,这反过来又会促使您更新文档。如果您编写的文档包含的信息还没有稳定下来,那么一旦信息发生更改,您就有重新编写文档的风险。换句话说,您不希望在项目的早期花费大量时间记录投机性的想法,比如需求或设计。相反,等到生命周期的后期,当信息已经稳定下来,并且您知道哪些信息实际上对您有用时,才可以使用它。这意味着您的文档工作可能是软件开发工作背后的几个迭代。
  • 准确的风险。准确性会提高,因为你关注的是你实际构建和做了什么,而不是你猜测你将要做什么。在生命周期早期编写文档的一个挑战是在整个生命周期中不能很好地维护它——很容易假设您将在下一次迭代中进行适当的更新。

 

然而,这并不意味着所有的文档都应该留到最后,因为有些风险会增加:

  • 交付的风险。由于缺乏资源(财务、时间),您可能无法完成所需的文档。为了抵消这种风险,创建这些文档时要明确需求,应该像其他需求一样对这些需求进行优先级排序和评估。
  • 准确的风险。你可能会忘记一些信息。为了抵消这种风险,您可能仍然希望在整个开发过程中为这类文档做笔记,这样您就不会丢失关键信息。这些注释可能只是点格式的信息,因为在最终交付之前不需要“润色”文档。

我的团队不应该不断地进行文档记录吗?

处理敏捷项目文档的另一种不同策略是持续地进行文档编制。基本思想是在整个项目中编写可交付的文档,并在更新软件时更新文档。这一战略支持敏捷哲学总是产生一个解决方案(自律敏捷交付团队认识到有更多比创造伟大的软件,你真正生产是一个很好的解决方案,包括软件、硬件、支持文档,更改业务流程,并有可能改变组织结构)是潜在的可交付。要做到这一点,你确实需要不断地记录,但在这样做的过程中,你开始加重旅行的负担,从而承担与之相关的风险。所以,真正的问题是你愿意做出什么样的权衡?

 

原文:http://agilemodeling.com/essays/documentLate.htm

本文:

讨论;请加入知识星球或者小红圈【首席架构师圈】

Article
知识星球
 
微信公众号
 
视频号