深入浅出软件过程改进

1.什么是软件过程?

软件过程为一个为建造高质量软件所需完成的任务的框架,即形成软件产品的一系列步骤,包括中间产品、资源、角色及过程中采取的方法、工具等范畴。

2.软件过程的作用?

有效的软件过程可以提高组织的生产能力:

理解软件开发的基本原则,可以帮我们做出明智的决定;

可以标准化我们的工作,提高软件的可重用性和Team间的协作;

软件过程理论强调不断地进行过程改进,可以使得软件开发活动跟上潮流,不断接收新的、最好的软件开发经验;

有效的软件过程有助于降低软件的维护成本:

有效的需求变更过程,有助于恰当分配变更,减少变更可能带来的混乱;

能够规范软件开发的行为方式,有助于积累组织的过程资产。

3.软件过程为什么需要改进?

凡是活动,都存在过程;凡是过程,都存在改进;凡是改进,都没有终点。

经过一段时间后,过程的性能趋于降低

客户有越来越高的需求

组织的目标可能是变化的

组织的环境是不断变化的

你的竞争对手在改进

组织的过程是逐步成熟的

4.过程描述方法?

文字描述 表格 图形 流程

5.过程改进可以参考的过程模型?

ISO9000, ISO/IEC 15504, 6σ ,PCM ,SW-CMM ,CMMI

6.软件过程改进框架?

软件过程改进的框架包括软件过程基础设施、过程改进路线图、软件过程评估方法和软件过程改进计划。

每部分作用是:

(1)软件过程基础设施

它包含组织管理基础设施和技术基础设施,可为软件过程改进的活动提供必要的条件和支持。

(2)过程改进路线图

它应提供表明有效软件过程特征的模型,以及逐步达到有效软件过程的途径,软件组织依靠路线图的指引可以朝着有效软件过程前进。事实上,CMM(软件能力成熟度模型)和SPICE提供的成熟度等级都属于这种路线图。当然,软件组织从自身的实际情况出发对这些模型所作的裁剪版本,只要是适用的也应看成是过程改进路线图。

(3)软件过程评估方法

它是评估软件组织现行和现用的软件过程、做法和基础设施的方法和技术。评估通常要对照过程改进路线图,评估的结果要能表明,从提高过程有效性方面看哪些是强项,哪些是弱项。改进措施应能导致过程成熟度沿着改进路线图提高过程成熟度。过程评估方法可以是公开适用的标准方法,例如SEI评估方法即基于CMM估价的内部过程改进CBA—IPI(CMMfbased appraisal for internal process improvement)或BOOTSTARAP方法,也是按SPICE规定的准则进行内部评估。

(4)软件过程改进计划

评估后把发现的问题转化为软件过程改进的行动计划。这包括为改进过程基础设施以及提高其有效性必须采取的措施,过程改进应能使改进的过程规范化并提高过程的有效性。

过程改进成功必备因素:

1) 高层管理者应设定切实可行的目标

2) 要从管理的角度提供足够的支持

3) 成功的改进离不开项目经理以及软件工程师的参与

4) 过程改进就应被当做真正的项目加以对待。

5) 过程改进计划是参考过程改进规划图制定的。

6) 持续的过程改进是一条漫漫长路,不应该仅仅将目标设定为一次过程改进。

7) 对成员工作业绩的评估与奖励应与过程实施的效果挂勾

8) 过程的实施效果应加以评估

9) 确保在整个实施过程中过程的目标、项目目标以及企业目标三者之间的一致性

10) 组织中的每个成员均应参与到过程改进活动中来。

7.如何开启软件过程改进?

(1) 远景阶段:该阶段中设置与前进的方向,拼出了前进的道路。它考虑到了未来的发展和在技术、经济、政策、市场和商业方面的变化。

(2) 策略阶段:策略描绘出达到的远景的途径和达到远景目标必须经过的实践步骤。

(3) 调动阶段:团结一致的调动当前的人力和资源,设计并实现相应的行动计划。

