度量的过程度量
展开全部 软件过程性能 过程度量是对软件开发过程的各个方面进行度量,目的在于预测过程的未来性能,减少过程结果的偏差,对软件过程的行为进行目标管理,为过程控制、过程评价持续改善提供定量性基础。
过程度量与软件开发流程密切相关,具有战略性意义。
软件过程质量的好坏会直接影响软件产品质量的好坏,度量并评估过程、提高过程成熟度可以改进产品质量。
相反,度量并评估软件产品质量会为提高软件过程质量提供必要的反馈和依据。
过程度量与软件过程的成熟度密切相关,其度量模型如图7-2所示:软件过程性能的度量模型软件过程管理中的过程度量弗罗哈克(William A.Florac)、帕克(Robert E.Park)和卡尔顿(Anita D.Carleton)在《实用软件度量:过程管理和改善之度量》(Practical Software Measurement:Measuring for Process Management and Improvement)中描述了过程管理和项目管理的关系。
认为软件项目团队生产产品基于三大要素:产品需求、项目计划和已定义软件过程。
度量数据在项目管理中将被用来:(1)识别和描述需求,(2)准备能够实现目标的计划,(3)执行计划,(4)跟踪基于项目计划目标的工作执行状态和进展。
而过程管理也能使用相同的数据和相关度量来控制和改善软件过程本身。
这就意味着,软件组织能使用建构和维持度量活动的共同框架来为过程管理和项目管理两大管理功能提供数据。
软件过程管理包括定义过程、计划度量、执行软件过程、应用度量、控制过程和改善过程,其中计划度量和应用度量是软件过程管理中的重要步骤,也是软件过程度量的核心内容。
计划度量建立在对已定义软件过程的理解之上,产品、过程、资源的相关事项和属性已经被识别,收集和使用度量以进行过程性能跟踪的规定都被集成到软件过程之中。
应用度量通过过程度量将执行软件过程所获得的数据,以及通过产品度量将产品相关数据用来控制和改善软件过程。
软件过程度量的内容软件过程度量主要包括三大方面的内容,一是成熟度度量(maturity metrics),主要包括组织度量、资源度量、培训度量、文档标准化度量、数据管理与分析度量、过程质量度量等等;二是管理度量(management metrics),主要包括项目管理度量(如里程碑管理度量、风险度量、作业流程度量、控制度量、管理数据库度量等)、质量管理度量(如质量审查度量、质量测试度量、质量保证度量等)、配置管理度量(如式样变更控制度量、版本管理控制度量等);三是生命周期度量(life cycle metrics),主要包括问题定义度量、需求分析度量、设计度量、制造度量、维护度量等。
软件过程度量流程软件过程的度量,需要按照已经明确定义的度量流程加以实施,这样能使软件过程度量作业具有可控制性和可跟踪性,从而提高度量的有效性。
软件过程度量的一般流程主要包括:确认过程问题;收集过程数据;分析过程数据;解释过程数据;汇报过程分析;提出过程建议;实施过程行动;实施监督和控制。
这一度量过程的流程质量能保证软件过程度量获得有关软件过程的数据和问题,并进而对软件过程实施改善。
软件开发步骤包括哪些过程?
展开全部 软件开发一般分为五个阶段: 1.问题的定义及规划 此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2.需求分析 在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。
需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。
“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。
3.软件设计 此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。
软件设计一般分为总体设计和详细设计。
还的软件设计将为软件程序编写打下良好的基础。
4.程序编码 此阶段是将软件设计的结果转化为计算机可运行的程序代码。
在程序编码中必定要制定统一、符合标准的编写规范。
以保证程序的可读性、易维护性。
提高程序的运行效率。
5.软件测试 在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。
整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。
测试方法主要有白盒测试和黑盒测试。
...
度量的管理功能
没有对软件过程的可见度就无法管理;而没有对见到的事物有适当的度量或适当的准则去判断、评估和决策,也无法进行优秀的管理。
我们说软件工程的方法论主要在提供可见度方面下工夫。
但仅仅是方法论的提高并不能使其成为工程学科。
这就需要使用度量。
度量是一种可用于决策的可比较的对象。
度量已知的事物是为了进行跟踪和评估。
对于未知的事物,度量则用于预测。
本专题将讨论软件度量的一些基本问题。
但应认识到软件度量的成果是非常初步的,还需要大量工作才可能真正地做到实用化,但它的实用化成就将对软件的高质量和高速发展有不可估量的影响。
那么, 一、什么是度量呢? 1、度量概念:度量存在于左右我们生活的很多系统的核心之中。
在经济领域,度量决定着价格和付款的增加;在雷达系统中,度量使我们能透过云层探测到飞机;在医疗系统中,度量使得能够诊断某些特殊疾病;在天气预测系统中,度量是天气预报的基础;没有度量,技术的发展根本无法进行。
度量的正式定义是: 度量 是指在现实的世界中,把数字或符号指定给实体的某一属性, 以便以这种方式来根据已明确的规则来描述它们.因此,度量关注的是获取关于实体属性的信息。
一个实体可以是一个实物,如人或房间;或者是一个事件,如旅行;或软件项目的测试阶段。
属性是我们所关注的实体的特征或特性,如血压的高度(人)、时间(测试阶段)、范围或颜色(房间)、花销(旅行) 等。
因此,说度量事物或度量属性的说法是不完全正确的;应该说度量事物的属性。
度量房间的说法是模糊的;我们可以说度量它的长度、范围和温度等。
同样说度量温度的说法也是模糊的,应该说:我们度量的是某一特定地理位置和特定情况下的温度。
2、工程学科需要度量软件工程要的是有模型和理论支持的方法。
如在设计电路的时候我们应用欧姆定律。
这个定律描述了电路中电阻、电流和电压三者之间的关系。
但是这些理论已超出了一般意义上的科学方法的范畴,在这种范畴里最基本的东西是度量。
度量除了在发展一个理论的过程中起作用外,我们使用度量并应用它们。
因此设计一个特定电流和电阻的电路时我们就知道需要多大的电压。
如果没有度量,我们很难想象关于电子、机械、及普通工程的定律能得到发展。
但事实上在软件工程的主流里度量却被忽略了。
现在的情况是:■当我们在设计和开发软件产品的时候,我们并未能制定出度量的目标。
例如:我们保证说我们将使用户界面友好、可靠、易于维护;而并未使用度量的术语来详细说明它们的具体含义。
Gilb曾经说过:所谓模糊目标定理,就是没有明确目标的项目将不能明确地达到它的目标。
■我们未能对构成软件项目实际费用的各个不同的部分进行有效的度量。
譬如:通常我们并不知道,和测试阶段相比,设计阶段花费时间多大。
■我们并未试图使我们开发的产品的各种质量合格。
因此我们未能使用术语(如:在一段时间里使用故障的可能性、把产品安装到新环境中需花费的工作量等)向潜在的用户说明产品的可靠性很高。
■我们总是试图说服自己使用另一种新的革新的开发技术和方法进行软件开发事实上,我们在软件度量方面做的工作很少很少,而且所作的度量方面的工作也与一般科学意义上的度量相分离。
我们经常会看到诸如此类的话:软件的费用有80%花费在维护上。
或软件每一千行程序中平均有55个Bugs。
。
但是这些话并没有告诉我们这样的结果是怎样产生的、试验是怎样设计、执行的、度量的是那个实体、及错误的框架是什么等等。
没有这些东西,我们就不能在我们自己的环境中客观地进行反复度量,重现度量的结果以获得与工业标准的真实比较。
因此,归因于度量不充分的问题的产生是由于缺乏严格的度量方法造成的。
除了传统的对计算机硬件的性能进行度量外,对算法的复杂性的度量一直是计算机科学的重要组成部分。
但是,这种度量方法只适用于小程序,而对大型、复杂的软件来说它却无能为力了。
这就属于软件工程的范畴了。
如果我们不承认度量将会一个更重要的作用的话,软件危机将在随后的几年里依然存在 五、软件度量工具随着软件定量方法(如:软件度量)的重要性不断增加,市场上出现了许多度量工具。
然而,度量工具还是很混乱。
因为没有统一的度量标准规范,每种工具发明商家都是按照他们自己的软件度量规范。
对度量工具做了好的综述。
个人软件过程的概述
随着软件工程知识的普及,软件工程师都知道,要开发高质量的软件,必须改进软件生产的过程。
目前,业界公认由CMU/SEI开发的软件能力成熟度模型SW-CMM是当前最好的软件过程,并且CMM已经成为事实上的软件过程工业标准。
但是,CMM虽然提供了一个有力的软件过程改进框架,却只告诉我们应该做什么,而没有告诉我们应该怎样做,并未提供有关实现关键过程域所需要的具体知识和技能。
为了弥补这个欠缺,Humphrey又主持开发了个体软件过程(Personal Software Process,PSP)。
在CMM1.1版本的18个关键过程域中有12个与PSP有关,据统计,软件项目开发成本的70%取决于软件开发人员个人的技能、经验和工作习惯。
因此,一个单位的软件开发人员如能接受PSP培训,对该单位软件能力成熟度的升级是一个有力的保证。
CMM侧重于软件企业中有关软件过程的宏观管理,面向软件开发单位,PSP则侧重于企业中有关软件过程的微观优化,面向软件开发人员。
二者互相支持,互相补充,缺一不可。
按照PSP规程,改进软件过程的步骤首先需要明确质量目标,也就是软件将要在功能和性能上满足的要求和用户潜在的需求。
接着就是度量产品质量,有了目标还不行,目标只是一个原则性的东西,还不便于实际操作和判断,因此,必须对目标进行分解和度量,使软件质量能够测量。
然后就是理解当前过程,查找问题,并对过程进行调整。
最后应用调整后的过程,度量实践结果,将结果与目标做比较,找出差距,分析原因,对软件过程进行持续改进。
就象CMM为软件企业的能力提供一个阶梯式的进化框架一样,PSP为个体的能力也提供了一个阶梯式的进化框架,以循序渐进的方法介绍过程的概念,每一级别都包含了更低一级别中的所有元素,并增加了新的元素。
这个进化框架是学习PSP过程基本概念的好方法,它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和水平。
软件度量的意义
度量存在于左右我们生活的很多系统的核心之中。
在经济领域,度量决定着价格和付款的增加;在雷达系统中,度量使我们能透过云层探测到飞机;在医疗系统中,度量使得能够诊断某些特殊疾病;在天气预测系统中,度量是天气预报的基础;没有度量,技术的发展根本无法进行。
度量的正式定义是: 度量 是指在现实的世界中,把数字或符号指定给实体的某一属性, 以便以这种方式来根据已明确的规则来描述它们.因此,度量关注的是获取关于实体属性的信息。
一个实体可以是一个实物,如人或房间;或者是一个事件,如旅行;或软件项目的测试阶段。
属性是我们所关注的实体的特征或特性,如血压的高度(人)、时间(测试阶段)、范围或颜色(房间)、花销(旅行) 等。
因此,说度量事物或度量属性的说法是不完全正确的;应该说度量事物的属性。
度量房间的说法是模糊的;我们可以说度量它的长度、范围和温度等。
同样说度量温度的说法也是模糊的,应该说:我们度量的是某一特定地理位置和特定情况下的温度。
如在设计电路的时候我们应用欧姆定律。
这个定律描述了电路中电阻、电流和电压三者之间的关系。
但是这些理论已超出了一般意义上的科学方法的范畴,在这种范畴里最基本的东西是度量。
度量除了在发展一个理论的过程中起作用外,我们使用度量并应用它们。
因此设计一个特定电流和电阻的电路时我们就知道需要多大的电压。
如果没有度量,我们很难想象关于电子、机械、及普通工程的定律能得到发展。
但事实上在软件工程的主流里度量却被忽略了。
情况是:■当我们在设计和开发软件产品的时候,我们并未能制定出度量的目标。
例如:我们保证说我们将使用户界面友好、可靠、易于维护;而并未使用度量的术语来详细说明它们的具体含义。
Gilb曾经说过:所谓模糊目标定理,就是没有明确目标的项目将不能明确地达到它的目标。
■我们未能对构成软件项目实际费用的各个不同的部分进行有效的度量。
譬如:通常我们并不知道,和测试阶段相比,设计阶段花费时间多大。
■我们并未试图使我们开发的产品的各种质量合格。
因此我们未能使用术语(如:在一段时间里使用故障的可能性、把产品安装到新环境中需花费的工作量等)向潜在的用户说明产品的可靠性很高。
■我们总是试图说服自己使用另一种新的革新的开发技术和方法进行软件开发事实上,我们在软件度量方面做的工作很少很少,而且所作的度量方面的工作也与一般科学意义上的度量相分离。
我们经常会看到诸如此类的话:软件的费用有80%花费在维护上。
或软件每一千行程序中平均有55个Bugs。
。
但是这些话并没有告诉我们这样的结果是怎样产生的、试验是怎样设计、执行的、度量的是那个实体、及错误的框架是什么等等。
没有这些东西,我们就不能在我们自己的环境中客观地进行反复度量,重现度量的结果以获得与工业标准的真实比较。
因此,归因于度量不充分的问题的产生是由于缺乏严格的度量方法造成的。
除了传统的对计算机硬件的性能进行度量外,对算法的复杂性的度量一直是计算机科学的重要组成部分。
但是,这种度量方法只适用于小程序,而对大型、复杂的软件来说它却无能为力了。
这就属于软件工程的范畴了。
如果我们不承认度量将会一个更重要的作用的话,软件危机将在随后的几年里依然存在
程序员,在开发的过程中应该注意哪些安全方面的问题
可忽视的误区 企业的软件开发能力取决于该企业的软件过程能力。
如果一个企业软件过程能力越成熟,那么该企业的软件开发能力就越有保证。
大量的实践经验表明,在体现企业软件开发能力的因素中,技术或工具并不是第一位的。
其实,许多问题不是出在不懂怎么做,而是没有安排做,做的次序不对,或不知道怎样做得更好。
目前,比照软件过程管理模型(如图一),中国的软件企业中还存在各种影响过程改进的因素和误区,主要表现在个体和组织两个方面。
在组织方面,首先,中国软件企业实施CMM往往缺乏高级管理者的支持。
其次,没有足够的SEPG资源。
从很多情况考虑,SEPG成员要比其他CMM相关组综合素质高一个层次,CMM相关组的管理素质需要比技术类组高一个层次,才能顺利开展工作。
第三,没有合适的先行者或者没有适当全局观的项目经理配合。
被组织选为先行者的人员经常说自己没有时间,由于这些人都是从各个项目中抽出来的,一般人很难有足够的权力让他们为配合CMM做工作。
最后,软件组织缺乏足够详细的项目计划和监督调整机制。
在个体方面,首先,手工作坊式的个人英雄主义情结成为实施CMM的制约。
其次,某些软件开发人员错误地认为过程管理会影响或压抑专业人员的创造性,其实这是不清楚过程的定义造成的。
第三,由于软件项目的成功更多地依赖于少数人员的杰出技术能力和项目管理能力,成功项目的经验不能得到最大限度的继承,软件生产的可重复性相对比较差。
最后,软件企业人员变更相对频繁也增加了实施CMM的难度。
“三七”法则 在过程改进总体建议方面,应该从三个方面做准备,分七步走。
首先,在组织方面的准备上,除了要求高层经理出资支持CMM改善软件过程,委托具有管理职责的人员负责CMM实施之外,须成立软件工程过程组(SEPG),研究CMM、编写/修改必要的文档并推广文档;成立软件质量保证组(SQAG),研究软件质量保证技术及过程,编写/修改必要的SQA文档并推广已编写的文档,测量和分析项目进展情况,反馈项目过程状态,准备和评审过程、计划和标准,审计指定的软件工作产品以检验其遵从性,审计软件工作过程的符合性;成立软件配置管理组(SCMG),研究软件配置管理技术及过程,编写/修改必要的SCM文档并推广已编写的文档,建立必要的工具支持。
在知识准备方面,要加强培训工作,建立内部过程评估队伍和庞大的过程改善队伍。
对各角色人员进行专项培训,普遍开展软件工程基础及CMM的培训,使每个岗位的人员都具备过程改进的意识,并掌握所必需的过程改进知识和技能。
此外,要重视对软件工程的研究,包括方法、工具和过程,加速培养过程改进的骨干队伍。
在能力准备方面,建立有效的软件项目管理,文档化且遵循软件项目管理过程,在建立管理过程中,使用组织的方针来指导项目,建立基本软件工作产品完成准则和检查单,并迅速实施,然后根据反馈意见及时修改。
坚持适当的监控机制,例如对项目进度进行跟踪而建立的例会制度,制度化的日报和周报活动。
做好实际数据收集、测量与分析工作等。
重复成功的以前项目的开发经验。
改进过程总体可以分为以下七个步骤。
确定目标:确定在一段时间内达到的改进等级。
状态诊断:把过程改进要达到的状态与目前的状态作比较,找出存在的差距。
制定计划:“凡事有计划,按计划办”不仅是CMM强调的,也是软件开发过程中应该注意的。
规程制定:过程改进的一个重要的地方就是“事事有规程,时时有记录”,这样,即使关键人走了,原来的事也能继续而不致产生过多的停顿。
过程试点:制定了规程后,要对行动计划按执行过程的情况进行适当调整。
其中,尤其要注重评审和验证,实现定期监控,注意采集度量数据。
反馈修正:总结过程试点的经验,修订规程。
过程推广:扩大应用范围。
软件过程改进实施步骤 公司的过程改进活动也是一个项目,并且是很大的项目,涉及的人员、技术和资源都很多,还要平衡现有产品或项目的进度等。
同时,它也是一个不断往复,螺旋上升的一个过程。
第一个步骤为高级经理下定决心,提供足够的资源来主持并完成前期的准备工作,这个阶段核心是评价SEPG组长的资格和资质,还包括评估培训、购买工具的预算及相应资金能否及时到位。
无论是软件商业化的过程或CMM实施的过程之中,建立规范化的易于操作的软件开发行为规范都是首先要做的工作。
但是,切记,编制规范的时间一定不能长,以10到12个工作日为宜,文档不宜过多,以5~6个规程为好(对应5个或6个关键过程域),这是第二个关键阶段。
评价标准可以是SEPG组长能够顺利、流畅地讲解其制定的规程。
在规程编制阶段必须有老板或常务副总直接领导CMM工作。
但是一定要记住,制定的过程要遵从“从实践中来,到实践中去”,同项目经理、有经验的开发人员研究、讨论,从而使SEPG组长能够及时反映工作中的问题,并且问题能够得到及时解决。
第三个步骤是制定并发布公司的评估方针和方案,包括开发体系重组过程中的激励措施,中层在此阶段必须介入,这关系着过程改进...
尐叄