今天讲一个“愚人节”的故事。
故事的主人公是当年最火的模型驱动软件公司,Itemis,专注于开发从领域模型生成可执行代码的Xtext工具。公司虽然不大,只有10来个人,但是在Eclipse开源社区的代码贡献行数统计上遥遥领先于诸多大公司,比如在2010年里仅次于IBM和Oracle排名第三。
这个原因嘛倒很简单。据我所知,很多做软件工具的研究组都采用了xtext辅助开发领域模型的Eclipse插件,比如多伦多大学的OpenOME用的iStar模型,开放大学的Open PF用的问题框架模型,帝国理工大学用的线性状态系统(LTS)模型,都纷纷成为了它的用户。而只要这些用户把生成的代码提交到Eclipse社区,那么按照代码行数掰指头算,就放大了xtext的贡献度了。
另外,xtext生成的代码实现了不少实用的功能,比如基于模型的语法制导文本和图形编辑,图形布局,打印,格式转换,模型变换等等,不仅免费,而且质量不错,非常适合快速原型开发。好了,故事的背景就先介绍这些。
在二零壹零年四月一日,Itemis的CEO Sven Efftinge 在网络上郑重发布了如下帖子:把Xtext带到万维网世界。
大致意思是,虽然xtext生成的代码能帮你在Eclipse平台下做插件,现在你更希望能够在浏览器中直接编辑模型,而不是预装Eclipse。现在xtext具备了这个功能,工具展示如下。你们苦苦期盼的浏览器编辑代码生成功能就要加到xtext工具中了,请拭目以待,云云。
作为软件工具的开发者和自动化软件工程的践行者,我确实翘首以盼!因为这个功能实在太有用了。
试想我们在英国建了一个问题框架,马上告诉在中国的同事,就可以看到编辑中的模型,而不是等到我把工具的下载链接告诉对方,等待下载安装完后,“黄花菜都凉了”。如果模型的内容可以及时共享,及时修改,就能大大提高大家的生产效率。
当然,Google为首的公司已经提供了一些共享编辑的功能,但是那都是局限于已知的常用文档格式,对于新的探索性的文档模型,这样的工具是大大滞后的。如果有了xtext的这个新功能,是十分有用的。xtext展示的视频看上去十分真实,好像已经做出来了,只不过还要经过若干内部调试的过程再发布。
之后,我和广大吃瓜群众翘首期盼,可惜一直没有下文。直到一周以后,应好事者的咨询,博主发了如下帖子,正式宣告跳票!
我当时也对愚人节有些预感,但是鉴于对Itemis这家德国公司一贯以来的严谨有所了解,又加上这前面的铺垫十分自然,也上当了!(博士也是普通人嘛!)
在友人的穷追猛打下,后续的帖子解释了我的所有疑问:
原来如此,这个愚人节的笑话是有心的,Itemis希望试试水温,看看这个非功能需求是否有市场,或者也许不算什么好主意呢?当然,经过这么一番折腾,坐实了大家对这项需求的渴望。
诚然,技术上的困难是可以想象的,需要Eclipse平台本身演化到基于浏览器,才能水到渠成。经过了三到四年,Itemis最后当然做到了!
从软件需求研究的角度,我对愚人节撒谎这个做法虽然不尽苟同,但是也能谅解。其实,就这个事件,我还发表了两篇ICSE的论文,也算没有白白被同行骗了一把。
参考文献:
Yu, Yijun; Petre, Marian and Tun, Thein Than (2011). Miki: a wiki for synchronous modeling of software requirements. In: 4th FlexiTools workshop @ ICSE 2011, 22 May 2011, Waikiki, Honolulu, Hawaii. USA.
http://computing-research.open.ac.uk/trac/openre/wiki/MikiFAQ10
Yu, Yijun; Lin, Yu; Hu, Zhenjiang; Hidaka, Soichiro; Hiroyuki, Kato and Montrieux, Lionel (2012). Maintaining invariant traceability through bidirectional transformations. In: 34th International Conference on Software Engineering, 2-9 June 2012, Zurich, Switzerland.
嘻话一下,从这个故事中我们可以提炼一个怎样的教训呢?需求获取的途径很多,直接征询不一定是最有效的。通过快速原型开发,兴许能够很快得到潜在客户的响应,因为这时候如果发现不合适,你的前期投入损失也不会很大。只不过愚人节这样的时机太少了,其它时间这么搞就不一定能够得到客户的谅解了:微微一笑。
以上例子体现了三十六计之“抛砖引玉”。百科上是这样说的:
“原文为:「类以诱之,击蒙也。」(用极类似的东西去迷惑敌人,使敌人懵懂上当。)诱敌必先迷敌,两者密切联系。抛砖引玉,“抛砖”是手段,“引玉”是目的。“抛砖”贵在所抛之“砖”要像“玉”,是一种示形于敌的伪装;“引玉”关键在于所“引”至“玉”确实是比“砖”价值要高的“玉”。用相似的东西去迷惑对方,使其做出错误的判断,以假为真,然后再图消灭,是这一计谋要害所在。”