(4) 推动阶段:保持推动力,监控策略的成就,强化同盟关系。

(5) 实现阶段: 实现已制定的策略,否则过程改进会成为一种幻想。软件过程改进本身也是一个改变的过程,也应该经历上面提到的类似阶段

集成化过程改进

在软件过程的各种现代版本中,为适应各组织的学科,创建了不同的过程改进模型,开发了多种语言。这种多样性对于沟通问题产生不利影响。而集成化过程改进就是用来改变这种情况;通过提供一种单一的语言,使多种学科能够共享过程改进活动并关注一个统一的过程改进目标。

意义:

1) 成本效益被理解,过程改进所获得的成本节省非常可观。相对于采用多个模型,一个连续改进的组织如果采用了公共模型,就可以减少以下费用:采用模型和评估方法所需的培训费用;在相同组织或人员执行各种评估需要的费用;在数据仓库中维护冗余数据的过程资产;维护或采用多种模型的专业知识。

2) 重点明确,集成化过程改进计划可以弄清楚各种活动的目的和商业目标。通过大范围的各种过程改进活动的集成,更容易把实践人员和主管的队伍团结在过程改进的目标下。有改进重点,能统一和加强思想,高效的安排和使用匮乏的资源,并为跨越不同学科的过程改进提供一种共同语言。特别是一个其有公共术语和公共评估方法的单一模型提供这类重点。

3) 过程集成,过程集成和精益组织。集成过程改进的一个不太明显的收益是它对组织产生的“集成”影响。当过程的定义跨越了组织和学科的边界时,通常会产生新的理解和相互学习,从而使关键工作统筹化,并消除了冗余的不必要的活动。“烟囱式”的过程改进通常假定组织的接口是有效的。在跨部门进行改进过程时,该组织可另外得到过程重构的效果。这种简化持精益概念,即努力消除产品中的浪费,为客户提供

4)灵活性,集成所带来的最后一个效益是适应和利用业务式工程环境变化的能力

8.软件改进过程中如何管理变革?

变革管理(Change Management)

是指导我们如何准备、装备和支持个人成功地采纳变革以推动组织成功和实现结果的专业。

抵制变革是人的本能,抵制必会发生。当人们成为变革对象时,利益可能受损,就会更加抵制变革。变革的对象和

实施者均是人,核心的问题就是以何种方式争取利益相关者最大限度的参与。虽然最初争取参与很复杂,也很耗费

时间,但这是减轻导致抵制的不必要的恐慌和不确定性的最好方式之一。

实现变革的策略:

伙伴策略:依赖于个人之间的关系;利用研讨会、午餐会和活动来宣布和讨论需要改变的事情以及如何改变。

政策策略:试图通过影响官方和非官方的领导人,使强大的组织结构发生变革‘寻找和说服那些最受尊敬、有众多支持者的人。

经济策略:相信金钱具有最好的说服力;基于假设-人们的原动力的经济刺激。

对抗策略:基于假设-如果能够唤起并调动起人们对当前问题的不满和愤怒,他们会愿意改变;更多地依赖于策略家的说服力,是人们感到现存的问题,但不提倡暴力。

学术策略:假设如果你提供给人们足够的信息和正确的事实,他们会接受变革;通常产生雇主、专家和咨询的委员会的研究 告。

工程策略:假设工作性质发生变化,许多人员不得不改变;对组织结构方面问题的强调,导致对环境很敏感。

军事策略:依赖于严酷的武力或无知;时常被军队、警察、学生政治压力集团、政党所用重点是学习在斗争中使用武器;需要力量和敏捷,遵守纪律将受到奖励。

9.软件过程改进度量方式?

度量软件过程的必要性:

阻碍软件过程改进的主要障碍是高层经理不愿意在软件过程改进上投资。这是需要证据证明SPI能带来投资效益(ROI),度量可以提供必要性的证据。

正确地、持续地进行软件的度量时,产品和过程的质量属性的数据就为实施和管理过程改进活动提供有效的基础。

