软件过程改进的复杂性工作程序SW-CMM实施的系统方法论华南理工大学工商管理学院万江平广州2004年12月20日2内容提要专著出版情况软件、软件过程及其复杂性Sigma-N概念软件过程改进复杂性七命题软件过程改进案例小结34系统与管理决策从书(1)系统方法论:包括复杂性科学中的方法论决策:方法论应用范围为管理理论,也指具体的决策方法5系统与管理决策从书(2)软件过程改进复杂性工作程序企业知识管理方法论企业战略管理的系统方法论利益协调软系统方法论6专著内容提要(1)第一章是绪论。说明软件过程改进复杂性根源在于软件的复杂性,并对本书的研究内容、研究方法、创新之处和文章结构进行了说明。第二章是软件过程改进的复杂性工作程序理论基础(合理性)。本书将软件过程按照价值链模型(M.Porter)分成软件开发过程和软件支持过程。并根据沃菲尔德复杂性理论的科学模型的论域和通用设计科学对软件工程七原理(B.W.Boehm)应用通用设计,得出了软件开发过程复杂性五命题。对软件过程改进六原理(WattsS.Humphrey)应用结构复杂性理论,得出了软件支持过程复杂性七命题。这十二个复杂性命题是软件过程改进的理论基础。7专著内容提要(2)第三章是软件过程改进的复杂性工作程序(结构化表示)。首先对25种认知障碍、复杂性工作程序和16条通用设计法则进行了述评。在此基础上设计了软件过程改进的复杂性工作程序,包括两个阶段:发现阶段和解决阶段。第四章是软件生产的支持结构(应用)。首先讨论了软件过程中的知识管理,并参考传统的企业模型、微软企业模型和印度Infosys公司的知识管理,提出了软件企业模型,并为软件生产建立了一个支持结构来帮助软件企业实现其商业目标。第五章是实证研究。包括问卷调查和案例研究。问卷调查包括软件过程改进要素和软件过程改进理论两部分。以美资旭电(深圳)科技有限公司资讯科技和系统服务部软件项目管理方法以及广州市灵狐系统工程公司软件项目管理为对象进行了案例研究。8Warfield序(1)计算机软件也显示出技术和科学相脱离的关系。自从1847年奥古斯塔斯•笛•摩根发现了关系理论,同年布尔发表了代数命题以来,尽管基于科学基础和数学逻辑的计算机软件科学出现了明显的停滞,但是软件市场却蓬勃发展,技术持续不断地得到了重视。与此相反,时至今日,计算机软件的科学基础还没有取得共识。技术发展而不重视其科学基础始终是值得研究的课题。9Warfield序(2)值得庆幸的是万江平博士和他的导师杨建梅博士在现代软件文献几乎空白的情况下,想方设法找出了软件本质上的科学基础,并加入到商业环境中。这件事早就应该做的了。这项工作的影响将持续到2010年,但应用本工作来改进组织的软件设计似乎是必然的。10顾基发序(1)计算机软件对于信息技术的发展越来越显出它的重要性。而软件质量又越来越影响它的广泛应用和迅速发展。如何去改进软件过程成为一个急待解决的问题。无疑软件过程又是一个极为复杂的过程。尽管国内外有不少人也在从事相关的研究,但是本书作者从系统科学的角度,特别是从复杂性方面来描述和解决与软件工程相关的问题。作者选用了美国沃菲尔德提出的复杂性理论来描述软件工程的复杂性。在软件开发过程中提出了五个命题,在软件支持过程中提出了七个命题,从而进一步提出了软件过程改进的复杂性工作程序。11顾基发序(2)作者在撰写本书时既能站在当代新兴学科,如系统科学和复杂性研究、认知科学等,同时又注意了实证研究。利用了他们理论研究成果对美国微软公司团队成功法则和印度INFOSYS公司软件项目管理进行了科学分析。作者还广泛地调查了广东地区一些信息企业,并深入地对美资旭电(深圳)科技有限公司资讯科技和系统服务部软件项目管理和广州市灵狐系统工程公司软件项目管理为对象进行了案例研究。总之该书既有理论研究,更有实证研究。对于从事软件工程开发的工作者无疑是一本值得阅读的好书。12内容提要专著出版情况软件、软件过程及其复杂性Sigma-N概念软件过程改进复杂性七命题软件过程改进案例小结13复杂性的涵义结构复杂性学派(J.N.Warfield)认为:复杂性包括情景复杂性及认知复杂性,其理论基础是通用设计科学,其基本观点是通过“设计”可以管理复杂性,并提出处理复杂性的复杂性工作程序、复杂性定律以及一些具体的技术性方法。14软件的复杂性IBMOS/360总设计师布鲁克斯(Brooks)博士将软件中的难题分为两类:本质问题(essence,即由软件本质决定的固有的难题)和非本质问题(accidents,即目前遇到的,但并非软件产品固有的困难)。四个本质问题:即复杂性(Complexity)、一致性(Conformity)、可变性(Changeability)和不可见性(Invisibility)。他使用的复杂性的含义是令人费解的、复杂难懂的(ComplicatedorIntricate)。15软件生产改进途径改善软件生产不可见性可变性一致性解决软件复杂性软件技术(高级语言、分时共享和软件开发环境)软件设计大师接口一致性修改一致性使用新硬件用户新要求与时俱进容易修改难可视化信息遗漏16软件过程改进的复杂性计算机软件是一种逻辑产品,它的设计和生产过程是一组具有严密组织的智力活动,必须遵循其独特的规律,要从复杂性的角度研究它。理论上,准时完成软件产品看似容易,但事实上,大多数公司都失败了。创造智力资产的重点是你必须将一群人的智力,用很聪明的方式结合起来,这也是整个软件开发过程中最艰辛的部分。(JimMcCarthy)软件过程17软件过程改进的知识管理因为软件像所有资本一样是具体化的知识,也因为从宏观看来知识最初是分散的、不明显的、隐藏的且不完整的,软件开发是一个社会的学习过程。该过程是一个对话,其中必须变成软件的知识被集中到一起并具体化到软件中,该过程提供了用户和设计者间、用户和演化的工具间以及设计者和演化的工具(技术)间的交互。它是一个迭代的过程,在其中演化的工具本身作为通信的媒介,随着每个新一轮的对话,从参与人员引导出更有用的知识。(经济学家,HowardBaetjer)18软件过程改进的途径无规矩不成方圆(按部就班写文档)不积跬步无以至千里(循序渐进,积小成多,量变到质变)平衡与和谐(稳中求变,有序和创造相统一)适者生存(通过组织学习以支持知识管理)19内容提要专著出版情况软件、软件过程及其复杂性Sigma-N概念软件过程改进复杂性七命题软件过程改进案例小结20设计过程成功的7个关键因素财政支持(financialsupport)设施齐备(component)领导能力(leadership)设计环境(designenvironment)设计者参与(designerparticipation)文档支持(documentationsupport)设计过程(designprocess)21内容提要专著出版情况软件、软件过程及其复杂性Sigma-N概念软件过程改进复杂性七命题软件过程改进案例小结22软件过程改进六原理领导原理(HP1):软件过程的主要改变始于高层领导。高层领导需要发起改变并提供持续的资源及优先级。团队原理(HP2):最终将涉及到每个人。软件工程是团队的努力,改进中任何人的缺席将失去好处,也可能阻碍进步。计划原理(HP3):有效地改变需要有当前过程的目标和知识。使用地图时你必须知道当前你在哪儿。成熟度原理(HP4):变化是持续的。软件过程改进不是暂时的,涉及到持续地学习和不断地强化。绩效原理(HP5):没有明确地努力和定期地强化就不能保持软件过程改变投资原理(HP6):软件过程改变需要投资。需要计划,配备专职人员以及管理时间和资金投入。23Sigma-7与软件过程改进六原理的关系设施齐备财政支持文档支持领导能力设计者参与设计环境设计过程领导成熟度投资计划团队绩效24软件支持过程复杂性七命题(1)成熟度命题:需要不断地组织学习以持续地改进全组织的软件支持过程能力。效果命题:需要明确地努力和定期地强化其效果。领导命题:需要高层领导的发起、参与和支持。过程命题:需要仔细地进行过程设计来减轻甚至消除软件支持过程认知障碍并提高群体认知活动的效力和效率。文档命题:需要文档(解释和沟通)支持过程活动可视化,使得复杂的智力密集的支持过程活动得到有效地控制。团队命题:需要全体人员的协作和努力。投资命题:需要计划,配备专职人员以及管理时间和资金投入。25软件过程改进(SPI)复杂性七命题(2)成熟度命题(描述过程)效果命题(诊断过程)过程命题文档命题领导命题(设计过程和实施过程)团队命题投资命题发现解决复杂性26软件过程改进的关键为改变软件过程,需要有人为此工作(领导命题、团队命题和投资命题);无计划的过程改进只是一相情愿(过程命题和文档命题);自动化差的已定义过程将产生差的已定义结果(成熟度命题);改进应该以小的、可测试的步骤进行(成熟度命题);培训、培训再培训(成熟度命题)。27内容提要专著出版情况软件、软件过程及其复杂性Sigma-N概念软件过程改进复杂性七命题软件过程改进案例小结28Infosys公司软件过程改进经验成熟度命题目标法则时间法则绩效命题风险管理法则项目管理法则文档命题过程命题简单化和最小化法则团队命题领导命题投资命题29内容提要专著出版情况软件、软件过程及其复杂性Sigma-N概念软件过程改进复杂性七命题软件过程改进案例小结30小结市场竞争软件过程改进抽象化软件过程改进理论基础软件过程改进的复杂性工作程序本质化软件质量改进软件企业模型程序化组织化项目化31软件过程的价值链模型支持活动基本活动企业基础设施(软件过程的组织过程)采购内部后勤人力资源管理技术开发生产经营外部后勤市场营销服务文档编制、配置管理、质量保证、验证、确认、审核、问题求解利润需求分析设计构建测试32软件过程绩效模型项目管理灵活可控计划跟踪项目控制子承包技术先进适用技术导入环境组织领导有方策略资源分配管理监督沟通培训软件过程成熟度(2到5级)软件过程绩效(有纪律、标准化、可预测、不断优化)时间(短)/质量(好)/资源(少)过程管理稳定合理过程定义过程执行过程分析过程控制33软件企业模型人力资源开发,财务管理Intranet等配置管理质量管理项目管理知识管理产品服务知识门户软件生产市场/营销客户服务/管理支持营销研究与开发技术/管理支持研发设施与资源软件过程改进需求分析设计构建测试产品服务供应商政府市场拥有者外部组织资金资金知识密集人力密集资金密集企业知识信息和知识产品和服务资金对象技术34软件生产的支持结构软件生产通用设计科学行为病理学(1950-现在)科学的描述二阶思想(350B.C.-现在)软件企业模型语言(?-现在)软件过程改进的复杂性工作程序软件工程管理复杂性命题和软件过程改进复杂性命题35需要进一步研究的问题复杂性命题与认知障碍的关系复杂性的度量及其在软件过程改进中的应用知识技术在解决软件过程改进复杂性中的应用中国特色的软件过程改进的复杂性工作程序中国特色的软件过程改进实证研究面向具体应用领域的各种成熟度模型(例如,电子政务、电子商务、企业信息化等)具体应用领域的认知障碍及其解决之道中国特色的交互式管理模式36想进一步探索的领域复杂性科学管理复杂性管理软件工程复杂性软件工程质量学软件工程经济学软件工程心理学37希望了解的问题华工新型工业化研究所(院)的目标新型工业化的内涵新型工业化的目标新型工业化的途径新型工业化的空间分布新型工业化的阶段划分支持中国新型工业化的政策体系38新型工业化的内涵(1)“以信息化带动工业化,在消耗较少资源、带来较少环境污染条件下取得良好经济效益的,并能充分发挥人力资本优势的工业化”。(胡鞍钢,2002)第一,技术革命和机器大生产带动了工业部门的迅速扩展;第二,早期发达国家的工业生产基