近十年来,软件过程越来越成为人们关注的焦点,正在打破过去人们已经习惯的面向任务的思维方式,逐渐加强面向过程的思考,软件开发和维护的运作以过程为中心的方式在进行。正如软件工程领域领袖级人物、能力成熟度模型(CMM)奠基人瓦茨·汉弗菜(Watts Humphrey)所说,要解决软件危机,首要的任务是把软件活动视作可控的、可度量的和可改进的过程。
其实,通过下面这个“七人分粥”寓意的小故事,就很清楚地说明软件过程的重要性。
有7个人曾经住在一起,每天分一大桶粥。要命的是,粥每天都是不够的。
- 一开始,指定一人负责分粥事宜,很快大家发现,这个人为自己分的粥最多最好,于是推选出一个道德高尚的人出来分粥。强权就会产生腐败,大家开始挖空心思去讨好他,搞得整个小团体乌烟瘴气,显然这个方法不行。
- 指定一个人分粥和一个人监督,起初比较公平,但到后来分粥的人与监督的人从权力制约走向“权力合作”,于是只有这两个人能吃饱,这种方法也失败了。
- 谁也信不过,干脆大家轮流主持分粥,每人一天。虽然看起来平等了,但是每人在一周中只有1天吃得饱,其余6天都吃不饱,而且每天粥还有剩的,这种方法造成资源浪费。
- *选举一个3人分粥委员会和一个4人监督委员会,实行集体领导,公平是做到了。但是,监督委员会经常提出各种议案,分粥委员会据理力争,等粥分完时,粥早就凉了,此方法效率太低。
- 最后想出来一个方法——每个人轮流值日分粥,但分粥的那个人要最后一个领粥。令人惊奇的是,结果7只碗里的粥每次都是一样多,就象用科学仪器量过一样。因为,每个主持分粥的人都认识到,如果每只碗里的粥不相同,他无疑将拿到那份最少的。
同样是7个人,不同的流程和方法,就会造成迥然不同的结果,包括效率、成本上的差异。从这个故事可以看出,有什么流程,就有什么结果,流程决定了结果。
- 以客户为导向、以过程为中心。
- 好的过程就能产生好的产品。
- 尊重流程,自上而下,依赖流程。
- 只关注质量过程而不是质量结果。
过程管理的先进文化一旦在组织中建立起来,其他问题就迎刃而解。软件过程管理存在的最大障碍可能不在究竟用什么过程模型或过程管理系统,而是在于软件企业自身的传统的管理理念和思维方式,树立和保持企业全体人员的正确的、先进的理念,比推广一个管理工具要难得多。所以,软件过程管理得关键是建立正确的过程管理文化。
在当今互联网蓬勃发展的时代,软件企业面临着巨大的挑战。顾客需求瞬息万变、全球性竞争环境和技术创新不断加速等,导致产品生命周期不断缩短、商业模式不稳定,软件过程管理必须适应这种变化,CMM没有几年前那么火热而开始受到了的一些冷落,敏捷过程管理越来越受到推崇。同时,IBM-Rational的统一过程(RUP)管理和微软的过程管理框架(MSF)在保持其核心内容的前提下,也在不断进行调整,加入新的内容,以适应软件商业模式和开发模式的变化。所以,从这个意义上说,没有一成不变的软件过程管理模式,也没有放之四海而皆准的、通用的软件过程管理模式。软件过程管理模式应该是在不断发展的,就每个具体的软件组织和企业,应该选择适合自己的过程管理模式,并且也可能不只是选择一种模式,而是选择多种模式,以一种模式为主,对其他模式兼收并蓄,形成更有效的软件过程自定义模式。
本书正是从上述基本思想出发,来讨论软件过程管理,以期望对读者及其所在的软件组织有更大的启发和帮助。
全书共10章,全面介绍了软件过程管理的各个方面,包括软件过程规范、软件过程的组织管理、项目管理、质量管理、需求管理等,最后介绍了软件过程评估和改进、软件过程管理实例。
第1章 介绍了软件过程规范的内容、影响和作用,全面阐述了软件生命周期的过程需求和过程标准体系。最后介绍了基于UML、IDEF3、Agent自适应、SOA等各种方法的软件过程建模。
第2章 相继介绍了软件过程不成熟的特点、软件过程成熟的标准、能力成熟度模型(CMM/ CMMI)的基本内容、系统工程能力模型和集成化产品开发模型。并就过程成熟度级别及其特征、可视性和过程能力等展开讨论,包括CMM/CMMI过程域。最后介绍了软件过程文化、环境和过程框架等。
第3章 软件过程组织管理的描述,包括组织过程焦点、过程定义、过程剪裁等。着重讨论了PSP和TSP过程框架,包括工作流程、计划、设计与实践等具体内容。
第4章 软件过程的需求管理,主要介绍了软件需求工程、需求开发和管理的模型、需求管理工作流程、需求获取的过程和方法、需求定义过程和需求的确认、跟踪和变更控制。
第5章 描述了软件过程的技术架构及其层次、内容等,重点讨论了软件过程的资源管理、技术路线、问题解决的系统方法,包括原因分析和缺陷分析、决策分析与决定、技术解决计划的建立和实施、知识传递和各类过程管理的技术工具等。
第6章 介绍了项目启动和项目实施过程序要解决各种问题。主要内容包括了项目的配置管理,风险分析,资源和成本估算,项目跟踪等。
第7章 说明了质量控制的重要性,也介绍了控制软件质量的方法和手段。通过本章的学习可以基本掌握软件评审的方法和技术,以及软件缺陷的分析和有效移出。
第8章 软件过程的集成管理,主要介绍了项目的集成管理流程。重点内容包括产品集成的过程管理、集成产品开发模式、产品及周期优化方法、IPD过程框架模式以及市场过程管理、流程重整、产品重整和新产品开发等。
第9章 首先阐述了软件过程评估和改进的基本思想和方法,然后相继介绍了各种常用的评估和改进模型,如ISO/IEC 15504、Bootstrap、Trillium和CMM/CMMI的评估体系以及质量改进范例、IDEAL模型、Raytheon方法、6 Sigma方法等过程改进模型和方法。
第10章 通过具体实例进一步阐述了软件过程的管理,介绍了IBM-Rational 业务驱动开发的RUP、微软公司MSF、敏捷过程管理、面向构件的软件过程和软件过程的自定义体系。
每一章的最后都有本章的小结和思考题,以便帮助读者理解每一章的内容。
本书特别重视理论与实践相结合,使读者既能领会基本原理,又能掌握原理的实际应用。因此,它既适合软件公司中的软件工程师和管理人员阅读,也适合软件质量管理的专业人员和实践人员。同时,本书很适合作为计算机软件、软件工程学科大中专学校的教材。