培育软件的可测试性
本月我在AgileTour上发表了一个演讲,主题为‘培育软件的可测试性’,该主题讲述了三个问题:
- 为什么要关注软件的可测试性?
- 什么是软件的可测试性?
- 如何提高软件的可测试性?
原创文章,转载请注明出处, 本文地址: http://www.juvenxu.com/2011/12/27/cultivate-software-testability/
本月我在AgileTour上发表了一个演讲,主题为‘培育软件的可测试性’,该主题讲述了三个问题:
原创文章,转载请注明出处, 本文地址: http://www.juvenxu.com/2011/12/27/cultivate-software-testability/
昨晚我发了条微博,内容如下:
编程本质上是用脑的,当程序复杂的时候人脑会不够用,于是bug百出,程序员心力憔悴。好在出现了各种工具和方法论来帮助降低人脑的负荷,让人能够专注于有限的地方。但是,很多人迷信工具和方法论以致几乎忽略了人脑的能力,就好像只要用对了方法和工具,放只猴子也能把软件写出来,这也应该反思。
这是我最近看到一些关于敏捷方法的争论有感而发,就以测试驱动开发(TDD)为例,有那么两派人,一派是死忠,认为不用TDD写不出好的代码,不写测试就不能写主代码;另一派则相反,觉得TDD是很扯淡的东西,是咨询公司忽悠人的工具。我则认为两派都走了极端,在我看来,包括TDD在内的敏捷方法论都旨在帮助降低程序员的脑负荷,因此恰当的使用能帮助我们专注于重要的事情,但认为TDD是万能的,而忽视了人,那也大错特错了,不管多么神奇的方法,多么完善的过程,我们都不能否认人脑思考是...... Read the full post
我是个喜欢读书的人,大学里买不起书就收集了好多电子书(盗版行为,不鼓励),工作后手头没那么拮据了,就买很多书,影印的、翻译的、国人原创的、二手的,还有一些直接从amazon.com购买的原版书,当然那个价格就相对贵很多了。到目前为止,书房一个大大的书架也已经塞了十之八九。这还不包括我在iPad上的不少阅读量。
虽然是计算机书,但大多都是随性而读,换句话说就是全凭兴趣,因而不够严肃专业,自然太深的积累是没有的,不过浅一些的心得还是可以说一说的。
首先是挑书,我在读书的同时慢慢锻炼了挑书的能力,因为读书最大的消费不是书价,而是时间,因此挑对书是至关重要的。我读书主要是看出版社,比如国外著名的有O’Reilly、Manning、Addison Wesley、Pragmatic Bookshelf等等,这些出版社的书大部分质量非常优秀,也包含了不少的经典,就算你不小心遇到本很水的,那几率也是非常地低。国内出版社和国外差距很大,但应该说一直在进步,我个人最喜欢的是东南大学出版社的O’Reilly影印系列,质量真是好得没话说,价格也公道。关于翻译,人民邮电图灵的质量应该是做得最好的了,特别是有阮一峰这样的译者,真是读者的福气。原创方面的话,应该说机械工业的华章和电子工业的博文视点...... Read the full post

Just finished the book “Building and Testing with Gradle” in this vacation, and here is my review.
First of all this book has a great Foreword by Ken Sipe, the CTO of Gradleware. I totally agree with him on
What I have discovered over the years as a software engineer is that in order to solve a problem best, I have to understand the model. The reason make wasn’t a great build tool for Java is that it didn’t have a way to express the model well. Ant gave us platform independence and a better vocabulary, but a weak model. Maven provided a stronger model, which is why so many people prefer it over Ant. The challenge for Maven is that it provided a “the one model to rule them all”. You’re able to express your build needs within that model and only that model.
Gradle fills the gap. Gradle provides a way of modeling a build system using a DSL with convention over configuration, yet allowing an enterprise to define its own model. It goes deeper than this, as explained in this introductory book by Matthew and Tim, but modeling by convention is truly a game changer for enterprise software development.
To simplify, Make has no build model, Ant has weak mod...... Read the full post
去年10月份Apache Maven发布了3.0正式版,而在上个月的22号,Eclipse基金会宣布了Eclipse 3.7(Indigo)的发布,该版本Eclipse最大的新特性之一就是集成了Maven。下载Eclipse IDE for Java Developers版 本的用户会发现,Eclipse已经能够自动识别Maven项目了。Indigo中内置的Maven版本是3.0.2,这在一定程度上说明Maven 3已经非常稳定了。不过我相信一定还有很多Maven 2用户在犹豫是否升级,本文会介绍一些Maven 3最重要的特性,旨在帮助读者扫除疑虑,尽早享受Maven 3所能带来的各种便利。
在升级软件的时候,兼容性显然是首先要考虑的问题,如果原本在Maven 2下能成功构建的项目,在Maven 3下立刻就失败了,而且难以简单修复,那显然是不可接受的。 好在Maven用户大可打消这一顾虑,Maven 3自设计之初就一直考虑与Maven 2的兼容性,这不仅是指兼容Maven 2的核心,还包括大量的org.apache.maven.plugins与org.codehaus.mojo插件。虽然由于某些插件代码的特殊性,无 法做到100%完全的兼容,但已经基本不会遇到问题了。
如果你还有担心,那可以先仔细阅读官方发布的Read the full post
“打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,复杂点的例子是Maven官方下载页面的分发包, 它有自定义的格式,方便用户直接解压后就在命令行使用。作为一款”打包工具“,Maven自然有义务帮助用户创建各种各样的包,规范的JAR包和WAR包 自然不再话下,略微复杂的自定义打包格式也必须支持,本文就介绍一些常用的打包案例以及相关的实现方式,除了前面提到的一些包以外,你还能看到如何生成源 码包、Javadoc包、以及从命令行可直接运行的CLI包。
任何一个Maven项目都需要定义POM元素packaging(如果不写则默认值为jar)。顾名思义,该元素决定了项目的打包方式。实际的情形 中,如果你不声明该元素,Maven会帮你生成一个JAR包;如果你定义该元素的值为war,那你会得到一个WAR包;如果定义其值为POM(比如是一个 父模块),那什么包都不会生成。除此之外,Maven默认还支持一些其他的流行打包格式,例如ejb3和ear。你不需要了解具体的打包细节,你所需要做 的就是告诉Maven,”我是...... Read the full post