测试积点老人 发表于 2018-12-21 15:51:57

软件开发过程大观——软件开发过程改进为什么能帮助软件质量提升?

软件发展的二个典型趋势


[*]1、软件规模日益扩大。类似摩尔定律,功能类似的软件系统的规模大约每18个月翻一番,每5年,功能类似的软件系统的规模扩大为原来系统的10倍。
[*]2、软件在整个系统中的比重日益增加。20世纪60年代,F-4战机中,由软件来完成的功能约占整体功能的8%,21世纪,F-22战机中,由软件来支持的功能则达到了整体功能的80%


以上趋势使得软件软件质量问题越来越突出。

软件规模日益扩大,使得软件越来越难做;软件比重的日益增加,使得软件质量问题的影响越来越广泛和严重。

软件开发项目经常陷入包括软件质量不佳、项目进度延期、成本超支、客户不满……等等的“焦油坑”。



在传统行业,质量管理和企业管理方面的经验和理论表明,产品的质量取决于过程的质量。

用工程化的思想来管理软件开发,借鉴传统行业在质量管理方面的经验,可以在一定程度上缓解上述问题。

软件工程,是研究以一种高效的方式提供高质量软件产品的工程学科。



软件开发过程的发展历史

20世纪50年代,没有成熟的程序设计语言,软件开发需要直接面对硬件环境。

20世纪60年代,软件作坊(Softwarecrafting)诞生。


软件开发的特殊性被发现:


[*]1、软件可以复制。不需要昂贵的生产线就可以复制软件。
[*]2、软件比硬件容易修改。由此形成了“Codeand fix”的开发方法。



但软件随意的修改,也带来了严重的隐患:软件的演化更加随意,跟踪困难,最终形成了类似意大利式面条的局面(“一团糟”)。

此期间也形成了倡导自由精神的黑客文化和牛仔风格的牛仔式程序员(他们采用急速而草率的方式,可以连续通宵达旦的连续工作多天,在截至日期前完成存在很多缺陷的代码)。



20世纪70年代,形式化方法与瀑布过程。

程序编码应该更加精心的组织,在设计之前,需要经过更加仔细的需求工程。

形式化方法,在可伸缩性和易用性方面存在很多困难。



20世纪80年代,生产率和可伸缩性。

在过程标准方面的投入,可以减少软件开发过程的返工,显著提高软件生产率。

美国国防部DoD与CMU联合成立了SEI来制定过程标准。



20世纪90年代,并发过程和顺序过程。

关注产品上线时间,导致并发过程的兴起,并行工程的风险带来风险驱动的螺旋模型。

1991年,SEI发布CMM1.0; 1993年,SEI发布CMM1.1。

CMM针对组织级的软件过程标准粒度较粗,还需要考虑更小的组织单位,即个人软件过程(PSP)和小组软件过程(TSP)。

SEI在CMM基础上,进一步提炼组织级软件过程改进的一般性理论框架,发布了IDEAL模型。IDEAL模型就像是传统行业质量管理的PDCA模型在软件行业的推广,是一种比较通用的理论框架。



2000年,敏捷方法,基于价值的方法

敏捷方法,如自适应软件开发、Crystal方法、动态系统开发、XP、FDD、Scrum等

基于价值的方法,低风险高动态变化的,适用于轻量级的敏捷开发方法,高风险低变更(固定)的,适用于规范化的计划驱动的方法。

2000年,SEI发布了CMMI1.0,2010年,发布了CMMI1.3.



2010年,DevOps的出现,方法、工具、技术上引发了一些新的变化。

精益方法(lean Development)是支撑DevOps的理论基础。

DevOps的开发工具集和整体解决方案的出现。

虚拟化的平台技术如云计算、容器,微服务架构,自动化技术



PSP(Personal Software Process)

一种个人级用于控制、管理和改进工程师个人工作方式的持续改进过程。

包括数据记录表格、过程操作指南、规程


PSP过程度量包括:

1、度量时间

2、度量缺陷

3、度量规模


过程质量的度量指标包括:

1、Yield,度量每个阶段在消除缺陷方面的效率。

(1)Phase Yield,表示某个阶段缺陷消除的效率。

(2)Process Yield,表示在第一次编译前消除缺陷的效率。


2、A/FR,Appraisal toFailure Ratio,质检失效比。A/FR=质检成本/失效成本。

A/FR用于指导工程师合理安排评审和测试时间。A/FR越高,质量越高,也意味着过多的评审。


3、PQI,Process QualityIndex,过程质量指标。用于度量PSP过程的整体质量。


4、Review Rate,评审的速度。用户指导工程师开展有效评审的指标。


统计表明,代码评审速度小于200代码行(LOC)/小时,文档评审速度小于4页(Page)/小时,就可以保证工程师有效的发现足够多的缺陷。



TSP(Team Software Process)

一种小组级用于控制、管理和改进小组工作方式的持续改进过程。



过程改进参考模型和标准

1、CMM

过程控制和过程管理的方法。可用于软件过程改进、过程评估、软件能力评价。

18个关键过程域。

2、CMMI

整合了三个模型。

25个关键过程域。

3、SPICE(Software ProcessImprovement and Capability Determination),软件过程改进和能力鉴定标准。软件过程评估国际标准。

4、ISO/IEC 15504,软件过程评估标准,是SPICE的演化。

5、ISO/IEC 12207,软件生命周期过程标准。

6、ISO 9000


页: [1]
查看完整版本: 软件开发过程大观——软件开发过程改进为什么能帮助软件质量提升?