文档开发者中心
我的

大自然从不建模!试评“模型驱动开发”方法的不靠谱(一)

大自然从不建模!试评“模型驱动开发”方法的不靠谱

By HW-WWS

摘要:建模就是建立模型,它是人类赖以认识世界、理解世界、改造世界的基本手段,也是系统工程师用以概念化产品的基本方式。三十多年来,以模型驱动(或基于模型)为名的各种工程方法层出不穷,每隔几年就会翻新一次花样,如MBSE(Model-based Systems Engineering)、MDD(Model-Driven Development),近年则有Digital Twin, Digital Tapestry等等。然而,这方面的企业级成功案例不仅寥寥无几,而且集中在航空、航天、控制等有限的领域,最初挑战依旧是:前期投资大、缺少合适的建模语言、技术门槛高和文化障碍等,此外,还面临三个工程难题(全量建模无法进行,模型一致性不能保证以及正确性难以验证)和一个技术难题(模型与代码的颗粒度是否一致)。文章提出了一个判断系统可否采用模型驱动开发方法的标准。然而,包括华为大多数产品和业务活动在内,绝大多数和人类相关的系统都是“中数系统”(“有序的复杂”),这类系统遵循薛定谔的“N的平方根”定律,因此,建模是困难的,面向未来的完美建模、全方位建模是不可行和不必要的。要想推进模型驱动开发或数字化变革,不应以运动的方式开展,应当自下而上,聚焦当前的局部、具体问题的解决,基于现有的IT系统开展优化,确保每一点优化,都落在价值变现上。

文中提出“大自然从不建模”,并非有意否定人类的智慧,否定分析建模的可行性与必要性,而是希望人们能够从大自然的演化史中获得启发,唤起对建模的神话和泛化的警惕,在复杂系统面前有所敬畏,脚踏实地,解决好眼前的问题。只有这样,我们的所为才会成为模型,而不是墓碑。

说明:本文一方面为应邀之作,另一方面也是近期讨论的结晶和延伸。本文对各位专家观点做了未必尽妥的引述,更多的则是我个人的思考和观点,如其中有任何偏颇、谬误,皆为本人能力不足所致,欢迎批评,欢迎讨论。

方法层出不穷,喜报寥若晨星

   “罗密欧与朱丽叶”中有一句著名的台词:“玫瑰即使换一个名字,依然芬芳如旧。”

建模是个好东西,有必要,很有用,有着如同“罗密欧”一样的魅力,每隔几年,就会以不同的面目冒出来若干以MBx或MDx冠名的神药——基于模型的系统工程(MBSE)...模型驱动开发(MDD)...基于模型的工程(MBE)...模型驱动的工程(MDE)…以模型为中心的工程(MCE)...数字线程(Digital Twin)...数字主线(Digital Thread)……这些方法都号称可以摆脱以文档为中心的开发模式,或达成端到端的跨专业协同,甚至提高生产率1000%(某些报告中声称),等等,可以说,每个概念都芬芳如旧,但一吻之下,尝到总不是甜美。

而且,这一堆MBx,MDx都有啥区别?不光公司内没几个人能说清楚,过去二十年里,业界也一直纠缠不清。几乎每篇国际会议文稿中都要去解释“什么是MBSE”、“什么是MDD”。INCOSE 2016国际大会上,超过25%的时间都花在阐述MBSE的概念上!

   这说明了什么?

这里再提供几个事实:

- OMG上的 Model-Driven Architecture文本是 2001年的版本

- MBSE、MDD、PLE方面的国际会议,如MODELS,MODELSWARD,正逐年趋冷,其中,MODELS 2018的主会专题几乎找不到,2019含合作会议在内不过三天,MODELSWARD议题少到连日程表都用不着了!

- Google上关于MDD的网页较陈旧,MBSE的论文数一直不多,近年稍有上升

- QCon上最新MDD视频是2014年的

……

这些又说明了什么?

图1 2004年以来Model Driven Development相关论文发表趋势

图2 2004年以来Model-based System Engineering相关论文发表趋势

因此,出于专业良知,基于技术趋势、华为实践、经验和软件工程理论的综合思辨,我和很多同事都不看好这类方法。

或许在特定产业或产品——如航空航天、控制系统、汽车等——上,以及性能建模与仿真、安全威胁建模等具体活动中,某种MDD、MDE、MBSE或MBE方法能够发挥一定的作用,但在其它大规模产品开发中,至今未有见效者。

四个主要挑战

       综合业界相关报告,MDD、MBSE等的推行通常会面临如下挑战:

       1) 前期投资,尤其是工具和培训投入大,到头来,还必须靠人来想清楚问题和动手解决问题。

       2) 缺乏语言,迄今为止,依然没有一种合适的建模语言,UML 2.0描述能力弱,使用人数越来越少(多位业界专家估计,全球使用UML的人数已少于10%);sysML有所改进,但一方面更接近软件工程师的使用习惯,另一方面,对于DFx需求(架构需求的主要部分)的描述能力依然薄弱。

图3 UML vs sysML

   3) 技术门槛高,能很好地理解和应用模型、模型语言(UML、sysML、DSL等)的工程师并不多。这并不是说企业加强培训就可以提高工程师的相关能力。《The Pragmatic Programmers》一书中指出:“研究似乎表明,大多数人的大多数技能,在他们生命的大多数时间里,从没有高于第二阶段高级新手,‘执行他们需要做的任务并根据需求学习新任务,但是从来没有对任务环境获得更广泛的、概念上的理解’”。可以想象,你是不可能指望这样的“高级新手”能拥有很好的抽象建模能力的。

   4) 文化障碍,工程师总是抗拒模型的使用,管理层往往也很犹豫。


点赞
收藏
回复
分享
举报
浏览4241 编辑于2019-07-08 08:52未知归属地
全部评论
最多点赞
最新发布
最早发布
暂无评论
暂无评论
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。