有效度量的作用在于能帮助软件组织认清自己的能力,并进一步为他们的生产和服务制订出可行的计划。

度量还能使人们找到变化的趋势和预测出现的问题,因此可以更好地控制成本、减少风险,改进质量,确保实现商

业目标。

度量的范围

在进行软件度量活动的项目中,软件度量活动会涉及与软件有关的每个人的工作:

– 从需求分析到设计、实现、测试、布置、维护;

– 从项目管理者到开发者、测试者、技术支持者,甚至用户;

– 从代码实现到各种评审、检查。

每一个阶段、每一个角色的各种软件活动都会纳入软件度量活动的范围中。

10.软件过程评估?

软件过程评估是对一个组织的软件过程进行评估与检查。

通过评估可以帮助组织对当前的软件过程环境与基础有一个正确的认识。

实际上,评估通常扮演了一个改进活动计划的催化剂的角色。

评估方法参考:ISO 15504,BOOTSTRAP,SEI,ISO/IEC JTC1/SC7

评估的目的不仅限于软件过程改进,也可以评价组织的过程能力或过程成熟度。

评估的发起人(sponsor),分为3种:

– 组织内部(First-party assessment)

– 需求方(发包方)(Second-party assessment )

– 第三方(Third-party assessment )

评估主要目标:

了解并检查组织的软件工程状态,了解整个组织的运行情况。

确定过程中的优势及弱势,确定软件过程改进的关键领域。

促进过程活动的开展并让组织领导参与到改进过程中来。

为过程改进活动提供框架。

帮助获得某种资质。

SEI评估方法5个阶段:

计划前阶段:承诺

计划阶段:准备

数据收集与分析阶段:现场评估

告阶段: 告

评估后阶段:评估后的跟进活动

11.计划驱动开发与敏捷开发对比?

计划驱动开发起源于系统工程和质量规范,建立系统工程的原则,协调大量需要精确协同工作的组件。通过从需求到已完成的代码等一系列代表用来推动软件开发的过程,计划驱动开发非常精确低依赖于明确的步骤。计划驱动开发的关键是过程的定义和管理,和过程改进联系在一起,强势在于标准化所带来的可比较性和可重复性。过程需要进行定义、标准化需要逐步改进以提供控制。管理其操作所需的数据。

优点:适应大型产品和团队;适应应对高安全性的产品;项目初期需要高素质人员和专家,项目平稳进行期间,对人员的素质要求降低;清晰的政策和规程定义了人们的角色,使人们感到舒适,有权利。靠秩序繁荣。

缺点:详细设计和庞大的预先设计非常适用于高度稳定的环境,对于高度动态的环境导致返工。

敏捷开发的方法有Scrum、XP极限编程、ASD自适应软件开发、FDD特征驱动软件开发、Pair programming、pragmatic programming

优点:适应小型产品和团队;整个过程都需要高素质人员和专家参与;更高的自由度,使人们感到舒适,有权利。靠混沌繁荣。

缺点:没有经过安全关键性产品的考验;简单的设计和缺乏文档有潜在问题;简单设计和持续重构非常适用于高度动态的环境,但对于高度稳定的环境会导致潜在的返工。

12.CMMI介绍?

CMMI作用:

1.用于软件过程的改进(SPI,SoftwareProcess Improvement)

2.用于软件过程评估(SPA,SoftwareProcess Assessment)

3.软件能力评鉴(SCE,Software CapabilityEvaluation)

CMMI五个等级:

初始级:不可预测 被动完成工作 经常延误或超支

改进方向:

1) 建立项目管理过程,实施规范化管理,保障项目的承诺。

2) 首要任务是进行需求管理,建立客户与软件项目之间的共同理解,使项目真正反映客户的要求。

3) 建立各种软件项目计划,如:软件开发计划、软件质量保证计划、软件配置管理计划、软件测试计划、风险管理计划及过程改进计划。

4) 开展软件质量保证活动(SQA)。

已管理级:项目层面管理 项目有计划 被执行 有度量 可控

改进方向:

