杨根兴 软件过程改进与敏捷方法

25
地地 地地 863 地地地地地地地 地地地 地地 地地地 () 1588 地 地地地地 地地地 100 地 1 地地 702 地 地地地地021 64511296 地地地 ,: WWW.SSTL.ORG.CN 上上上上上上上上上上上上上 上上上上上上上上上上上上上上上 地地地地 · 地地 上上上上上上上上上上上 上上上 上上 / 上上上 / 上上 上上上上上上上上上 上上上上上上 上上上上上上 上上上上上上上上上上 上上上上上上 上上上上上上上上上上上上上上上 上上上上上上上 上上上上上上上上上上上上上上 () 2010 上 11 上 13 上

description

 

Transcript of 杨根兴 软件过程改进与敏捷方法

Page 1: 杨根兴   软件过程改进与敏捷方法

地址:国家 863 软件专业孵化器(上海)基地 联航路 1588 号, 业务受理:钦州路 100 号 1 号楼 702 室 热线电话: 021 - 64511296 ,网站:WWW.SSTL.ORG.CN

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

敏捷之旅 ·上海

软件过程改进与敏捷方法 杨根兴 博士 / 研究员 / 博导

上海市软件行业协会 秘书长华东理工大学、上海交通大学 教 授中国软件测评机构联盟 常务副理事长

上海市计算机软件评测重点实验室 学术委员会主任 (上海计算机软件技术开发中心)

2010 年 11 月 13 日

Page 2: 杨根兴   软件过程改进与敏捷方法

2

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

上海市计算机软件评测重点实验室(SSTL) ( WWW.SSTL.ORG.CN )

软件产品评测

系统评测与调优

网络测试

国家标准制订

质量体系咨询

质量测试培训

测试与 QA外包

专业能力

软 件 生 命 周 期

需求需求 设计设计 开发开发 测试测试 运维运维

QA 外包、测试服务SQA 驻场服务CMMI 咨询服务

需求管理、产品评审功能审计、节点控制

性能测试调优系统健康检查

质量保证平台项目监控平台测试管理平台

有经验的专业团队产品评测 系统测试 QA 咨询 外包服务 评测管理

Page 3: 杨根兴   软件过程改进与敏捷方法

3

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

上海市计算机软件评测重点实验室(SSTL) ( WWW.SSTL.ORG.CN )

Page 4: 杨根兴   软件过程改进与敏捷方法

4

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

上海市计算机软件评测重点实验室(SSTL) ( WWW.SSTL.ORG.CN )

为信息系统高效、稳定、健康上线运行保驾护航! 质量保证与测试的成功案例:

上海证券交易系统 3GSS 项目质量保证 农行上海分行质量体系建设咨询 中国大地财产保险:系统测试与咨询 上海世博会票务系统测试 上海市公安局系统测试 上海电力系统测试 ……

Page 5: 杨根兴   软件过程改进与敏捷方法

5

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

报告内容 1. 软件过程模型面临的挑战 2. 软件过程的线性与非线性 3. 软件过程与文化背景 4. 软件开发的主体是人 5. 过程改进与敏捷方法

Page 6: 杨根兴   软件过程改进与敏捷方法

6

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

1. 软件过程模型面临的挑战 随着软件“时间、成本、交付”的压力,不少软

件企业的过程体系流于形式,即使有了一大堆规范也很少参照,软件质量问题依旧存在。究其原因,有以下方面: 软件的交付期越来越短; 软件的规模越来越大; 软件需求的不确定性已成为现实; 软件的变更越来越多且越来越频; 软件企业的成本压力越来越大。

Page 7: 杨根兴   软件过程改进与敏捷方法

7

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

2. 软件过程的线性与非线性软 件 生 命 周 期

需求需求 设计设计 开发开发 测试测试 运维运维

计划评审

需求评审

设计评审

节点控制

交付物评审

功能审计

UAT测试

单元测试

集成测试

系统测试

UAT测试

场景测试

建立长效机制:依据规范、建立一套体系,如: CMMI3

过程

测试

体系

Page 8: 杨根兴   软件过程改进与敏捷方法

8

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

瀑布型

Page 9: 杨根兴   软件过程改进与敏捷方法

9

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

软件开发 V 模型

用户

需求获取

需求描述

需求分析

需求规约

设计

设计规约

详细设计

模块设计书

编程

程序

单元测试

已测试模块

集成

已集成软件

集成测试

软件

确认测试

已确认软件

运行测试

软件产品

评审

评审

评审

评审

静态检查

评审

评审

评审

评审① 测试案例②集成计划③建立文档

Page 10: 杨根兴   软件过程改进与敏捷方法

10

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

增量型( Incremental)

构造一系列可执行的中间版本(Version by Version)

Page 11: 杨根兴   软件过程改进与敏捷方法

11

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

螺旋型

Page 12: 杨根兴   软件过程改进与敏捷方法

12

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

Agile Lifecycle

Initiate project

Product vision Project goals, constraints

Coarse-grain requirements Coarse-grain estimates

Iteration & release plans

.

. Release 1.4

.

. Release 1.3

. Release 1.2

.Rel 1.1

Production

ProjectStatus

2 - 6weeks

Deliver product increments

Production-qualityproduct

Page 13: 杨根兴   软件过程改进与敏捷方法

13

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

2. 软件过程的线性与非线性 软件企业不是从主观上排斥已建立的过程体系,而是从客观

上无法遵循。因为,软件过程实际上是一种非线性过程,需要一种适应双向多次交流、多轨并行、实时迭代的过程模型。

特别是软件服务化的趋势明显,有三个方面值得我们关注: 一是软件与硬件的融合 二是软件与服务的融合 三是软件与网络的融合

