专访开源项目Amoeba架构师陈思儒
DBA notes站长冯大辉(Fenng)代表InfoQ中文站采访了分布式数据库Proxy开源项目Amoeba的架构师和主要开发者陈思儒,内容包括Amoeba项目的起因、功能及其愿景等。
作者 Sadek Drobi译者 乔梁 发布于 2007年10月13日 下午12时34分
“由于某种原因,我们创造并追随信仰……。”James O. Coplien就是这样描述当今的产业。他认为,这个行业如今是建立在热门词(buzzwords)和指南(checklists)的基础上,而不是建基于思考,审视和努力去找寻最合适且最节约成本的解决方案。
你引入到公司里的最新技术,你仔细考虑过它们的代价吗:Ajax、TDD、现场客户,或者其他热门词?你研究过它的发展轨迹吗?亦或你只是看过它的广告?
James引用了一个例子,那就是在JAOO 2007 Conference的尾声时,一个blog上发生的关于TDD的争论。当争论焦点集中在“什么测试方法最好,是TDD,亦或是验收测试”时,实际上这个问题本身就是一个错误。它掩盖了我们的真正目标。我们的目标是“交付用户想要的且最高质量的软件,为客户创造价值”。测试的确是在我们为提高质量而写到指南上的,但它远远不能涵盖真正影响质量的所有问题:
如果你没有正确理解客户想要的是什么,或者代码里有很难预计到的内部干扰,或者局部代码超过了数组边界,用了未定义的指针,都会出现质量问题;假如设计出来的交互界面允许用户提交非法数据,或者输入常规信息需要太多次按键,也同样是质量问题。
对于质量问题需要考虑我们“兵工厂”中的所有“武器”:
意思是:使用UseCases(它是使客户融入项目的一个敏捷方法)代替XP风格的用户故事(这样你可以提前理解特性间的相互作用),进行结对编程或频繁的代码走查,实行契约式设计,流程由可用性专家推进并做有效的可用性测试,以及其它一些事情。
Coplien强调:什么事都做是不可能的,一定要考虑成本效率。但是一味地强调技术或者一味受到热门词的驱动,我们可能会局限于并非最有效的实践。某些技术或方法论的使用(例如TDD)已经成了“一个信仰问题”,James提到:
我们被告知“只有做TDD你才是一个专家”……,却不告诉我们为什么要相信这一点,没有证明,也没有证据。只是说“你就相信这一点吧,没错儿!”。
例如,Coplien认为:集成与系统测试早就已经被证明是找bug最没有效率的方法;TDD只会使架构恶化;而与传统的代码走查相比,验收测试的效率要低几个数量级,而且极其昂贵,由于是在最后阶段,对设计没有一点帮助。同时他也说,很难通过讨论来挑战这样的“信仰”问题,因为任何批评都是带有情绪的。
人们把敏捷的成功归于他们将TDD引入到工作中。TDD是他们作为个体,不依赖于企业,所仅能做的事情。
Coplien提倡关注质量而不是测试。更通俗一点说就是“关注思考而不是对指南亦步亦趋”。不管怎样,他都强调“理清这些东西需要从一个系统的角度”,而在当今的行业中是极其缺乏的。他认为“新时代的敏捷运动总是脱离”系统工程上的考虑。Coplien还说到,“问题的根源在于现代教育,因为现代教育更注重技术而不是思考”。现在的学生“越来越不了解软件历史,而且只知道什么时候用--v,什么时候用v--”,却“不知道做一些逻辑设计”。
学术界与产业之间的紧密关系也是该问题的一部分。大学更倾向于教授那些产业中所需要的课程,以便帮助学生就业。因此,对于学术界来说,向这种主流观点挑战就更难啦,可能和牛顿说服人们相信他“发现了宇宙运行的原理”有得一拼。
产业已经选择采纳那些Agile、SOA和编程语言热门词的既定解释,为了与这种普遍的误解作斗争,我们跟牛顿一样,面对的不仅仅是一种信仰,而且我们由产业资助的安逸的学术职位也同样受到威胁。查看英文原文:Religion driven industry? Buzzwords and checklists vs. thinking and inspection
DBA notes站长冯大辉(Fenng)代表InfoQ中文站采访了分布式数据库Proxy开源项目Amoeba的架构师和主要开发者陈思儒,内容包括Amoeba项目的起因、功能及其愿景等。
作为三期系列文章的第二部分,本文延续了上一期内容,介绍了RichFaces,包括如何把RichFaces集成到之前提到的示例应用中、如何部署RichFaces porlet和RichFaces的多种特性和功能。
Amazon Web Services(AWS)的传道者Jeff Barr讨论了SimpleDB、S3、EC2、SQS、云计算、Amazon的不同服务如何与应用交互、AWS的起源、SimpleDB和微软SQL Server Data Services、AWS cloud的全球化、三月份的AWS停机。
Erlang的并发模型很有名,它的健壮性也很有名。但其他方面呢?在这篇文章里,Dennis Byrne演示了如何用Erlang建立内部DSL。
本视频主要以FreeWheel为例,对一个基于Rails的企业级应用进行了剖析。其中包括:FreeWheel的架构、部署、数据库的问题、REST API、敏捷开发过程、如何去写测试以及持续集成等等。
JavaFX显示了Sun的Java系列产品市场方向的一个重大转变。随着1.0版的即将发布,InfoQ以JavaFX预览版为参考,与Sun高级工程师Joshua Marinacci探讨了即将发布的1.0正式版。
本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。
1 条回复
回复