什么是模型? 模型就是对事物的一个抽象表达,所以任何分析设计,不管是文本的,还是图形的,是自由表达的,还是规范化表达的,都是模型。
模型肯定是可以评价的,要根据它的适用范围,也就是它要解决的问题来评价它。不同适用范围的模型是无法评价的。
模型可以通过它的表达方式和它的表达内容来评价。
所谓表达方式就是是文本的,还是图形的,是自由表达的,还是规范化表达的,是人看懂的,还是机器看懂的,还是人和机器都能看懂的。
所谓表达内容就是模型所包含的对象以及对象关系是否合理,它的可验证性、可扩展性等方面。
模型之间是要作相互转化的,这包括两层含义,一是转换,这时候模型本身的内容是不作增减的,只是表达方式的转换,如自由文本格式的转换为UML表示的,UML表示的转换为编程代码,由需求说明转换到系统设计。二是进化,这时候模型本身的内容是要细化的,但是表达方式不变,如由元模型进化到模型,由需求大纲进化到需求说明,由概要设计进化到详细设计,由接口实现到系统实现。
这是一横一纵两个方向的转化。
HL7V3与V2都是接口设计,所以都可以说是模型,但是他们是有本质差别的,这个差别并不在表达方式上,因为上面说了,表达方式是可以转换的,这个差别是在于表达内容上。
前面说了,一切分析设计都是模型,从它的产生到它的完成,有两个方向的发展,一个是模型转换,一个是模型进化。
有没有模型转换?这个是相对的,因为要机器完全理解人的自然语言是不现实的,所以模型转换是必定要作的,我们说不需要作模型转换是指用户自己就可以在我们设定的一个层面上作模型转换,而不需要我们来作,而这个层面以下的模型转换是由我们的工具来完成的。
如果用户自己就会用VB编程,那VB也可以说是一个模型工具,当然这么说是太离谱了,但大概意思是这样的。
而且模型工具是需要提供一种适用于建模的语言,也就是适用于解决领域问题的语言,DSL(Domain Special Language)。只有提供了DSL的工具才能叫做模型工具。
从这个意义上来说,在医疗卫生领域,现在根本就没有模型工具,因为现在还没有开发出医疗卫生领域的DSL。
模型转换是肯定可以实现的,就如同人类的语言有上千种,都可以表达相同的意思。
表达内容主要就是在于模型进化了。也就是在于是否能够讲清楚这个内容是如何产生的。知其然不知其所以然,对于用户来说是可以的,但对于开发者来说就不够了。
也正是因为没有模型进化的方法,所以很难讲清模型是否合理,因为他的模型是随意想出来的,并没有一个可以有效推导和验证的方法。
也就是要作出一个能盛水的东西是比较容易的,但是那个东西叫不叫杯子,是需要对杯子有一个定义的,也就是一个模型进化的方法。
HL7V3和V2都是模型,但是V3是有模型进化的,而V2是没有的,这个就是本质的差别。
如同科学,首先要建立公理,然后推导出定理,然后才去证明各个命题。这就是模型进化。
如果我们抛开公理、抛开定理,直接凭直觉去证明命题,这是不科学的,但现在在模型建立上我们就是这样作的。
所以我们要建立的参考模型就是公理,各个项目凭此去制定标准,就是推导定理,各个厂商遵循标准去开发系统,就是证明各个命题。
没有公理、没有定理,直接去评价命题是否正确,那肯定是要见仁见智的了。
什么是模型的进化?
模型是对事物的一个抽象表达,直至完整表达出这个事物。模型的进化就是从抽象到具体的一个不断细化的过程。
模型的进化就是从元模型到模型到事物的一个推导过程,模型的反进化就是从事物到模型到元模型的一个归纳过程。
不了解模型就无法完整正确的表达事物,就如同我们看到一个东西,但是我们形容不出来,因为我们觉得没有合适的词,这就是不了解模型。这个词就是模型。
我们硬要表达看到的这个东西,就有两种方式,一是用现有的词组合起来去解释,二是造新词。但是如果要造新词,我们就必须懂得造词的方法,这就是元模型,否则我们造出来的词别人是很难理解的,也就很难接受,于是大家就各自造新词,于是就谁也不懂谁说的。
所以元模型是非常重要的,就如同公理是非常重要的一样。
但是作元模型也是非常困难的,因为对事物的了解越多,对模型的归纳就越完整,对模型的了解越多,对元模型的归纳就越完整。
模型和元模型如果不够完整,则它的使用就会受到很大的限制。
医疗卫生行业的事物是很复杂的,所以作起来是很困难的。
虽然有HL7作参照,但也必须完全掌握HL7现有的模型,知道它支持什么,不支持什么,然后才能去作扩展。而这个扩展又必须在充分了解医疗卫生的事物的基础上,所以这个难度是非常大的。 |