软件过程基础
软件过程基础
软件改变了我们的世界,我们用的购票系统,支付宝,淘宝还有智能AR都是其中的例子。
随着时代的进步,软件的复杂度也在增长。随着复杂度的增长,软件不可避免的就会出现各种各样的问题,也就是软件危机。软件有问题是无法避免的,因为软件是人做的,只要是人做的,就不可能没有问题,只不过在于问题出现的时间和问题的大小罢了。在我们生活中就可能遇到过比如购票软件出现进不去的问题,又或者视频播放软件无法播放视频,或者支付宝的刷脸支付失败等等。这些都是小问题,但它一但出现大问题,那就是无法挽回的灾难,甚至有可能危及我们的生命。
为了尽可能的减少问题的产生,我们就要关注软件产品的质量。软件产品和服务的质量,很大程度上取决于生产和维护该软件或者服务的过程的质量。在上世纪的五六十年代,在传统制造行业经历了一场广泛而深入的质量革命,这场质量革命的意义是深远的)。质量革命中的代表性的研究成果(如Shewhart、Deming、Juran和Crosby等)。
休哈特(Shewhart)20世纪20年代在AT&T Bell实验室的一名统计员,被认为是质量改进的奠基人,现代过程改进都建立在Shewhart所提出的过程控制概念的基础上。他最早提出“计划-执行-检查(Plan-Do-See)”的概念 ,后来戴明进一步将其发展为PDCA。他出版 The Economic Control of Manufactured Products, 1931. 该书描述了减少过程可变性的统计过程控制方法的轮廓,语言生产率会随着过程可变性的减少而得到提高,这在20世纪50年代得到日本产业界的验证。我个人觉得这种计划-执行-检查是比较好的,这个方法可以一步一步的将目标实现。先做计划打算干什么,在执行这个计划,执行完后,再检查计划与做的是否一致。我目前写程序基本上都是这样的。
戴明(Deming)将一系列统计学方法引入美国产业界,以检测和改进多种生产模式,从而为后来杰克·韦尔奇等人的六个西格马管理法奠定了基础。Deming关于质量管理的思想被二战后的日本工业界所采用,Deming对质量管理的重要贡献简述如下:
1) 质量改进。
2) PDCA循环。Deming最早提出了PDCA循环的概念,所以又称为“戴明环”。PDCA循环是能使任何一项活动有效进行的一种合乎逻辑的工作程序,是一个基本的质量工具。
PDCA- Plan, Do, Check, Action
PDCA模型
八个步骤
分析现状,找出问题;
分析影响质量的原因;
找出措施;
拟定措施计划;
为什么要制定这个措施?
达到什么目标?
在何处执行?
由谁负责完成?
什么时间完成?
怎样执行?
执行措施,执行计划;
检查效果,发现问题;
总结经验,纳入标准;
遗留问题转入下期PDCA循环
3) 十四点原则。
树立改进产品和服务的坚定目标
采用新的思维方法
停止依赖检验的办法获得质量
不再凭价格标签进货
坚持不懈地提高产品质量和生产率
岗位培训制度化
管理者的作用应突出强调
排除畏难情绪
打破部门和人员之间的障碍
不再给操作人员提空洞的口号
取消对操作人员规定的工作定额和指标
不再采用按年度对人员工件进行评估
创建积极的自我提高计划制度
让每个员工都投入到提高产品质量的活动中去
我对这个 PDCA循环是这样理解的,先找问题,再分析导致这个问题的原因,再找解决方法,再设计化,再执行也就是把问题解决,再看运行效果,找问题这样子循环下去,直到运行的效果是我们预期想要的。跟第一个感觉差不多,但区别是他多了一步也就是在检查后面增加了解决问题这一大步,并将这一整个过程循环起来,直到实现目标。
朱兰(Juran),由他主编的《质量控制手册》(Quality Control Handbook)被称为当今世界质量控制科学的“圣经”,为奠定全面质量管理(TQM)的理论基础和基本方法做出了卓越的贡献。
1) 适用性质量
质量的本质内涵是“适用性”,而所谓适用性是使产品在试用期间能满足使用者的需求。Juran提出质量不仅要满足明确的需求,也要满足潜在的需求。这一思想使质量管理范围从生产过程中的控制进一步扩大到产品开发和工艺设计阶段。
2) 质量三步曲
3) Juran质量螺旋
(quality loop)
4) 80/20原则
只有20%来自基层操作人员,而恰恰有80%的质量问题是由于领导责任所引起的。在国际标准ISO9000中,与领导责任相关的要素所在的重要地位,在客观上也证实了Juran的“80/20原则”所反映的普遍规律。
在这个里面我明白的是领导在一个软件产品中占非常大的作用,如果软件有问题,那绝大数是由于领导的问题。
克劳士比(Crosby)
1964年,Crosby提出了“零缺陷”的概念,即第一次就把事情做对。
1) 质量管理的绝对性
(1)质量就是符合要求,而不是“完美”。
(2)质量来自于预防,而不是检验。
(3)质量的标准是“零缺陷”,而不是可接受质量水平。
(4)质量的衡量标准是“不符合要求的代价”。
2) 质量改进的基本要素
6C “变革管理的六个阶段”:
①领悟(comprehension)——理解质量真谛
②承诺(commitment)——制定质量策略的决心
③能力(capability)——教育与培训
④沟通(communication)——成功的经验文档化、制度化
⑤改正(correction)——预防与提高绩效
⑥坚持(continuance)——强调质量管理成为一种工作方式
这个我的理解是我先给你讲清楚我的要求,并将要求写下来。你领悟我的要求,将软件做到跟我的要求一样高质量,而且不能出现其他的问题,如果不符合要求,那么这个我就不接受。
IDEAL模型
软件工程研究所SEI已经开发了软件过程改进模型的一个实现方法,它描述了实现软件过程改进所必需的阶段、活动和成功的过程改进工作所需要的资源。
IDEAL模型解决了软件组织在各种质量改进环境下的需要。它包括了软件过程改进周期中的五个阶段,IDEAL是代表这五个阶段的单词的首字母。
I: Initiating 开始
D: Diagnosing 诊断、评价
E: Establishing 建立
A: Acting 执行
L: Leveraging 调整
质量运动
Shewhart—— 20世纪30年代 发表统计学质量控制原理
Deming 1956, Juran 1956—— 进一步发展并成功证明Shewhart的原理
Crosby 1960—— 发展质量成熟度的量化
Humphrey 1986—— 软件过程中采用Crosby的成熟度量化,加入成熟度等级的概念
SEI 1987-97—— 发展成熟度的框架,成熟度问卷,SPA(软件过程评估),SCE(软件能力评估),CMM(能力成熟度模型
Rational 统一过程 (RUP)
Rational统一过程(Rational Unified Process,RUP)是由Rational软件公司退出的一种完整而且完美的软件过程。 RUP总结了经过多年商业化验证的6条最有效的软件开发经验,这些被称为“最佳实践”。
最佳实践
(1)迭代式开发
(2)管理需求
(3)使用基于构件的体系结构
(4)可视化建模
(5)验证软件质量
(6)控制软件变更
RUP软件开发生命周期
工作阶段
初始阶段:建立业务模型,定义最终产品视图,并且确定项目的范围。
精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求。
构建阶段:开发出所有构件和应用程序,把它们集成为客户需要的产品,并且详尽地测试所有功能。
移交阶段:把开发的产品提交给用户使用。
平衡敏捷与规范
敏捷过程与规范过程各有自己的特点和优点,在本质上和在实际项目中,敏捷与规范是可以平衡的。敏捷与规范,软件开发中看似对立的两个属性,实际上相得益彰。
计划驱动的开发人员必须敏捷,敏捷开发人员必须规范。成功的关键在于找到两者的平衡点。
这个平衡点随项目所处的环境以及所涉及的风险而变化。仅凭一腔热情径直地采用极端方法的开发人员,必须学会如何根据实际情况恰当地平衡敏捷与规范。