SDWest2006(译注1)对我来说是个有趣的大会。我除了星期三之外(当时我正飞往费城参加一个客户会议 == 因此错过了Jolt颁奖部分)每天都在演讲。我也参加了一些谈话和会议;其中最引人关注的是Mike Cohn的计划与估算的谈话。我的两个谈话都是半天的关于Ood原则的导引。这些谈话都参与的非常好,现场反映也很热烈。
这里是我谈话的几份演讲稿:
在星期二我主导了一个关于“敏捷与架构设计”的圆桌会议。很多人是挤着进入会议现场的,而且一直参与到会议结束。配合着讨论要点的导航图,我们将这些要点一一讨论过。我的好朋友John Kern也在那儿,还帮助解答了很多提问。你可以从这里了解更多有关这个会议的。
会议的一些关键要点如下:
- 架构设计的主要目标是灵活性,可维护性和可扩展性。
- 但我们认识到,由测试驱动开发原则指导产生的单元测试和验收测试(译注2)要比灵活性,可维护性和可扩展性来得更重要。
- 因而测试才是首要的影响力,而架构设计只是第二位的。
在此次会议前,我从未想到过这点。这里就有一群架构师和设计师,他们激烈的争辩着架构设计的角色和位置,可是我们辛苦争论出的一致结论是灵活性,可维护性和可扩展性是处于次要的影响作用的,是编写测试(测试优先于产品代码)起着最主要的效用。
这好像是吞下了苦黄莲,而且很多架构设计师们搞不好立即就会拒绝。然而,没人认为架构师不重要,或者认为应该丢掉它转而去青睐测试。正相反,是测试让我们无所顾虑的改进系统的设计。不是测试胜于架构设计;而应该说是测试成全了它!
自动化测试给了我们一个可靠的方式去了解系统是否运行良好。因此我们不必再惧怕一个设计的改变会破坏它。这让实施那些能够改进系统的设计变得更容易。因此测试的粉末登台意味着在持续改进系统的结构、设计和架构时遇到的阻碍会来得更少。
失去测试,架构设计就是天方夜谭,因为一但重大的开发启动后设计将很难改变。而自动化测试给设计留下了空间。设计改变所带来的风险如此之大的被削减,以至于我们可以在肆无忌惮中就让系统进化。
译注:
1,SDWest,全称Software Development West,即西部开发者大会,是全美颇受瞩目的开发者大会,著名的Jolt大奖就在每年一度的大会上颁发。
2,验收测试,原文acceptance test,又成为容忍测试,敏捷方法认为,如果一个构建(build)通过了验收测试,基本上这个构建就可被“接受了”。
(原文链接网址:http://www.butunclebob.com/ArticleS.UncleBob.ArchitectureIsaSecondaryEffect; 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年的编辑。
分享到:
相关推荐
CNAS-CL01:2018《检测和校准实验室能力认可准则》(2019-2-20第一次修订).pdf
- **设计与开发**:定义软件架构和设计,并实施开发计划。 - **验证与确认**:确保软件按预期工作,并符合其预定用途。 - **维护与退役**:对软件进行持续更新和改进,并最终将其退役。 #### 标准的应用范围 此标准...
《C语言程序设计现代方法第2版修订版》是一本深入学习C语言的经典教材,它在原有的第二版基础上,融入了最新的C1X标准内容,旨在帮助读者掌握C语言的最新发展和技术。这本书的课后习题参考答案是学习过程中不可或缺...
系统架构设计说明书是软件开发过程中的关键文档,它定义了系统的整体结构、组件以及它们之间的交互方式。在银行软件开发中,这样的文档尤其重要,因为金融系统的复杂性和安全性要求非常高。以下将详细解释该说明书...
《网银软件架构设计说明书》是一份详细阐述网银系统架构设计的重要文档,旨在为西安研发中心的Sm@rtFusion网银产品研发项目提供指导。该文档由何钰编写,经过多次修订,确保了架构设计与Sm@rtVistar的要求相符合。 ...
《系统架构设计说明书》是软件开发过程中的关键文档,它为整个项目的实施提供了蓝图和指导。这份文档通常由系统架构师或技术团队负责人拟制,经过评审和批准,确保其内容的准确性和适用性。以下是根据给定内容解析出...
### DGJ 08-20-2019设计技术规范解读 #### 一、规范概述 **DGJ 08-20-2019**是上海市工程建设规范中的一个具体标准,名为《住宅设计标准》,由上海建筑设计研究院有限公司和上海市建筑建材业市场管理总站共同主编...
《网银软件架构设计说明书》是一份详细阐述网银系统架构设计的重要文档,适用于从事架构设计的专业人士作为学习和参考的材料。这份文档由西安研发中心的何钰编写,旨在为网银产品研发项目(项目编号:FS105-003)...
SAFED软件架构.pdf"涉及的是一个名为SAFE(Safe Automotive soFtware architEcture)的ITEA2项目和其扩展项目SAFE-E(Safe Automotive soFtware architEcture - Extension),这是一系列关于汽车软件架构的研究与...
- **5.3 软件体系设计**:设计软件的整体架构和模块划分。 - **5.4 软件详细设计**:对每个模块进行详细的设计规划。 - **5.5 软件单元的实施和检验**:编写代码并进行单元测试。 - **5.6 软件集成和集成测试**:将...
PetShop是一个小型的项目,系统架构与代码都比较简单,却也凸现了许多颇有价值的设计与开发理念。本系列试图对PetShop作一个全方位的解剖,依据的代码是PetShop4.0,可以从链接...
GJB438B-2009是中国军用标准之一,旨在为军事软件开发提供一套完整的规范和指导原则。该标准对软件生命周期内的各个阶段进行了详细规定,包括需求分析、设计、编码、测试以及维护等环节。 ### GJB438B-2009 软件...
- **发布日期与实施日期**:该文件于2018年03月01日发布,并于同年09月01日正式实施。 - **文件替换**:替代了之前的CNAS-CL16:2006版本。 - **主要修订**:调整了文件编号至CNAS-CL01-A008;根据CNAS-CL01:2018重新...
《EN 60601-1_2006-A1_2013.pdf》是欧洲标准,专门针对医疗电气设备的基本安全和基本性能的一份重要文档。该标准基于IEC 60601-1:2005/A1:2012,由CENELEC(欧洲电工标准化委员会)制定,旨在确保医疗电气设备在设计...
ASPICE详细设计模板是用于记录和描述软件单元或组件设计的文档,它要求软件工程师根据软件的需求和架构设计来细化设计,并提供足够的信息以供开发和测试使用。 详细设计模板的各部分知识点如下: 1. 引言部分:这...
软件架构设计是软件开发过程中的关键环节,它定义了系统的高级结构、组件及其相互关系,为软件开发提供了蓝图。这份"软件架构设计模板讲解资料"旨在指导开发者如何有效地进行架构设计,并提供了详细的文档模板。 ...
该文档描述了一份2022年的软件开发合作协议(合同部修订版),旨在建立甲乙双方长期合作关系,明确双方权利与义务,确保软件项目的顺利进行。合同遵循《中华人民共和国合同法》、《中华人民共和国知识产权法》等相关...