2021-软件质量管理-Lec-1 概述
Lec-1 概述
1. 引入
- 软件在改变(定义?颠覆?)我们的世界
- 软件自身的变化:
- 规模
- 比例
2. 软件危机
- 软件的四大本质困难和挑战
- 复杂性
- 不可见性
- 可变性
- 一致性
- 人月神话
3. 软件危机 vs. 软件工程
- 软件危机
- 软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
- 软件工程
- 软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
- 软件工程的两大视角
- 管理视角——能否复制成功?
- 技术视角——是否可以将问题解决得更好?
4. 软件项目管理
4.1. 软件项目管理概念 重要
- 管理的三大关键要素:
- 目标
- 状态:是在接近目标还是在远离目标
- 纠偏
- 软件项目管理
- 典型的三大目标:成本、质量、工期
- 软件项目管理是应用方法、工具、技术以及人员能力来完成软件项目,实现项目目标的过程。
- 估算、计划、跟踪、风险管理、范围管理、人员管理、沟通管理,等等
- 参考《PMBOK》项目管理知识体
- 质量实践和质量管理是不一样的
- 质量实践包括测试等等
- 质量管理是对质量的管理,而不是实践,管理必须有上面所说的三个要素
4.2. 软件项目管理视角
- 成功是否可以复制?
- 软件过程
- 软件过程是为了实现一个或者多个事先定义的目标而建立起来的一组实践的集合
- 这组实践之间往往有一定的先后顺序,作为一个整体来实现事先定义的一个或者多个目标。
- 生命周期模型
- 对软件过程的一种人为的划分
- 软件过程
4.3. 广义软件过程
- 理论基石:软件产品和服务的质量,很大程度上取决于生产和维护该软件或者服务的过程的质量。
- 广义软件过程包括技术、人员以及狭义过程
- 广义软件过程的同义词
- 软件开发方法、软件开发过程
- 净室Cleanroom方法、极限编程方法、SCRUM方法、Gate方法;
- 而更一般的,敏捷软件过程/方法、轻量型过程/方法以及重型过程/方法等描述也是恰当的
- 软件开发方法、软件开发过程
4.4. 生命周期模型与软件过程
- 区别和联系
- 生命周期模型是对一个软件开发过程的人为划分
- 生命周期模型是软件开发过程的主框架,是对软件开发过程的一种粗粒度划分
- 生命周期模型往往不包括技术实践
- 典型生命周期模型
- 瀑布模型、迭代式模型、增量模型、螺旋模型、原型法等等
4.5. 软件过程管理
- 管理对象是软件过程
- 管理的目的是为了让软件过程在开发效率、质量等方面有着更好性能绩效(performance)
-
左侧是软件开发部分,右侧是传统生产部分。
-
敏捷和计划驱动:敏捷中也需要计划驱动
-
管理视角的核心问题——能否复制成功?
4.6. 软件过程管理与软件过程改进
- 两者意思接近
- 软件过程管理参考模型 CMM/CMMI, SPICE等
- 软件过程改进参考元模型 PDCA,IDEAL
4.7. 思考和讨论
- 以下说法是否正确?为什么?
- 软件过程管理是软件项目管理应该要实现目标:软件过程管理和软件项目管理完全是两回事,因此并不是实现目标,错误的。
- 在公司导入敏捷过程是我们今年过程改进的主要目标:过程管理和过程改进是类似的,这个说法是合理的,正确的。
- XP与CMM/CMMI是对立的两种软件开发方法:CMM和CMMI并不是软件开发方法,而是软件过程管理和改进,CMM和CMMI是没有较大区别的,错误的。
- CMM/CMMI不适合当今互联网环境的项目管理需求:CMM/CMMI是用来做过程管理和改进的,根本不是满足项目管理需求的手段,正确的。
- PDCA和IDEAL不适合在敏捷环境中使用:PDCA,IDEAL是软件过程改进参考元模型,因此是适合在敏捷环境中使用的,错误的。
- 不同的软件开发过程应该使用不同的生命周期模型,反之亦如此:生命周期模型是由人类划分的,不一定,错误的,
- BD
2021-软件质量管理-Lec-1 概述
https://spricoder.github.io/2022/01/09/2021-software-quality-management/2021-software-quality-management-Lec-1%20%E6%A6%82%E8%BF%B0/