首页 > 文章中心 > 软件管理

软件管理范文精选

软件管理

软件管理范文第1篇

随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。我公司是西安一家中型软件企业,在公司中已经实行了项目管理制度,软件项目管理是整个项目管理中的一个重要组成部分。

从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。

软件开发不同于其他产品的制造,软件的整个过程都是设计过程(没有制造过程);另外,软件开发不需要使用大量的物质资源,而主要是人力资源;并且,软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。基于上述特点,软件项目管理与其他项目管理相比,有很大的独特性。

二、软件项目管理的组织模式

软件项目可以是一个单独的开发项目,也可以与产品项目组成一个完整的软件产品项目。如果是订单开发,则成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目(负责市场调研和销售),组成软件产品项目组。

公司实行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小组、项目评审小组和软件产品项目组。

1、项目管理委员会

项目管理委员会是公司项目管理的最高决策机构,一般由公司总经理、副总经理组成。主要职责如下:

(1)依照项目管理相关制度,管理项目;

(2)监督项目管理相关制度的执行;

(3)对项目立项、项目撤消进行决策;

(4)任命项目管理小组组长、项目评审委员会主任、项目组组长.

2、项目管理小组

项目管理小组对项目管理委员会负责,一般由公司管理人员组成。主要职责如下:

(1)草拟项目管理的各项制度;

(2)组织项目阶段评审;

(3)保存项目过程中的相关文件和数据;

(4)为优化项目管理提出建议。

3、项目评审小组

项目评审小组对项目管理委员会负责,可下设开发评审小组和产品评审小组,一般由公司技术专家和市场专家组成。主要职责如下:

(1)对项目可行性报告进行评审;

(2)对市场计划和阶段报告进行评审;

(3)对开发计划和阶段报告进行评审;

(4)项目结束时,对项目总结报告进行评审。

4、软件产品项目组

软件产品项目组对项目管理委员会负责,可下设软件项目组和产品项目组。软件项目组和产品项目组分别设开发经理和产品经理。成员一般由公司技术人员和市场人员构成。主要职责是:根据项目管理委员会的安排具体负责项目的软件开发和市场调研及销售工作。

三、软件项目管理的内容

从软件工程的角度讲,软件开发主要分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、安装及维护阶段。不论是作坊式开发,还是团队协作开发,这六个阶段都是不可缺少的。

根据公司实际情况,公司在进行软件项目管理时,重点将软件配置管理、软件质量管理、软件风险管理及开发人员管理四方面内容导入软件开发的整个阶段。

在八十年代初,著名软件工程专家b.w.boehm总结出了软件开发时需遵循的七条基本原则,同样,我们在进行软件项目管理时,也应该遵循这七条原则。它们是:

(1)用分阶段的生命周期计划严格管理;

(2)坚持进行阶段评审;

(3)实行严格的产品控制;

(4)采用现代程序设计技术;

(5)结果应能够清楚地审查;

(6)开发小组地人员应该少而精;

(7)承认不断改进软件工程实践地必要性。

四、编写《软件项目计划书》

项目组成立的第一件事是编写《软件项目计划书》,在计划书中描述开发日程安排、资源需求、项目管理等各项情况的大体内容。计划书主要向公司各相关人员发放,使他们大体了解该软件项目的情况。对于计划书的每个内容,都应有相应具体实施手册,这些手册是供项目组相关成员使用的。

《软件项目计划书》一般应该包括下述内容:

1.引言

1.1计划的目的

1.2项目的范围和目标

1.2.1范围描述

1.2.2主要功能

1.2.3性能

1.2.4管理和技术约束

2.项目估算

2.1使用的历史数据

2.2使用的评估技术

2.3工作量、成本、时间估算

3.风险管理战略

3.1风险识别

3.2有关风险的讨论

3.3风险管理计划

3.3.1风险计划

3.3.2风险监视

3.3.3风险管理

4.日程

4.1项目工作分解结构

4.2时限图(甘特图)

4.3资源表

5.项目资源

5.1人员

5.2硬件和软件

5.3特别资源

6.人员组织

6.1组织结构

6.2管理报告

7.跟踪和控制机制

7.1质量保证和控制

7.2变化管理和控制

8.附录

五、软件配置管理

是否进行配置管理与软件的规模有关,软件的规模越大,配置管理就显得越重要。软件配置管理简称scm(softwareconfigurationmanagement的缩写),是在团队开发中,标识、控制和管理软件变更的一种管理。配置管理的使用取决于项目规模和复杂性以及风险水平。

1、目前软件开发中面临的问题

。在有限的时间、资金内,要满足不断增长的软件产品质量要求;

。开发的环境日益复杂,代码共享日益困难,需跨越的平台增多;

。程序的规模越来越大;

。软件的重用性需要提高;

。软件的维护越来越困难。

2、软件配置管理应提供的功能

在iso9000.3中,对配置管理系统的功能作了如下描述:

。唯一地标识每个软件项的版本;

。标识共同构成一完整产品的特定版本的每一软件项的版本;

。控制由两个或多个独立工作的人员同时对一给定软件项的更新;

。控制由两个或多个独立工作的人员同时对一给定软件项的更新;

。按要求在一个或多个位置对复杂产品的更新进行协调;

。标识并跟踪所有的措施和更改;这些措施和更改是在从开始直到放行期间,由于更改请求或问题引起的。

3、版本管理

软件配置管理分为版本管理、问题跟踪和建立管理三个部分,其中版本管理是基础。版本管理应完成以下主要任务:

。建立项目;

。重构任何修订版的某一项或某一文件;

。利用加锁技术防止覆盖;

。当增加一个修订版时要求输入变更描述;

。提供比较任意两个修订版的使用工具;

。采用增量存储方式;

。提供对修订版历史和锁定状态的报告功能;

。提供归并功能;

。允许在任何时候重构任何版本;

。权限的设置;

。晋升模型的建立;

。提供各种报告。

4、配置管理软件pvcs6.0

pvcs6.0是一套非常优秀的配置管理软件,它能够实现配置管理中的各项要求,并且能和多种流行开发平台集成,为配置管理提供了很大的方便。

六、软件质量管理

随着软件开发的规模越来越大,软件的质量问题显得越来越突出。软件质量的控制不单单是一个软件测试问题,在软件开发的所有阶段都应该引入质量管理。我公司除加强了国家标准"信息技术软件生存期过程"(gb/t8566--1995)的规范管理外,还积极为通过iso9000.3做准备。

1、软件质量保证计划

在进行软件开发前,需要有一个《软件质量保证计划》。目前较常用的是ansi/ieeestol

730--1984,983--1986标准,包括以下内容:

1.计划目的

2.参考文献

3.管理

3.1.组织

3.2.任务

3.3.责任

4.文档

4.1.目的

4.2.要求的软件工程文档

4.3.其他文档

5.标准和约定

5.1.目的

5.2.约定

6.评审和审计

6.1.目的

6.2.评审要求

6.2.1.软件需求的评审

6.2.2.设计评审

6.2.3.软件验证和确认评审

6.2.4.功能评审

6.2.5.物理评审

6.2.6.内部过程评审

6.2.7.管理评审

7.测试

8.问题报告和改正活动

9.工具、技术和方法

10.媒体控制

11.供应者控制

12.记录、收集、维护和保密

13.培训

14.风险管理

