论文部分内容阅读
随着软件系统的规模和复杂度的不断增长,如何认识、管理、控制和降低软件系统的复杂性就成为软件工程面临的巨大挑战。经过长期的工程实践,软件开发者认识到大规模的复杂软件系统的结构与其功能、质量之间的关系十分密切。如何构建软件良好的结构、系统维护时如何对软件的结构进行优化,一直都是软件工程领域研究的重要问题。传统的软件工程方法通常关注于软件的局部或者微观层面结构特征,忽略了一些重要的反映全局结构的整体特性。这使得研究人员难以习惯从整体和全局的角度来研究大规模的软件系统,导致长期以来对软件的本质缺乏清晰的认识,也不能了解的软件整体结构的复杂性的演化规律。最近几年,许多研究人员发现抽象为网络模型的软件系统的结构展现出小世界和无标度的复杂网络特性,认为软件系统是一种人工复杂网络,突破了软件的传统思维方式。通过软件工程与复杂系统的学科交叉研究,用网络的观点来重新审视软件,形成软件的网络观,从整体和全局的角度来探索和发现复杂软件系统的结构特性、演化规律和由此产生的行为特征,将有助于正确、全面地认识和理解软件的本质特征,为解决软件的复杂性问题奠定基础。虽然近年来复杂网络与软件工程的交叉研究取得了一些成果,但是由于关于软件结构的研究刚刚起步,也存在下面的一些问题:缺乏针对包括系统演化和实时运行两个动态过程的软件结构动态行为的研究;目前研究人员还普遍存在着单纯采用点和边形式的图来抽象软件的结构是否会能全面或者充分描绘软件系统的困惑;度量软件部件之间相互作用的复杂性是否准确、合理和全面;缺乏针对软件系统的复杂网络模型;如何才能真正建立软件整体结构特性与软件质量之间关系?针对上述问题,本文以学科交叉融合为背景、以探索软件结构的复杂性为目标,分析其结构的复杂性的演化规律和其动态活动的动力学行为,建立结构复杂性的演化模型,度量软件部件之间相互作用的复杂性,为量化软件的复杂性提供基础,也为提高软件系统的质量提供一种思路与方法。围绕上述研究目标和内容,本文所做工作的主要工作归纳如下:(1)综合采用复杂网络的理论与方法和软件工程的度量指标从系统的层次上详细分析和研究了软件系统在系统演化和版本升级过程中所表现出来的系统特性和系统结构的变化规律,从系统层次上详细分析了他们源代码的演化过程,从理论上深刻揭示了一类面向对象软件系统的演化动力学特性和规律。这些规律的发现对于从宏观的角度去深刻认识、理解、控制面向对象软件系统的结构和演化特性提供了的理论基础。(2)根据软件演化的动力学分析所得到的结论,采用复杂网络的相关理论进行了解释,提出了面向对象软件系统的无标度(无向的和有向的)演化模型,深刻解释了作为软件复杂性之一的无标度特性的演化机理。(3)探索和设计了面向对象软件的动态网络的分析方法,通过实例发现了面向对象的软件系统在实时运行过程中生成的动态网络具有复杂网络所特有的小世界特性和无标度特性。这些特性的发现可以用在系统测试、软件质量的评价、系统资源的回收利用等方面,对于丰富面向对象的程序设计具有重要的意义。(4)为了能够更加全面的度量软件系统部件间的复杂关系,首先采用复杂网络的方法对软件系统进行了抽象,本文提出了一对能够反映软件质量的耦合因子——影响耦合因子和错误影响耦合因子。目前,软件工程与复杂系统的学科交叉研究才刚刚起步。用复杂网络的方法来研究和认识软件,形成软件网络观,有助于我们深刻认识软件的本质行为和特征,从而开辟一条软件工程学研究的新途径,为推动软件工程彻底解决软件复杂性问题做出应有的贡献。