【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )(一)

简介: 【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )(一)

一. 软件危机 及 过程


提出了软件开发中的几个问题, 以及软件危机的概念, 软件危机是否存在, 及理由; 软件危机解决方案 ( 银弹 ) 的发展历程; 软件过程的提出与发展, 及四个研究方向;



1.软件面临的挑战


( 1 ) 提出问题


提出一些问题 : 这门课程基本就是针对如下问题进行解决;


1.大型软件开发 : 开发大型软件, 需要做那些事情 ?

2.软件开发技术 : 当前的软件开发技术是否完美 ?

3.改进开发技术 : 如何针对当前的软件开发技术进行改进 ?


软件研发中的问题 :


1.几个公认的问题 : ① 软件项目 超出预算 ; ② 软件项目 进度落后 ; ③ 软件项目 质量不可靠 ;

2.软件危机 ( Software Crisis ) : 软件研发中, 是否存在软件危机 ?

3.银弹 ( Silver bullet ) : 银弹 即 软件危机的解决方案, 可以解决任何软件研发的问题, 银弹是否存在 ?


本门课程将会逐步针对上述问题给出对应的解决方案 ;




2.软件危机


( 1 ) 软件危机存在


软件危机存在的理由 :


1.开发中的一些事实 : ①软件可靠性没有保障, ②软件维护费用不断上升, ③软件进度无法预测, ④成本增长无法控制, ⑤无限度增加开发人员 ;

2.很多失败的项目 : ①美国水手1号出现软件错误没有达到金星, ②阿波罗14号飞行10天出现18个错误, ③IBM360操作系统 ;


( 2 ) 失控软件项目分析


失控软件项目分析 :


1.失控的软件项目分类 : ①目标不定 : 没有指定完整的目标, ②计划 : 计划和估算不准, ③新技术 : 新技术的采用, ④管理 : 管理方法缺少规范 或 不恰当, ⑤研发力量 : 高级员工不足, ⑥外部环境 : 供应商提供的软件或硬件性能不足, ⑦性能 : 软件性能或效率问题 ;

2.失控软件项目相同特性 :

① 大型项目 : 多数失控的软件项目都是 大型项目 ;

② 多种原因导致 : 导致失败的原因有多种; 不一定有某个失败原因起主导作用 , 有多个问题导致项目失败 ;

③ 计划不足 : 很多软件项目初期都有重大进展, 与被替换的项目对比, 有很大优势; 但是项目一旦展开, 出现各种导致失败的问题 ;

④ 技术问题 : 技术问题 也经常 成为失败的原因 ;

⑤ 性能问题 : 软件的性能 成为主要的技术性问题 ; 如 需要高并发性能的12306订票网站数次瘫痪;


( 3 ) 软件危机不存在


软件危机不存在的理由 :


1.失败数据使用不当 : 对失败软件的数据 使用不当, 导致人们人为存在 软件危机 ;

2.成功软件 : 计算机技术 已经成为社会的主导力量, 有大量的成功软件的案例 ;

3.不良企图 : ① 经销商 : 出售软件危机解决方案 ; ② 学者 : 获取针对软件危机的研究经费, 及让人们接受他们提出的解决方案;



3.银弹存在研究


关于银弹是否存在的研究 : 银弹是指一个问题的终极解决方案 ;


1.Brooks 在 1987年 论证 : 十年内没有 单项技术 或 实施方案 使得 软件的生产能力 得到完美改善 ; [Brooks, F. P… No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer, 1987, 20(4): 10-19. ]

2.没有银弹的阶段 : 1970 ~ 1990 没有解决软件危机的有效办法 ;

3.银弹的持续研究 : 每当有 新技术出现 或者 新的工作方法出现 时, 都会被 误认为解决软件危机的 银弹, 如下 :

① 工具 ( Tool )

② 行为准则 ( Discipline )

③ 形式方法 ( Formal Method )

④ 过程 ( Process )

⑤ 专业化 ( Professionalism )



4.软件危机 解决方案


软件危机 解决方案 :


1.多种手段公用 ( 技术 + 管理 ) : 没有单一的银弹可以解决, 使用多种手段; 单纯的技术手段无法解决 软件危机; 因此提出了 技术 与 管理 结合的方案, 即 过程 ;

2.软件危机解决方案进化 : ① 80年代的思路是 工具 + 方法 ; ② 80年代之后的思路是 过程, 解决方案是 基于过程 的软件工程 ;

3.主要技术 : 下面罗列出 软件危机解决方案 的主要相关技术 :

① 软件的 分析技术, 需求分析, 建模技术

② 设计技术 ( 结构化, 面向对象 )

③ 程序设计, 开发工具

