当前课程知识点:软件工程与软件自动化 > 第八章 软件过程改进 > 8.2 软件过程改进 > 授课视频
嗨,大家好
今天我们来讨论软件过程改进
说到过程改进,它不是一个单一的概念
你首先要有过程了,才能改进
如果没有过程,自然不会考虑改进的问题
软件过程从哪里来?
软件过程和软件产品一样,也需要开发
这里大家不要把软件过程开发
和软件开发过程弄混了
Osterweil是马萨诸塞大学安姆斯特分校的
计算机系教授,1987年他在第9届
世界软件工程大会上提出了这样一句名言
软件过程也是软件
他认为:软件有一个开发的过程
而软件过程也有一个开发的过程
软件开发产出的是软件产品
软件过程开发产出的是过程产品
软件开发是一个演进的过程
它使软件产品不断的升级、更新
而软件过程开发也是一个演进的过程
它使过程不断升级更新,过程能力成熟度不断提
高
如何开发出来高质量的软件过程呢?
或者说,什么是软件过程质量呢?
我们知道,质量是指某一事物的特征和属性
而且这种特征和属性是可度量的
可以与已知的那些标准进行比较
软件过程和软件产品一样
都属于知识或者是信息的实体
对它们在质量方面的定义和描述具备一定的复杂
性
尽管如此,软件过程质量的表现形式
不外乎体现在静态的和动态的两个方面
当软件过程仅仅以某种特定的描述形式存在的时
候
过程质量就表现为静态的一面
这个时候,过程质量实际上就是
软件过程描述本身所具备的属性
它表现为功能性,也就是说
这个过程它描述的满足实际需要的程度
易使用性呢,它表示的是用户使用这个过程描述
进行过程实施和运作所需的努力程度
其中包括易理解性和易学习性等子特性
还有准确性,它描述的是特定类型的软件过程的
准确程度
它包含精确性、一致性、完整性、冗余度等子特
性
易维护性表示用户在改进基于该描述形式的软件
过程时
所需要的努力程度
其中包括易分析性和易修改性等子特性
当软件过程在执行运作时
过程质量就表现为动态的一面
这时候的过程质量就是以软件过程
所表现出来的过程运作能力来衡量
其中包括过程运作能不能达到所预定的目标
是不是保证了软件产品的质量等等
可以简称为过程能力
如何衡量软件过程的质量是高还是低呢?
不能空口无凭,这就需要过程度量了
过程度量是对软件开发过程的各个方面进行度量
目的在于预测过程的未来性能
减少过程结果的偏差
对软件过程的行为进行目标管理,为过程控制
过程评价和过程的改善提供定量性的基础
过程度量与软件开发的流程密切相关
具有战略性的意义
软件过程质量的好坏会直接影响
软件产品质量的好坏
度量过程,评估过程和提高过程成熟度
可以改进产品质量
反过来,度量和评估软件产品的质量
也会为提高软件过程质量提供必要的反馈和依据
过程度量和产品度量的根本区别在于
过程度量的这种动态特征
过程能力是过程质量的一个动态表现
是通过过程的运作而体现出来的
因而和产品度量不同
过程度量是同过程运作紧密相关的
过程度量是同过程运作密切相关的
只有经过过程运作
过程度量才能体现其“过程”含义
软件过程度量主要包括三大方面的内容
一是成熟度度量,主要包括组织度量
资源度量、培训度量、文档标准化度量
数据度量与分析度量、过程质量度量等等
数据度量与分析度量、过程质量度量等等
二是管理度量,主要包括项目管理度量
质量管理度量、配置管理度量
三是生命周期度量,主要包括问题定义度量
需求分析度量、设计度量、制造度量和维护度量
等
过程度量的客观性是指所得到的
关于某对象的度量值是该对象的真实描述
例如我们用的LOC这种代码行度量
它就是一个具备客观性的度量值
而度量的主观性是指所得到的关于某个对象的度
量值
而度量的主观性是指所得到的关于某个对象的度
量值
是由度量者的主观判断得到的
因此所得到的度量值会随着度量者的不同而不同
比如系统的“易学习性”这个度量值
它就是一个主观性的度量值
软件过程度量可以为项目管理者
提供有关项目的各种各样的重要信息
同时它也是进行软件过程评估的基础
软件过程评估是以一系列的标准
对软件过程的质量进行评定而使软件过程
不断改进和优化的一系列的活动
软件过程评估所关注的是软件组织
自身内部的软件过程的改进问题
目的在于发现缺陷,认知过程能力
比较过程能力、提出过程改进的方向
过程评估有很多种实现的方法
其中过程度量便是一种最有效而且是最系统化的
方法
其他的方法还有问卷调查、实际走查等
也是常用的方法
过程改进是在软件过程工程中
为了更有效地达到优化软件过程的目的
所实施的改善或改变软件过程的系列的行动
过程改进的目的是建立和维护
对企业级和项目级的过程
并就该过程在机构内达成改进的共识
协调机构过程的实施
并对过程进行评估、维护以及改进的各项工作
全面的识别并了解机构的过程以及过程资产
已经存在或者是潜在的强项和弱项
一般的过程改进如图所示
首先要确定质量目标
测量当前过程产出的产品的质量
通过度量和其他的手段来发现
过程存在的问题和缺陷,然后提出改进的意见
然后改进过程,并继续收集产品质量的结果
和目标结果进行比较,如果不满足要求
就继续进入下一个改进过程的循环
过程改进的模式可以分为目标驱动模式
和缺陷驱动模式
目标驱动模式是指根据一个预先给定的目标
自顶向下的制定过程度量和它的评价模型
有目的地开展相关的改进活动这样的一个改进模
式
缺陷驱动模式是指根据过程实施的时候所产生的
关于过程缺陷的反馈信息
进行有针对性的改进活动的这种改进模式
IDEAL模型是美国卡内基梅隆大学的软件工程研
究所
在总结了软件组织实施过程改进的大量经验和教
训之后
提出的一个十分有指导意义的过程改进模型
它为开展过程改进的组织提供了很多有用的帮助
IDEAL模型可以分为五个阶段
第一个阶段是启动阶段
这个阶段要学习过程改进、约定启动资源
并建立过程的基础设施
最重要的是建立管理操作组和软件工程过程组
常常形成一个问题发现小组来研究有关的议题
并把软件过程的改进建议提交给高层管理者
第二个阶段是诊断阶段
这个阶段建立当前过程的成熟度、过程说明、度
量等等
并启动行动计划的开发
第三个阶段是建立阶段
这个阶段要建立目标和优先权
完成行动计划的开发
第四个阶段是行动阶段
这个阶段要研究和开发过程问题的解决方案
并把成功的过程改进意见扩散到整个组织
第五个阶段是学习阶段
这个阶段准备再次通过IDEAL模型
把学到的经验教训应用到整个领域
来完善它的软件开发过程
最后,我们来看一个通用的过程改进的步骤
首先需要确定软件开发企业的质量目标和商业目
标
以确定和企业当前水平相当的一个过程改进计划
根据产品度量和过程度量的结果
来确定我们拟改进的过程范围和改进的优先级
启动过程改进之后,根据初步的改进方案
评价要求以及当前评价能力来实施过程评价
然后呢,根据各项指标对评价结果进行分析
并制定过程改进行动计划
这些计划获得批准之后就可以进入实施阶段
最后对改进后的过程进行再评价并获得确认和证
实
经过证实的,这种有效的软件过程持续执行
进一步监督改进后的过程性能
如果企业的需求进一步提高了
改进后的过程也许就无法满足后来的要求
就开始进入下一轮的过程改善
好,过程改进就讨论到这里,谢谢大家
-1.1 软件工程的前生今世
--开篇阅读
--授课视频
-第一章 软件工程基础--1.1 软件工程的前生今世
-1.2 万变不离其宗
--授课视频1/3
--授课视频2/3
--授课视频3/3
-第一章 软件工程基础--1.2 万变不离其宗
-1.3 唯一不变的是变化
--授课视频1/3
--授课视频2/3
--授课视频3/3
--外部链接
-第一章 软件工程基础--1.3 唯一不变的是变化
-1.4 亡羊补牢为时不晚
--授课视频1/2
--授课视频2/2
-第一章 软件工程基础--1.4 亡羊补牢为时不晚
-扩展阅读与话题讨论
--扩展阅读
--话题讨论
-2.1 方法论来源于恐惧
--授课视频
-第二章 敏捷开发--2.1 方法论来源于恐惧
-2.2 敏捷是什么
--授课视频
-第二章 敏捷开发--2.2 敏捷是什么
-2.3 典型敏捷开发方法
--XP敏捷开发方法
-第二章 敏捷开发--2.3 典型敏捷开发方法
-2.4 敏捷不是万能药
--授课视频
-第二章 敏捷开发--2.4 敏捷不是万能药
-专家谈敏捷
-扩展阅读与话题讨论
--外部链接
--话题讨论
-3.1 面向对象核心概念和基本特性
-第三章 OO与UML--3.1 面向对象核心概念和基本特性
-3.2 面向对象设计基本原则
-第三章 OO与UML--3.2 面向对象设计基本原则
-3.3 通用职责分配模式(GRASP)
--通用职责分配模式
-3.3 通用职责分配模式(GRASP)--作业
-3.4 从重构到模式
--模式和设计模式
-第三章 OO与UML--3.4 从重构到模式
-3.5 使用UML设计面向对象系统
--UML综述
-第三章 OO与UML--3.5 使用UML设计面向对象系统
-3.6 主要UML模型图绘制技巧
--UML用例图
--UML类图
-第三章 OO与UML--3.6 主要UML模型图绘制技巧
-扩展阅读与话题讨论
--设计模式有毒么?
--话题讨论
-4.1 案例简介
--书籍参考
--案例说明
-4.2 对象模型之一
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.2 对象模型之一
-4.3 对象模型之二
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.3 对象模型之二
-4.4 对象模型之交互
--授课视频
-第四章 对象模型分析--4.4 对象模型之交互
-扩展阅读与话题讨论
--图书推荐
--话题讨论
-5.1 软件自动化概述
--软件自动化概述
-第五章 软件自动化技术--5.1 软件自动化概述
-5.2 典型自动化方法和工具
-第五章 软件自动化技术--5.2 典型自动化方法和工具
-5.3 文档自动化
--文档自动化视频
-第五章 软件自动化技术--5.3 文档自动化
-5.4 测试自动化
--测试自动化视频
-第五章 软件自动化技术--5.4 测试自动化
-专家访谈
-扩展阅读与话题讨论
--话题讨论
-6.1 持续集成
-第六章 CI/CD与DevOps--6.1 持续集成
-6.2 持续交付和部署
-第六章 CI/CD与DevOps--6.2 持续交付和部署
-6.3 DevOps
-第六章 CI/CD与DevOps--6.3 DevOps
-专家访谈
-扩展阅读与话题讨论
--DevOps专题
--话题讨论
-7.1 质量和质量保证
--授课视频
-第七章 软件质量保证--7.1 质量和质量保证
-7.2 软件质量模型
--授课视频
-第七章 软件质量保证--7.2 软件质量模型
-7.3 SQA组织与职责
--授课视频
-第七章 软件质量保证--7.3 SQA组织与职责
-7.4 全面软件质量管理
--授课视频
-第七章 软件质量保证--7.4 全面软件质量管理
-专家访谈
--专家访谈
-扩展阅读与话题讨论
--外部链接
--话题讨论
-8.1 软件过程综述
--授课视频
-第八章 软件过程改进--8.1 软件过程综述
-8.2 软件过程改进
--授课视频
-第八章 软件过程改进--8.2 软件过程改进
-8.3 能力成熟度模型
--授课视频
-第八章 软件过程改进--8.3 能力成熟度模型
-8.4 过程改进标准框架
--授课视频
-第八章 软件过程改进--8.4 过程改进标准框架
-扩展阅读与话题讨论
--话题讨论
-9.1软件复用综述
--授课视频
-第九章 软件复用--9.1软件复用综述
-9.2 软件构件技术
--授课视频
-第九章 软件复用--9.2 软件构件技术
-9.3 软件复用实施
--授课视频
-第九章 软件复用--9.3 软件复用实施
-9.4 微服务架构
--授课视频
-第九章 软件复用--9.4 微服务架构
-扩展阅读与话题讨论
--微服务扩展
--话题讨论
-文档提交处--文档提交