2、质量管理的基本原则

。控制所有过程的质量;

。过程控制的出发点是预防不合格;

。质量管理的中心任务是建立并实施文件化的质量体系;

。持续的质量改进;

。有效的质量体系应满足顾客和组织内部双方的需要和利益;

。定期评价质量体系;

。搞好质量管理关键在于领导。

3、软件质量因素

正确性:系统满足规格说明和用户目标的程度,即,在预定环境下能正确地完成预期功能的程度。

健壮性:在硬件发生故障、输入的数据无效或操作错误等意外环

境下,系统能做出适当响应的程度。

效率:为了完成预定的功能,系统需要的计算资源的多少。

完整性(安全性):对未经授权的人使用软件或数据的企图,系统能过控制(禁止)的程度。

可用性:系统在完成预定应该完成的功能时另人满意的程度。

风险:按预定的成本和进度把系统开发出来,并且为用户所满意的概率。

可理解性:理解和使用该系统的容易程度。

可维修性:诊断和改正在运行现场发现的错误所需要的工作量的大小。

灵活性(适应性):修改或改进正在运行的系统需要的工作量的多少。

可测试性:软件容易测试的程度。

可移植性:把程序从一种硬件配置和(或)软件系统环境转移到另一种配置和环境时,需要的工作量多少。有一种定量度量的方法是:用原来程序设计和调试的成本除移植时需用的费用。

可再用性:再其他应用中该程序可以被再次使用的程度(或范围)。

互运行性:把该系统和另一个系统结合起来需要的工作量的多少。

4、软件评审

软件评审并不是在软件开发完毕后进行评审,而是在软件开发的各个阶段都要进行评审。因为在软件开发的各个阶段都可能产生错误,如果这些错误不及时发现并纠正,会不断地扩大,最后可能导致开

发的失败。下面这组数据可以清楚的看出前期的错误对后期的影响。

软件评审是相当重要的工作,也是目前国内开发最不重视的工作。

(1)评审目标

。发现任何形式表现的软件功能、逻辑或实现方面的错误;

。通过评审验证软件的需求;

。保证软件按预先定义的标准表示;

。已获得的软件是以统一的方式开发的;

。使项目更容易管理。

(2)评审过程

a、召开评审会议:一般应有3至5人参加,会前每个参加者做好准备,评审会每次一般不超过2小时。

b、会议结束使必须做出以下决策之一:接受该产品,不需做修改;由于错误严重,拒绝接受;暂时接受该产品。

c、评审报告与记录;所提出的问题都要进行记录,在评审会结束前产生一个评审问题表,另外必须完成评审简要报告。

(3)评审准则

。评审产品,而不是评审设计者(不能使设计者有任何压力);

。会场要有良好的气氛;

。建立议事日程并维持它(会议不能脱离主题);

。限制争论与反驳(评审会不是为了解决问题,而是为了发现问题;

。指明问题范围,而不是解决提到的问题;

。展示记录(最好有黑板,将问题随时写在黑板上);

。限制会议人数和坚持会前准备工作;

。对每个被评审的产品要尽力评审清单(帮助评审人员思考);

。对每个正式技术评审分配资源和时间进度表;

。对全部评审人员进行必要的培训;

。及早地对自己地评审做评审(对评审准则的评审)。

5、iso9000.3软件质量认证体系

iso9000.3是iso9000质量体系认证中关于计算机软件质量管理和质量保证标准部分。它从管理职责、质量体系、合同评审、设计控制、文件和资料控制、采购、顾客提供产品的控制、产品标识和可追溯性、过程控制、检验和试验、检验/测量和试验设备的控制、检验和试验状态、不合格品的控制、纠正和预防措施、搬运/贮存/包装/防护和交付、质量记录的控制、内部质量审核、培训、服务、统计系统等二个方面对软件质量进行了要求。

6、测试

软件测试是软件开发的一个重要环节,同时也是软件质量保证的一个重要环节。所谓测试就是用已知的输入在已知环境中动态地执行系统(或系统的部件)。测试一般包括单元测试、模块测试、集成测试和系统测试。如果测试结果与预期结果不一致,则很可能是发现了系统中的错误,测试过程中将产生下述基本文档:

(1)测试计划:确定测试范围、方法、和需要的资源等。

(2)测试过程:详细描述和每个测试方案有关的测试步骤和数据(包括测试数据及预期的结果)。

(3)测试结果:把每次测试运行的结果归入文档,如果运行出错,则应产生问题报告,并且必须经过调试解决所发现的问题。测试结果:把每次测试运行的结果归入文档,如果运行出错,则应产生问题报告,并且必须经过调试解决所发现的问题。

七、软件风险管理

软件项目管理存在着风险,如果我们提前重视风险,并且有所防范,就可以最大限度减少风险的发生。进行风险管理是有效的手段。

1、风险的分类

根据风险内容,我们可以将风险分为项目风险(成本提高,时间延长等)、技术风险(技术不成熟等)、商业风险(销售问题等)、战略风险(公司的经营战略发生了变化)、管理风险(公司管理人员是否成熟等)、预算风险(预算是否准确等)等。

另外,我们还可以将风险分为已知风险(如员工离职等)、可预报风险(从以往经验得出可能有风险的)和不可预知风险。

2、风险的识别

风险识别的有效方法是建立风险项目检查表。主要涉及以下几方面检查:

。产品规模风险检查

。业务影响风险检查

。与客户相关的风险检查

。过程风险检查

。技术风险检查

。开发环境风险检查

。与人员的模式和经验有关的风险检查

3、风险评估

风险评估主要从下面七个方面进行:

。发生的可能性

。发生的结果(影响)

。建立一个尺度表示风险可能性(如,极罕见、罕见、普通、可能、极可能)

。描述风险带来的后果

。估计对产品和项目的影响

。确定风险评估的正确性

。根据影响排定有限队列

另外,要对每个风险的表现、范围、时间做出尽量准确的判断。

4、风险的评价

对风险的评价主要依据三个因素:风险描述、风险概率和风险影响。从成本、进度及性能三个方面对风险进行评价。确定项目的中止点,在中止点出再一次进行风险评价。

5、风险的驾驭和监控

风险的驾驭与监控主要要靠管理者的经验来实施。如,某开发人员的离职概率是0.7,离职后会对项目造成一定的影响,则该风险驾驭和监控的策略如下:

。与在职人员协商,确定流动原因。

。在项目开始前,把环节这些流动原因的工作列入风险驾驭计划。

。项目开始时,作好人是会流动的准备,采取一些措施确保人员一旦离开时,项目仍能继续。

。制定文档标准,并建立一种机制,保证文档及时产生。

。对所有工作进行细微详审,使更多人能够按计划进度完成自己的工作。

。对每个关键性技术人员培养后备人员。

在考虑风险成本之后,决定是否采用上述策略。

八、人员管理

1、对项目经理的要求

。能够使小组每个成员都能发挥能力

。有一定的组织能力

。能够使小组美味成员有成就感

。有提出解决问题方案的能力

。对问题的理解有一定的深度

。要能让成员知道软件质量的重要性

2、人员的通讯方式

(1)正式非个人方式,如正式会议等;

(2)正式个人之间交流,如成员之间的正式讨论等(一般不形成决议);

(3)非正式个人之间交流,如个人之间的自由交流等;

(4)电子通讯,如e-mail(电子邮件)、bbs(电子公告板系统)等;

(5)成员网络,如成员与小组之外或公司之外有经验的相关人员进行交流;

在实践中发现,(5)的通讯效率最高,其次是(1)。

软件管理范文第2篇

关键词最优反应函数动态效率静态效率

软件行业是我国的重要行业,但自从其发展开始就一直存在着盗版问题,而由于被盗版的软件大多为国外软件制造商的产品,所以经常引发关于知识产权保护是否过渡的争论,支持盗版者以社会福利为其理由,而反对者坚持知识产权保护有利于技术进步。

1基本事实

关于软件盗版存在着公认的事实,这些事实是我们分析的起点。首先,软件盗版在技术上无法克服,即无论正版软件制造商采用何种反盗版技术都无法防范自己的软件被盗版;其次,盗版软件与正版软件在实用性上并不存在较大的差距,这点非常重要。因为这意味着正版软件和盗版软件的产品差别不大;再次,实施盗版所需的投入远远低于正版软件,因为盗版厂商无需支付研发支出;最后,软件生产的边际成本非常低,接近于零,所以可以认为正版和盗版软件的边际成本相等且不变。

2不存在盗版厂商时的正版软件定价策略

如果我们实施极为严格的知识产权保护,则市场上不存在盗版软件,此时正版厂商是市场上唯一的生产者,整个市场结构就是标准的完全垄断市场。相关的函数如下:反需求函数:p1=a-bq1需求函数则为:q1=a/b-p1/b成本函数为:c1=f+cq1利润函数为::μ1=(a-p1)(p1-c)/b-fp1为正版软件的价格,q1为正版软件的需求量,f表示固定成本,这里相对于盗版厂商来说主要为研发支出,c表示不变的边际成本和平均变动成本。

所以对利润函数求p1的一阶导数可得其最优定价:p1=c+(a-c)/2

3基于一个正版厂商和一个盗版厂商市场结构的经济学分析

3.1软件市场反需求函数和需求函数

由于正版软件和盗版软件的差别不大,所以对于普通个人用户来讲,它们的替代性相当大。我们用以下这组反需求函数来表示这种关系:

p1=a-b(q1+θq2)p2=a-b(θq1+q2)

式中,a和b为正,0≤θ≤1,θ取负值时模型成为一个互补商品的需求模型。若θ=0则一种商品的价格仅与本商品的产量有关,而与另一种商品无关,两种商品无替代性。θ越接近于1,两个变量之间的替代性越强;当θ=1则两种商品为完全替代,即对于消费者来讲产品1和产品2完全一样。很明显,在盗版问题上0<θ<1,即两种商品既不完全替代也不完全无关,且θ较为接近1。

通过转换反需求函数的方程式,可以得到模型所隐含的需求函数方程式:q1=[(1-θ)a-p1+θp2]/(1-θ2)bq2=(1-θ)a-p2+θp1]/(1-θ2)b

