刘竹旺 周松
[摘 要]基于构件的软件开发方法是在吸取了已有软件开发方法经验基础上的一种全新的、高效的开发方法,采用可复用的软件构件进行开发,能够有效地提高软件开发的质量和效率。本文主要分析基于构件化设计的软件可靠性。
[关键词]构件化 软件 可靠性
随着计算机技术的飞速发展,软件已经逐渐应用到各种安全关键领域,例如航空航天、核电、国防、工业控制、交通运输、金融等。这类软件通常都规模庞大、结构复杂,对可靠性和安全性有着极高的要求。长期以来,由于此类系统的软件失效和安全性问题,造成生命财产损失,甚至给环境造成严重灾难的事例层出不穷,这就使得软件的可靠性分析、评估和保障变得尤其重要。
一、软件构件概念
随着软件工程的发展,软件复用技术逐渐成为研究热点。基于构件的软件开发(Component-Based Software Development,CBSD)方法 ,改变了传统的基于“数据结构+算法”的开发模式,提出了基于“构件开发+构件组装”的开发新思路,使已有成果得以复用,因而得到了广大开发人员的推崇并迅速发展。软件构件,是指软件系统中具有相对独立功能、可以明确辨识、接口由契约指定、和语境有明显依赖关系、可独立部署、可组装的软件实体。它由接口、实现和部署三大要素构成。其中,接口主要解释构件所能完成的功能,实现是让此构件运作的代码,部署是构件的存在形式,即为二进制代码或可执行文件。
基于构件的软件开发具有适用范围广、重用效率高的特点,其效率的发挥需要大量标准的构件群来支持,这就需要标准统一的构件封装技术规格和应用于具体领域的大量构件。这两个方面现在是构件化发展的阻碍。构件封装技术规格的统一需要资深软件公司和国际性的软件机构深化合作、统筹兼顾来制定实用、有效、科学的标准。领域构件群的创建需要学术组织和有责任有远见的软件公司加大投入,深化构件化软件开发的应用,在业界形成模范作用。而中小型软件公司应该建立自己的构件库,在开发中尽量应用构件化软件开发方法,总结经验,为构件化时代的到来和繁盛做准备。有了统一的规格标准和各个领域丰富的构件群,那么构件化的开发将极大提高软件开发效率,解决软件危机。
二、基于构件的软件开发过程
基于构件的开发,是指将软件系统的开发过程看作是在体系结构的指导下,用构件组装方式开发软件系统的软件开发方法。基于构件的软件开发过程可以概括为以下四个阶段:
1.问题域分析与建模( 问题分析阶段)
针对问题描述,通过领域工程的思想,进行问题域分析与建模。分析阶段的主要任务是通过对问题域的抽象,区分出共性问题和变性问题,分析的结果是将问题域进行形式化表示,即建立问题域模型,可采用UML模型来表示。
2.求解域模型设计( 构件设计阶段)
根据对问题域的分析与建模,可得出求解域模型,即系统的体系结构及系统所需构件。对于已存在的、可复用的构件,分析其接口是否需要扩展;对于需要新增的构件,通过合理的分析及设计,保证构件满足求解域的要求,并尽可能保构件的可复用性。
3.构件开发及组装( 系统开发阶段)
从构件库中选取满足需要的构件,扩展其接口使之应用于当前工程;对新开发的软件构件,不仅应该使其应用于当前工程,还要将其存储到构件库中,以便复用。通过组装得到完整的系统,经测试后可发布运行。
4.应用系统演化( 系统维护阶段)
基于构件的应用系统的演化实际上是构件升级、替换和扩充的过程,针对用户需求或实际运行效果进行软件的调整,以适应新的环境要求。
三、基于构件化设计的软件可靠性分析
1.可靠性分析基础
软件可靠性是指软件在规定的时间内软件不失效的概率。构件可以自行开发,可以购买商业构件,也可以从相关领域构件库中获取。虽然获取的构件一般都有相应的可靠性说明,但同一构件在不同的软件系统中所处状态不同,其可靠性也需要进行重新分析。在基于敏捷开发的构件化软件实践中,每发布一次软件版本,都是以构件测试为基础,用户必须对各构件进行使用性测试以发现软件失效。小规模、多版本发布,使用户可以在早期发现软件中与自己所提的需求不一致的地方,用户可以持续地参与到测试中来。用户通过现场使用并快速反馈,为敏捷团队修正开发方向提供依据,可以说迭代增量开发、持续集成、小版本发布这些实践都是自适应的。对当前版本进行现场使用测试,获得失效数据(测试成功与失败次数),可获得该版本可靠性的点估计。
2.可靠性分析
首先,它可以便于设计开发者之间相互理解和交流。只要系统是使用某种风格或模式的规范方法来组织,则别的设计者就很容易理解系统的体系结构。譬如某人把系统描述为“管道—过滤器”模式,则他不必给出细节,人们立刻明白系统是如何组织起来的,并在脑海中清晰地得到此系统的图像;
第二,使用软件体系结构促进了设计的复用。许多经过实践证明的软件结构可以用来解决许多相似类型的新问题,这对新软件的开发带来了便利和质量保证;
第三,使用软件体系结构也促进了显著的代码复用。对于体系结构中的不变部分,不同的系统可以共同应用同一段实现代码,从而提高了该段代码的应用价值;
第四,使用软件体系结构的标准风格和模式有利于支持互操作性,例如像CORBA这种面向对象的结构和基于事件机制的工具集成。
总之,使用软件体系结构的模式有利于软件开发者之间的交流和理解,有利于提高软件设计实施的效率和质量。软件体系结构的观念能否成熟到使软件设计开发发生根本性改变,关键在于各类体系结构、设计模式的完善和系统化。软件体系结构设计中很重要的成就之一就是抽象出了许多常见的软件系统构建模式。这些构建模式是软件系统设计人员多年工作经验的总结,它们将为软件设计的系统分析和设计工作提供丰富的参考资料。
软件体系结构的选择往往成为一个系统设计成败的关键。人们在开发研制软件的长期实践中积累总结了许多成功的经验。不同类型的功能需要不同类型的构件实现。
参考文献:
[1]杨芙清,梅宏. 构件化软件设计与实现[M]. 北京 :清华大学出版社,2008.
[2]许帧. 基于构件的软件开发方法及实现[J]. 软件导刊,2009(11):17-19.
[3]张驰. 软件构件匹配技术研究[J]. 微电子学与计算机,2009(3):109-112.