51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2240|回复: 1

[讨论] 复杂软件缺陷分析与质量控制

[复制链接]

该用户从未签到

发表于 2018-4-2 16:56:07 | 显示全部楼层 |阅读模式
l    一、发展介绍
l    二、软件缺陷分形行为分析与质量控制
l    三、软件缺陷混沌行为分析与质量控制
l    四、软件缺陷产生的复杂性分析
一、发展介绍
l     霍金说:复杂性是21世纪的科学。
l     1967年普利高津提出的耗散结构理论,将“世界末日论”和进化论进行了统一。
l     1970年代初法国数学家雷内·托姆(Rene.Thom)创立了突变论;
l     1971年联邦德国斯图加特大学教授、著名物理学家哈肯(Haken Herrnann)提出了协同理论;
l     1970年德国科学家M·艾根(Manfred Eigen)提出了超循环论;
l     1972年美国麻省理工学院教授E.N.洛伦兹提出了混沌理论;
l     1975年美国数学家曼德布罗特(Benoit.B.Mandelbrot)提出了分形的概念。
l    90年代,桑塔研究所(Santa Fe Institute)在复杂系统自适应方面做了一些工作。除此以外,还有马卡洛
和匹茨(McCulloch and Pitts)的神经网络,冯·诺依曼的元胞自动机,维纳(N. Wiener)的控制论,
l    钱学森提出的复杂巨系统。

l    复杂性的研究正在成为全球科学研究的一个热点。
l    质量是一个非常古老的话题,而软件质量的研究甚至可以追述到计算机发明,0-1代码被使用那个时候,
不过大家开始注意软件质量是在软件危机被提出的1968年。
l    软件质量的发展经过了两大时期,一是1976年Boehm第一次提出了软件质量度量的层次模型,到1992
年成为软件质量度量的ISO标准,

l    二是1987年9月CMM由卡耐基-梅隆大学SEI提出,到2001年敏捷方法被提出。
l    作者认为,软件质量的发展将迎来其发展的第三大时期----软件质量复杂性研究。  
l    软件复杂性增加的直接结果就是软件缺陷和可能出现的错误的复杂性增加。从这个角度看,软件质量的
控制将变得越来越复杂和困难。因此,如果用传统的方法来描述软件的复杂性和软件缺陷的复杂性,显然
工具的使用不合适宜。

l    软件复杂性研究是科学技术发展的必然趋势。但是,从目前各国对软件质量复杂性方面的研究来看,使
用现代工具(进化论、熵理论、耗散结构理论、协同学、超循环论、混沌理论、分形理论、元胞自动机等
)的人并不多 。  
二、软件缺陷分形行为分析与质量控制
l    软件缺陷生长过程实验  
l    由于在自然界中存在着很多凝聚现象,人们常常用有限扩散凝聚(Diffusion-Limited Aggregation,简称DL
A)过程来模拟其自相似结构,它可以用于预测某些实际随机凝聚过程的生长速率与时间的关系,以及它们的
机制和输运性质。1983年米金(Meakin P)对DLA模型作了修正,认为在DLA模型中有一个不动的凝聚中心
显然是不符合实际情况的。  

l    L—系统的第一个字母L源于美国生物学家A. Lindenmayer (1929-1989)姓名中的L字母,开始,它只是作
为描述植物形态与生长的一种方法。  
l    分形的自相似性和压缩映射的不动点原理是Hutchison于1981年首先提出的,继而美国的Georgia理工学院
的数学教授M. Barnsley于1985年发明了迭代函数系统(Iterated Function System)IFS。”  
l    IFS不仅是描述分形的强有力的数学工具,也是可以作为描述软件缺陷分形的工具。  
软件缺陷迭代的相关定义  
SIMULATION OF DEFECT GROWTH  
组合分叉缺陷数估计公式  
受限制软件缺陷数  
软件过程缺陷生长“达尔文树”  
软件开发阶段所有软件缺陷的总和  

分形剪枝方法  
l    软件缺陷的生长是一种一个分形树状结构。对软件缺陷分形树状结构的修剪,是一条行之有效的软件质量
控制措施,有效的剪枝可以有效地控制软件缺陷的扩散。但是,剪枝方法对软件系统的伤害也是比较大的。
剪枝即可能去掉软件的缺陷,也会将正确的程序或文档部分去掉。
l    软件开发过程中,质量控制的方法应该包括两种,一是剪枝操作,它是按照人的意愿对软件中的缺陷进行的一
种部分内容的删除操作。这种活动是一种双刃剑,它可以去除设计成果中的缺陷,也可能会对软件设计成果造
成伤害。伤害的大小取决与对主枝的操作还是分枝的操作。二是修改操作,它是按照人的意愿对软件中的缺
陷进行的一种部分内容修改的操作。由于是修改,而非删除操作,因此,操作的结果即有原成果的痕迹,也
有人为大的痕迹。  
三、软件缺陷混沌行为分析与质量控制
l     假定在操作过程开始前,面包师先在面团上滴一滴红着色剂,那么,在揉面团过程中液滴同时被拉长、
变薄,再折叠起来。随着面包师的操作不断重复进行,液滴被不断伸缩和折叠。经过足够长时间反复操作,
就会发现面团中很多红色和白色交替出现的层次,原来相邻的两个着色剂微粒越来越相互分离,原来不相邻
的两个微粒可能越来越靠近。据估计,这样反复操作只需进行20次,最初的着色剂滴长度就会被拉长到100
万倍以上,其厚度则减小到分子水平。这是着色剂与面粉已经充分混合均匀了,在迭代至千次后所得结果即
系统出现混沌。  