3.2软件企业的成本函数和利润函数

正版软件的成本函数可以表示为:

c1=f+cq1,f表示固定成本,这里相对于盗版厂商来说主要为研发支出。c表示不变的边际成本和平均变动成本。

结合鲍利的线性需求模型,可得正版企业的利润函数为:

μ1=(p1-c)[(1-θ)(a-c)-(p1-c)+θ(p2-c)]/(1-θ2)b-f相应的,不包括大量研发支出的盗版厂商的成本函数为:c2=cq2

其利润函数为:

μ2=(p2-c)[(1-θ)(a-c)-(p2-c)+θ(p1-c)]/(1-θ2)b

使μ1最大化的对于p1的一阶条件给出了正版厂商相对于盗版厂商的价格最优反映函数:2(p1-c)-θ(p2-c)=(1-θ)(a-c)同理盗版厂商的价格最优反映函数为:2(p2-c)-θ(p1-c)=(1-θ)(a-c)由此可以确定均衡价格为:p1=p2=c+(1-θ)(a-c)/(2-θ)

4基于一个正版厂商和多个盗版厂商市场结构的经济学分析

4.1伯特兰模型与盗版厂商之间的竞争

当多个盗版厂商出现时(这也是更为符合实际的假设),盗版厂商之间存在较为激烈的竞争,即盗版厂商的博弈对象不再是正版厂商而是其它的盗版厂商。而盗版软件之间则没有任何差别,它们之间的竞争完全是价格竞争。经典伯特兰模型认为,当产品同质时,最终价格会降至边际成本。

经典伯特兰模型是建立在两个生产同质产品的厂商基础之上的,这两个厂商只能使用价格作为决策变量。同时假设两个厂商拥有相同的平均成本和边际成本,且平均成本等于边际成本。图1中当厂商2的价格低于边际成本(平均成本)时,厂商1选择边际成本作为其价格;当厂商2的价格高于边际成本(平均成本)低于垄断价格Pm(平均成本)时,厂商1选择略低于P2的价格作为其价格,并占有整个市场;当P2>Pm时,厂商1的价格定在Pm处。

图2中包括了厂商2和厂商1的最优反应曲线,他们的交点就是均衡点p1=p2=mc。此时两个厂商都达到了平均成本处,谁都没有动力离开均衡点。

显然伯特兰模型的结论对于多个厂商也是成立,所以盗版厂商的价格会降至边际成本,这也能获得事实的支持:国内每个省会城市的盗版软件几乎都有自己的统一价格。

4.2基于多个盗版厂商市场环境的正版厂商的反应函数

当盗版软件的价格降至边际成本MC=c时,从正版软件厂商的最优价格反应函数:

2(p1-c)-θ(p2-c)=(1-θ)(a-c)

易于推出正版软件的最优定价为:

p1=c+(1-θ)(a-c)/2

5静态效率与动态效率

比较一个正版厂商面对一个盗版厂商所采用的最优定价和它面对多个厂商时的最优定价:

p1=p2=c+(1-θ)(a-c)/(2-θ)p1=c+(1-θ)(a-c)/2

我们发现存在多个盗版厂商时正版软件的最优定价应更低,如果再与完全垄断市场中企业的最优定价p1=c+(a-c)/2相比,我们发现随着盗版厂商的加入,的确正版厂商的最优定价会不断下降,越来越接近静态社会福利的标准p=mc。所以认为盗版有利于增加社会福利的看法是有道理的。但是这只是静态效率,静态效率包括配置效率和生产效率。

而社会福利则除了静态效率还包括动态效率,动态效率则与知识扩散有关,知识扩散是创新和知识产权保护的函数,所以动态效率是创新和保护的函数。如果我们不重视保护知识产权,则没有人愿意投资进行创新。如果我们过于保护,比方说,将软件的版权无限期延长,那知识将无法扩散,技术无法进步,经济就很难增长。有学者用下下列图3表示社会福利与知识产权之间的关系:

在图3中社会福利(严格的讲是动态社会福利,即动态效率)和知识产权的保护水平不是线性相关的,在P*(此处P为保护水平,而非价格)处达到最大,大于或小于P*都会造成动态效率的损失。

6主要结论

所以认为为了社会福利的进步,就应该允许大肆盗版的看法是没有坚实的经济学基础的。因为静态效率最大化要求不对知识产权进行任何保护,这样人人都可以盗版,软件价格一定会降低到边际成本处。但动态效率则要求对知识产权进行一定程度的保护(P*不可能为零),所以两者无法同时达到最大化。

