从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 之路
门慢慢地开了,人群又开始骚动起来,因为人们看到了远处美丽的胜景和阻挡在眼前宽广的河流。
有些人自信满满地跳入了河中打算孤身游过彼岸,可是却失败了。
有些人匆匆忙忙地造了船胡乱地滑向彼岸,可是也失败了。
要想继续这段探索之旅,众人必须齐心协力紧密合作。
是时候把一群人变成一个团队了。
从IT的角度思考BIM(二):模式与框架的更多相关文章
- 从IT的角度思考BIM(三):敏捷开发
人们看到了远处BIM的美丽胜景和阻挡在眼前的宽广河流.有些人自信满满地跳入河中打算孤身游过彼岸,可是却失败了.有些人匆匆忙忙地造了船胡乱地滑向彼岸,可是也失败了. 要如何继续这段探索之旅? 无论是&l ...
- 从 IT 的角度思考 BIM(一):面向对象
还记得那个笑话吗:要把大象放进冰箱,总共分几步?这不仅仅是一个笑话,还是一个值得我们好好分析的笑话. 如果要放进冰箱的是一个苹果,那么也就不可笑了,但换成大象,就引起了我们的兴趣和注意,为什么? 我们 ...
- 从有约束条件下的凸优化角度思考神经网络训练过程中的L2正则化
从有约束条件下的凸优化角度思考神经网络训练过程中的L2正则化 神经网络在训练过程中,为应对过拟合问题,可以采用正则化方法(regularization),一种常用的正则化方法是L2正则化. 神经网络中 ...
- X-Cart 学习笔记(二)X-Cart框架1
目录 X-Cart 学习笔记(一)了解和安装X-Cart X-Cart 学习笔记(二)X-Cart框架1 X-Cart 学习笔记(三)X-Cart框架2 X-Cart 学习笔记(四)常见操作 四.X- ...
- MVC模式-----struts2框架(2)
MVC模式-----struts2框架 第一个struts2程序 struts2框架是通过一个过滤器将struts2集成到Web应用程序中的,这个过滤器的对象是StrutsprepareAndExec ...
- MVC模式-----struts2框架
MVC模式-----struts2框架 一.struts MVC模式 1.概述 MVC是模型(model)---视图model(view)---控制器(control)的缩写,是一种用于将逻辑.数据和 ...
- 读书笔记《PHP高级程序设计、模式、框架与测试》
序言 闲来无事,下载了一些电子书,然后看书名不错<PHP高级程序设计_模式.框架与测试>,翻了一下虽然书有点老了但是讲的内容经常会碰到!给大家推荐一下,然后这里放上我的读书笔记,每日更新. ...
- 深入理解.NET Core的基元(二) - 共享框架
原文:Deep-dive into .NET Core primitives, part 2: the shared framework 作者:Nate McMaster 译文:深入理解.NET Co ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(二十)——Saga框架实现思路分享
今天这篇博文的主要目的是分享一下我设计Saga的实现思路来抛砖引玉,其实Saga本身非常的类似于一个简单的工作流体系,相比工作流不一样的部分在于它没有工作流的复杂逻辑处理机制(比如会签),没有条件分支 ...
随机推荐
- 深入浅出JMS(一)——JMS简单介绍
假设手机仅仅能进行实时通话,没有留言和短信功能会怎么样?一个电话打过来,正好没有来得及接上,那么这个电话要传递的信息肯定就收不到了.为什么不能先将信息存下来,当用户须要查看信息的时候再去获得信息呢?伴 ...
- careercup-递归和动态规划 9.10
9.10 给你一堆n个箱子,箱子宽w,高h,深d.箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子.实现一个方法,搭出最高的一堆箱子,箱堆的高度为每个箱子高度的总和. 解法: ...
- ODB 下载与安装 (Linux)
http://www.codesynthesis.com/products/odb/download.xhtml Installing ODB on UNIX Introduction This gu ...
- 转:Oracle EBS 寄售业务总结
转自:http://blog.vsharing.com/nicr/A1359214.html 总述: 须通过一揽子采购协议(BPA)明确采购方与供应商之间的寄售关系,及各种协议条款: 通过来源补充规则 ...
- day-5
/* 还有几半天了 上午考试暴力暴力暴力... 亏我还写了对拍 没有卵用 T2 差点事 T3不难却没咋么认真想 这tm就很尴尬了23333 下午整理题 一下午.... 晚上打月赛 + 单调队列 继续说 ...
- react环境搭建
react-webpack文件夹是开发目录,在此目录下执行命令,假设你已经正确安装了 nodejs 一:参照教程搭建环境 https://github.com/newtriks/generator-r ...
- datetimepicker 初始化只显示年
$("#overdue2").datetimepicker({ format: 'yyyy', autoclose: true, startView:4, minView:4, t ...
- Java集合和PHP的对比
这里突然感觉到在java中的集合,和php的数组非常相似 .
- 封装一个ISortable接口
using System;/// <summary>/// 排序规范/// </summary>/// <typeparam name="T"> ...
- Android获取屏幕尺寸大小
官方API: A structure describing general information about a display, such as its size, density, and fo ...