④ 软件测试技术, 测试工具

⑤ 组件 / 构件技术

⑥ 程序证明

⑦ 净室技术

⑧ 软件可靠性工程 ( SRE )



5.公司能力 与 能力改进


( 1 ) 公司能力 提出


公司能力 提出 : 公司能力主要是能 稳定 提供 高质量 的软件产品 ;


1.公司负面情况 : 很多公司经历过 成本超支, 项目延期, 士气低落, 质量低下, 并引发 返工, 客户投诉 等负面情况;

2.重复出现 : 上述负面情况会经常重复出现 ;

3.解决方案 : 改进公司能力 可以解决上述问题 ;


( 2 ) 能力改进作用


能力改进作用 :


1.能力改进项目 : 建立适合的解决方案 识别 并 利用 公司的关键能力, 需要建立 能力改进项目 ;

2.积极作用 : 任何规模的公司都能从能力改进中获益, 公司的整体能力 和 日常业务运作能力 都可以提升;

3.公司能力提高关键 : 将 可获得的资源 和 技术 链接起来 是提高公司能力的关键因素 ;

4.公司能力本质 : 公司能力需要 牢固地建立在 获得 开发 保持 推进 这些能力的 人员 过程 技术 的 质量上面 ;



6.软件过程发展


软件过程的发展 :


1.软件过程也是软件 : Leon Osterweil 在 1987 年提出, 软件过程也是软件 ;

2.研究方向 : 软件过程建模方法 和 以过程为中心的软件工程环境 ( process-centered software engineering environment : PSEE) ; 该研究关注四个方面 :

① 数据集成 ;

② 工具集成 ;

③ 控制集成 ;

④ 软件过程及其模型的变更控制 ;



7.以质量为中心的软件工程


软件工程 三要素 : 三种 组成的体系, 要 以 质量 为中心 ;


1.方法 : 为 软件开发 提供 如何做 的技术;

2.工具 : 为 软件工程方法 提供 自动或半自动 软件支撑环境 ;

3.过程 : 综合 软件工程方法 和 软件工程工具, 以达到 合理 及时 地 进行软件开发;



8.软件过程 定义 及 作用


软件过程 简介 : 软件过程 是 为了 开发高质量软件 所需要完成的 任务框架, 即形成软件产品的 一系列步骤, 包括 中间产品, 资源, 角色 及 在过程中采取的 方法, 工具 等 ;


软件过程 作用 :


1.提高生产力 : 有效的 软件过程 能极大 提高 公司组织的 生产力 ;

2.明智决策 : 理解软件开发的 基本原则, 可以帮助我们做出明智的决策 ;

3.工作标准化 : 使工作标准化, 提高软件的可重用性, 和 员工之间的协作 ;

4.不断改进 : 软件过程的理论强调, 不断的进行过程的改进, 使软件开发 不断的 跟上潮流, 接收新的 软件开发经验;

5.降低成本 : 有效的软件过程, 能降低软件的维护成本 ;

6.合理变更 : 有效的 需求变更过程, 能合理的管理变更, 减少变更带来的混乱;

7.规范开发 : 可以规范软件开发方式;

8.资产积累 : 有助于积累组织过程资产 ;


目录
相关文章
|
8月前
|
敏捷开发 安全 数据挖掘
【软件设计师备考 专题 】软件过程改进模型和方法:提升软件开发效率和质量
【软件设计师备考 专题 】软件过程改进模型和方法:提升软件开发效率和质量
219 0
|
项目管理
【项目开发计划制定工作经验之谈】
【项目开发计划制定工作经验之谈】
130 1
|
自然语言处理 数据安全/隐私保护 开发者
「需求工程」需求工程—需求规范(第3部分)
「需求工程」需求工程—需求规范(第3部分)
|
测试技术
【软件测试基础理论】身为测试主管,你必须知道的事情!(质量铁三角和CMM)
【软件测试基础理论】身为测试主管,你必须知道的事情!(质量铁三角和CMM)
|
资源调度 开发工具 内存技术
【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )(四)
【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )(四)
324 0
|
中间件 内存技术
【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )(二)
【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )(二)
186 0
|
iOS开发 内存技术
【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )(三)
【软件过程改进 学习笔记】过程思维 ( 软件危机 | 软件过程 | 过程改进 | 过程思维 | 过程描述 | ISO 9000 | 6σ | PCM | CMMI )(三)
350 0
|
测试技术
《软件需求工程(第2版)》一2.2 软件开发过程模型
本节书摘来自华章出版社《软件需求工程(第2版)》一书中的第2章,第2.2节,作者 毋国庆 梁正平 袁梦霆 李勇华,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1812 0