尽管没有定量上的最优值,我们还是可以有一些有价值的结论。我们可以在软件的保护方面进行一些策略调整,比方说缩短软件保护的著作权年限,以提高静态效率和知识传播速度,同时在保护期内严厉打击盗版,保护企业的创新精神,保护产业的长期竞争力。

参考文献

1张曼.论数字产业对传统反垄断理论与实践的启示[J].经济评论,2002(4)

软件管理范文第3篇

变化和不确定,对于软件业来说,是多么熟悉而又让人烦恼的名词。软件工程自诞生以来,一直试图通过技术和管理的手段来降低软件项目的不确定性。在这个美好的愿景指导下,专家们发明了结构化、发明了面向对象、发明了CMM,这些新的技术和方法的确有助于“软件危机”的解决,促进了软件业的发展;然而,超支、超时、低质量的老问题并未得到根本解决。为了对抗不确定,软件开发越来越复杂,越来越庞大,传统的重量级(HeavyWeight)方法的副作用也越来越明显——组织臃肿、办事低效、官僚主义...

相对于重量级方法,软件业一直有另一种声音在,那就是轻量级方法(LightWeight),其目标是以较小的代价获得重量级相当的效果。

最负盛名的轻量级方法是XP。XP是ExtremeProgramming的缩写,从字面上可以译为极端编程。但是,XP并不仅仅是一种编程方法,也不是中文中理解的那种不可理喻的“极端”化做法。实际上,XP是一种审慎的(deliberate)、有纪律(disciplined)的软件生产方法。XP(ExtremeProgramming)植根于上个世纪80年代后期的Smalltalk社区。90年代,KentBeck和WardCunningham把他们使用Smalltalk开发软件的项目经验总结和扩展,逐步形成了一种强调适应和以人为导向的软件开发方法。

XP的核心是四大价值,即改善沟通(communication),寻求简单(simplicity),获得反馈(feedback)和富有勇气(courage)。在此基础上,XP总结出了软件生产的十余条做法(practice),涉及软件设计、测试、编码、等各个环节。与其它轻量级方法相比,XP独一无二的突出了测试的重要性,甚至将测试作为整个开发的基础,每个开发人员不仅要书写软件产品的代码,同时也必须书写相应的测试代码;所有这些代码通过持续构建和集成(ContinuousBuild&Integration)为下一步的开发打定了一个高度稳定的基础平台。有了这样的基础平台的保证,XP就可以实施软件设计的再造(Refactoring)。XP的设计理念是,在每次迭代周期仅仅设计这次迭代所要求的产品功能,上次迭代周期中的设计通过Refactoring形成此次的设计。

2001年2月,在美国犹他州的一个滑雪场,17位轻量级软件开发方法的创始人和专家,包括KentBeck(ExtremeProgramming)、AlistairCockburn(CrystalMethodologies)、JimHighsmith(AdaptiveSoftwareDevelopment)等等,共同了“TheManifestoforAgileSoftwareDevelopment”(敏捷软件开发宣言)。这表明,在软业经历了无数次的项目失败之后,人们开始反思软件开发的工程特性,反思计划和控制的有效性,反思过去对于不确定性的态度和反应。敏捷终于为这个行业,以及这个行业中的一些人所认识、理解和推崇。

与会者之一MartineFowler在其后来的文章“TheNewMethodology”中这样解释重量级、轻量级和敏捷:

