`

绑定模型和实现2

 
阅读更多

Hands-On Modeler

 

人们总是把软件开发比喻成制造业。通过这个比喻可以推断出一个结论:经验丰富的工程师做设计工作,而技能水平较低的劳动力负责组装产品。这种做法使许多项目陷入困境,原因很简单——在软件开发中设计是无处不在的。开发团队中的每个成员都有自己的职责,但是将分析、建模、设计和编程工作完全分离会对Model-Driven Design 产生不良影响。

 

作者经在一个项目中负责协调不同的应用程序开发团队,帮助开发可以驱动程序设计的领域模型。但是管理层认为建模人员就应该只负责建模工作,编写代码就是在浪费这种技能,于是他们不准作者编写代码或者与程序员讨论细节问题。

 

开始项目进展得还算顺利。作者和领域专家以及各团队的开发负责人共同工作,消化领域知识并提炼出了一个不错的核心模型。但是该模型却从来没有派上用场,原因有两个。

 

其一,将模型传递给开发人员的过程中,模型的一些意图并没有像他们说明。模型的整体效果受细节的影响很大,这些细节问题并不时总能在UML图或者一般讨论中遇到的。如果我能做好准备,直接与开发人员共同工作,提供一些参考代码和近距离的技术支持,那么他们也许能够理解模型中的抽象概念并据此进行开发。

 

第二个原因是模型与程序实现及技术互相影像,而我无法直接获得这种反馈。例如,程序实现过程中发现模型的某部分在我们的技术平台上的工作效率极低,但是经过几个月的时间,我才一点一点获得了关于这个问题的全部信息。也许只需较少的改动就能解决这些问题,但是接个月过去了,改不改已经不重要了。因为开发人员已经自行编写出了可以运行的软件——完全脱离了模型的设计,在那些还在使用模型的地方,也仅仅是把他当做纯粹的数据结构。开发人员不分好坏地把模型全盘否定,但是他们又有什么办法呢?他们再也不愿意冒向人有待在象牙塔里的架构师摆布了。

 

与其他项目一样,这个项目的初始环境倾向于不让建模人员参与太多的程序实现。对于该项目所使用的大部分技术,作者有着大量的实践经验。在做建模工作之前,作者甚至曾经在同类项目中领导过一个小的开发团队,所以作者对项目开发过程和编程环境分非常熟悉。但是如果不让建模人员参与程序和实现,作者就是有这些经历也无法有效的工作。

 

如果编写代码的人员认为自己没必要对模型负责,或者不知道如何让模型为应用程序服务,那么这个模型就和程序没有任何关联。如果开发人员没有意识到改变代码就意味着改变模型,那么这个模型就和程序没有任何关联。如果开发人员没有意识到改变代码就意味着改变模型,那么他们对程序的重构不但不会增强模型的作用,反而还会削弱模型的效果。同样,如果建模人员不参与到程序实现的过程中,那么程序实现的约束就没有切身的感受,即使有,也会很快忘记。Model-Driven Design 的两个基本要素(即使模型要支持有效地实现并抽象出关键的领域知识)已经逝去了一个,因此最终模型将变得不再使用。最有一点,如果项目组的分工阻断了设计人员与开发人员之间的协作,是他们无法领悟Model-Dirven Design的奥妙,那么经验丰富的设计人员则不能将自己的知识和技术传递给开发人员。

 

因此:

任何才与建模的技术人员, 不关在项目中主要职责是什么,都必须花时间了解代码。任何负责修改代码的人员则必须学会用代码来表达模型。每一个开发人员都必须不同程度的参与模型讨论并且与领域专家保持联系。参与不同工作的人都必须有意识的Ubiquitous Language与接触代码的人及时交换关于模型的想法。

 

 

分享到:
评论

相关推荐

    KinectV2结合Unity3D人物模型绑定

    标题中的“KinectV2结合Unity3D人物模型绑定”是指使用微软的Kinect V2传感器与Unity3D游戏引擎相结合,实现对人体动作的捕捉,并将这些动作实时地同步到Unity3D中的3D人物模型上,从而创建出互动性强、真实感高的...

    欧美带绑定角色模型

    这些绑定模型可以广泛应用于游戏开发中的NPC(非玩家角色)设计,电影和电视动画的制作,甚至于虚拟现实(VR)和增强现实(AR)项目。它们可以减少艺术家在骨骼设置和测试上花费的时间,使他们能够更专注于动画的...

    说说MVC中的模型绑定问题

    在描述中提到的博文链接可能详细解析了模型绑定的实现和使用技巧,但由于无法直接访问,这里我们根据通用知识进行讲解。 模型绑定的过程通常包括以下步骤: 1. **参数匹配**:当用户提交表单或发送Ajax请求时,...

    ruby多模型绑定

    通过上述内容可以看出,在 Rails 中实现多模型绑定不仅可以简化代码编写工作,而且还能提高应用的可维护性和扩展性。掌握了这一技巧后,开发者可以更加灵活地构建复杂的业务逻辑,同时也能够充分利用 Rails 提供的...

    JBPM绑定自定义用户模型实现授权

    【JBPM绑定自定义用户模型实现授权】 JBPM(Java Business Process Management)是一个开源的工作流管理系统,用于构建和管理业务流程。在JBPM中,任务的授权和分配通常基于预定义的角色-用户模型,但这种模型可能...

    丝路传说第一套模型MAX 带绑定

    绑定是将3D模型的几何形状与骨骼系统关联的过程,使得通过操纵骨骼,模型的形状和动作能够随之变化,从而实现角色的动态效果。3DS MAX 9的绑定工具提供了强大的骨骼系统和蒙皮权重编辑功能,使得艺术家可以精确控制...

    王者荣耀3D模型(动作+绑定).rar

    这些3D模型和动作绑定可以供游戏开发者、艺术家或爱好者学习、研究和参考,了解游戏模型的设计和实现过程。同时,它们也可以用于非商业项目,如粉丝创作、教学示例或个人作品集的构建。不过,值得注意的是,任何商业...

    牧师模型(带骨骼绑定).zip

    2. **骨骼绑定**:骨骼绑定,也称为骨架蒙皮或者骨骼蒙皮,是一种技术,将3D模型的几何体与一个骨骼结构关联起来。每个模型的表面部分都会“绑定”到特定的骨骼上,这样当骨骼移动时,相关的模型表面也会随之移动,...

    猎天使魔女2贞德模型 Maya+obj格式 含材质带绑定

    总之,这个"猎天使魔女2贞德模型 Maya+obj格式 含材质带绑定"的资源为3D艺术家和游戏开发者提供了高质量的素材,他们可以通过Maya或obj格式导入模型,直接使用预设的材质和骨骼绑定进行进一步的创作,无论是用于游戏...

    js实现数据双向绑定

    数据双向绑定的核心思想是建立模型和视图间的连接,通常通过监听和触发事件来实现。当模型数据发生变化时,通知视图进行更新;反之,当用户在视图中操作导致数据变化时,也会同步到模型。这种机制减少了开发者手动...

    基于.net的数据绑定模型与创建可绑定的数据网格

    本主题主要探讨的是如何利用.NET的数据绑定模型来创建可绑定的数据网格,以实现高效、动态的数据展示和管理。 首先,我们要理解数据绑定模型的基本概念。在.NET中,数据绑定是通过将控件(如GridView或ListView)的...

    依赖属性实现绑定

    总结,依赖属性是WPF中的核心特性,通过它实现了控件属性与数据源的高效绑定,极大地增强了WPF应用的可交互性和灵活性。正确理解和使用依赖属性,能让你的WPF应用具备更强大的功能和更丰富的用户体验。在实际开发中...

    vue双向绑定简单实现

    在提供的`myMvvm-master`压缩包文件中,很可能是包含了Vue的一个简单实现或示例项目,你可以通过查看源代码进一步学习和理解Vue的双向绑定机制。通常,这样的项目会包含`main.js`入口文件、`App.vue`主组件以及其他...

    蓝猫的三维模型,可绑定骨骼

    骨骼绑定,或称为骨架绑定,是将3D模型与骨骼结构关联的过程,使得模型的各个部分可以通过移动骨骼来实现动态效果,如走路、跳跃等。这在动画制作中至关重要。骨骼绑定涉及到权重分配,每个模型顶点都会被分配一个或...

    WPF实现DataGrid嵌入ComBox绑定

    - ViewModel:作为视图和模型之间的桥梁,提供数据处理和业务逻辑,并暴露给视图的数据属性(通常用INotifyPropertyChanged接口实现属性更改通知)。 - View:WPF的XAML界面,绑定到ViewModel的属性。 2. ...

    剑灵OL女绑定 3dmax模型

    在3D模型文件方面,woman_mainbody3 - 副本.max是3ds Max格式的模型文件,包含了模型的几何结构、骨骼绑定和动画数据。这个文件至关重要,因为它是整个3D角色的核心,包含着模型的所有形体信息和与之相关的动态属性...

    WPF 数据绑定 命令绑定 事件绑定 View和ViewModel的通信 MVVM模式

    在Windows Presentation ...总结来说,WPF的MVVM模式结合了数据绑定、命令绑定和事件绑定,实现了UI与业务逻辑的解耦,提供了高效且可维护的开发方式。理解并掌握这些技术对于任何WPF开发者来说都是至关重要的。

    MVVM实现数据双向绑定

    3. **ViewModel(视图模型)**:作为视图和模型之间的桥梁,ViewModel提供了用于操纵模型的公共属性和方法,并且这些属性和方法与视图中的控件进行绑定。ViewModel通过监听模型的变化并更新视图,同时响应视图的事件...

    2D人物骨骼绑定

    在2D人物骨骼绑定过程中,首先需要建立人物模型,这通常包括绘制角色的各个部位并将其分层组织。然后,我们可以为每个身体部分创建骨骼,例如头部、四肢和躯干。骨骼的层次结构应与身体部位相对应,这样可以确保运动...

    WPF实现同线程绑定,跨线程绑定

    通过以上方法,你可以在WPF中安全地实现跨线程绑定,确保UI与后台数据的一致性和线程安全性。在实际项目中,根据需求选择合适的方法,但通常建议尽量减少对UI线程的直接操作,以保持用户界面的流畅响应。

Global site tag (gtag.js) - Google Analytics