1) 不再按项目制定软件过程,而是总结各种项目的成功经验,使之规则化,把具体经验归纳为全组织的标准软件过程。把改进组织的整体软件过程能力,作为组织的责任。

2) 确定全组织的标准软件过程,把软件工程及管理活动集成到一个稳固确定的软件过程中。从而可以跨项目改进软件过程效果,也可作为软件过程剪裁的基础。

3) 建立软件工程过程小组(SEPG)长期承担评估与调整软件过程的任务,以适应未来软件项目的要求。

4) 积累数据,建立组织的软件过程库及软件过程相关的文档库。

5) 加强培训。

已定义级:主动,建立整个公司层面的标准,可为大项目 项目集合提供指南

改进方向:

1) 开始着手软件过程的定量分析,以达到定量地控制软件项目过程的效果。

2) 通过软件的质量管理达到软件的质量目标。

量化管理级:可度量 可预测 满足内外利益

改进方向:

1) 缺陷防范,不仅仅在发现了问题时能及时改进,而且应采取特定行动防止将来出现这类缺陷。

2) 主动进行技术变动管理、标识、选择和评价新技术,使有效的新技术能在开发组织中施行。

3) 进行过程变动管理,定义过程改进的目的,经常不断地进行过程改进。

优化级:稳定 灵活 持续改进与创新

改进方向:

保持持续不断的软件过程改进。

CMMI v1.3 过程域介绍:

(按照阶段性分组)

成熟度等级2(7个):

需求管理(REQM)

项目计划(PP)

项目监督和控制(PMC)

供应合同管理(SAM)

度量和分析(MA)

过程和产品质量管理(PPQA)

配置管理(CM)

成熟度等级3(11个):

需求开发(RD)

技术解决方案(TS)

产品集成(PI)

验证(VER)

确认(VAL)

组织级过程焦点(OPF)

组织级过程定义(OPD)

组织级培训(OT)

集成化项目管理(IPM)

风险管理(RSKM)

决策分析和解决方案(DAR)

成熟度等级4(2个):

组织级过程性能(OPP)

项目定量管理(QPM)

成熟度等级5(2个):

组织级改革和实施(OID)

因果分析和解决方案(CAR)

附录 软件过程常用术语介绍

1 软件生存周期(software life cycle)

软件生存周期又称为软件生命期,生存期。是指从形成开发软件概念起,所开发的软件使用以后,直到失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括计划(定义)、开发、运行(维护)三个时期,每一个时期又划分为若干阶段。每个阶段有明确的任务,这样使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理。

SDLC的六个阶段:1. 定义及规划2.需求分析3. 软件设计4.程序编码5.软件测试6.运行维护

2 项目(project)

项目是指一系列独特的、复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间、预算、资源限定内,依据规范完成。项目是为创造独特的产品、服务或成果而进行的临时性工作。

项目参数包括项目范围、质量、成本、时间、资源。

3 里程碑(milestone)

在制定项目进度计划时,在进度时间表上设立一些重要的时间检查点,这样一来,就可以在项目执行过程中利用这些重要的时间检查点来对项目的进程进行检查和控制。这些重要的时间检查点被称作项目的里程碑(Milestone)。

4.6σ

6σ是一种统计评估法,核心是追求零缺陷生产,防范产品责任风险,降低成本,提高生产率和市场占有率,提高顾客满意度和忠诚度。

5.CMMI

全称Capability Maturity Model Integration,即能力成熟度模型集成,也称软件能力成熟度集成模型,是一个

过程模型,明确定义了一个组织应该采取什么行动来定义、理解和推进有助于提高性能的行为。

6.PCM

PCM(Product Cycle Model)是微软开发产品及服务的模型,它提供:

– 待开发的产品及服务的类别

– 我们如何定义开发团队

– 我们如何确定最终客户及市场

7.内部属性

内部属性通常描述软件结构上的复杂性,如:软件大小、控制流、耦合度等。

8.外部属性

外部属性通常涉及到人和环境等外部因素,如:复杂性、可维护性、可读性等。

