630 likes | 931 Views
软件过程与管理 第一讲 软件过程基础. 荣国平 南京大学软件学院 2013 年 秋. 软件在改变我们的世界 (1). 软件在改变我们的世界 (2). 软件在改变我们的世界 (3). 软件复杂度的增长. 软件生产随规模增大复杂度增大 以美国宇航局的软件系统为例: 1963 年 水星计划系统 200 万条指令 1967 年 双子星座计划系统 400 万条指令 1973 年 阿波罗计划系统 1000 万条指令 1979 年 哥伦比亚航天飞机系统 4000 万条指令. 软件自身的变化 - 规模. 10,000,000. 1,000,000. 100,000.
E N D
软件过程与管理 第一讲软件过程基础 荣国平 南京大学软件学院 2013年 秋
软件复杂度的增长 • 软件生产随规模增大复杂度增大 • 以美国宇航局的软件系统为例: • 1963年 水星计划系统 200万条指令 • 1967年 双子星座计划系统 400万条指令 • 1973年 阿波罗计划系统 1000万条指令 • 1979年 哥伦比亚航天飞机系统 4000万条指令
软件自身的变化-规模 10,000,000 1,000,000 100,000 10,000 1,000 100 Size in KLOC 10 1 0 Moore’s Law: 2X in 18 months 10X in 5 years 1960 1965 1970 1975 1980 1985 1990 1995 2000 Years
从未真正解决的“软件危机” • 只是时间问题 • 即便是应用最为广泛的软件也有大量的错误 • 遍及我们生活各个方面的软件不可避免会出现问题,危及 • 生命 • 业务 • 灾难
软件工程简史 • 上世纪50年代 • 机器比人贵重 • 上世纪60年代~80年代 • 软件危机和应对 • 上世纪80年代~ • 质量问题叠现 • 可靠性、安全性等
抗争的经验教训 • 这场战争暂时看不到胜利的曙光 • 软件项目失败原因 • 规模 • 质量 • 管理 • 知识工作的特殊管理方式 • 管理层的支持
软件过程理论的基石 软件产品和服务的质量,很大程度上取决于生产和维护该软件或者服务的过程的质量。
软件质量管理哲学 • 传统产品质量管理方法(在上世纪的五六十年代,在传统制造行业经历了一场广泛而深入的质量革命,这场质量革命的意义是深远的)。 • 质量革命中的代表性的研究成果(如Shewhart、Deming、Juran和Crosby等) • 进一步影响到制造业以外的其他行业。 • 例如:ISO 9000,ISO/IEC 15504, • 软件领域,Humphrey创立的著名的CMM/CMMI标准体系,也吸取了Deming、Juran和Crosby等人在质量管理方面的深刻思想。
休哈特(Shewhart) • 休哈特20世纪20年代在AT&T Bell实验室的一名统计员,被认为是质量改进的奠基人,现代过程改进都建立在Shewhart所提出的过程控制概念的基础上。 • 贡献 • 最早提出“计划-执行-检查(Plan-Do-See)”的概念,后来戴明进一步将其发展为PDCA。 • 出版 The Economic Control of Manufactured Products, 1931. 该书描述了减少过程可变性的统计过程控制方法的轮廓,语言生产率会随着过程可变性的减少而得到提高,这在20世纪50年代得到日本产业界的验证。
戴明(Deming) • 将一系列统计学方法引入美国产业界,以检测和改进多种生产模式,从而为后来杰克·韦尔奇等人的六个西格马管理法奠定了基础。Deming关于质量管理的思想被二战后的日本工业界所采用,Deming对质量管理的重要贡献简述如下: • 1) 质量改进。
戴明(Deming) • 戴明的贡献 • 1) 质量改进。 • 2) PDCA循环。Deming最早提出了PDCA循环的概念,所以又称为“戴明环”。PDCA循环是能使任何一项活动有效进行的一种合乎逻辑的工作程序,是一个基本的质量工具。 • PDCA- Plan, Do, Check, Action
戴明(Deming) • 3) 十四点原则。 • 树立改进产品和服务的坚定目标 • 采用新的思维方法 • 停止依赖检验的办法获得质量 • 不再凭价格标签进货 • 坚持不懈地提高产品质量和生产率 • 岗位培训制度化 • 管理者的作用应突出强调
戴明(Deming) • 3) 十四点原则。 • 排除畏难情绪 • 打破部门和人员之间的障碍 • 不再给操作人员提空洞的口号 • 取消对操作人员规定的工作定额和指标 • 不再采用按年度对人员工件进行评估 • 创建积极的自我提高计划制度 • 让每个员工都投入到提高产品质量的活动中去
朱兰(Juran) • 由Juran主编的《质量控制手册》(Quality Control Handbook)被称为当今世界质量控制科学的“圣经”,为奠定全面质量管理(TQM)的理论基础和基本方法做出了卓越的贡献。 • 1) 适用性质量 • 质量的本质内涵是“适用性”,而所谓适用性是使产品在试用期间能满足使用者的需求。Juran提出质量不仅要满足明确的需求,也要满足潜在的需求。这一思想使质量管理范围从生产过程中的控制进一步扩大到产品开发和工艺设计阶段。
朱兰(Juran) • 2) 质量三步曲
朱兰(Juran) 3) Juran质量螺旋(quality loop)
朱兰(Juran) • 4) 80/20原则 • 只有20%来自基层操作人员,而恰恰有80%的质量问题是由于领导责任所引起的。在国际标准ISO9000中,与领导责任相关的要素所在的重要地位,在客观上也证实了Juran的“80/20原则”所反映的普遍规律。
克劳士比(Crosby) • 1964年,Crosby提出了“零缺陷”的概念,即第一次就把事情做对。 • 1) 质量管理的绝对性 • (1)质量就是符合要求,而不是“完美”。 • (2)质量来自于预防,而不是检验。 • (3)质量的标准是“零缺陷”,而不是可接受质量水平。 • (4)质量的衡量标准是“不符合要求的代价”。
克劳士比(Crosby) • 2) 质量改进的基本要素 • 6C “变革管理的六个阶段”: • ①领悟(comprehension)——理解质量真谛 • ②承诺(commitment)——制定质量策略的决心 • ③能力(capability)——教育与培训 • ④沟通(communication)——成功的经验文档化、制度化 • ⑤改正(correction)——预防与提高绩效 • ⑥坚持(continuance)——强调质量管理成为一种工作方式
质量运动 • Shewhart—— 20世纪30年代 发表统计学质量控制原理 • Deming 1956, Juran 1956—— 进一步发展并成功证明Shewhart的原理 • Crosby 1960—— 发展质量成熟度的量化 • Humphrey 1986—— 软件过程中采用Crosby的成熟度量化,加入成熟度等级的概念 • SEI 1987-97—— 发展成熟度的框架,成熟度问卷,SPA(软件过程评估),SCE(软件能力评估),CMM(能力成熟度模型
PDCA模型 • 八个步骤 • 分析现状,找出问题; • 分析影响质量的原因; • 找出措施; • 拟定措施计划; • 为什么要制定这个措施? • 达到什么目标? • 在何处执行? • 由谁负责完成? • 什么时间完成? • 怎样执行?
PDCA模型 • 八个步骤 • 执行措施,执行计划; • 检查效果,发现问题; • 总结经验,纳入标准; • 遗留问题转入下期PDCA循环。
IDEAL模型 • 软件工程研究所SEI已经开发了软件过程改进模型的一个实现方法,它描述了实现软件过程改进所必需的阶段、活动和成功的过程改进工作所需要的资源。 • IDEAL模型解决了软件组织在各种质量改进环境下的需要。它包括了软件过程改进周期中的五个阶段,IDEAL是代表这五个阶段的单词的首字母。 • I: Initiating 开始 • D: Diagnosing 诊断、评价 • E: Establishing 建立 • A: Acting 执行 • L: Leveraging 调整
常用软件过程改进模型 • CMM/CMMI • 软件能力成熟度模型(Capability Maturity Model,CMM)是美国卡内基.梅隆大学软件工程研究所(SEI)汇集了世界各地软件过程管理者的检验和智慧而产生的软件过程改进的指导性模型。该模型经过世界各地软件组织的实际应用,证明其对软件过程改进具有建设性作用。 • 代表人物:Watts Humphrey • 重要文献:Managing the Software Process, 1989
软件质量之父、CMM之父—Watts Humphrey • 功勋人物
Watts Humphrey的著作 • 1989, Managing the Software Process, Addison-Wesley, Reading, MA. //CMM • 1995. A Discipline for Software Engineering. Addison-Wesley, Reading, MA. • 1997. Managing Technical People - Innovation, Teamwork and Software Process. Addison-Wesley, Reading, MA. • 1999. Introduction to the Team Software Process. Addison-Wesley, Reading, MA. • 2001. Winning with Software: An Executive Strategy. Addison-Wesley, Reading, MA. • 2005. PSP, A Self-Improvement Process for Software Engineers. Addison-Wesley, Reading, MA.
Watts Humphrey的著作 • 2006. TSP, Leading a Development Team. Addison-Wesley, Reading, MA. • 2006. TSP, Coaching Development Teams. Addison-Wesley, Reading, MA. • 2010. Reflections on Management: How to Manage Your Software Projects, Your Teams, Your Boss, and Yourself. Addison-Wesley, Reading, MA. • 2011. Leadership, Teamwork, and Trust: Building a Competitive Software Capability. Addison-Wesley, Reading, MA.
CMM演进历史 CMMI
CMM5个级别 • 等级 • 1)初始级 • 2)可重复级 • 3)已定义级 • 4)已经管理级 • 5)优化级
CMMI历史 • 自1991年起CMM系统标准陆续发展应用于许多专业领域,较著名的包含了系统工程、软件工程、软件采购、及集成过程与产品开发(Integrated Process & Product Development,IPPD)等模型。 • 2000年整合软件工程(SW)、系统工程(SE)、集成产品(IPPD)开发等专业领域而发表了整合式模型CMMI v1.0版. • 2002年,v1.1版。 • 2006年,v1.2版。 • 2010年,v1.3版。CMU/SEI-2010-TR-033
PSP People - CMM SDCE SW - CMM SA - CMM SCE ISO 15504 FA - iCMM ( SPICE ) CMMI IPD - CMM DOD SECM * SE - CM IPPD ( EIA / IS 731 ) PSP - SA - SE - SW - 注 : 个体软件过程 ; 软件获取 ; 系统工程 ; 软件工程 ; SCE - SDCE - IPD - 软件能力评估 ; 软件开发能力评估 ; 集成产品开发 ; IPPD - SECM - 集成产品和过程开发 ; 系统工程能力模型 。 CMMI组成 • CMMI产品团队初始的任务是整合三个模型:
ISO/IEC 15504 • 也叫做 SPICE (Software Process Improvement and Capability Determination) • 过程类别共有五种,分别是: • 客户-供应商(CUS)过程 • 工程(ENG)过程 • 支持(SUP)过程 • 管理(MAN)过程 • 组织(ORG)过程
ISO 9000 • ISO 9000标准适合于除了电子电气行业以外的各种生产和服务领域,它已被各国广泛采用,成为衡量各类产品质量的主要依据。 • ISO 9000标准重点关注“过程质量”,强调“持续改进”。标准不仅包含产品和服务的内容,而且还需证实能有让顾客满意的能力。 • 标准要求从软件项目的合同评审——项目开发——安装——服务——质量改进——全过程进行完善的SQA控制,其中包括了对人员的培训及用于质量改进的统计技术。
其他标准 • BOOTSTRAP, 欧洲, • Cleanroom, IBM, • Trium加拿大
敏捷过程 • 起源 • 为了使软件开发团队具有高效工作和快速响应变化的能力,17位著名的软件专家于2001年2月联合起草了敏捷软件开发宣言。 • 敏捷软件开发宣言的4个简单的价值观: • 个体和交互 胜过 过程和工具 • 可以工作的软件 胜过 面面俱到的文档 • 客户合作 胜过 合同谈判 • 响应变化 胜过 遵循计划
极限编程 (XP) • 极限编程(eXtreme Programming)是敏捷过程中最负盛名的一个,其名称“极限”二字的含义是指把好的开发实践运用到极致。 • 极限编程的有效实践 • 客户作为开发团队的成员——客户代表 • 使用用户素材 • 短交付周期 • 验收测试 • 结对编程——结对编程就是由两名开发人员在同一台计算机上共同编写解决同一个问题的程序代码,通常一个人编码,另一个人对代码进行审查与测试,以保证代码的正确性与可读性。结对编程是加强开发人员相互沟通与评审的一种方式。
极限编程 (XP) • 极限编程的有效实践 (续) • 测试驱动开发——极限编程强调“测试先行”。在编码之前,应该首先设计好测试方案,然后再编程,直至所有测试都获得通过之后才可以结束工作。 • 集体所有 • 持续集成 • 可持续的开发速度 <=40h/week • 开放的工作空间 • 重构 • 使用隐喻
极限编程 (XP)开发过程框架 • 极限编程的整体开发过程 图1.25 XP项目的整体开发过程
极限编程 (XP) • 极限编程的迭代过程 图1.26 XP迭代开发过程
SCRUM • Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。 • 虽然Scrum是为管理软件开发项目而开发的,它同样可以用于运行软件维护团队。 • Empirical Process Control VS. Statistical Process Control
PSP/TSP • PSP/TSP都是由美国卡内基.梅隆大学软件工程研究所(SEI)的Humphrey等人设计和开发 • PSP着重于软件开发人员的个人能力提升,体现在估算能力、计划能力、计划执行以及质量管理等方面。 • TSP能够提供了 • ①一个已经定义的团队构建过程; • ②一个团队作业框架; • ③一个有效的管理环境。