使用MDSD开发安全可靠的软件
2010-06-30 00:00:00 来源:WEB开发网核心提示: 案例:java.lang.Cloneable Java中的java.lang.Cloneable接口说明了向后兼容性是如何限制软件演化的,该接口在JDK 1.0时被引入,使用MDSD开发安全可靠的软件(2),仅作为一个标记,并不提供任何接口方法,OSGi版本控制体系[6]定义了版本分类模式maj
案例:java.lang.Cloneable
Java中的java.lang.Cloneable接口说明了向后兼容性是如何限制软件演化的。该接口在JDK 1.0时被引入,仅作为一个标记,并不提供任何接口方法,想要支持克隆的类型都需要实现这个接口。
此外,它还需要提供 java.lang.Object.clone()方法合适的实现。其实clone()方法如果定义在java.lang.Cloneable接口中似乎更有说服力,并且更自然。但事实上该接口从未改变过,因为那将会破坏向后兼容性。引入克隆接口方法会导致对所有已实现该接口的类的编译错误。关于这个bug的完整历史,请参看[3],对于java.lang.Cloneable更详细的讨论,请参看[4]。
在分析我们系统中已经存在的生存周期问题细节以前,非常有必要建立一个公共术语表。
向后兼容性
如果出现以下情况,那么可以认为该系统是向后兼容的:
它能处理以前系统的接口
它能处理以前系统的数据
该系统的使用者不必关心系统版本改变
系统的修改可能引发向后不兼容的问题。通过引入兼容性层可以解决这个问题,该层负责提供以前系统接口的视图。在这样的环境中,权衡并设计进-出良好的接口更加重要。
关于二进制与源代码的兼容性在本文中不做讨论,[5]中描述了它们和Java语言之间的差异。
更新
更新描述的是对已有软件的改进。通过一次更新,应用的特性集是不会被扩展的。更新的主要目的在于提供额外的健壮性(例如修复安全隐患)。更新不会涉及到接口与数据描述的改变,它不会引发向后兼容性问题。OSGi版本控制体系[6]定义了版本分类模式major.minor.micro。一次更新只增加第三位,即micro位的版本号。
更多精彩
赞助商链接