9.过程资产( Process Assets )

在组织中,对实现过程域的目标有用的任何内容。

10.质量保证( QA ,Quality Assurance )

为确保实际执行中的管理符合已经定义的规范、实践、过程和方法而进行的检查。

11.基线(baseline)

基线是项目储存库中每个工件版本在特定时期的一个“快照”。它提供一个正式标准,随后的工作基于此标准,并且只有经过授权后才能变更这个标准。建立一个初始基线后,以后每次对其进行的变更都将记录为一个差值,直到建成下一个基线。

12.软件过程度量(Software Process Measurement)

度量是指把数字或符 指定给现实世界中实体的某一属性,根据已明确的规则描述它们。

度量是一种从现实或经验世界到数学的映射,通过这种映射,人们可以更容易地理解实体的属性和实体间的关系。

软件过程度量主要是从整个软件组织的过程级别采集和分析度量数据,对整个软件组织的过程改进提供宏观的指导作用。

13.功能点分析(Function Point Analysis)

功能点分析方法是最重要也是最有效的软件测量规模方法,它可以在项目早期就对软件项目进行测量,并在开发过程中不断地更新数据,从而实现一种持续一致的管理。

功能点分析是项目工作量估算的一种常用方法,可用7个步骤概括:1.确定功能点计算的类型;2.确定计算范围和应用程序边界;3.确定所有数据功能及其复杂性;4.确定所有事务功能及其复杂性;5.得出未调整功能点计数;6得出基于系统基本特征的值调整因子;7.计算已调整功能点计数。

14.工作分解结构(WBS)

以可交付成果为导向对项目要素进行的分组,它归纳和定义了项目的整个工作范围每下降一层代表对项目工作的更详细定义。无论在项目管理实践中,还是在PMP,IPMP考试中,工作分解结构(WBS)都是最重要的内容之一。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。WBS同时也是控制项目变更的重要基础。

15.软件质量

软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的和隐含特征相一致的程度。

16.RMMM 计划(Risk Mitigation, Monitoring and Management Plan)

软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使软件项目不能实现。如果对项目进行风险管理,就可以最大限度的减少风险的发生。

17.COCOMO 模型

结构性成本模型。它是由巴里·勃姆(Barry Boehm)提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,本质上说是一种参数化的项目估算方法,参数建模是把项目的某些特征作为参数,通过建立一个数字模型预测项目成本(类似于居住面积作为参数计算的整体的住房成本)。

18.项目计划评审技术

计划评审技术就是工程项目当作一种系统,用 络图或者表格或者矩阵来表示各项具体工作的先后顺序和相互关系,以时间为中心,找出从开工到完工所需要时间的最长路线,并围绕关键路线对系统进行统筹规划,合理安排以及对各项工作的完成进度进行严密的控制,以达到用最少的时间和资源消耗来完成系统预定目标的一种计划与控制方法。

19.软件质量模型

一个软件的质量往往涉及到许多不同的质量属性,不同类型的软件所关注的质量属性也不尽相同。因此, 为了更好地理解、预测和评价软件和信息系统的质量, 人们建立了各种质量模型, 在软件生命周期的不同阶段对软件质量进行评测。常用的通用软件质量模型主要包括层次模型和关系模型, 它们在当前的软件开发中起到了一定的积极作用。

20.软件过程能力(Software process capability)

当遵循某个软件过程时所能达到的期望效果,它可以有效预测企业接收新的软件项目时可能得到的结果。

21.软件基本过程

软件获取、供应、开发、运行和维护的过程,包括需求分析、软件设计、编码等过程。

22.软件支持过程

包括文档编制过程、配置管理过程、质量保证过程、验证和确认过程(测试过程)、评审过程等。

23.软件组织过程

对软件主要过程和支持过程的组织保证过程,包括管理过程、基础设施过程、改进过程和培训过程。

24.统一过程(RUP Rational Unified Process)