软件的开发已不再是一个单纯的软件问题,而是一个融合产品、服务产品的开发问题,对软件过程模型提出了挑战。

Page 14: 杨根兴   软件过程改进与敏捷方法

14

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

2. 软件过程的线性与非线性

规划

分析

设计

实施

运行

变更时间维

知识维

逻辑维

明确问题

选择目标

系统综合

系统分析

优化评价

系统决策

系统实施

基本技能

专业基础

标准规范

文档模板

技术工具

模型方法

霍尔的三维方法论

Page 15: 杨根兴   软件过程改进与敏捷方法

15

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

3. 软件过程与文化背景 目前,软件工程的过程模型基本上是从欧美引

进的,也增加了不少日本的元素,其文化背景是明显的。因此,过程模型的引入相对容易,但文化的引入实为困难。

有一次接待台南软件代表团时,谈到 CMMI对中国文化的适应性问题,我提出了一个Chinese CMMI ( CCMMI )的观点,得到台南软件代表团同胞的一致响应,可谓同根同祖、血脉相通。

Page 16: 杨根兴   软件过程改进与敏捷方法

16

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

3. 软件过程与文化背景 欧美的文化从本质上讲,是一种“责任认同”

文化,有规程就应该遵循。日本文化从本质上看,是一种长官意志,部下只能回答“是”,实质上也是一种“责任认同”文化。

中国的文化,在文革前是提倡孔子的“克己复礼”,文革中是“最高指示”,改革开放后各种文化并存,更多体现了一种“个性”文化,目前正在倡导“和谐”和“包容性”文化。

不同的文化背景应该产生不同的软件工程的过程模型。这也是不能照搬照抄、引进消化再创新的道理。

Page 17: 杨根兴   软件过程改进与敏捷方法

17

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

4. 软件开发的主体是人 软件开发的主体是人,而不是过程。试图把软件开发

工程师作为制造业生产线上的工人进行管理,是一种极大的认识错误。导致过程执行的心理障碍。

软件开发是一项高智力的劳动,靠软件开发的人去完成。而人的思想丰富,其行为具有不确定性,办事很难保持一致,善于从实例中学习工作。

过程体系规定的是一种刻板的过程,需要人去遵循;遵循的不好,需要不断地强化评审和检查,从而增加了软件的成本。

充分发挥人的创造性和协作精神,加强沟通的条件和建立有效的沟通机制,是我们需要关注的,而不是一味地加强“监管”措施。

Page 18: 杨根兴   软件过程改进与敏捷方法

18

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

5. 过程改进与敏捷方法 5.1沟通 软件开发是个人智慧的产物,更是团队合作的

成果。人的思维具有跳跃性和非线性特征,团队中的沟通成为项目成败的关键因素。沟通除了个人的主动性外,更需要沟通的环境、机会、频度、共同理解的语言符号、机制等条件的建立。

这实际上是敏捷方法中的 Daily Stand-Up Meetings 的含义。

Page 19: 杨根兴   软件过程改进与敏捷方法

19

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

5. 过程改进与敏捷方法 5.2 需求

需求沟通 :引导、导读、例会、 DEMO等 需求变更:

敏捷方法是规避需求变更风险的好方法; 项目开始时就应进行需求变更风险的评估; 项目中发生变更。首先要判断此变更的提出者是否是客户的权威要求,再判断此变更是否超出项目的范围,然后再走变更流程。

Page 20: 杨根兴   软件过程改进与敏捷方法

20

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

5. 过程改进与敏捷方法 5.3 文档编写

代码的文档化。一本规范的编码手册,是有经验软件企业的标志。

变文档编写为文档改写。文档的编制不仅要有模板框架,而更有用的是案例模板。

Page 21: 杨根兴   软件过程改进与敏捷方法

21

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

5. 过程改进与敏捷方法 5.4 文档与设计的一致性

文档与设计的一致性追溯矩阵 需求No

一级需求

二级需求

三级需求

设计文档:章、节、段

源代码标识:子系统、单元

测试用例: No

变更标志

修订标志

1

2

---

Page 22: 杨根兴   软件过程改进与敏捷方法

22

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

5. 过程改进与敏捷方法 5.5 评审 软件评审作为软件质量的一种有效的监督检查手段,评审的目的是找出开发成果物中的缺陷,但评审又是最费时间成本的。软件工程的专家提出了诸如 “审查”、“ 结对编程”、“小组评审”、“ 同行桌面检查”、“ 传阅”、“ 轮换评审”、“走查”、“同行评审”和“临时评审”等许多方法。

在敏捷方法的一个开发周期中应提倡“同行评审”和“临时评审”,一个小版本发布时可采用团队的“小组评审”,以降低评审的成本。

Page 23: 杨根兴   软件过程改进与敏捷方法

23

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

5. 过程改进与敏捷方法 5.6知识共享

团队中、企业中实现知识共享是企业成熟的表现,软件企业最有价值的是知识的积累。知识共享是一种文化,企业应该营造知识共享的氛围和推进机制。

目前,大部分企业仅把基线文档入库,作为配置管理的手段。这是远远不够的。其实,知识的片断有时显得更为重要、更为有用与实用。

人是最容易在反面教材中获得教育的。因此,建立缺陷知识库十分重要。

Page 24: 杨根兴   软件过程改进与敏捷方法

24

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

银弹?!全靠实践!在实践中创新!

结语:

Page 25: 杨根兴   软件过程改进与敏捷方法

25

上海计算机软件技术开发中心上海市计算机软件评测重点实验室

请批评、指正!

谢谢各位!杨根兴, [email protected] , 13916304463