使用MDSD开发安全可靠的软件
2010-06-30 00:00:00 来源:WEB开发网这里有个简单的例子展示了反腐化层所带来的好处:假设您用自己的DSL管理您全世界的豪华汽车车库容量。在版本1中,您为每一辆车指定了宽度、高度以及长度。几个月后,你发现您的车库里只停了三种尺寸的车辆:S、M以及L,因此,新版本的仓库尺寸描述替代了三维描述。您没有将新版本尺寸描述马上上线,而是实现了一个反腐化层,该层仍然理解原来版本1的三维元模型,只是在内部将其变换为版本2的尺寸元模型。
拇指规则
就像您在示例中看到那样,我们经常面对各种不兼容性问题。当结合MDSD处理兼容性问题时,本文得出如下规则:
向后兼容性是用户友好的
流行的顶尖应用将带来更多的客户。委托客户增加时,您必须应对随之而来的更多的需求。因此,成功的应用将进一步开发后续版本。以往已经有足够多的失望之极的客户与不兼容性作斗争的反面示例,所以解决兼容性问题将得到客户非常高的满意度评价,可以将客户牢牢拉拢在您的解决方案上。满意的客户是长期系统运维的关键动力。
向后兼容性是昂贵的
兼容性不是免费的。生存周期关注面犹如一个沉睡的巨人,架构师通常不会去唤醒它们。一旦它们被唤醒,特别是在开发后期,我们需要花费巨大的代价来控制它。通过模型驱动技术,兼容性关注面可以在一开始就被评估出并可以进行正确的整合处理。因此,兼容性问题不再限制了成功产品的演化。使用增量式迁移能够保持低成本、可管理的复杂度:只提供直线迁移路径替代提供所有支持版本迁移路径。迁移链完成后,您一样可以达到同样的迁移目标。
不兼容性不可避免
兼容性问题在所有的软件产品中都需要考虑。对于内部产品而言,使用范围与兼容性可以被控制,而其他产品则需要避免发生兼容性问题。项目需要有着保持向后兼容的能力以及可以朝着向需要方向进行合并的生命力。只有这样才能让产品长期存活。因此,不要等兼容性问题发生时才后悔,对于公开开发的产品更是如此。事实上,开源开发者从不知道他们的产品将被如何使用,在何地使用。
系统一旦发布,就成了遗留系统
一次发布版本号描述了系统生命中的一个快照。一旦发布了确定的版本,开发其实早已进行多时。因此,该发布描述了过去的开发状态。当产品发布后,您不得不为了赢得客户满意而为其提供支持。
模型差异也是模型
前两个示例中强调,模型差异描述了一些有价值的、可在后续开发中利用的信息。在运用模型驱动方法后,获取不同模型版本的差异模型是非常廉价的。已有工具链需要被扩展,以产生并处理差异模型。一些环境(例如版本控制系统)对于维护已有模型版本是非常有用的。
反腐化层是一种最佳实践
反腐化层给我们带来一种处理兼容性与弹性的有力模式。当内部与外部联系非常紧密时,它清晰地分离了内部与外部表示。它所引入到已有工具链中的部分是非常小的,并且可以在稍晚时候引入。一旦整合完毕,它允许所有终端独立演化。
有用的框架与工具
Java中的MDSD框架有:openArchitectureWare(oAW)[10],它是一个“构建MDSD/MDA工具的工具”。它是 Eclipse模型项目(EMP)的一个子项目,提供了健壮的模型驱动开发解决方案。在EMP中,Eclipse建模框架(EMF)[11]作为主要的构建工具提供了顶尖的结构化数据模型处理。因为oAW非常多地使用了EMF技术,所以我们建议两者结合使用。EMF Compare[12]是一个用于比较EMF模型的工具,看上去它非常适合我们创建有价值的差异模型。
更多精彩
赞助商链接