从IT的角度思考BIM(二):模式与框架

  我们满怀着美好期许,鼓起勇气敲响了 BIM 世界的大门。忽然人群中有人高呼:BIM 已死,大家都散了吧!

  这时人群开始骚动起来。“我早就说这玩意是忽悠人的吧,你们不信还偏要来”,“我花了好多钱准备这次探索,这都死了,咋办?导游在哪呢,我要投诉!”有些人原路折返,有些人捶胸顿足,有些人呆若木鸡。

  门慢慢地开了,人群又开始骚动起来……

  本文将继续从 IT 的角度来思考 BIM,希望能给大家带来一些启发。

模式与框架

  软件设计中的“模式”源自建筑师克利斯托弗·亚历山大(Christopher Alexander)与萨拉·石川佳纯(Sara Ishikawa)及墨瑞·西尔弗斯坦(Murray Silverstein)在1977年合著的书《建筑模式语言》(A Pattern Language: Towns, Buildings, Construction)。书中说道:每一个模式描述了一个在我们周围不断重复发生的问题以及该问题的解决方案的核心,这样你就能多次使用该解决方案而不必做重复劳动。后来这一理念被引入到了软件设计中,在四人组(Gang of Four,简称 GoF。指 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人)合著的《设计模式——可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书中被人们熟知,广泛地应用在软件设计中。使用模式可以让代码更容易管理、重用和扩展,从而提高软件开发的效率和质量。

  软件设计中常提及两种模式:一种是架构模式,一种是设计模式。架构模式是从系统的层面上定义各个子系统的职责并据此进行组织设计,而设计模式是从子系统的功能层面上来定义功能的实现方式。

  与建筑结构中的框架相似,软件设计中的框架也是指结构。这个结构实现了一些通用功能,开发者在特定的框架下只需要实现核心的业务逻辑设计,从而提高了软件开发的效率和质量。

MVC

  MVC 是一种模式(主要体现为架构模式,也体现为设计模式),也有使用各类技术实现的各种 MVC 应用框架。

  MVC 是三个字母的缩写,分别是 Model(模型)、View(视图) 和 Controller(控制器)。它的中心思想是“分离”,目的是降低代码的耦合性,提高代码的重用性,使软件更易于测试和维护。简单来说 MVC 的工作原理就是 M 产出数据,V 展现数据,C 响应用户请求并对 M 与 V 进行控制和协调,整个软件的代码就围绕着这些角色来组织编写。M 和 V 的工作方式有点像是使用 Excel 为数据创建图表。在 Excel 中我们可以使用各式各样的图表来展现同样的数据,对于一个 M 来说,可以使用多个 V,每一个 V 都有其适用的情况。不过实际情况比上述比喻要略微复杂一些,比如在 M 和 V 之间通常还有一个角色,就是 VM(ViewModel,视图模型),VM 通过业务逻辑(Business Logic)处理 M 而获得,用于与 V 直接绑定,实现“数据驱动 UI(User Interface,用户界面)”的理念。

建筑、信息与模型

  如果我们从模式和框架的角度把 MVC 的概念“生搬硬套”过来,BIM 该如何分离呢?从字面上来看,就是建筑、信息与模型。不过 BIM 里的 M 并不是 MVC 里的 M,而是 V,它代表着工具。我们根据需要选取工具创建信息,同样的信息也可以在不同的工具中展示及使用。从这一点看,BIM 软件就像是一个复杂的 UI,通过它可以实现使用者与数据的交互。BIM中的I是MVC中的M,它既包含元数据(关于数据的数据,定义并规范着数据),也包含大数据(所有的工作流程数据及工作成果数据)。BIM 中的 B 比较特殊,它既包含业务逻辑又包含控制器。在 BIM 中,所有的信息都通过复杂的建筑逻辑进行处理,又在各个专业和不同工作阶段中流动。

  从上述角度对 BIM 重新分解,它包含以下部分:

  • BI(Building Intelligence,建筑智能),由建筑知识,建筑逻辑和建筑流程组成。
  • I(Information,信息),由建筑信息与工作流程信息组成。
  • IM(Information Maker,信息制造者),由各专业团队和生产力工具组成。

  目前我们主要还是在局部范围内使用 IM 产生的信息片段,还没有能够有效地在全局范围内使用 I。由于目前 IM 的问题已基本解决,软件公司正在朝着I和BI进发,当他们解决了 I 和 BI 问题的时候必将爆发建筑业的空前革命。

  对建筑企业来说,如果不想被各类软件 “绑架”,就要从以上各部分着手将各类软件“消化”为企业应用平台的组成部分。

踏上 BIM 之路

  门慢慢地开了,人群又开始骚动起来,因为人们看到了远处美丽的胜景和阻挡在眼前宽广的河流。

  有些人自信满满地跳入了河中打算孤身游过彼岸,可是却失败了。

  有些人匆匆忙忙地造了船胡乱地滑向彼岸,可是也失败了。

  要想继续这段探索之旅,众人必须齐心协力紧密合作。

  是时候把一群人变成一个团队了。