轻量级与重量级的差异来自于人们对两种方法的文档数量的直观感受,即轻量级方法较少产生和依赖于庞大的文档,但这只是一个表面现象;在诸多的轻量级方法之间存在着很多相通的地方,敏捷更恰当的表达了这些轻量级方法的最根本之处。首先,敏捷强调适应,而非预测。重量级方法花费大量的人力物力,试图制订详细的计划来指导长期的工作,而一旦情况变化,那么计划就不再适用。因此本质上重量级方法是抵制变化的,而敏捷方法则强调适应变化。其次,敏捷方法以人为中心,而非以流程为中心(即以事为中心)。敏捷方法强调软件开发应顺乎本心(workwithpeople''''snature),软件开发应带来乐趣。

敏捷流程(AgileProcess)汲取众多轻量级方法的“精华”,更加强调对变化的适应和对人性的关注。除了上面介绍的XP以外,其他知名的敏捷流程包括:

1.Crystal

Cystal事实上不是一种开发方法,而是一系列的方法。因为Crystal的发明人AlistairCockburn认为,不同类型的项目需要采用不同的方法。AlistairCockburn从两个维度来划分项目,一是项目规模,以人数计算;二是产品发生错误的后果,以严重性计算。

Crystal方法集也形成于90年代,当时,Cockburn接受了IBM的任务去写一些关于开发方法的东西。相对而言,Crystal的个人色彩要淡些,因为它不仅来源于Cockburn的个人经验,而且也来源于Cockburn走访的很多不同的项目;而Cockburn本人也较为思想开放,乐于接受“异见”。

在以人为导向上,Crystal和其他敏捷方法有些差异。在Cockburn看来,自由是人之本性,要人遵守纪律总是有难度的;因此,要在工作生产率和流程的纪律性之间作一权衡。流程要易于遵照执行,而这是以牺牲生产率为代价的。Cockburn认为,XP的流程规范仍太复杂和难于执行,而采用Crystal虽然生产率不如XP,但开发人员更乐于采用。

Cystal也强调在每个迭代后的Review,并以此进行Cystal方法的自身改进。

2.ASD

ASD(AdaptiveSoftwareDevelopment)的发明人JimHighsmith本来是一个传统开发方法的工作者,他有多年的预测型方法的研究、教学和实施经验,但后来,他发现这些预测型方法根本就存在很大缺陷,尤其不适合当前的软件业务。

ASD强调开发方法的适应性(Adaptive),这一思想来源于复杂系统的混沌理论。ASD不象其他方法那样有很多具体的实践做法,它更侧重为ASD的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。

3.SCRUM

SCRUM同样也包括了很多具体做法,这些做法并无多少特别之处,但多数有一个“怪异”的名称。比如,SCRUM将开发过程划分为30天的迭代周期,每个迭代周期叫做一个Sprint;每天有一个15分钟的短会,用来决定第二天的任务安排,这样的短会就叫做scrum。

SCRUM较为有特色的,是它特别强调开发队伍和管理层的交流协作。每天,开发队伍都会向管理层汇报进度,如果有问题,也会向管理层要求帮助解决。

4.FDD

FDD(FeatureDrivenDevelopment)的发明人是JeffDeLuca和PeterCoad。FDD在OO社区较为人所知。

FDD定义了5个流程,分别是DevelopanOverallModel、BuildaFeaturesList、PlanbyFeature、DesignbyFeature和BuildbyFeature。其中前3个流程是在项目开始就进行的,而后两个则出现在每次迭代周期中。FDD的迭代周期是两周。每个流程被划分为不同的任务和相应的验证标准。

软件管理范文第4篇

随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。我公司是西安一家中型软件企业,在公司中已经实行了项目管理制度,软件项目管理是整个项目管理中的一个重要组成部分。

从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。

软件开发不同于其他产品的制造,软件的整个过程都是设计过程(没有制造过程);另外,软件开发不需要使用大量的物质资源,而主要是人力资源;并且,软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。基于上述特点,软件项目管理与其他项目管理相比,有很大的独特性。

二、软件项目管理的组织模式

软件项目可以是一个单独的开发项目,也可以与产品项目组成一个完整的软件产品项目。如果是订单开发,则成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目(负责市场调研和销售),组成软件产品项目组。

公司实行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小组、项目评审小组和软件产品项目组。

1、项目管理委员会

项目管理委员会是公司项目管理的最高决策机构,一般由公司总经理、副总经理组成。主要职责如下:

(1)依照项目管理相关制度,管理项目;

(2)监督项目管理相关制度的执行;

(3)对项目立项、项目撤消进行决策;

(4)任命项目管理小组组长、项目评审委员会主任、项目组组长.

2、项目管理小组

项目管理小组对项目管理委员会负责,一般由公司管理人员组成。主要职责如下:

(1)草拟项目管理的各项制度;

(2)组织项目阶段评审;

(3)保存项目过程中的相关文件和数据;

(4)为优化项目管理提出建议。

3、项目评审小组

项目评审小组对项目管理委员会负责,可下设开发评审小组和产品评审小组,一般由公司技术专家和市场专家组成。主要职责如下:

(1)对项目可行性报告进行评审;

(2)对市场计划和阶段报告进行评审;

(3)对开发计划和阶段报告进行评审;

(4)项目结束时,对项目总结报告进行评审。

4、软件产品项目组

软件产品项目组对项目管理委员会负责,可下设软件项目组和产品项目组。软件项目组和产品项目组分别设开发经理和产品经理。成员一般由公司技术人员和市场人员构成。主要职责是:根据项目管理委员会的安排具体负责项目的软件开发和市场调研及销售工作。

三、软件项目管理的内容

从软件工程的角度讲,软件开发主要分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、安装及维护阶段。不论是作坊式开发,还是团队协作开发,这六个阶段都是不可缺少的。

根据公司实际情况,公司在进行软件项目管理时,重点将软件配置管理、软件质量管理、软件风险管理及开发人员管理四方面内容导入软件开发的整个阶段。

在八十年代初,著名软件工程专家B.W.Boehm总结出了软件开发时需遵循的七条基本原则,同样,我们在进行软件项目管理时,也应该遵循这七条原则。它们是:

(1)用分阶段的生命周期计划严格管理;

(2)坚持进行阶段评审;

(3)实行严格的产品控制;

(4)采用现代程序设计技术;

(5)结果应能够清楚地审查;

(6)开发小组地人员应该少而精;

(7)承认不断改进软件工程实践地必要性。

四、编写《软件项目计划书》

项目组成立的第一件事是编写《软件项目计划书》,在计划书中描述开发日程安排、资源需求、项目管理等各项情况的大体内容。计划书主要向公司各相关人员发放,使他们大体了解该软件项目的情况。对于计划书的每个内容,都应有相应具体实施手册,这些手册是供项目组相关成员使用的。

《软件项目计划书》一般应该包括下述内容:

1.引言

1.1计划的目的

1.2项目的范围和目标

1.2.1范围描述

1.2.2主要功能

1.2.3性能

1.2.4管理和技术约束

2.项目估算

2.1使用的历史数据

2.2使用的评估技术

2.3工作量、成本、时间估算

3.风险管理战略

3.1风险识别

3.2有关风险的讨论

3.3风险管理计划

3.3.1风险计划

3.3.2风险监视

3.3.3风险管理

4.日程

4.1项目工作分解结构

4.2时限图(甘特图)

4.3资源表

5.项目资源

5.1人员

5.2硬件和软件

5.3特别资源

6.人员组织

6.1组织结构

6.2管理报告

7.跟踪和控制机制

7.1质量保证和控制

7.2变化管理和控制

8.附录

五、软件配置管理

是否进行配置管理与软件的规模有关,软件的规模越大,配置管理就显得越重要。软件配置管理简称SCM(SoftwareConfigurationManagement的缩写),是在团队开发中,标识、控制和管理软件变更的一种管理。配置管理的使用取决于项目规模和复杂性以及风险水平。

1、目前软件开发中面临的问题

。在有限的时间、资金内,要满足不断增长的软件产品质量要求;

。开发的环境日益复杂,代码共享日益困难,需跨越的平台增多;

。程序的规模越来越大;

。软件的重用性需要提高;

。软件的维护越来越困难。

2、软件配置管理应提供的功能

在ISO9000.3中,对配置管理系统的功能作了如下描述:

。唯一地标识每个软件项的版本;

。标识共同构成一完整产品的特定版本的每一软件项的版本;

。控制由两个或多个独立工作的人员同时对一给定软件项的更新;

。控制由两个或多个独立工作的人员同时对一给定软件项的更新;

。按要求在一个或多个位置对复杂产品的更新进行协调;

。标识并跟踪所有的措施和更改;这些措施和更改是在从开始直到放行期间,由于更改请求或问题引起的。

3、版本管理

软件配置管理分为版本管理、问题跟踪和建立管理三个部分,其中版本管理是基础。版本管理应完成以下主要任务:

。建立项目;

。重构任何修订版的某一项或某一文件;

。利用加锁技术防止覆盖;

。当增加一个修订版时要求输入变更描述;

。提供比较任意两个修订版的使用工具;

。采用增量存储方式;

。提供对修订版历史和锁定状态的报告功能;

。提供归并功能;

。允许在任何时候重构任何版本;

。权限的设置;

。晋升模型的建立;

。提供各种报告。

4、配置管理软件PVCS6.0

PVCS6.0是一套非常优秀的配置管理软件,它能够实现配置管理中的各项要求,并且能和多种流行开发平台集成,为配置管理提供了很大的方便。

六、软件质量管理

随着软件开发的规模越来越大,软件的质量问题显得越来越突出。软件质量的控制不单单是一个软件测试问题,在软件开发的所有阶段都应该引入质量管理。我公司除加强了国家标准"信息技术软件生存期过程"(GB/T8566--1995)的规范管理外,还积极为通过ISO9000.3做准备。

1、软件质量保证计划

在进行软件开发前,需要有一个《软件质量保证计划》。目前较常用的是ANSI/IEEESTOL

730--1984,983--1986标准,包括以下内容:

1.计划目的

2.参考文献

3.管理

3.1.组织

3.2.任务

3.3.责任

4.文档

4.1.目的

4.2.要求的软件工程文档

4.3.其他文档

5.标准和约定

5.1.目的

5.2.约定

6.评审和审计

6.1.目的

6.2.评审要求

6.2.1.软件需求的评审

6.2.2.设计评审

6.2.3.软件验证和确认评审

6.2.4.功能评审

6.2.5.物理评审

6.2.6.内部过程评审

6.2.7.管理评审

7.测试

8.问题报告和改正活动

9.工具、技术和方法

10.媒体控制

11.供应者控制

12.记录、收集、维护和保密

13.培训

14.风险管理

2、质量管理的基本原则

。控制所有过程的质量;

。过程控制的出发点是预防不合格;

。质量管理的中心任务是建立并实施文件化的质量体系;

。持续的质量改进;

。有效的质量体系应满足顾客和组织内部双方的需要和利益;

。定期评价质量体系;

。搞好质量管理关键在于领导。

3、软件质量因素

正确性:系统满足规格说明和用户目标的程度,即,在预定环境下能正确地完成预期功能的程度。

健壮性:在硬件发生故障、输入的数据无效或操作错误等意外环

境下,系统能做出适当响应的程度。

效率:为了完成预定的功能,系统需要的计算资源的多少。

完整性(安全性):对未经授权的人使用软件或数据的企图,系统能过控制(禁止)的程度。

可用性:系统在完成预定应该完成的功能时另人满意的程度。

风险:按预定的成本和进度把系统开发出来,并且为用户所满意的概率。

可理解性:理解和使用该系统的容易程度。

可维修性:诊断和改正在运行现场发现的错误所需要的工作量的大小。

灵活性(适应性):修改或改进正在运行的系统需要的工作量的多少。

可测试性:软件容易测试的程度。

可移植性:把程序从一种硬件配置和(或)软件系统环境转移到另一种配置和环境时,需要的工作量多少。有一种定量度量的方法是:用原来程序设计和调试的成本除移植时需用的费用。

可再用性:再其他应用中该程序可以被再次使用的程度(或范围)。

互运行性:把该系统和另一个系统结合起来需要的工作量的多少。

4、软件评审

软件评审并不是在软件开发完毕后进行评审,而是在软件开发的各个阶段都要进行评审。因为在软件开发的各个阶段都可能产生错误,如果这些错误不及时发现并纠正,会不断地扩大,最后可能导致开

发的失败。下面这组数据可以清楚的看出前期的错误对后期的影响。

软件评审是相当重要的工作,也是目前国内开发最不重视的工作。

(1)评审目标

。发现任何形式表现的软件功能、逻辑或实现方面的错误;

。通过评审验证软件的需求;

。保证软件按预先定义的标准表示;

。已获得的软件是以统一的方式开发的;

。使项目更容易管理。

(2)评审过程

A、召开评审会议:一般应有3至5人参加,会前每个参加者做好准备,评审会每次一般不超过2小时。

B、会议结束使必须做出以下决策之一:接受该产品,不需做修改;由于错误严重,拒绝接受;暂时接受该产品。

C、评审报告与记录;所提出的问题都要进行记录,在评审会结束前产生一个评审问题表,另外必须完成评审简要报告。

(3)评审准则

。评审产品,而不是评审设计者(不能使设计者有任何压力);

。会场要有良好的气氛;

。建立议事日程并维持它(会议不能脱离主题);

。限制争论与反驳(评审会不是为了解决问题,而是为了发现问题;

。指明问题范围,而不是解决提到的问题;

。展示记录(最好有黑板,将问题随时写在黑板上);

。限制会议人数和坚持会前准备工作;

。对每个被评审的产品要尽力评审清单(帮助评审人员思考);

。对每个正式技术评审分配资源和时间进度表;

。对全部评审人员进行必要的培训;

。及早地对自己地评审做评审(对评审准则的评审)。

5、ISO9000.3软件质量认证体系

ISO9000.3是ISO9000质量体系认证中关于计算机软件质量管理和质量保证标准部分。它从管理职责、质量体系、合同评审、设计控制、文件和资料控制、采购、顾客提供产品的控制、产品标识和可追溯性、过程控制、检验和试验、检验/测量和试验设备的控制、检验和试验状态、不合格品的控制、纠正和预防措施、搬运/贮存/包装/防护和交付、质量记录的控制、内部质量审核、培训、服务、统计系统等二个方面对软件质量进行了要求。

6、测试

软件测试是软件开发的一个重要环节,同时也是软件质量保证的一个重要环节。所谓测试就是用已知的输入在已知环境中动态地执行系统(或系统的部件)。测试一般包括单元测试、模块测试、集成测试和系统测试。如果测试结果与预期结果不一致,则很可能是发现了系统中的错误,测试过程中将产生下述基本文档:

(1)测试计划:确定测试范围、方法、和需要的资源等。

(2)测试过程:详细描述和每个测试方案有关的测试步骤和数据(包括测试数据及预期的结果)。

(3)测试结果:把每次测试运行的结果归入文档,如果运行出错,则应产生问题报告,并且必须经过调试解决所发现的问题。测试结果:把每次测试运行的结果归入文档,如果运行出错,则应产生问题报告,并且必须经过调试解决所发现的问题。

七、软件风险管理

软件项目管理存在着风险,如果我们提前重视风险,并且有所防范,就可以最大限度减少风险的发生。进行风险管理是有效的手段。

1、风险的分类

根据风险内容,我们可以将风险分为项目风险(成本提高,时间延长等)、技术风险(技术不成熟等)、商业风险(销售问题等)、战略风险(公司的经营战略发生了变化)、管理风险(公司管理人员是否成熟等)、预算风险(预算是否准确等)等。

另外,我们还可以将风险分为已知风险(如员工离职等)、可预报风险(从以往经验得出可能有风险的)和不可预知风险。

2、风险的识别

风险识别的有效方法是建立风险项目检查表。主要涉及以下几方面检查:

。产品规模风险检查

。业务影响风险检查

。与客户相关的风险检查

。过程风险检查

。技术风险检查

。开发环境风险检查

。与人员的模式和经验有关的风险检查

3、风险评估

风险评估主要从下面七个方面进行:

。发生的可能性

。发生的结果(影响)

。建立一个尺度表示风险可能性(如,极罕见、罕见、普通、可能、极可能)

。描述风险带来的后果

。估计对产品和项目的影响

。确定风险评估的正确性

。根据影响排定有限队列

另外,要对每个风险的表现、范围、时间做出尽量准确的判断。

4、风险的评价

对风险的评价主要依据三个因素:风险描述、风险概率和风险影响。从成本、进度及性能三个方面对风险进行评价。确定项目的中止点,在中止点出再一次进行风险评价。

5、风险的驾驭和监控

风险的驾驭与监控主要要靠管理者的经验来实施。如,某开发人员的离职概率是0.7,离职后会对项目造成一定的影响,则该风险驾驭和监控的策略如下:

。与在职人员协商,确定流动原因。

。在项目开始前,把环节这些流动原因的工作列入风险驾驭计划。

。项目开始时,作好人是会流动的准备,采取一些措施确保人员一旦离开时,项目仍能继续。

。制定文档标准,并建立一种机制,保证文档及时产生。

。对所有工作进行细微详审,使更多人能够按计划进度完成自己的工作。

。对每个关键性技术人员培养后备人员。

在考虑风险成本之后,决定是否采用上述策略。

八、人员管理

1、对项目经理的要求

。能够使小组每个成员都能发挥能力

。有一定的组织能力

。能够使小组美味成员有成就感

。有提出解决问题方案的能力

。对问题的理解有一定的深度

。要能让成员知道软件质量的重要性

2、人员的通讯方式

(1)正式非个人方式,如正式会议等;

(2)正式个人之间交流,如成员之间的正式讨论等(一般不形成决议);

(3)非正式个人之间交流,如个人之间的自由交流等;

(4)电子通讯,如E-MAIL(电子邮件)、BBS(电子公告板系统)等;

(5)成员网络,如成员与小组之外或公司之外有经验的相关人员进行交流;

在实践中发现,(5)的通讯效率最高,其次是(1)。

软件管理范文第5篇

随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。我公司是西安一家中型软件企业,在公司中已经实行了项目管理制度,软件项目管理是整个项目管理中的一个重要组成部分。

从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。

软件开发不同于其他产品的制造,软件的整个过程都是设计过程(没有制造过程);另外,软件开发不需要使用大量的物质资源,而主要是人力资源;并且,软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。基于上述特点,软件项目管理与其他项目管理相比,有很大的独特性。

二、软件项目管理的组织模式

软件项目可以是一个单独的开发项目,也可以与产品项目组成一个完整的软件产品项目。如果是订单开发,则成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目(负责市场调研和销售),组成软件产品项目组。

公司实行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小组、项目评审小组和软件产品项目组。

1、项目管理委员会

项目管理委员会是公司项目管理的最高决策机构,一般由公司总经理、副总经理组成。主要职责如下:

(1)依照项目管理相关制度,管理项目;

(2)监督项目管理相关制度的执行;

(3)对项目立项、项目撤消进行决策;

(4)任命项目管理小组组长、项目评审委员会主任、项目组组长.

2、项目管理小组

项目管理小组对项目管理委员会负责,一般由公司管理人员组成。主要职责如下:

(1)草拟项目管理的各项制度;

(2)组织项目阶段评审;

(3)保存项目过程中的相关文件和数据;

(4)为优化项目管理提出建议。

3、项目评审小组

项目评审小组对项目管理委员会负责,可下设开发评审小组和产品评审小组,一般由公司技术专家和市场专家组成。主要职责如下:

(1)对项目可行性报告进行评审;

(2)对市场计划和阶段报告进行评审;

(3)对开发计划和阶段报告进行评审;

(4)项目结束时,对项目总结报告进行评审。

4、软件产品项目组

软件产品项目组对项目管理委员会负责,可下设软件项目组和产品项目组。软件项目组和产品项目组分别设开发经理和产品经理。成员一般由公司技术人员和市场人员构成。主要职责是:根据项目管理委员会的安排具体负责项目的软件开发和市场调研及销售工作。

三、软件项目管理的内容

从软件工程的角度讲,软件开发主要分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、安装及维护阶段。不论是作坊式开发,还是团队协作开发,这六个阶段都是不可缺少的。

根据公司实际情况,公司在进行软件项目管理时,重点将软件配置管理、软件质量管理、软件风险管理及开发人员管理四方面内容导入软件开发的整个阶段。

在八十年代初,著名软件工程专家B.W.Boehm总结出了软件开发时需遵循的七条基本原则,同样,我们在进行软件项目管理时,也应该遵循这七条原则。它们是:

(1)用分阶段的生命周期计划严格管理;

(2)坚持进行阶段评审;

(3)实行严格的产品控制;

(4)采用现代程序设计技术;

(5)结果应能够清楚地审查;

(6)开发小组地人员应该少而精;

(7)承认不断改进软件工程实践地必要性。

四、编写《软件项目计划书》

项目组成立的第一件事是编写《软件项目计划书》,在计划书中描述开发日程安排、资源需求、项目管理等各项情况的大体内容。计划书主要向公司各相关人员发放,使他们大体了解该软件项目的情况。对于计划书的每个内容,都应有相应具体实施手册,这些手册是供项目组相关成员使用的。《软件项目计划书》一般应该包括下述内容:

1.引言

1.1计划的目的

1.2项目的范围和目标

1.2.1范围描述

1.2.2主要功能

1.2.3性能

1.2.4管理和技术约束

2.项目估算

2.1使用的历史数据

2.2使用的评估技术

2.3工作量、成本、时间估算

3.风险管理战略

3.1风险识别

3.2有关风险的讨论

3.3风险管理计划

3.3.1风险计划

3.3.2风险监视

3.3.3风险管理

4.日程

4.1项目工作分解结构

4.2时限图(甘特图)

4.3资源表

5.项目资源

5.1人员

5.2硬件和软件

5.3特别资源

6.人员组织

6.1组织结构

6.2管理报告

7.跟踪和控制机制

7.1质量保证和控制

7.2变化管理和控制

8.附录

五、软件配置管理

是否进行配置管理与软件的规模有关,软件的规模越大,配置管理就显得越重要。软件配置管理简称SCM(SoftwareConfigurationManagement的缩写),是在团队开发中,标识、控制和管理软件变更的一种管理。配置管理的使用取决于项目规模和复杂性以及风险水平。

1、目前软件开发中面临的问题

。在有限的时间、资金内,要满足不断增长的软件产品质量要求;

。开发的环境日益复杂,代码共享日益困难,需跨越的平台增多;

。程序的规模越来越大;

。软件的重用性需要提高;

。软件的维护越来越困难。

2、软件配置管理应提供的功能

在ISO9000.3中,对配置管理系统的功能作了如下描述:

。唯一地标识每个软件项的版本;

。标识共同构成一完整产品的特定版本的每一软件项的版本;

。控制由两个或多个独立工作的人员同时对一给定软件项的更新;

。控制由两个或多个独立工作的人员同时对一给定软件项的更新;

。按要求在一个或多个位置对复杂产品的更新进行协调;

。标识并跟踪所有的措施和更改;这些措施和更改是在从开始直到放行期间,由于更改请求或问题引起的。

3、版本管理

软件配置管理分为版本管理、问题跟踪和建立管理三个部分,其中版本管理是基础。版本管理应完成以下主要任务:

。建立项目;

。重构任何修订版的某一项或某一文件;

。利用加锁技术防止覆盖;

。当增加一个修订版时要求输入变更描述;

。提供比较任意两个修订版的使用工具;

。采用增量存储方式;

。提供对修订版历史和锁定状态的报告功能;

。提供归并功能;

。允许在任何时候重构任何版本;

。权限的设置;

。晋升模型的建立;

。提供各种报告。

4、配置管理软件PVCS6.0

PVCS6.0是一套非常优秀的配置管理软件,它能够实现配置管理中的各项要求,并且能和多种流行开发平台集成,为配置管理提供了很大的方便。

六、软件质量管理

随着软件开发的规模越来越大,软件的质量问题显得越来越突出。软件质量的控制不单单是一个软件测试问题,在软件开发的所有阶段都应该引入质量管理。我公司除加强了国家标准"信息技术软件生存期过程"(GB/T8566--1995)的规范管理外,还积极为通过ISO9000.3做准备。

1、软件质量保证计划

在进行软件开发前,需要有一个《软件质量保证计划》。目前较常用的是ANSI/IEEESTOL

730--1984,983--1986标准,包括以下内容:

1.计划目的

2.参考文献

3.管理

3.1.组织

3.2.任务

3.3.责任

4.文档

4.1.目的

4.2.要求的软件工程文档

4.3.其他文档

5.标准和约定

5.1.目的

5.2.约定

6.评审和审计

6.1.目的

6.2.评审要求

6.2.1.软件需求的评审

6.2.2.设计评审

6.2.3.软件验证和确认评审

6.2.4.功能评审

6.2.5.物理评审

6.2.6.内部过程评审

6.2.7.管理评审7.测试

8.问题报告和改正活动

9.工具、技术和方法

10.媒体控制

11.供应者控制

12.记录、收集、维护和保密

13.培训

14.风险管理

2、质量管理的基本原则

。控制所有过程的质量;

。过程控制的出发点是预防不合格;

。质量管理的中心任务是建立并实施文件化的质量体系;

。持续的质量改进;

。有效的质量体系应满足顾客和组织内部双方的需要和利益;

。定期评价质量体系;

。搞好质量管理关键在于领导。

3、软件质量因素

正确性:系统满足规格说明和用户目标的程度,即,在预定环境下能正确地完成预期功能的程度。

健壮性:在硬件发生故障、输入的数据无效或操作错误等意外环

境下,系统能做出适当响应的程度。

效率:为了完成预定的功能,系统需要的计算资源的多少。

完整性(安全性):对未经授权的人使用软件或数据的企图,系统能过控制(禁止)的程度。

可用性:系统在完成预定应该完成的功能时另人满意的程度。

风险:按预定的成本和进度把系统开发出来,并且为用户所满意的概率。

可理解性:理解和使用该系统的容易程度。

可维修性:诊断和改正在运行现场发现的错误所需要的工作量的大小。

灵活性(适应性):修改或改进正在运行的系统需要的工作量的多少。

可测试性:软件容易测试的程度。

可移植性:把程序从一种硬件配置和(或)软件系统环境转移到另一种配置和环境时,需要的工作量多少。有一种定量度量的方法是:用原来程序设计和调试的成本除移植时需用的费用。

可再用性:再其他应用中该程序可以被再次使用的程度(或范围)。

互运行性:把该系统和另一个系统结合起来需要的工作量的多少。

4、软件评审

软件评审并不是在软件开发完毕后进行评审,而是在软件开发的各个阶段都要进行评审。因为在软件开发的各个阶段都可能产生错误,如果这些错误不及时发现并纠正,会不断地扩大,最后可能导致开

发的失败。下面这组数据可以清楚的看出前期的错误对后期的影响。

软件评审是相当重要的工作,也是目前国内开发最不重视的工作。

(1)评审目标

。发现任何形式表现的软件功能、逻辑或实现方面的错误;

。通过评审验证软件的需求;

。保证软件按预先定义的标准表示;

。已获得的软件是以统一的方式开发的;

。使项目更容易管理。

(2)评审过程

A、召开评审会议:一般应有3至5人参加,会前每个参加者做好准备,评审会每次一般不超过2小时。

B、会议结束使必须做出以下决策之一:接受该产品,不需做修改;由于错误严重,拒绝接受;暂时接受该产品。

C、评审报告与记录;所提出的问题都要进行记录,在评审会结束前产生一个评审问题表,另外必须完成评审简要报告。

(3)评审准则

。评审产品,而不是评审设计者(不能使设计者有任何压力);

。会场要有良好的气氛;

。建立议事日程并维持它(会议不能脱离主题);

。限制争论与反驳(评审会不是为了解决问题,而是为了发现问题;

。指明问题范围,而不是解决提到的问题;

。展示记录(最好有黑板,将问题随时写在黑板上);

。限制会议人数和坚持会前准备工作;

。对每个被评审的产品要尽力评审清单(帮助评审人员思考);

。对每个正式技术评审分配资源和时间进度表;

。对全部评审人员进行必要的培训;

。及早地对自己地评审做评审(对评审准则的评审)。

5、ISO9000.3软件质量认证体系

ISO9000.3是ISO9000质量体系认证中关于计算机软件质量管理和质量保证标准部分。它从管理职责、质量体系、合同评审、设计控制、文件和资料控制、采购、顾客提供产品的控制、产品标识和可追溯性、过程控制、检验和试验、检验/测量和试验设备的控制、检验和试验状态、不合格品的控制、纠正和预防措施、搬运/贮存/包装/防护和交付、质量记录的控制、内部质量审核、培训、服务、统计系统等二个方面对软件质量进行了要求。6、测试

软件测试是软件开发的一个重要环节,同时也是软件质量保证的一个重要环节。所谓测试就是用已知的输入在已知环境中动态地执行系统(或系统的部件)。测试一般包括单元测试、模块测试、集成测试和系统测试。如果测试结果与预期结果不一致,则很可能是发现了系统中的错误,测试过程中将产生下述基本文档:

(1)测试计划:确定测试范围、方法、和需要的资源等。

(2)测试过程:详细描述和每个测试方案有关的测试步骤和数据(包括测试数据及预期的结果)。

(3)测试结果:把每次测试运行的结果归入文档,如果运行出错,则应产生问题报告,并且必须经过调试解决所发现的问题。测试结果:把每次测试运行的结果归入文档,如果运行出错,则应产生问题报告,并且必须经过调试解决所发现的问题。

七、软件风险管理

软件项目管理存在着风险,如果我们提前重视风险,并且有所防范,就可以最大限度减少风险的发生。进行风险管理是有效的手段。

1、风险的分类

根据风险内容,我们可以将风险分为项目风险(成本提高,时间延长等)、技术风险(技术不成熟等)、商业风险(销售问题等)、战略风险(公司的经营战略发生了变化)、管理风险(公司管理人员是否成熟等)、预算风险(预算是否准确等)等。

另外,我们还可以将风险分为已知风险(如员工离职等)、可预报风险(从以往经验得出可能有风险的)和不可预知风险。

2、风险的识别

风险识别的有效方法是建立风险项目检查表。主要涉及以下几方面检查:

。产品规模风险检查

。业务影响风险检查

。与客户相关的风险检查

。过程风险检查

。技术风险检查

。开发环境风险检查

。与人员的模式和经验有关的风险检查

3、风险评估

风险评估主要从下面七个方面进行:

。发生的可能性

。发生的结果(影响)

。建立一个尺度表示风险可能性(如,极罕见、罕见、普通、可能、极可能)

。描述风险带来的后果

。估计对产品和项目的影响

。确定风险评估的正确性

。根据影响排定有限队列

另外,要对每个风险的表现、范围、时间做出尽量准确的判断。

4、风险的评价

对风险的评价主要依据三个因素:风险描述、风险概率和风险影响。从成本、进度及性能三个方面对风险进行评价。确定项目的中止点,在中止点出再一次进行风险评价。

5、风险的驾驭和监控

风险的驾驭与监控主要要靠管理者的经验来实施。如,某开发人员的离职概率是0.7,离职后会对项目造成一定的影响,则该风险驾驭和监控的策略如下:

。与在职人员协商,确定流动原因。

。在项目开始前,把环节这些流动原因的工作列入风险驾驭计划。

。项目开始时,作好人是会流动的准备,采取一些措施确保人员一旦离开时,项目仍能继续。

。制定文档标准,并建立一种机制,保证文档及时产生。

。对所有工作进行细微详审,使更多人能够按计划进度完成自己的工作。

。对每个关键性技术人员培养后备人员。

在考虑风险成本之后,决定是否采用上述策略。

八、人员管理

1、对项目经理的要求

。能够使小组每个成员都能发挥能力

。有一定的组织能力

。能够使小组美味成员有成就感

。有提出解决问题方案的能力

。对问题的理解有一定的深度

。要能让成员知道软件质量的重要性

2、人员的通讯方式

(1)正式非个人方式,如正式会议等;

(2)正式个人之间交流,如成员之间的正式讨论等(一般不形成决议);

(3)非正式个人之间交流,如个人之间的自由交流等;

(4)电子通讯,如E-MAIL(电子邮件)、BBS(电子公告板系统)等;

(5)成员网络,如成员与小组之外或公司之外有经验的相关人员进行交流;

友情链接