统一过程主要分五个阶段:开启阶段(inception),细化阶段(elaboration),构建阶段(construction),移交阶段(transition),生产(production)。Rational Unified Process 是 Rational 公司开发和维护的过程产品。Rational Unified Process 是软件工程的过程。它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。

25.过程模式

一系列用来面向对象软件的通用技术、行为或各种任务、过程模式的一个重要特性在于,它只描述了一个软件开发人员应该做什么,而没有确切地说明应该做哪些细节。当过程模式能够被有组织的应用在一起时,它们就可以被用来为软件开发改进机构生成软件过程。因为过程模式并没有指定如何完成一个给定的工作,它们能够成为可复用的积木。软件开发人员可以据此来定制一个满足软件开发机构的特定需求的软件过程。

26.个体软件过程PSP

PSP个人软件过程 (Personal Software Process,PSP) 是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。

27.团队软件过程 TSP

帮助工程师在一个团队中工作,来开发有质量保证的软件产品,生产安全的软件产品,改进组织中的过程管理。通过TSP,一个组织能够建立起自我管理的团队来计划追踪他们的工作、建立目标,并拥有自己的过程和计划。

28.过程规范

过程规范就是对输入/输出和活动所构成的过程进行明文规定或约定俗成的标准。软件过程规范是软件开发组织行动的准则与指南,可以依据上述各类过程的特点而建立相应的规范,如软件基本过程规范、软件支持过程规范和软件组织过程规范。

29.过程模型

所谓软件过程模型就是一种开发策略,这种策略针对软件工程的各个阶段提供了一套范形,使工程的进展达到预期的目的。对一个软件的开发无论其大小,我们都需要选择一个合适的软件过程模型,这种选择基于项目和应用的性质、采用的方法、需要的控制,以及要交付的产品的特点。

常见的模型包括瀑布模型、螺旋模型、增量模型、迭代模型、V模型等。

30.配置管理

配置管理(Configuration Management,CM)是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。

31.配置项

配置项指纳入配置管理范畴的所有项目。凡是纳入配置管理范畴的工作成果都是配置项(CI);一个纯软件的CIs通常也称为软件配置(CSCIs)。配置项主要有两大类:属于产品组成部分的工作成果;项目管理和机构支撑过程产生的文档。

32.预防性维护

预防性维护是软件产品交付后进行的修改,以在软件产品中的潜在错误成为实际错误前,检测和更正它们。

33.适应性维护

计算机领域的各个方面发展变化十分迅速,经常会出现新的系统或新的版本,外部设备及其他系统原件经常在改变,而应用软件的使用时间,往往比原先的系统环境使用时间更为长久,因此,常需对软件加以改造,使之适应于新的环境。为使软件产品在新的环境下仍能使用而进行的维护,称为适应性维护。

34.过程成熟度(process maturity)

指一个特定的软件过程被显式定义、管理、度量、控制和有效的程度。成熟度意味着能力上的增长潜力。

– 当一个企业达到了一定的软件过程成熟级别后,它将通过制定策略、建立标准和确立机构结构使它的软件

过程制度化。而制度化又促使企业通过建立基础设施和公司文化来支持相关的方法、实践和过程。从而使

之可以持续并维持一个良性循环。

35.过程域

互相关联的若干软件实践活动和有关基础设施的集合。每个软件能力成熟等级包含若干个对该成熟度等级至关重要的过程域,他们的实施对达到该成熟度等级的目标起保护作用,这些过程构成过程域。

36.过程度量(Process metrics)

软件过程度量主要是从整个软件组织的过程级别采集和分析度量数据,对整个软件组织的过程改进

提供宏观的指导作用。

37.行动计划指南(Guidance for Action Planning)

GAP致力于评估以及实际改进计划之间的转换。有助于组织区分那些待采取活动或行动的优先顺序。

为要创建行动计划的人们提供一个起始点。GAP的输出是可以直接用于过程改进计划的规划图。指导人们如何创建和培训软件过程改进团队,如何制定改进计划。实施什么样的任务来改进、指导并使过程制度化。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月13日
下一篇 2020年1月13日

相关推荐