l    就像面包师揉面团一样,软件缺陷也伴随这软件分叉的过程而不断分叉。软件功能细分到什么程度,软件
缺陷也扩散到什么程度,并与软件融为一体。
l    软件缺陷生长是一个受限生长和适应的过程。软件缺陷的多少,软件分叉数目的多少,取决于系统开发
过程中的外界压力或条件限制,也就是外界质量控制因素的干扰。
贝诺勒变换  
混沌控制模型  

l    混沌系统的一个特点是对初值的敏感性。对于软件缺陷扩散的混沌特性来说,如果能有效控制其初值,或
对初始态施加“微扰”,那么就有可能将软件失效的混沌过程变成为非混沌过程。  
l    混沌控制大致归纳为两大类:  
l    第一类是基于在混沌奇怪吸引子闭包内存在无穷多不稳定的周期轨道,控制的目标是根据人们的意愿在
这些轨道中选择一条满足要求的周期轨道并进行有效的稳定控制,该控制的特点是并不产生新的周期轨道
而只是将轨道固定。
l    第二类控制则没有具体的控制目标,也不关心被控系统的终态是否为周期运动,只是通过合适的策略、
方法及途径,有效抑制混沌行为,使Lyapunov指数下降进而消除混沌。   

l    软件质量的宏观控制架构
l    可以采用第二类混沌控制方法, 设计一个以“初始状态”为出发点的控制模型。
l    由于这个模型主要应用了混沌思想为基础,即对初值的敏感性,所以,我们称其为软件质量混沌控制模型。
l    为了实现对软件质量的管理和控制,将整个过程管理和控制分为两个大部分,一个软件内部过程管理与控
制,一个是软件外部过程监理。

l    1、软件内部过程管理与控制
l    软件内部过程管理与控制分为两个部分,一是软件内部过程管理,它的主要构架和应用是一些宏观的过程
管理方法和应该注意的问题,比如,分形公司管理,竞技软件工程方法,静室软件工程,耗散结构管理,印
象管理,孤立波质量管理,李比希最小定律控制;二是软件质量控制技术方法,包括,加速混沌,经验列表,
定点清除,软件测试等具体技术。  

l    2、软件外部过程监理  
l    软件过程监理体系是由项目业主、开发商、监理单位直接参加的“三方”管理体制。这种管理体制是目前工
程项目建设的国际惯例,是世界上绝大多数国家公认的工程项目建设的重要原则。它将参加工程项目建设的
三方紧密地联系起来,形成既有利于相互协调又有利于相互约束的最稳定的三角组织系统,为实现工程项目
总目标奠定了组织基础。  

l    3、混沌过程控制系统
加速混沌方法
l    “面包师揉面团”的例子可以用它来提高软件质量。比如一个好的技术方法,也可以看成是放入面团中一滴
蓝色。我们利用有限扩散凝聚迭代的方法,经过“若干次”的迭代后,这种“方法”和“思想”便完全融于一个系
统内。而在这个迭代过程中,初值被迭代消耗殆尽,换句话说,好的方法已融于软件之中。

定点清除方法
l    一个软件缺陷,在经过“无数次”设计细分后,这个缺陷很可能演变成数量惊人的软件“暇疵”分布或散布于
整个软件系统中。 “清除”缺陷最好的办法是在问题出现“最开始”时就将其清除掉。由于设计初期涉及的内容
或方面比较少,缺陷也比较容易发现。

l    我们用“定点清除”或“精确打击”来形容对设计初期某一个问题的“摘除”,其意思有两个,一自然是要将问
题铲除掉;二是指范围比较小,容易准确地定位;三是必须是在开始,为的是防患于未然。

四、软件缺陷产生的复杂性分析
l    耗散结构  
l    耗散结构(Dissipative Structure)是由比利时布鲁塞尔学派的科学家伊里亚·普里高津(Ilya Prigogine)于1967
年在一次理论物理和生物学国际会议上发表的论文《结构、耗散和生命》中针对热力学和统计物理学从平衡
态到近平衡态再到远离平衡态发展所作的研究而提出的。由于这一成就,普里戈津获1977年诺贝尔化学奖。
软件系统的耗散性与复杂性  

l    一个软件系统在开发的过程中,只有不断从外界获得能量,软件才能不断的成熟,最后达到用户需求的目
标。一个软件系统只有远离用户的要求,它才能有被继续开发的必要。如果其功能和性能基本达到用户的要
求,即离目标很近,那么,开发活动可能会减慢或停止。

一个软件系统会逐步由低级向高级进化,而不会出现由较高级别向较低级别退化。由于软件的进化,使得
软件或其过程更加组织化和有序化,从而使软件或过程获得的适应性得到稳定,并且在此基础上继续发展。

回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-3-28 19:49 , Processed in 0.064000 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表