软件工程技术的发展趋势
1, 软件工程是什么
随着信息技术的发展,软件作为一种信息技术的主要载体日益渗透到社会政
治,军事,经济,文化乃至生活的各个方面和各个层次.软件无所不在,其需求
愈来愈多,复杂度愈来愈高,可用性要求愈来愈强.如何高效地开发和生产可靠,
可信的软件,是软件领域一直必须面对的问题.
20世纪60年代,随着第三代计算机的产生,计算机的硬件性能发生了翻天
覆地的变化,运行大型的复杂软件系统已经成为可能.然而,相应的软件开发技
术却难以满足大型软件系统的开发需要,因而造成:
1. 大多数大型的软件开发项目的成本都超过预算,开发进度一再拖延;
2. 软件产品质量不可靠,大型软件系统存在bug几乎成为不可避免的问题;
3. 软件产品难以维护;
4. 软件产品的开发成本过高;
5. 软件产品开发的效率跟不上计算机硬件发展以及用户需求的增长;
软件技术跟不上硬件技术发展而造成的诸多问题被称作"软件危机"
(Software Crisis).为了解决软件危机,1968年北大西洋公约组织(NATO)的
计算机科学家在德国召开的国际学术会议上第一次提出了"软件工程"的概念,
希望通过系统化,规范化,数量化等工程原则和方法来实现复杂软件系统的开发
和维护.
按照Webopedia词典中的定义,软件工程是"研究如何开发大型应用系统的
计算机科学学科.软件工程不仅覆盖构建软件系统的相关技术层面问题,还包括
诸如指导开发团队,安排进度以及预算等管理层面问题" 由这个定义可以看出,
软件工程不仅仅包括编写程序代码所涉及的技术,它包括所有对软件开发能够造
成影响的问题.Brook在1987年指出,不存在任何一个单一的开发技术或管理
技术能够解决软件工程所面临的所有问题.因而软件工程是一个包括一系列概
念,理论,模式,语言,方法以及工具的综合性学科.图1中,我们给出了一个
软件工程技术的总体框架.可以看到,软件工程技术可以分为产品实现层技术以
及开发管理层技术.其中,产品实现层技术涉及与特定软件系统开发相关的问题,
为在软件生命周期的各个阶段实现软件产品提供技术支持;开发管理层技术通常
不针对特定的某个软件开发项目,而是为管理和改进软件组织所有的业务活动提
供技术支持,例如如何使用适当的方法管理软件开发过程中所需要执行的各个活
动,以便在特定的软件项目中系统的展开软件工程的层技术,支持软件组织的业
务实现,从而控制软件产品开发的成本,提高生产的效率,保证和改进软件产品
的质量.
系统设计
设计方法,
设计模式,
设计语言,
图形符号标识,
设计工具.
系统实现
编程语言,
编程环境,
编程工具.
验证和确认
软件测试方法,
软件测试工具,
软件检测方法,
软件检测工具.
操作与维护
维护方法,
维护工具
需求描述
需求描述语言,
形式化语言,
图形符号标识,
需求分析方法,
需求确认,
需求管理,
需求工具.
软件配置管理 配置管理工具,配置管理标准及规程,变更控制
软件成本估算 成本计算模型,专家决策,估算与分析
软件质量管理 质量保证,质量计划,质量控制
软件过程改进 软件过程标准,如:ISO9001,CMM,CMMI,SPICE等
软件过程建模 软件过程建模方法,建模语言,软件工程环境,PSEE系统,CASE工具
产品实现层开发管理层
图1 软件工程技术的总体框架
2, 基本概念
软件工程技术在近半个世纪的历史中,得到了长足而迅速的发展.在经历了
多次浪潮的冲击之后,我们有必要先澄清一些基本的概念.
2.1 软件
IEEE将软件定义为"计算机程序和相关的文档",软件产品一类提供给具体
的客户使用,另一类提供给大众市场.ISO 9001:2000对软件的定义为"一个好
软件的基本属性表现为,软件实现了客户需要的功能和性能,能够维护,可以让
用户在指定环境和条件下依赖和使用".
一般来说,软件是信息的载体并且提供了对信息的处理能力,例如对信息的
收集,归纳,计算,传播等等.虽然计算机硬件设备提供了物理上的数据存储,
传播以及计算能力,但是对于用户来讲,仍然需要软件系统来反映用户特定的信
息处理逻辑,从而由对信息的增值来取得用户自身效益的增值.因而从本质上讲,
软件可以被理解为一种逻辑上的信息处理设备,该设备具有用户所需求的信息处
理能力.一个好的软件应该能够为用户提供有价值的信息输出,从而为用户带来
效益.
2.2 软件工程与计算机科学
软件工程是一门工程学科,关注于软件生产的各个方面和生产方法.计算机
科学关注所有计算机相关的理论和基础.软件工程属于计算机科学的范畴,主要
关注开发和交付可用软件的理论和实践.
软件工程方法包括: 软件系统模型,注释,规则,设计建议(advice)和过
程指导等等.
2.3 软件工程与系统工程
系统工程关注开发基于计算机的系统的所有方面,包括硬件,软件和过程.
软件工程是其中的一部分.
2.4 软件过程和过程模型
ISO9000:2000将过程的定义为"任何使用资源将输入转化为输出的活动或
一组活动可视为一个过程".ISO15504将过程定义为"能够将输入转化为输出的
一组相互关联的活动".CMM将过程定义为"人们用来开发和维护软件及其相
关产品的一组活动,方法,实践和转化."
由上面的几个定义可以看出,软件过程可以被理解为开发和软件产品的一组
活动以及与实施这些活动相关的要素.这里我们给出一个更加细致的软件过程的
定义――软件过程是设计,开发,应用和维护软件产品的一组相互关联的活动,
方针,组织结构,技术方法,规程以及工作产品.它定义了对软件开发进行组织,
管理,度量,支持和改进的途径.
从这个定义可以看出,软件过程是一个由诸多与实现软件产品相关的要素组
成的复杂系统.如何将这些要素有机地组合在一起,从而有效并且高效地实现软
件产品开发是软件过程技术所关注的问题.
相应地,我们可以定义软件过程模型为――使用适当的方法表达的一个软件
过程抽象描述.模型是对其所表示的现实的抽象,是一个部分的描述.软件过程
模型通常包含与各种软件过程要素相关的模板或类型,或者它们的实例.模型对
现实的抽象描述了一组现实对象的共同特征,并且在特定的环境,参数和约束条
件下能够被实例化为现实的对象.从这个意义上讲,软件过程模型可以被理解为
"对一组软件过程的共同特征的抽象描述".软件过程由一组软件过程要素及其
相互的关系组成,软件过程模型是对软件过程要素及其关系的抽象描述.
2.5 软件成本
软件成本指开发软件产品所需要花费的资金.一般来说,开发一个软件项目
的成本包括以下几个方面:
1.软硬件成本,包括维护费用;
2.旅行及培训费用;
3.工作成本(effort cost).
对于大多数软件项目来说,其成本中最主要的部分是工作成本.工作成本并
不能简单的理解为对参与项目的软件开发人员支付的薪金.软件组织通常采用将
其运营组织的总成本除以参与开发的人员数量的方式核算工作成本.工作成本一
般包括:
1.办公环境的采暖,照明等费用;
2.组织管理人员的费用,例如财务,行政管理人员,经理等等;
3.网络及通讯费用;
4.辅助基础设施管理费用,例如图书馆以及娱乐设施费用等;
5.开发人员的社会保障金,健康保险等等;
工作成本通常是开发人员薪水的两倍或以上.
2.6 计算机辅助软件工程――CASE
CASE是一个软件系统,用于对软件过程的活动提供自动化支持.CASE系
统常常用作方法支持.
2.7 软件质量
尽管ISO9000等对质量有定义,但在一种大众的观点中,质量并没有明确的
含义.质量是一种多维的概念,包括客观的实体,实体各个方面的视角,以及实
体的质量属性.
从大众的观点看,通常认为质量是无形的,没有明确的特征.它可以被讨论,
感觉和判断,但不能度量.大多数人认为质量类似于美国联邦法庭关于淫秽的说
法,"当我看见它的时候我知道". 一些关于质量好,质量坏的说法都没有明确
的定义.这种情况反映公众是可以接受从不同的角度去解释质量.这也隐含着认
为质量既不能被控制和管理,也不能被量化.另外也有一种观点认为,质量是奢
侈,分等级并且可以体验的.一些昂贵复杂的产品被认为比他们伸手可及的产品
具有更高的质量.譬如根据实际的可靠性和维修记录,卡迪拉克(cadillac)是好
汽车, 雪佛兰(Chevrolet)不是;高保真环绕系统是高质量的系统,单声道收
音机就不是.从这样的观点看,质量被归约到一类具有复杂功能的昂贵产品.
大众观点中的误解和含混,非常不利于工业界对质量的改进.所以质量应该
被准确,可理解,可操控的方式定义.针对这一点,Juran等人指出,质量是"适
于使用",Crosby指出,质量应该是"顺应需求".这两种观点是一致的,目前
被大多数质量专家所采纳."适于使用"考虑了客户的需求和期望,包括产品和
服务是否适合于他们的使用.不同的客户可能以不同的方式使用产品,这就意味
着产品必须拥有多种元素来适合使用.按Juran的观点,每一个元素就是一个质
量特征,他们可以归为一些类,作为适合使用的参数.最重要的两种参数是设计
质量(quality of design)和符合质量(Quality of Conformance).设计质量是对需
求的确定和说明,而符合质量就是符合需求.满足需求,意味着需求必须被清楚
地描述,不会导致误解.在开发和生产的过程中,要持续地度量以确定是否满足
需求,不满足的部分被认为是缺陷.
前面对于软件的定义可以看出,软件作为信息技术的一个载体,其质量应该
与其所能够为用户提供的信息处理能力,或者更直接地讲,用户对于软件产品的
质量要求更多是关注于软件所能提供的有用信息,而非软件产品本身.很多软件
产品失败的原因恰恰是因为忽略了这一个根本问题.
此外,用户对产品的需求并不仅仅与产品的功能性特征相关.用户为了取得
产品需要为产品的提供方支付一定的费用(产品的价格),而用户仅仅在其通过
使用该产品取得的效益(或者更一般地讲,获得的效用)高于其支付时,才愿意
购买该产品.因此,产品的质量并不能够在忽略用户支付条件的前提下无止境地
提高.对于用户来讲,完美但是价格昂贵的产品是无法接受的,一个能够最好的
满足用户需求的产品应该是"刚刚好"(just good enough)的.
3, 软件工程发展的历史
从1968年以来,软件工程有了很大的发展,并对软件产品的改进也是显而
易见的.我们对软件开发的活动有了更好的理解,有了更有效的方法支持软件系
统的设计和实现.这些新的方法和技术也有效地减少了大型复杂系统的开发成
本.然而,不可否认的是,软件组织在预算成本和预计工期内交付客户期望的复
杂系统仍然存在问题.因此,有人评论软件工程一直处在慢性的,持续痛苦的状
态.
总的看来.计算机技术的发展趋势呈现为:硬件价格降低,人力费用增加,
应用复杂度增加,社会对软件的依赖程度增加,具体如表1所示:
表1
工具 硬件 软件工程技术
1950
2000
机器码
汇编
第三代语言
4GLs
AI 语言
面向对象
Vacuum tube 电子管
Transistors 晶体管
Semiconductors 半导体
Integrated circuits集成电路
Parallel Processing 并行处理
VLSI 超大规模集成电路
结构化程序设计
功能分解
结构分析
以数据为中心的分析
面向对象的分析
3.1 结构化程序设计
结构化程序设计(Structured Programming, SProg)方法始于60年代后期,
典型的代表是Goto语句从软件中驱逐出来.其动机就是改进软件源码的结构,
增加软件的鲁棒性和可靠性.但随着系统复杂度的提高,单独使用结构化方法并
不能保证软件的质量.尽管使用了结构化方法,开发出来的软件依然难于理解和
使用.于是导致了功能分解技术的出现.
3.2 功能分解
功能分解(Functional Decomposition, FD)技术是一个过程方法,它将要实
现的最终系统分解成一系列逐步细化的概念化的模块(conceptualization).概念
之间的关系用结构图(structure Chart)来表示.FD通常在面向过程的paradigm
中使用.这些系统的概念模块是以面向过程的方式定义的.(每一个模块代表一
个过程或者子过程).FD的目标提供一种方法通过抽象来逐步求精地理解系统,
其开发的产品具有良好的结构.系统的概念模型和表示与源代码的结构是一致
的.这种方法今天依然在使用,但结构图已经不能提供足够的信息来保证可以得
到一个结构良好,准确的解决方案了.为了增加一些必要的信息,出现了结构化
分析与设计方法.
3.3 结构化分析与设计
结构化分析与设计(Structured Analysis and Design, SAD)的降临标志着第一
个软件工程方法的诞生.它用一组技术共同来表示整个软件开发的过程.SAD
基于SPrag和FD,并进一步用抽象的技术来产生模块化的输出.随着SAD的引
入,最终实现系统的交付变成一系列的里程碑而不仅是一个里程碑.分析要解决
的问题以及解决办法的设计都被认为是软件开发过程的重要步骤.
3.4 以数据为中心的设计方法
以数据为中心的设计方法(Data-Centered Design Method, DCM)的贡献是在
结构化分析中扩充了数据模型,其目的是确定整个组织的数据需求,创建一个中
心的,集成的数据库.单独的应用程序开发并从中心数据库取数据.数据模型用
ER模型表示.ER最初的目的是为关系数据库的设计,建立了数据模型之后,应
用程序的开发就可以用结构化的分析和设计来关注中心数据库的数据.
3.5 面向对象的设计方法
面向对象的方法(Object-Oriented Method, OO)是软件工程方法的又一次飞
跃.对象是一个具有一组状态的实体,并封装了附加于这些状态的操作.状态描
述了对象的属性或特征,操作描述了对象改变其状态的方法以及该对象为其他对
象所提供的服务.面向对象方法认为,人类生活在一个由对象(Object)组成的
世界中.对象可以被归类,描述,组织,组合,创建和操纵.面向对象方法是一
种模型化世界的抽象方法,结构上具有良好的高内聚低耦合特性.采用面向对象
技术设计和开发的软件系统更易于维护,在对系统进行修改时,能够产生较少的
副作用.同时,面向对象技术提出了类,继承,接口等等概念,从而为对象的复
用提供了良好的支持机制.因而采用面向对象技术对软件产品进行设计和开发,
也能够有效地提高软件组织的开发效率.
90年代开始,面向对象方法已经成为软件组织分析,设计和开发软件产品
的首选范型.
3.6 以过程为中心的软件开发方法
前面的各种软件工程方法严格说来,都属于软件产品的实现层技术.它们提
供了一系列方法,技术和工具支持软件被设计为具有良好定义的结构,使得其复
杂度可以得到控制,软件易于实现,易于维护和移植.这些方法和技术在一定程
度上可以改进软件质量,可靠性,结构以及成功交付软件概率.但事实上,单纯
依赖实现层技术并不能够保证软件组织高质量并且高效地开发软件产品,即使到
了今天,软件危机依然存在,甚至由于应用领域的普及,需求的频繁变化,有着
愈演愈烈的趋势.
1. 软件的设计方法出现转移.面向业务过程的方法被面向对象的方法所代
替.但许多人认为OO的方法在工业界使用还不足够成熟.虽然事实并非如此.
2. 一些非技术的管理人员常常把软件理解为是一组计算机指令.从这个观
点看,只有一种任务是软件开发,那就是写指令.技术人员常常通过度量代码行
的进展来迎合管理人员的要求.但软件工程技术的目标是改进代码的质量而不是
代码的数量,所以工业界一些人常常认为软件工程技术对软件开发过程几乎没有
贡献.事实上,当实践好的软件工程技术时,软件开发人员有时会从事一些并不
直接产生代码的活动,这些活动的目标是得到一个模块化的,鲁棒的,可靠的解
决方案.但常常人们只关注了最终实现系统的代码行数量,实现的功能,以及测
试出来的Bug,对软件的形成过程没有给予足够的重视.
显然,信息技术的飞速发展,把软件推到了一个前所未有的重要高度.随着
软件的应用范围,复杂度和规模的急剧增大,传统软件工程基于实体驱动和确定
目标,有序控制的开发模式开始让位于Internet环境下以过程为中心,基于协同
驱动和动态目标,实体聚合的开发模式.软件的生产必然向着工业化和过程化的
方向发展,支持软件开发工业化的方法和技术已经成为影响软件产业发展的重要
因素.
4, 软件过程技术
软件过程概念的形成可以追溯到20世纪60-70年代.1969年,Lehman花费
了一年时间研究IBM公司的编程实践,并首次提出了"编程过程"(programming
process)的概念――"将一个微小的想法转化成二进制程序代码的所有相关技术
和活动的集成".这一概念初步确立了软件过程概念的基础.
人们对软件过程的认识经历了一个从将软件过程当作一个"黑盒子"过渡到
对软件过程产生透彻认识的过程.将软件过程作为一个"黑盒子"来看待,软件
产品(过程输出)则仅仅依赖于产品的需求(输入).在这种模型中,产生软件
产品的过程没有被描述出来.使用这种模型的一个问题是难以估计实现软件产品
的时间和成本.此外,在软件开发项目初期,软件产品的需求往往是非形式化的
和不明确的,因而造成软件开发的输出在很多情况下不是用户所希望的产品.
为了降低软件开发的风险,人们需要打开软件过程的"黑盒子"从而对生成
软件产品的软件过程作出更清晰细致的了解.因此,研究人员提出了软件生命周
期的概念,例如Royce提出的瀑布模型以及Boehm提出的螺旋模型等等.软件
生命周期定义了软件产品开发中的所要经历的一系列不同的阶段,一般包括:需
求分析和规约,设计,开发,确认,安装,应用,维护以及退役等等.同时,软
件生命周期还为如何实现这些不同的开发阶段定义了相关的概念和指导.总的来
说,软件生命周期定义了软件过程的框架和原则.它并没有详细描述软件过程的
活动,组织形式,工具和操作规程,以及开发方针和约束.软件生命周期模型是
定义软件开发如何进行的一个重要的起点,但是单纯应用软件生命周期来指导和
控制软件开发实践仍然是不足的.
20世纪80年代,软件过程技术开始形成一个独立的学科.软件过程的概念
建立在软件生命周期的基础之上,并且提供了一系列更为广泛和全面的概念来设
计和组织与软件开发活动相关的各种要素.软件过程技术是一个集成了组织,文
化,技术以及经济等多种因素的综合性学科.有效地识别,定义,管理和改进组
织的软件过程,对于一个软件组织实现其经营目标,改进其业绩是至关重要的.
总的来说,软件过程技术的意义在于:
1. 在产品实现前估计产品开发的进度和成本:软件组织在系统地识别和管理
其所使用的过程基础上,能够在产品实现之前策划产品从设计,开发到实
现的全部过程.对过程的策划来源于组织对自身业务活动的分析以及以往
项目的成功经验.基于这些分析和经验,组织能够有效地估计产品开发的
进度和成本.
2. 有效地利用资源,降低成本,缩短周期:资源是实现软件产品开发的必要
条件.通过确定产品实现的过程,软件组织就可以根据过程实现所需要的
资源要求有目的地并且有效地投入和利用资源,防止资源不足或浪费.有
效地利用资源可以降低产品开发的成本,提高软件开发所产生的效益,从
而使顾客和所有其它相关方受益.
3. 确保软件产品开发及软件产品质量的稳定性和持续性:软件过程的一致遵
循和有效控制能够使产品的生产和产品的质量保持持续稳定的状态,使得
软件产品的质量变成可预期的指标.持续稳定的开发过程能够有效地降低
不合格的产生,从而降低开发的成本,提高软件产品的质量.
4. 对软件产品开发的全过程进行有效地监控,尽可能早地发现问题或可能产
生问题的趋势,并予以解决:软件过程的识别和控制使得对软件产品生产
过程的监控成为可能.通过对过程特征的考察和分析,软件组织能够确定
有效的监控措施以确保过程的执行不会偏离预期的目标或超过规定的阈
值.通过对过程参数的监测和分析,组织能够在过程出现不稳定或出现变
坏的趋势时及时采取必要的措施,防止问题的产生.
5. 发现改进的机会,以及确定过程改进实施的优先次序:软件组织持续改进
其业绩的重点在于过程改进.对于改进产品质量来说,改进其生产过程是
更根本的.过程定义为过程改进提供了必要的基础.良好定义的过程有利
于对过程特点和性能的考察和分析,也有利于取得过程改进所需要的信
息.同时,系统地考察组织内的过程,分析其相互关系,有利于发现改进
的关键区域,确定过程改进实施的优先次序.
6. 有效的实现和改进软件产品的质量,使所有相关方获益:良好定义的软件
过程能够持续稳定地实现产品的质量.软件组织能够通过不断地改进软件
过程从而使其产品更好地满足顾客的要求和期望.产品质量的提高,组织
过程的改进最终能够使所有相关方获益.
7. 再现组织自己或其他组织的成功经验:软件过程模型能够使软件组织将以
往的成功经验以正规的形式予以保持,并且在未来的项目中予以重现.组
织还可以参考其他类似组织的好的管理和生产经验,并以软件过程模型的
形式确定下来,从而指导自己的生产和管理,为自己带来效益.
4.1 软件过程管理及软件过程改进
80年代初,软件产业逐步进入过程化生产的时代,同时一些重要的国际标准
和模型纷纷提出,其中最主要的三个流派是:CMM/PSP/TSP,ISO 9000 系列和
ISO/IEC15504 标准,其中以美国国防部支持的CMM/PSP/TSP流派研究得最为
深入,在软件领域应用得最为广泛.
4.1.1 CMM系列模型
软件工程20世纪60年代开始研究支持软件开发活动的CASE技术和工具,
其间研究硕果累累,但对软件产业的发展却没有起到预期的作用.此时人们意识
到,单纯依靠软件产品的实现技术并不能够解决软件危机所带来的问题.软件产
品的生产是一个多人协作的复杂活动.成功地开发大型软件系统,还需要相关的
方法和技术对软件开发过程实施管理.
20世纪80年代,卡内基-梅隆大学(CMU-Carnegie Mellon University)的
软件工程研究所(SEI-Software Engineering Institute)在美国DoD的支持下,提
出了评价软件供应商过程能力的模型CMM(Capability Maturity Model).1987
年,SEI首先提出了能力成熟度框架,并于1991年和1993年陆续推出了CMM
模型的1.0版和1.1版.此后SEI针对具体软件生产要求,进一步推出SA-,SE-,
IPPD-,P-CMM等一系列成熟度模型.为了和其它模型相区别,SEI将最初的CMM
更名为SW-CMM.CMM将组织的成熟能力划分为五个等级,这五个等级定义了
度量软件组织生产过程成熟度的标准,以及评估软件组织生产能力的标准.
CMM模型为软件组织提供了一个分层的,螺旋上升的过程改进途径.软件
过程管理涉及很多问题,CMM最大的贡献在于指出了软件组织处于不同的能力
成熟度级别时,所应关注和改进的关键问题(关键过程域).这就使得软件组织
能够了解在其当前状态下所最迫切需要解决的问题,从而更加有效地实施过程改
进.
为了整合现有CMM模型和相关的工作,1998年,SEI启动了CMMI(CMM
Integration)计划,并于2000年8月11日推出CMMI SE/SW v1.0正式版.已经
开始的SW-CMM v2.0的草案停止推进并被集成在CMMI框架中.目前已经推出
集成了系统工程,软件工程,集成产品和过程开发,供应商管理四部分的
CMMI-SE/SW/IPPD/SS(CMMI for Systems Engineering,Software Engineering,
Integrated Product and Process Development,and Supplier Sourcing)1.1版. CMMI
通过提供统一的过程改进框架,消除了不同模型之间的不一致性和重复性,同时
也降低基于模型进行过程改善的成本.另外,CMMI提供了两种模型表示方式―
―分级(staged)模型表示和连续(continuous)模型表示.
CMMI 分级模型主要对应于已有的CMM模型,依然分为五个成熟度级别,
CMMI连续模型摒弃了传统的台阶式上升的模型.它认为软件组织的改进是持续
的,并从它自身最希望的,可以给组织带来效益的地方进行.因此组织完全有理
由把某些过程域的成熟度能力提高到很高级别,而把其它某些过程域继续留在较
低级别.连续模型为组织的过程改进提供更加方便的途径,并且在结构上和正在
制定中的ISO15504兼容.
CMM的出现带来了软件产业发展新的浪潮,为软件大规模生产带来了生机.
CMM以及相关技术的推广和应用使人们逐渐认识到:技术提高和过程改善同时
进行,才是促进软件产业发展的最佳途径.
此外,人对过程改进和技术提高依然起着非常重要的作用,如图2所示.
人技术
过程
图2:人,过程和技术的三角形关系
从图2我们可以看到,人,过程和技术共同构成了一个相互支持,相互制约,
均衡发展的三角形.事实上,人是过程和技术的主体,人,过程和技术三位一体
构成现代企业全面质量管理的核心内容.其中:
过程:指产品生产的过程,如计划,跟踪,度量,审计等等,以及过程
流程,如生产线,工序等
技术:指产品生产的技术,譬如工艺,软件的需求分析技术,设计技术,
编码技术,测试技术等等
人:指可以胜任过程管理和技术活动的人力资源.这就涉及到要招聘合
适的人才,对组织内的员工进行培训,提供人员之间有效沟通的
渠道,以及客户/供应商/合作伙伴之间的关系维护
可以看到,现代企业(组织)管理都围绕这个铁三角在运行,过程是三角形
的支点,过程通过一系列相互关联的方针,程序和规则将企业的经营活动串起来,
形成企业的业务流程;人是过程的执行者,其行为规范要受到过程的约束,并在
执行中接受必要的服务支持,通常表现为一组支持过程;技术则要通过过程来实
现,通常表现为一组工程过程.可见企业中一切活动都是过程,或者过程的一部
分.过程成为企业(组织)管理的中心.
对软件组织而言,软件生产环节中的所有过程组成软件过程.CMMI将软件
温馨提示:内容为网友见解,仅供参考