一、发展介绍
霍金说:复杂性是21世纪的科学。
1967年普利高津提出的耗散结构理论,将“世界末日论”和进化论进行了统一。
1970年代初法国数学家雷内·托姆(Rene.Thom)创立了突变论;
1971年联邦德国斯图加特大学教授、著名物理学家哈肯(Haken Herrnann)提出了协同理论;
1970年德国科学家M·艾根(Manfred Eigen)提出了超循环论;
1972年美国麻省理工学院教授E.N.洛伦兹提出了混沌理论;
1975年美国数学家曼德布罗特(Benoit.B.Mandelbrot)提出了分形的概念。
90年代,桑塔研究所(Santa Fe Institute)在复杂系统自适应方面做了一些工作。除此以外,还有马卡洛和匹茨(McCulloch and Pitts)的神经网络,冯·诺依曼的元胞自动机,维纳(N. Wiener)的控制论, 钱学森提出的复杂巨系统。复杂性的研究正在成为全球科学研究的一个热点。
质量是一个非常古老的话题,而软件质量的研究甚至可以追述到计算机发明,0-1代码被使用那个时候,不过大家开始注意软件质量是在软件危机被提出的1968年。
软件质量的发展经过了两大时期,一是1976年Boehm第一次提出了软件质量度量的层次模型,到1992年成为软件质量度量的ISO标准, 二是1987年9月CMM由卡耐基-梅隆大学SEI提出,到2001年敏捷方法被提出。 作者认为,软件质量的发展将迎来其发展的第三大时期----软件质量复杂性研究。
软件复杂性增加的直接结果就是软件缺陷和可能出现的错误的复杂性增加。从这个角度看,软件质量的控制将变得越来越复杂和困难。因此,如果用传统的方法来描述软件的复杂性和软件缺陷的复杂性,显然工具的使用不合适宜。
软件复杂性研究是科学技术发展的必然趋势。但是,从目前各国对软件质量复杂性方面的研究来看,使用现代工具(进化论、熵理论、耗散结构理论、协同学、超循环论、混沌理论、分形理论、元胞自动机等)的人并不多 。
二、软件缺陷分形行为分析与质量控制
软件缺陷生长过程实验
由于在自然界中存在着很多凝聚现象,人们常常用有限扩散凝聚(Diffusion-Limited Aggregation,简称DLA)过程来模拟其自相似结构,它可以用于预测某些实际随机凝聚过程的生长速率与时间的关系,以及它们的机制和输运性质。1983年米金(Meakin P)对DLA模型作了修正,认为在DLA模型中有一个不动的凝聚中心显然是不符合实际情况的。
L—系统的第一个字母L源于美国生物学家A. Lindenmayer (1929-1989)姓名中的L字母,开始,它只是作为描述植物形态与生长的一种方法。
分形的自相似性和压缩映射的不动点原理是Hutchison于1981年首先提出的,继而美国的Georgia理工学院的数学教授M. Barnsley于1985年发明了迭代函数系统(Iterated Function System)IFS。”
IFS不仅是描述分形的强有力的数学工具,也是可以作为描述软件缺陷分形的工具。
软件缺陷迭代的相关定义
SIMULATION OF DEFECT GROWTH
组合分叉缺陷数估计公式
受限制软件缺陷数
软件过程缺陷生长“达尔文树”
软件开发阶段所有软件缺陷的总和
分形剪枝方法
软件缺陷的生长是一种一个分形树状结构。对软件缺陷分形树状结构的修剪,是一条行之有效的软件质量控制措施,有效的剪枝可以有效地控制软件缺陷的扩散。但是,剪枝方法对软件系统的伤害也是比较大的。剪枝即可能去掉软件的缺陷,也会将正确的程序或文档部分去掉。
软件开发过程中,质量控制的方法应该包括两种,一是剪枝操作,它是按照人的意愿对软件中的缺陷进行的一种部分内容的删除操作。这种活动是一种双刃剑,它可以去除设计成果中的缺陷,也可能会对软件设计成果造成伤害。伤害的大小取决与对主枝的操作还是分枝的操作。二是修改操作,它是按照人的意愿对软件中的缺陷进行的一种部分内容修改的操作。由于是修改,而非删除操作,因此,操作的结果即有原成果的痕迹,也有人为大的痕迹。