时间: 2024-10-18 15:16:36

从IT的角度思考BIM(二):模式与框架的相关文章

从 IT 的角度思考 BIM(一):面向对象

还记得那个笑话吗:要把大象放进冰箱,总共分几步?这不仅仅是一个笑话,还是一个值得我们好好分析的笑话. 如果要放进冰箱的是一个苹果,那么也就不可笑了,但换成大象,就引起了我们的兴趣和注意,为什么? 我们现在对 BIM 已不再陌生,但如果跳出建筑的视角来思考 BIM,我们是否会有全新的认识呢? 本文将从 IT 的角度来思考 BIM,希望能给大家带来一些启发. 面向对象与面向过程 当我们把一个苹果放进冰箱时,我们其实并不太关注它(或者试试把苹果手机放进冰箱!),我们关注的是放进冰箱这个事儿.不,事实上

培训感悟---站在客户的角度思考

"好"并不一定就能够解决问题,适合我们的才是最为重要的               ---题记 最近一直在思考,自己是否要准备一个为期5天的大数据的课程.从自己知道的几个部分全面去讲解大数据的产生,发展,落地及与我们的关系.比较担心的是自己没有做过相关的项目,这样只讲原理是否会有更大的效果. 为什么会产生以上的想法,是因为后来发现,当我们站在客户的角度来思考问题的时候,才能更加深入的感受到客户对技术更迭的期待以及变革自身营利模式的迫切. 从当初的滴滴打车与快滴打车的竞争中,我们就能够看

Spark源码的角度思考Scala中的模式匹配

学习了从Spark源码的角度思考Scala中的模式匹配,如case class应用,伴生对象中用apply,所以没有new class,直接进行模式匹配,例子如下 Case class RegisterWorker( Id: string, Host: string, Port: int, Cores:int, Memory:int, webUiPort:int, publicAddress:string, Extend DeployMessage{ Utils.checkHost(host,”

从集合的角度思考DP问题

从集合的角度思考DP问题 如上图展示了DP问题思考的一个简单步骤来自y总直播,"就像计算乘法一样,学会分析DP问题就像学会列竖式一样,让处理DP问题更简单"这就话让我瞬间意识到分析问题的重要性,处理DP问题不应该是想出转移过程,应该是一步步分析出来的.这篇博客记录以后做题过程中我对DP分析方法的理解和总结 #one. 杨老师的照相排列 (第一篇废话较多) DP问题 这道题目前我解释不出为什么要用DP做,但Count是DP一类题型 分析过程 DP一般就是一个状态向另一个状态转移,在这个过

MVC模式-----struts2框架(2)

MVC模式-----struts2框架 第一个struts2程序 struts2框架是通过一个过滤器将struts2集成到Web应用程序中的,这个过滤器的对象是StrutsprepareAndExecuteFilter.struts2框架通过过滤器对象,获取web应用中的Http请求,并将http请求转发到的指定Action进行处理,Action根据处理结果返回给用户相应的页面. 创建一个简单的struts项目,需要创建于用户进行交互并获取输入信息的jsp页面:呈现最终信息的页面:创建一个用于业

深入理解.NET Core的基元(二) - 共享框架

原文:Deep-dive into .NET Core primitives, part 2: the shared framework 作者:Nate McMaster 译文:深入理解.NET Core的基元(二) - 共享框架 作者: Lamond Lu 本篇是之前翻译过的<深入理解.NET Core的基元: deps.json, runtimeconfig.json, dll文件>的后续,这个系列作者暂时只写了3篇,虽然有一些内容和.NET Core 3.0已经不兼容了,但是大部分的原理

Python爬虫进阶二之PySpider框架安装配置

关于 首先,在此附上项目的地址,以及官方文档 PySpider 官方文档 安装 1. pip 首先确保你已经安装了pip,若没有安装,请参照 pip安装 2. phantomjs PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速.原生支持各种Web标准:DOM 处理.CSS 选择器.JSON.Canvas 和 SVG. PhantomJS 可以用于页面自动化.网络监测.网页截屏以及无界面测试等. 安装 以上附有官方安

php后台开发(二)Laravel框架

php后台开发(二)Laravel框架 为了提高后台的开发效率,往往需要选择一套适合自己的开发框架,因此,选择了功能比较完善的Laravel框架,仔细学来,感觉和Python语言的框架Django非常类似. Laravel框架 Laravel是一套web应用开发框架,它具有富于表达性且简洁的语法,并提供了验证(authentication).路由(routing).session和缓存(caching)等开发过程中经常用到的工具或功能. 框架安装 安装composer http://docs.p

cocos2dx游戏开发——微信打飞机学习笔记(二)——游戏框架

一.游戏的基本框架: WelcomeScene    ——>    GameScene   ——>   GameOverScene ||                                       ||                                    || ∨                                      ∨                                   ∨ WelcomeLayer