软件过程与管理结课报告学生姓名:X X学号:XXXXXXXXXX班号:116122指导教师:***中国地质大学(武汉)信息工程学院在学习完这门课后,我对于软件过程与管理有了一定的理解,下面介绍一下我的心得。
软件过程软件过程是指一套关于项目的阶段、状态、方法、技术和开发、维护软件的人员以及相关Artifacts(计划、文档、模型、编码、测试、手册等)组成。
软件过程是指软件生存周期所涉及的一系列相关过程。
过程是活动的集合;活动是任务的集合;任务要起着把输入进行加工然后输出的作用。
活动的执行可以是顺序的、重复的、并行的、嵌套的或者是有条件地引发的。
软件过程可概括为三类:基本过程类、支持过程类和组织过程类。
基本过程类包括获取过程、供应过程、开发过程、运作过程,维护过程和管理过程。
支持过程类包括文档过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审计过程以及问题解决过程。
组织过程类包括基础设施过程、改进过程以及培训过程。
软件过程主要针对软件生产和管理进行研究。
为了获得满足工程目标的软件,不仅涉及工程开发,而且还涉及工程支持和工程管理。
对于一个特定的项目,可以通过剪裁过程定义所需的活动和任务,并可使活动并发执行。
与软件有关的单位,根据需要和目标,可采用不同的过程、活动和任务。
软件过程是指软件整个生命周期,从需求获取,需求分析,设计,实现,测试,发布和维护一个过程模型。
一个软件过程定义了软件开发中采用的方法,但软件过程还包含该过程中应用的技术——技术方法和自动化工具。
过程定义一个框架,为有效交付软件工程技术,这个框架必须创建。
软件过程构成了软件项目管理控制的基础,并且创建了一个环境以便于技术方法的采用、工作产品(模型、文档、报告、表格等)的产生、里程碑的创建、质量的保证、正常变更的正确管理。
软件过程的成熟等级有五级,分别为初始级,可重复级,定义级,定量管理级,优化级。
(1)在初始级,企业一般不具备稳定的软件开发与维护的环境。
常常在遇到问题的时候,就放弃原定的计划而只专注于编程与测试。
处于这一等级的企业,成功与否在很大程度上决定于有杰出的项目经理与经验丰富的开发团队。
因此,能否雇请到及保有能干的员工成了关键问题。
项目成功与否非常不确定。
虽然产品一般来说是可用的,但是往往有超经费与不能按期完成的问题。
(2)在可重复级,建立了管理软件项目的政策以及为贯彻执行这些政策而定的措施。
基于过往的项目的经验来计划与管理新的项目。
企业实行了基本的管理控制。
符合实际的项目承诺是基于以往项目以及新项目的具体要求而作出的。
项目经理不断监视成本、进度和产品功能,及时发现及解决问题以便实现所作的各项承诺。
通过具体地实施这一级的各个关键过程领域的要求,企业实现了过程的规范化、稳定化。
因而,曾经取得过的成功成为可重复达到的目标。
(3)在定义级,有关软件工程与管理工程的一个特定的、面对整个企业的软件开发与维护的过程的文件将被制订出来。
同时,这些过程是集成到一个协调的整体。
这就称为企业的标准软件过程。
这些标准的过程是用于帮助管理人员与一般成员工作得更有效率。
如果有适当的需要,也可以加以修改。
在这个把过程标准化的努力当中,企业开发出有效的软件工程的各种实践活动。
同时,一个在整个企业内施行的培训方案将确保工作人员与管理人员都具备他们所需要的知识与技能。
非常重要的一点是,项目小组要根据该项目的特点去改编企业的标准软件过程来制订出为本项目而定义的过程。
一个定义得很清楚的过程应当包括:准备妥当的判据,输入,完成工作的标准和步骤,审核的方法,输出和完成的判据。
因为过程被定义得很清楚,因此管理层就能对所有项目的技术过程有透彻的了解。
(4)在定量管理级,企业对产品与过程建立起定量的质量目标,同时在过程中加入规定得很清楚的连续的度量。
作为企业的度量方案,要对所有项目的重要的过程活动进行生产率和质量>一个企业范围的数据库被用于收集与分析来自各项目的过程的数据。
这些度量建立起了一个评价项目的过程与产品的定量的依据。
项目小组可以通过缩小他们的效能表现的偏差使之处于可接受的定量界限之内,从而达到对过程与产品进行控制的目的。
因为过程是稳定的和经过度量,所以在有意外情况发生时,企业能够很快辨别出特殊的原因并加以处理(5)在优化级,整个企业将会把重点放在对过程进行不断的优化。
企业会采取主动去找出过程的弱点与长处,以达到预防缺陷的目标。
同时,分析有关过程的有效性的资料,作出对新技术的成本与收益的分析,以及提出对过程进行修改的建议。
整个企业都致力于探索最佳软件工程实践的创新。
项目小组分析引起缺陷的原因,对过程进行评鉴与改进,以便预防已发生的缺陷再度发生。
同时,也把从中学到的经验教训传授给其他项目。
降低浪费与消耗也是这个等级的一个重点。
处于这一等级的企业的软件过程能力可被归纳为不断的改进与优化。
它们以两种形式进行。
一种是逐渐地提升现存过程,另一种是对技术与方法的创新。
虽然在其他的能力成熟度等级之中,这些活动也可能发生,但是在优化级,技术与过程的改进是作为常规的工作一样,有计划地在管理之下实行的。
软件管理同样,在项目开发过程中,还有一个非常重要的方面,就是软件管理同其他任何工程项目一样,软件项目同样存在一个非常重要的问题,这就是软件管理的问题,而这一问题通常容易被一般的软件开发人员所忽视。
在一般的软件工程资料中所讨论的重点也只是软件开发方法,对软件管理问题大多一笔带过。
在一个小的软件开发项目中也许还无所谓,但一个大型的软件开发项目如果没有优秀的软件管理人员来领导和协调整个项目,其失败的可能性就很大了。
因此有必要引起大家对此问题的重视,这也是本文的目的所在。
作为软件管理人员,应该站在高处来俯瞰整个项目,如果有不识庐山真面目的感觉就不太好了。
有了俯瞰全局的意识这一前提,采用适当的管理技术,项目开展就会容易。
软件项目的管理工作可以分位四个方面:软件项目的计划、软件项目的组织、软件项目的领导和软件项目的控制,下面对这四个方面进行详细的介绍。
软件开发项目的计划包括定义项目的目标,以及达到目标的方法。
他涉及到项目实施的各个环节,带有全局的性质,是战略性的。
计划应力求完备,要考虑到一些未知因素和不确定因素,考虑到可能的修改。
计划应力求准确,尽可能提高所依据的数据的可靠程度。
主要工作集中在软件项目的估算、软件开发成本的估算和软件项目进度安排。
软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出合理估算的框架。
这些估算应在软件项目开始时的一段有限时间内作出,并随着项目的进展进行更新。
软件项目管理过程开始于项目的计划,在做项目计划时,第一项活动是估算。
已经使用的使用技术是时间和工作量的估算。
因为估算是其他项目计划活动的基石,而且项目计划又未软件工程过程提供了工作方向,所以我们不能没有计划就着手开发,否则就会陷入盲目性。
估算本身带有风险,估算资源、成本和项目进度时需要经验、有用的历史信息、足够的定量数据和作定量度量的勇气。
估算的精确程度受到多方面的影响。
首先,项目的复杂性对于增加软件计划的不确定性影响很大,复杂性越高,估算的风险就越高。
复杂性是相对度量的,他与项目参加人员的经验有关,比如如果让搞MIS的项目组去搞操作系统设计显然增加了复杂性。
其次,项目的规模对于估算的精确性和功效的影响也比较大,因为随着软件规模的扩大,软件相同元素之间的相互依赖、相互影响也迅速增加,因而估算时进行问题分解也会变得更加困难。
还有项目的结构化程度也影响项目估算的风险,这里的结构性是指功能分解的简便性和处理信息的层次性,结构化程度提高,进行精确估算的能力就提高,相应风险将减少。
此外,历史信息的有效性也影响估算的风险,在对过去的项目进行这综合的软件度量之后,就可以借用来比较准确地进行估算。
影响估算的因素远不止这些,比如用户需求的频繁变更给估算带来非常大的影响。
估算的依据是软件的范围,包括功能,性能、限制、接口和可靠性。
在估算开始之前,应对软件的功能进行评价,并对其进行适当的细化以便提供更详细的细节。
由于成本和进度的估算都与功能有关,因此常常采用功能分解的办法。
性能的考虑主要包括处理和响应时间的需求。
约束条件则标识外部硬件、可用存储和其他现有系统对软件的限制。
另外软件项目计划还要完成资源估算,包括人力资源、硬件资源和软件资源。
在考虑各种软件开发资源时最重要的是人,必须考虑人员的技术水平、专业、人数以及在开发过程各阶段对各种人员的需要。
硬件资源作为一种工具投入。
软件资源包括各种帮助开发的软件工具,比如数据库等。
工作两估算是最普遍使用的技术。
经过功能分解之后,可以估计出每一个项目任务的分解都需要花费若干人年,总计之后就知道软件项目总体工作量。
下面就是一个示意性工作量估算表。
软件开发成本主要是指软件开发过程所花费的工作量及其相应的代价。
它不同于其他物理产品的成本,它主要包括人的劳动的消耗,人的劳动的消耗所需的代价就是软件产品的开发成本。
开发成本的估算方法有很多种,象简单的代码行技术,任务分解技术,自动估计成本技术,专家判定技术,还有参数方程法,标准值法,以及COCOMO模型法。
其中COCOMO (Constructive Cost Model)模型法是一种精确、易于使用的成本估算方法,该模型按其详细程度分为三级:基本COCOMO模型、中间COCOMO模型和详细COCOMO模型。
软件项目的进度安排主要是考虑软件交付用户使用的这一段开发时间的安排。
进度安排的准确程度可能比成本估计的准确程度更重要。
软件产品可以靠重新定价或者靠大量的销售来弥补成本的增加,但进度安排的落空会导致市场机会的丧失或者用户不满意,而且也会导致成本的增加。
因此在考虑进度安排时要把人员的工作量与花费的时间联系起来,合理分配工作量,利用进度安排的有效分析方法严密监视软件开发的进展情况,以使得软件开发的进度不致被拖延。
在进行进度安排时要考虑的一个主要问题是任务的并行性问题。
当参加项目的人数不止一人是软件开发工作就会出现并行情况。
因为并行任务是同时发生的所以进度计划表必须决定任务之间的从属关系,确定各个任务的先后次序和衔接,确定各个任务完成的持续时间。
另外还应注意关键路径的任务,这样可以确定在进度安排中应保证的重点。
常用的进度安排方法有两种,即甘特图法和工程网络法。
一个软件项目的组织方式主要有两种。
软件项目可以是一个单独的开发项目,也可以与产品项目组成一个完整的软件产品项目。
如果是订单开发,则成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目(负责市场调研和销售),组成软件产品项目组。
公司实行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小组、项目评审小组和软件产品项目组。