软件文档--扬弃还是传承 (原文最终修订于 2006-04-12,上午12:41:14)
来源:互联网 发布:php初学者项目 编辑:程序博客网 时间:2024/04/30 05:23
在本人的《敏捷软件开发:原则、模式与实践》一书中曾提到“Martin对编写文档的第一原则是:除非是必须马上撰写文档而且意义重大,否则的话就干脆不要写它”。有些人把这个意思曲解为敏捷开发一种不需要文档的开发过程,这并不属实。
文档是所有软件开发过程中必不可缺的环节,打着“敏捷”的幌子拒绝编写文档是一种不健全的偏激行径,而且这与那些不假思索就容忍产品中包含十几种不同文档,且自称是“开发过程的终极回归”的说法没什么差别。撰写文档与其它软件活动一样,也需要经过一番投资回报的权衡。我们只会在确实需要文档的时候才编写它,同时编写文档带来的收益也应该是值得其所花费的努力的。
敏捷方法需要两种类型的文档,它们分别是需求文档和设计文档,而其它所有类型的文档都是选择性的。但选择性可不是说就不需要了。
- 需求文档。在敏捷方法中,需求文档往往会在某次迭代之中进行。它经常先于其他开发过程,但也要到开发过程的迭代开始的时候才在内容上达到完整。此外,它也会被自动化验收测试所用。其它种类的需求文档,像是叙述型、工作流型和图像型文档,可能也会酌情使用。
- 设计文档。在敏捷方法中,设计文档往往是由测试优先方法指导编写的单元测试所构成的。这些单元测试都是如何使用各部分代码的鲜活的例子。其它种类的设计文档,像是类图、交互图、状态图、ER图等也可能会酌情使用。
文档是开发团队在必要的时候才创建的,当他们觉得需要的时候就编写了它,就这么简单。而且文档在开发团队自身的开发过程中并不需要,往往是客户或市场来决定它们是否需要。开发团队会使用素材卡片(译注)来预估、计划并确定具体完成时间。如果某项素材在迭代过程中并未被加入,那此项素材也一定对客户或市场来说是毫无价值的。而如果加入到了开发计划中,那一定是因为客户或是市场认为它们足够重要所致。
译注:
用户素材,原文user stories。索引卡片,原文index card。为了进行项目计划,必须要知道和项目需求有关的内容,但是却无需知道得太多。需求的特定细节很可能会随时间而改变,因此,在离真正实现需求还很早时就去捕获该需求的特定细节,很可能会导致做无用功以及对需求不成熟的关注。在XP中,我们更愿意客户在索引卡片上写下一些我们认可的词语,这些片言只语可以提醒我们一起这次交谈。用户素材就是正在进行的关于需求谈话的助记符。它是一个计划工具,客户可以使用它并根据它的优先级和估算代价来安排实现该需求的时间。
(原文链接网址:http://www.butunclebob.com/ArticleS.UncleBob.OnDocumentation; Robert C. Martin的英文blog网址: http://www.butunclebob.com/ArticleS.UncleBob)
作者简介:Robert C. Martin是Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域内的资深顾问。他不仅是Jolt获奖图书《敏捷软件开发:原则、模式与实践》(中文版)(《敏捷软件开发》(英文影印版))的作者,还是畅销书Designing Object-Oriented C++ Applications Using the Booch Method的作者。Martin是Pattern Languages of Program Design 3和More C++ Gems的主编,并与James Newkirk合著了XP in Practice。他是国际程序员大会上著名的发言人,并在C++ Report杂志担任过4年的编辑。
- 软件文档--扬弃还是传承 (原文最终修订于 2006-04-12,上午12:41:14)
- 软件文档--扬弃还是传承
- 敏捷开发的精神内涵 (原文最终修订于2006-08-11 上午10:49:50)
- 结对编程的成熟度模型 (原文最终修订于 2006-10-08 上午10:52:35)
- 用Rails将敏捷Web开发进行到底! (原文最终修订于2006-08-14,凌晨03:49:12)
- 软件分析 Vs. 架构设计 (原文最终修订于 2006-05-29 下午06:44:14)
- TDD的三条军规 (原文最终修订于 2006-04-09 晚上09:45:01)
- 软体艺术系列--抽象工厂 (原文最终修订于2006年10月18日 凌晨04:25:06)
- 微软眼中的TDD (原文最终修订于2006-06-11,下午03:20:52)
- 架构设计--仅是软件开发之第二大影响力?! (原文最终修订于2006-07-01 凌晨03:20:31)
- 让软件走近“恐怖地带”的元凶--未经测试的代码 (原文最终修订于 2006-09-05 晚上10:33:27)
- 面向对象设计的11原则--你称得上OO专家么? (原文最终修订于2006-04-10 下午06:19:40)
- (转载)性能调优--永远超乎想象 (原文最终修订于 2006-08-28 晚上11:48:38)
- 如何让Ruby代码更简练?!(原文最终修订于 2006-08-18 下午02:42:25)
- OO难题在Ruby中有了新解 (原文最终修订于 2006-08-21 凌晨02:27:38)
- 性能调优--永远超乎想象 (原文最终修订于 2006-08-28 晚上11:48:38)
- 使用Mock Object危险么?(原文最终修订于 2006-09-02 下午03:53:51)
- 三大编程语言的性能PK--Java, C/C++和Ruby (原文最终修订于 2006-09-05 下午06:19:40)
- RecurringNumbers (google code jam china 1000分真题)
- 开博了
- ASP.NET初体验 测试示例
- 关于ListCtrl,RichEdit和程序框架的一些东东
- 程序员的灯下黑:坚持和良好心态近乎道
- 软件文档--扬弃还是传承 (原文最终修订于 2006-04-12,上午12:41:14)
- CFont的问题和一个郁闷我两天的Commobox背景色的问题
- 搜索通配符字符的说明
- Windows消息大全
- Eclipse 插件功能详解大全
- 体会SALES的“三个代表”
- 深入剖析JSP和Servlet对中文的处理过程
- 如何实施Sales工程
- SALES七种被拒绝的情况及分析