01. Overview of Software Quality and Process

 

软件过程

  • 是为了实现一个或者多个事先定义的目标而建立起来的一组实践的集合
  • 这组实践之间有一定的先后顺序
  • 具体实例,就是软件开发的步骤

生命周期模型

  • 过程的模版,就已经定好了
  • 对软件过程的一种人为的划分
  • 瀑布,迭代,原型,形式化方法都是典型的生命周期模型

生命周期模型 🆚 软件过程

  • 生命周期模型是对一个软件开发过程的人为划分的
  • 生命周期模型是软件开发过程的主框架
  • 生命周期模型一般不包括技术实践

软件过程管理

  • 管理对象是“软件过程”
  • 管理的目的 : 为了让软件过程在开发效率、质量等方面有着更好Performance

软件项目管理 🆚 软件过程管理

Picture1

  • 项目管理: 通常关注特定项目,这个项目的目标的实现
  • 过程管理:关注公司所有的项目,它所使用的方法有什么样的提升

软件过程管理 🆚 软件过程改进

  • 软件过程管理应该包含了软件过程改进。因为按照管理的含义来说应该有目标定义,状态跟踪,纠偏。改进是一个动作,它应该是属于纠偏。
  • 软件过程管理参考模型 CMM/CMMI, SPICE等
  • 软件过程改进参考元模型 PDCA,IDEAL(SEI匹配了CMM/CMMI所提出来的一个过程改进的元模型)

软件开发的本质难题

  • 复杂性,不可见性,可变性,一致性

软件危机

  • 指落后的软件生产方式无法满足快速增长的软件需求,所以导致软件开发与维护过程中出现一些严重问题的现象

软件工程

  • 软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科

    • 管理者的角度来看 :

      • 更多关注的是“我能否去复制在其他的场景下成功?”
      • 努力地复制别的成功
      • 难点 :这种复制不容易,因为这里面的设计的因素太多
    • 技术的视角 :

      • 更关注的是“我能不能把这个问题更好一些,性能更强一些?”
      • 一定需要解决问题,所以不存在努力的去复制成功

软件项目管理

  • 所有的管理都应该有3个基本的要素 :
    1. 清晰的目标的定义
    2. 状态,有能力去判断是否偏你的目标
    3. 正偏差(纠偏
  • 软件项目管理的目标 : 成本,质量,工期

思考 🤔

《 以下说法是否正确?为什么?》

Q1 : 软件过程管理是软件项目管理应该要实现目标?

:arrow_right: 不正确,在极端情况下,软件项目管理不用关心软件过程管理,它只需要关系它的项目能不能完成就好。“流水线哪些地方不合理“这不是软件项目管理当中需要干的

Q2 : “在公司导入敏捷过程是我们今年过程改进的主要目标。” ?

:arrow_right: 这个说法不是很准确的说法。严格来说的话,不说过程改进导入方法。过程改进是找到某一些差距,然后解决这种差距

Q3 : XP与CMM/CMMI是对立的两种软件开发方法

:arrow_right: CMM/CMMI根本不是软件开发方法,是为了做过程管理,所以是不正确的

Q4 : CMM/CMMI不适合当今互联网环境的项目管理需求

:arrow_right: CMM/CMMI不是跟任何一个环境下的项目管理的需求有关的,CMM/CMMI本身不是干这个事,所以是不正确的

Q5 : PDCA和IDEAL不适合在敏捷环境中使用

:arrow_right: 软件过程改进元模型(PDCA和IDEAL)适合在任何场景下来使用

Q6 : 不同的软件开发过程应该使用不同的生命周期模型,反之亦如此

:arrow_right: 同样的一个开发过程,基于不同的目的,可以把它划成不同的生命周期模型。两个生命周期模型都是瀑布模型的话,他们做法不一定要一样。生命周期模型是软件开发过程的人为的主观的划分。所以这句话是不正确的


《Reference》

  1. 2020年(秋) 软件质量与管理 : 荣国平