CS巴别塔(1)

SEMAT – 软件工程方法和理论

Posted in Uncategorized by Kenny Yuan on 2010/04/07

无责翻译:SEMAT – 软件工程方法和理论(终于醒悟了?想起来理论的缺失了?)


在当今这个摩登时代,非常幼齿的实践方法几乎埋葬了“软件工程”,特别突出地,有下列问题:
* 本来应该是德国式的严谨工程纪律,结果搞成了法国式的时尚随意流行
* 没有坚实的、被最广大人民群众接受的理论基础(就是说现在还是不明真相?)
* 实践方法千万种,其实没有多少能让人搞明白的差别,但却被人搞得和iPad一样大(蘑菇处处有啊——每个人的心中都有一颗大蘑菇)
* 没有可信的实验进行评估和验证(证伪原则!召唤软件工程行业的波普尔)
* 学院派搞理论的玩儿一套,工业界搞实践的玩儿另外一套,完全割裂开来了。(本来理论界应该是工业界的“大后方”才对)

我们吐血推荐去建立这样的“软件工程”:建立在坚实的理论基础之上的,有真正管用的原则的,有最好实践的:
* 由人人承认的要素构成它的核心,对特殊用途也可以扩展(一个中心,一个基本点)
* 应对处理两种问题:技术和人员(其实领导搞破坏比小兵要厉害多了,应该写上这一条)
* 工业界,学术界,研究者,用户都支持(千秋万代,一统江湖)
* 需求和技术变换不影响它的本质层面,只需要改动一下外表,不伤筋动骨(九头鸟,百足虫)

P.S. 圆扩号中的是我写的评论,原文请见(http://www.semat.org/bin/view)。在这里多说一句:其实,只要脑子不笨的人,都能明白这里面的道道儿;但是换了一批“大师”来搞这个东西,估计效果会不一样吧? 当然,我过去碰到的那种不敢大声说“影帝是裸体的”人也不少,不过这种人还是容易被“大师”忽悠的,嘿嘿……

P.P.S. 这个东西从图老师的TWITTER看到的——感谢国家!

Advertisements

One Response

Subscribe to comments with RSS.

  1. Jay Xiong (熊继光) said, on 2010/10/06 at 08:27

    SEMAT 将是一群大师的重大失误:
    (1) 抓住芝麻当西瓜 – 软件工程的根本性问题是不完整、质量差、效率低、项目成功率低、而成本高、风险大、软件灾难发生越来越频繁等, 根本不是什么时尚和方法太多大乱问题 – 没有一个方法不是过时的,全都是线性思维和还原论的产物。
    (2)从一开始就迷失了方向 – 软件和如软件工程体系都是非线性系统,应该用复杂性科学来处理,因为复杂性科学是人类继相对论和量子力学之后最伟大的科学研究成果,专门针对非线性复杂系统,从整体与全局而不是部分与局部的观点来处理问题,是解决软件工程一系列问题的法宝。 可惜SEMAT的大师们却对复杂性科学视而不见,而盲目地企图寻找什么新的软件工程理论,完全迷失了方向。
    (3)SEMAT对解决软件工程的关键性、根本性问题的建树将微乎其微 – 软件工程是一个包含许多模块(组成部分,Components)的非线性复杂系统。根据复杂性科学的整体性原理,一个复杂系统整体的行为与特性是其各个部分相互作用而涌现出来的,是其各个部分所不具有的,也不能继承其每个部分所单独拥有的行为和特性。所以,不管SEMAT对于软件开发方法的改进贡献有多大,其对软件工程整体的行为和特性的影响都微乎其微,因为现有软件工程的其他部分也全都过时了,包括它的过程模型、测试方法、质量保证体系、文档体系、软件维护体系、软件项目管理体系等,这些部分如果不以复杂性科学来进行革命性改造, 光改进软件开发方法就根本没有什么作用。
    (4)除非太阳从西边出来,否则,用过时的砖瓦是不可能建造坚实的未来大厦的 – 还未建成就将倒下。看看SEMAT列举的所谓最佳实践就不难发现,实际上全都是过时的东西 – CMMI?它的所谓过程改进也是抓住芝麻当西瓜的:软件开发总成本和总工作量的75%以上都花费在软件维护上而不是狭义的软件开发上,但CMMI对软件维护过程却既不定义也不改进 (实际上由于它所依附的全是线性过程模型,所以根本无法进行软件的有效维护);那么,对软件开发过程的改进如何?CMMI再一次抓住芝麻丢了西瓜 – 它要求用户自己去选择现有的软件过程模型而不是由它去改进软件过程模型,然后才进行什么改进 – 试想,如果用户所选择的过程模型根本就不适合其项目,CMMI还能作什么过程改进?说不定是越改越糟糕;Use Case与UML? 它们正是线性思维和还原论的典型产物,作成的是一大堆局部图,丢了整体,这些图形或者模型由于不可追溯而难以进行静态查错,它们更不能动态运行而无法进行动态查错,天知道它们的质量如何,又怎么能成为指引其后的软件工程实践的蓝图呢?而且,它们势必与最终的源码不一致 – 这样的东西能不过时吗?取代它们的,将是源码(包括不含逻辑语句的骨架源码)驱动的动态建模技术等。

    是我们有五千年历史的黄炎子孙来收拾软件工程这个烂摊子的时候了!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: