在本人的《敏捷软件开发:原则、模式与实践》一书中曾提到“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年的编辑。
分享到:
相关推荐
- **文化继承性**指的是一个民族文化在历史发展过程中不断积累、传承下来的特性。 #### 特点: - **连续性**:文化在时间上的延续,通过教育、习俗、节日等方式传递给下一代。 - **多样性**:不同地区、民族的文化...
- 扬弃爆破:将不需要的矿石或岩石移除。 - 崩塌爆破:使目标区域整体垮塌。 - 定向抛掷爆破:控制爆破方向,减少对周围的影响。 6. 开采方法与经济效益的关系: - 分层开采能有效减少急倾斜中厚矿层的矿石损失...
【标题解析】:“扬弃的历程:400年西方自由主义思想史”是一部探讨西方自由主义发展演变的历史著作。本书关注的重点是自由主义思想在不同历史时期的重要代表人物及其理论,如何在继承与批判中推动自由主义的发展。 ...
- "Bo (簸)箕":簸箕是一种用竹子或金属制成的工具,用来筛选或扬弃谷物中的杂质。 - "he(阖)家":阖家指的是全家,全体家庭成员的意思,常用于祝福语中。 - "玉米 shen(糁)":糁是指玉米粒磨碎后的小颗粒,常...
- **辩证否定观**:认为事物的发展是通过自身内部矛盾运动的结果,是新事物对旧事物的“扬弃”过程。 - **体现辩证否定观的例子**:“取其精华,去其糟粕”,即从旧事物中吸取有用的部分,去除无用或有害的部分。 #...
【“二十四孝”中的传统文化糟粕及其扬弃】 “二十四孝”是中国古代流传下来的一组孝道故事,旨在弘扬孝顺父母的传统美德。然而,随着时间的推移,其中某些故事中的极端行为和观念逐渐被人们视为传统文化的糟粕,...
本题目来源于2021年吉林延边珲春市招考聘用社区专职工作人员的强化练习卷,主要考察的是应聘者对于各类知识的理解和掌握,包括地理、管理学、哲学、法律、逻辑、科技、计算机等多个领域的知识。 1. **地理知识**: ...
这篇文档主要包含了安徽省宿州市十三所省重点中学2019-2020学年度第一学期高二政治的期末考试试题及参考答案。以下是对试卷中涉及的哲学知识点的详细解析: 1. **哲学的产生**: - 哲学源于人们在社会实践中的思考...
- 辩证否定是事物自我否定,是发展和联系的统一,是扬弃的过程。 - 在实践中,应避免绝对肯定或否定,寻求事物的合理发展。 8. **矛盾普遍性与特殊性辩证关系**: - 矛盾普遍性和特殊性是相互联结的,普遍性寓于...
- 扬弃改进:接受批评,改正错误,持续提升。 4. **案例分析**: - 当提出的建议未被采纳甚至被批评时,应保持冷静,反思方案的不足,与领导沟通以寻求改善。 - 面对领导的挑剔,要检查自身工作,查找原因,可能...
1. **销售理念**:在微利经济时代,企业需要超越传统的"物美价廉"模式,学习国内外优秀企业的成功经验,通过"扬弃"传统观念,实现创新和个性化服务。奥博软件的成功在于其对客户需求的敏锐洞察和细致入微的响应。 2...
选项②正确指出了创新过程中的“扬弃”概念,即保留精华、去除糟粕;选项③强调了创新对科技进步和社会生产力的影响。 **4. 亚里士多德的名言解读** - **知识点**: - “吾爱吾师,吾更爱真理”强调了对真理的...
- 辩证否定是事物自我否定和发展的过程,实质是“扬弃”,既要否定旧事物的消极部分,又要保留其积极因素。 - 树立创新意识要求我们不迷信权威,立足实践,敢于创新。 11. **革命批判精神和创新意识**: - 革命...
- **辩证否定的实质**:“扬弃”,即保留事物中的积极因素,抛弃消极因素。 - **方法论**:通过辩证否定来推动事物的发展。 以上内容涵盖了高一政治必修三课程中的多个核心概念和理论框架,有助于学生深入理解和...
- 辩证否定观认为否定是事物自我发展的环节,是扬弃的过程,即克服旧事物的不足,保留其精华。 - 否定之否定规律揭示了事物发展的曲折性和前进性。 11. **科学的实践观**: - 实践是认识的基础,它不仅创造了人...
- **实质**:“扬弃”,即既克服又保留。 - **方法论意义**:要求我们不断创新,推动事物的发展。 ### 二、方法论的应用 #### 1. 系统优化法 - **含义**:从整体出发,把各个部分和要素联系起来考察,统筹考虑,...
- **实质“扬弃”**:辩证否定过程中,既克服旧事物的消极因素,又保留其积极因素,是一种批判性的继承。 2. **辩证法的革命批判精神与创新意识**: - **批判精神**:要求我们不盲目接受现状,敢于质疑,挑战旧...
- 辩证的否定不是简单的抛弃,而是批判地继承,是“扬弃”。这要求我们在创新时要有批判精神,不拘泥于旧观念。 5. 辩证唯物主义历史观: - 社会存在与社会意识的辩证关系:社会存在决定社会意识,社会意识又反...
- 不断翻拍经典作品是文化传承的一种方式,每次翻拍都可能是对原著新的解读和探索,但关键是要有独特见解和高质量的呈现,才能在众多版本中脱颖而出。 8. **艺术创作的自由度**: - 在忠实原著与创新之间,艺术家...
根据提供的文档信息,我们可以整理出以下相关知识点: ### 马克思主义基本原理概论复习提纲 #### 绪论 1. **马克思主义的定义及其三个主要组成部分** - 定义:马克思主义是由马克思与恩格斯在19世纪工人运动...