|
实话设计模式太极敏捷CMM/CMMI 与敏捷逻辑程序员图书银弹核心软件工艺浮躁经典名著
设计模式的重要性毋庸多言,每一位有经验的程序员都应该熟练掌握设计模式的原理和应用。学习和掌握设计模式,可以说既简单,又困难。如果学习方法对头,掌握了科学的思维方法(其中最重要的应该是抽象思维和逻辑思维)和学习方法,那么学会熟练地运用设计模式就很简单;如果学习方法不对头,那么就会越学越复杂,老也看不懂,不会用,不敢用。 如果你因为读了大名鼎鼎的《设计模式》这本书,就觉得 Design Patterns 很难、很深奥,这完全是一种误解。实话实说,著名的四博士 15 年前的那本《设计模式》并不适合作为初学者的入门读物。学习设计模式应该可以有一种更简单、更轻松、更快捷的方式。所以,除了向大师致敬以外,这也是我想写《大道至简:实话设计模式》这本免费公开网络书的一个原因。更多... 敏捷变革(agile transformation)是当前正在进行中的世界软件工程史上又一次重大的 paradigm shift。另一次著名的 paradigm shift 发生在上世纪末的八九十年代,也就是大家比较熟悉的由传统结构化编程向新型结构化编程(OO)技术的转变。很幸运这两次大变革都被我们赶上了。敏捷思想认为软件开发更多时候是一种非线性的、不确定的、随机性过程。 之所以提出太极敏捷,主要是出于十五年来我对什么是软件工程、软件研发深刻本质获得的一种理解:软件工程是一门处处讲究权衡的科学和艺术。此外,在国内的市场和文化环境下简单生硬地照搬、照抄西式敏捷方法,能有多大成功率也令人怀疑。推广基于辩证法和矛盾论的中式太极敏捷思想方法,可以弥补西式敏捷的不足,有助于我们抵御幼稚、天真的敏捷,偏狭、片面、偏激和极端的敏捷。很多人以为敏捷就是 XP、Scrum,就是测试驱动开发(TDD)、持续集成(CI)和结对编程(PP)等非常具体的做法,这其实是一种相当普遍的误解,敏捷是比 Scrum、XP 更大、更宽泛的概念(什么是敏捷)。敏捷是先进软件研发企业、团队和个人所达到的一种高级状态,敏捷开发和管理是一套建立在科学理论之上的更为先进、成熟的理念、思想、哲学、价值观和原则,当然敏捷更是一种先进文化。更多... CMM/CMMI 与敏捷的 PK 和比较,近些年来一直是国内外软件工程界的一个热点话题。以 CMM/CMMI 体系为核心的传统软件工程与近十年来兴起的敏捷软件工程形成了两大阵营。因为拥护一方,就把另一方贬得一无是处,显然不是一种科学的态度。围绕着两者的优劣和异同,它们之间到底有什么差别,国内的专业圈子内还存在着许多误解和误区,这里是张恂对此的分析。 Barry Boehm 院士和 Richard Turner 教授于 2003 年合著的 Balancing Agility and Discipline: A Guide for the Perplexed 可以说是这些年来这方面引用率最高的一本权威之作,也是张恂推荐国内软件企业、研发机构中技术管理者及相关人士,尤其从事、负责和关心软件过程改进的人士,必读的一本名著。 “程序员”这个称号其实只是一个笼统的称呼。程序员有专业和业余之分,就像棋手有专业棋手、业余棋手之分。合格的软件工程师一定是一名专业的程序员。那么,软件工程师,专业程序员,与业余程序员有何区别?根据我多年的观察,两者之间最根本的区别在于:是否具备或在多大程度上掌握了科学的逻辑分析推理能力。一名合格的软件工程师会主动地、自觉地根据科学原理,采用科学方法,科学地、系统地、经济地、人本地来开发软件(张恂的软件工程定义),并根据正确的逻辑分析和推理过程,最终得出客观有效的结论。 通过学习和研究,张恂还发现,世界上几乎所有的 软件科学家、软件工程师和软件大师们 似乎都基本上遵循着同一个基础的逻辑系统,因而他们也都具有大体上相似和一致的科学逻辑思维。更多... 作为一名软件人,我们可能一生都需要不断地学习,而千年未改,图书依然是今天二十一世纪的程序员和软件工程师们获取知识的最主要来源。于是,想到给对自己的职业生涯乃至人生影响最大的几本图书、名著,搞一个 排行榜。不知能不能凑足 10 本,抑或超出,先列出来再说。评选标准为张氏银弹理论: 售价不过是一本几十块 dollars(中文版、影印版不过是几十块 RMBs)的软件经典图书,在 10 年内带给它的读者们的回报岂止是 10 倍(一个数量级)?我看,至少是万倍,几十万倍,几百万倍 ... 而它们对于我们读者软件开发思想的形成和影响,不但可以受用终生,而且更是无法单纯用金钱、数量指标来衡量的!故:软件经典名著,即事实上的银弹,不仅是银弹,更是金弹!更多... 回顾过去十五年来,世界范围内的软件开发工艺有哪几个重大变革和潮流?我的总结是:迭代敏捷(Agile & Iterative)、对象(Object)技术 与 用例(Use Case)技术。迭代过程取代瀑布过程成为主流,构成敏捷的基础;多层次、多方位的面向对象(新型结构化)技术取代传统结构化技术,极大推动了软件系统和产品在规模、效率、质量和复杂性等许多方面实现了空前的发展;用例(协议、场景)等相关先进需求分析管理技术的成熟运用,显著缓解了传统的需求难题。因此,张恂把这三样综合技术(软件工程工艺)作为考察一个当代软件开发组织是否成熟、是否具备现代生产力的重要标志。如果您高价请来的评估师没有把这三样告知您,实在可惜 更多... |
|
新闻评论[敏捷] 敏捷改进需要本地化 6.23 (22) [用例] GIS 需求分析 5.24 (112) [新书] Jann Thomas 谈阴阳与软件项目管理 (88) [敏捷] RUP 与敏捷方法的区别 3.26 (65) [读书] 近期出版的敏捷新书 3.20 (87) [读书] 敏捷书单 3.20 (66) [设计] it168 上的几篇架构设计文章 3.20 (42) [悟道] 太极敏捷的主要理论和观点:总体 3.17 (1604) [敏捷] 敏捷匠艺宣言 3.14 (80) [更多] 传统软件工程 vs 敏捷测试的约定 3.12 (86) [更多] 什么是敏捷测试? 3.12 (44) [更多] 好的测试水平要高于普通程序员 3.8 (75) [更多] 敏捷的误区、陷阱和问题 3.5 (31) [新书] TDD 能提升质量在意料之中,那么效率呢? 3.4 (84) [新书] Joel 与 Uncle Bob 的论战 ... (112) [更多] 关于需求用例的一些误解 2.20 (80) [更多] 有关 ASP.NET 模板的几篇文章 2.14 (17) [新闻] 网上构件市场 ComponentSource (17) [新书] 软件设计的艺术:把握前构与重构的平衡 2.11 (87) [敏捷] 组织环境和文化是敏捷成功的关键 2.11 (30) [敏捷] 实施敏捷不需要面面俱到 2.11 (151) [悟道] 回复-回复-太极敏捷的主要理论和观点:需求问题 (956) [悟道] 回复-太极敏捷的主要理论和观点:需求问题 2.6 (956) [悟道] 太极敏捷的主要理论和观点 2.6 (2060) [悟道] 太极敏捷的主要理论和观点:需求问题 2.5 (1047) [敏捷] 华为、腾讯的敏捷之路 1.6 (262) [更多] ASP.NET 转向的两种办法 12.28 (18) [更多] ASP.NET 页面控制器和前端控制器 12.28 (21) [更多] 高性能 .NET 应用开发和架构 12.28 (24) [更多] ASP.NET Patterns 12.28 (50) 所有评论状态:仅按时间先后显示最新贴 在线问答12[敏捷] 回复-为什么要敏捷? 6.26 (169) [敏捷] 回复-时间盒迭代删减任务会导致完不成原定 ... (161) [敏捷] 时间盒迭代删减任务会导致完不成原定开发计划? (40) [敏捷] 回复-为什么时间盒迭代提倡删减需求任务? (109) [敏捷] 为什么时间盒迭代提倡删减需求任务? 5.19 (51) [敏捷] 回复-什么是敏捷(Agile)开发? 5.17 (74) [敏捷] 回复-为什么敏捷/迭代开发能提高生产率? 5.15 (56) [敏捷] 为什么敏捷/迭代开发能提高生产率? 5.15 (25) [问答] 如何让 .NET Mail 支持 SMT ... (16) [敏捷] 回复-什么是太极敏捷? 2.16 (135) [敏捷] 什么是太极敏捷? 2.13 (33) [敏捷] 回复-迭代-35 如何确定迭代的长度? 12.4 (232) [敏捷] 为什么要敏捷? 11.23 (42) [敏捷] 迭代-35 如何确定迭代的长度? 8.3 (129) [问答] 如何在 IE 中消除 Ajax 异步请求 ... (123) [问答] 如何提高 ADO.NET 访问性能? 10.29 (109) [敏捷] 回复-哪种编码顺序更合理? 10.22 (191) [敏捷] 哪种编码顺序更合理? 10.22 (135) [用例] 回复-关于用例流派的问题 9.5 (215) [用例] 关于用例流派的问题 9.5 (160) 所有问答状态:仅按时间先后显示最新贴 [用例] 张恂的 Use Case 定义 3.10 (289) [敏捷] 回复-迭代-35 如何确定迭代的长度? 12.4 (232) [用例] 回复-有了 User Story 为什么 ... (218) [用例] 回复-关于用例流派的问题 9.5 (215) [帮助] 如何在回复/评论中添加 URL 链接? 11.3 (206) [敏捷] 回复-哪种编码顺序更合理? 10.22 (191) [用例] 有了 User Story 为什么还需要 ... (175) [敏捷] 回复-为什么要敏捷? 6.26 (169) [用例] 关于用例流派的问题 9.5 (160) [用例] 回复-学习用例的代价是否值得? 7.20 (148) [敏捷] 迭代式软件开发是新方法吗? 10.19 (148) [问答] 回复-如何让 NAnt 编译 .NET ... (142) [敏捷] 什么是敏捷(Agile)开发? 10.19 (139) [敏捷] 哪种编码顺序更合理? 10.22 (135) [敏捷] 迭代-35 如何确定迭代的长度? 8.3 (129) [问答] 如何在 IE 中消除 Ajax 异步请求 ... (123) [敏捷] 为什么要迭代? 10.19 (118) [用例] 学习用例的代价是否值得? 7.20 (112) [问答] Logging 与 Tracing 3.18 (110) [问答] 如何提高 ADO.NET 访问性能? 10.29 (109) 所有问答状态:按点击数降序显示 |
中式太极敏捷:UDD over TDD 30164(敏捷 2009-6-30)TDD 是我们应该认真学习的一种重要的敏捷做法,但它却不是敏捷所必需的,UDD 就是它的一种替代品。程序员学棋艺 掌握前构与重构的平衡。最近更新:IID 简史、如何简化 Martin Fowler 的重构,让重构数量减少一半! 敏捷的现状 396(敏捷 2009-6-24)国内外敏捷应用现状情况调查,著名的 VersionOne 2008 报告:敏捷的好处、最流行的敏捷方法、敏捷做法、敏捷工具。 敏捷 FAQ 1393(敏捷 2009-5-25)更新:为什么时间盒迭代提倡删减需求任务?为什么迭代开发能提高生产率?什么是太极敏捷? Agile 与太极敏捷:到底啥是敏捷? 10400(敏捷 2009-5-7)今天,您的团队和企业还没有做到迭代与敏捷?已经落伍了吧。然而敏捷是一个 buzzword,似乎每个人所说的“敏捷”都有些不同。本文试图从根源上对“到底什么是敏捷”进行认真而深入的分析研究,介绍了当前各种主流敏捷方法的特点和具体做法,并探讨了中式(太极)敏捷与西式敏捷的区别。最近更新:Craig Larman 论敏捷与 Scrum; CMM/CMMI 与敏捷的比较 CMMI 与 Agile 的融合 289(敏捷 2009-4-1)一篇非常重要的 SEI 报告,CMMI 拥抱敏捷。软件过程改进人员必读。 敏捷 OO 私人教练服务 7497(服务 2009-3-13)张恂做您的私人顾问和教练,面向个人定制的软件研发技能提升(成为敏捷 OO 开发者或管理者,架构师或项目经理)2009 春季招募中 ... 大道至简:实话设计模式 3887(模式 2009-3-9)实话设计模式比大话设计模式更好。更新:职责链模式的实例代码、工厂方法、抽象工厂和建造器;自序(学习设计模式的捷径)。 敏捷的误解、误区和谬论 612(敏捷 2009-3-7)敏捷不适合产品研发?敏捷会榨干开发人员?敏捷忽视文档?... Web 应用架构模式:动态分页(适配器) 1747(模式 2009-2-22)Dynamic Paging 是最常见的一个 Web 架构模式。以一种灵活的 OO 方式来实现它,并且把它说清楚,似乎并没有想象的那么简单。 国内软件工程的典型问题 213(敏捷 2009-2-19)探讨十多年来国内软件工程、软件研发中屡见不鲜的经典问题及其解决办法。 张恂编写的原创架构设计模式 3669(模式 2009-2-6)10 年前,张恂有幸第一次接触到了设计模式(先是 ACE,然后才是 GoF);10 年后,张恂终于迈出了职业生涯中的重要一步:动手编撰和整理新的设计模式。 |
| 友情链接:[5ise-Andreas Graf] [Craig Larman 中文站] [人月神话博客] [没水的地方挖井,有水的地方...韩小明博客] 更多... | |




