使用MDSD开发安全可靠的软件

我们何时可以认为软件产品被真正地完成了呢?通常情况下,当我们不再为其提供后续支持,或者该产品已经 被其它产品替代的时候,它的生命就终结了,几乎所有软件产品都会经历从开始到结束的演化过程。但存在了很长 时间的大型企业级系统却会随着时间的推移,向不可维护、变僵硬的趋势发展。这导致了软件开发的停滞,使得响 应客户需求的时间变长。

本文说明了如何使用MDSD方法来决这些问题。文章首先介绍了我们要解决的问题——向后兼容性问题和升级问 题,说明了为什么这些问题很难解决,然后描述了在当前的软件体系结构中容易隐藏非功能性关注面的地方。

文章中举了三个例子,用来说明MDSD技术如何帮助我们在不损失灵活性的前提下,解决软件生命周期问题。这 些例子都是来自于电子保健行业中的真实敏捷项目,作者还说明了其中的最佳实践可以怎样应用于其他情况下。

项目中得到的经验教训被总结为拇指规则(在面对复杂环境时候采用的一种简化或经验性的处理方式,因为理 性的处理能力是有限的),在文章的最后,引用了一些有用的框架与工具,它们是目前解决方案的基础。

介绍

在软件工程领域,经过几年的实践,模型驱动的软件开发(MDSD)已经证明了它并非是昙花一现。如今,MDSD 的很多承诺[1]已经变成现实,大量成功的例子也持续涌现出来。

本文说明了可以如何使用模型驱动方法来解决当前软件系统中的一些问题。牢记MDSD最佳实践[2],我们将关注 软件生命周期本身这个非功能性需求。

软件生命周期

几乎所有的现代软件系统都面临着生命周期问题。当产品发布或是部署时,你不得不解决向后兼容以及迁移策 略等问题。我们通常会低估产品兼容性问题,或是在开发中完全忽略这个问题。当我们不得不花费很多资源来解决 产品兼容性问题时,才会后悔莫及。严肃地看待这个问题会影响到软件产品的演进,正如我们将在下面这个例子中 所看到的。

案例: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位的版本号。

时间: 2025-01-21 02:38:26

使用MDSD开发安全可靠的软件的相关文章

关于 软件开发工程师 和 Android软件应用开发工程师 以及云计算工程师发展前景

问题描述 关于 软件开发工程师 和 Android软件应用开发工程师 以及云计算工程师发展前景 高级软件开发工程师 和 Android软件应用工程师 以及云计算工程师. 当下这三个方向怎么样,或者说未来一段时间的发展前景.求分析

ios-IOS 软件开发,24小时候软件闪退,求解决

问题描述 IOS 软件开发,24小时候软件闪退,求解决 公司开发的APP,装上用得时候没有问题, 但是过了一天就打不开了,一打开就闪退,急急急 解决方案 找出崩溃日志,贴上来

如何用H5来开发安卓手机App软件?用哪个开发软件?想做一下混合开发。求大神回复。

问题描述 如何用H5来开发安卓手机App软件?用哪个开发软件?想做一下混合开发.求大神回复. 如何用H5来开发安卓手机App软件?用哪个开发软件?想做一下混合开发.求大神回复. 解决方案 phonegap居于phonegap的cordova可以将html页面编译的兼容ios,Android及其他平台的安装包

unity+高通开发 ar-unity导出ar软件没有模型只有材质贴图

问题描述 unity导出ar软件没有模型只有材质贴图 unity导出ar软件没有模型只有材质贴图,制作过程完全按照网络制作方法,之前也做过立方体的没问题,这次做的事比较复杂的模型,显示效果如下.开发 ar-unity导出ar软件没有模型只有材质贴图-unity3d 高通ar教程">

国内首款基于asp.net技术开发的服务器管理软件

数据王服务器系列软件是国内首款基于asp.net技术开发的服务器管理软件.本系列软件是由沈阳泷泉信息技术有限公司独立自助开发完成,我司是一家以asp.net为主的技术型公司,我们的团队不仅汇集了国内顶尖的.net程序员和专业级的美工 更有着雄厚的资金及技术实力,立志做中国最优秀的服务器软件供应商. 目前本系列软件已正式发布两款,数据王域名虚拟主机管理系统,数据王IIS还原备份专家! 数据王域名虚拟主机管理系统 全球首创三个第一 第一个让虚拟主机用户支持防盗链 可自定义需要防盗的文件扩展名及被盗时

用vs2013开发平板的winform软件怎么能用钩子获取到WM_TOUCH消息

问题描述 用vs2013开发平板的winform软件怎么能用钩子获取到WM_TOUCH消息. 解决方案

体感开发的重点在于软件

[编者按]本文作者David Cardinal,David具有20余年的科技行业技术从业经验.他是DigitalPro for Windows的合作开发者,后者是Windows上首个专业的图像管理解决方案.本文是其结合今年Build大会上微软的开发经验,对Kinect和Leap Motion的体感开发所做的理解. 当年Leap Motion的CTO David Holz第一次告诉我不要将太多的精力放在他们的硬件上,理由是大部分的诀窍都在软件--我半信半疑.而后来在微软的Build大会上,Kine

在深圳研究开发M6401桌面中文电脑软件

[牛津管理评论-讯]史玉柱个人简介 史玉柱于1989年深圳大学研究生毕业,随即下海创业,在深圳研究开发M6401桌面中文电脑软件.1991年巨人高科技集团成立,注册资金 1.19亿元,并频频受到半数以上中央政治局委员以上级别中央领导的造访.1995年被列为<福布斯>中国大陆富豪第8位,是当年惟一高科技起家的企业家.他也曾一夜之间负债2.5亿,后东山再起,再次创业成为一个保健巨鳄.网游新锐,身家数百亿的企业家.2011年6月,有消息称史玉柱4个月斥资26亿增持民生银行(600016,股吧).截至

ubuntu-Ubuntu下开发kinect使用什么软件好啊?

问题描述 Ubuntu下开发kinect使用什么软件好啊? Ubuntu下开发kinect使用什么软件好啊?ros和openni有关系吗?还有ros indigo 解决方案 kinect是微软开发的,你应该安装windows.你可以双系统或者虚拟机. 解决方案二: 因为kinect sdk 2.0for windows没安装成功,搜了很多网站都没有解决,像下图,您知道是什么原因吗?