第一篇:怎样做好软件项目风险计划
怎样做好软件项目风险计划
风险评价是识别并分析潜在风险区域的过程。可以通过列举通常的软件项目风险因素以使风险识别更加明析。制作风险评估表是识别风险的好办法,在风险评估表中我们统计特定风险对项目可能造成的潜在后果,风险计划的要素有:
风险描述 对于风险情况的介绍。
可能性 风险发生的可能性。风险不是必然要发生的,如果一个对项目存在危害的事件是必然要发生的,那这个事件就不能作为风险。对于风险可能性的标识有助于对那些高可能性的风险投入更大的关注。
严重性 风险如果发生对于项目的危害程度。
危害值 一个综合考虑可能性和严重型后对风险的一个评估,这个评估反应了风险应该被关注的程度。
对策 对策分为两个部分:一是对于采取预防措施以阻止风险的发生,另一方面也要考虑如果风险发生后需要采取什么措施。这两方面的计划构成了完整的风险对策。
触发标志 风险是一种可能性,并且制定风险主要的出发点是预防它,但也要考虑到风险发生后情况。对于风险发生后的应对策略,需要争取一定的提前时间以启动必要的各项工作,设立触发标志是为设立一个判别标识,在该触发标志所标明的条件具备时,说明风险已经越来越可能成为现实了。
风险责任人 风险预防和跟踪需要有人的参与,在风险计划中责任明确是一个重要的原则,对每一个列入了视线的风险都要指定对风险预防和跟踪负责的人员。
风险计划不是一个静止的文件,它应该随着项目状况的变化而变化。所以在任何项目中,风险管理都必须被作为一个日常的正式活动列入项目工作计划,成为项目管理人员的一个重要工作。在下一节风险跟踪中将对风险的动态变化作出更详细的阐述。
在标定风险可能性和危害时,重要的是清楚地标明风险之间重要性的相对比较,所以采取一个简明的标注标准十分重要。
第二篇:软件项目风险管控
推介导读:
此论文从需求调研、开发、实施以及项目收尾四个项目阶段,列举了11种典型的常见风险,并给出了这些风险的详细和切实可行的风险规避措施。这些风险和措施实用、实在,值得做为公司项目管理财富库进行收藏,值得各项目组借鉴。
软件项目风险管控
1.什么是软件项目风险
软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。软件项目风险会影响项目计划的实现,如果项目风险变成现实,就有可能影响项目的进度,增加项目的成本,甚至使软件项目目标不能实现。如果对项目进行风险管理,就可以最大限度的减少风险的发生。2.项目风险及应对措施
软件项目的生命周期可以分为四个阶段,即需求调研阶段、开发阶段、实施阶段、收尾阶段,软件开发过程可分为:需求分析、设计、编码、测试等几个过程,在软件项目的每个阶段、每个过程都可能存在风险。下面结合项目谈谈各阶段碰到的风险。
2.1.需求调研阶段 1. 风险描述:
调研涉众没有足够的时间参与调研活动,严重影响调研进度与调研质量。应对措施:
开始调研时,召集公司的高层领导、各部门主管及参与调研的关键涉众召开调研启动会,让所有涉众都重视本次调研活动,努力配合调研工作。在调研启动会上明确调研涉众的职责;
在制定调研计划时,应事前与相关涉众做好沟通工作,努力减少调研计划与日常工作安排的冲突;
相关人员通过移交日常工作等办法,有效保证相关涉众的调研时间; 调研人员设计调研提纲时,要有针对性,尽量努力提高调研效率。2. 风险描述: 调研成果不能真实和完整地体现管理层意图与企业经营管理需要。应对措施:
通过客户方的多方协调,让管理层要重视调研人员的访谈,客观而真实地回答访谈问题;
管理层调研提纲在设计时,不仅要做到有针对性,而且要有全面性; 调研人员在访谈管理层,要善于挖掘与总结管理层的管理意图与经营思路; 管理层的意图应宣达到所有涉众,努力做到在繁多的需求中,把握住管理思路的主线。
3. 风险描述:
在某些需求议题上,不同部门、不同单位可能会有不同的理解与要求,且可能会各自坚持自己的意见,无法达成共识。应对措施:
通过管理层宣传与教育,让相关涉众认识到业务流程标准化的重要性; 由总部成立业务专家小组,在出现需求不一致,提出权威的解决方案; 调研人员凭借自身的流程分析能力,尽量定义出能兼容不同需求的解决方案。 对确实无法达成共识的需求,可以采用暂时搁置争议办法,以保证进度。4. 风险描述:
调研成果偏离调研涉众的需求 应对措施:
调研时认真聆听调研涉众的需求,然后理解及复述调研的需求;
调研完成后,在当天整理出涉众备忘录、调研涉众的交付物清单,梳理并绘制流程图;
第二天安排足够的时间,与调研涉众核对涉众备忘录、流程图、交付物清单,并得到调研涉众的书面确认;
每家分公司的所有调研成果最终都要有分公司领导的书面签字确认。2.2.开发阶段 1. 风险描述: 错误理解需求分析,导致开发成果与用户需求偏离。应对措施:
准确规范的文字表达模式;
系统分析师与开发人员保持密切沟通,必要时召开会议向全体开发小组成员介绍需求的详细情况;
功能开发完后,系统分析师检查功能实现情况及效果; 2. 风险描述:
项目周期短导致开发周期短,需要把SQL翻译为ORACLE,而且要统一平台整合船代与货代系统,开发任务艰巨,可能导致开发无法如期开发完成的风险。应对措施:
增加项目组熟练开发人员; 分析、设计、开发、测试迭代进行;
在客户方搭建测试环境,开发完成部分功能后,发布到客户方测试环境,让关键用户一起验证,及时纠正偏离的需求。
2.3.实施阶段 1. 风险描述:
基础数据收集不完整、不及时,导致系统UAT效果不好。应对措施:
尽早整理所有需要收集的基础信息表,发给各公司系统负责人,并告知收集的期限,收集的期限必须要预留缓冲时间。
收集到基础信息表要必须在UAT开始前导入系统的UAT环境。
基础数据维护是一个漫长的过程,建议UAT的基础数据按正确的数据进行维护,上线时直接导入正式环境。
2. 风险描述:
UAT效果不好,导致无法如期上线。应对措施:
与公司领导、各业务部门主管了解公司的业务线,制定UAT计划时必须涵盖公司的所有业务线;
与UAT用户共同制定各业务线的录入数据量,每天或者每周统计数据录入情况,汇报相关项目干系人。统计清单中必须有计划录入数据量、实际录入数据量、完成百分比情况;
若录入数据量比计划数据量偏差比较大时,必须及时召开例会并让公司领导一起参与会议。
UAT时,必须让关键用户清楚知道整个操作流程及功能点,必须要有功能清单。3. 风险描述:
UAT后上线还是有一大堆问题,上线效果非常差,没达到用户的预期。应对措施:
UAT后建议安排系统并行,根据各业务线的情况制定并行计划。例如:有的业务线数据量比较少可以采取完全并行的模式,有的业务线数据量比较大可以采取并行50%的方式;
让所有的最终用户参与系统的并行;
并行阶段每天或者每周统计数据录入情况,汇报相关项目干系人。统计清单中必须有计划录入数据量、实际录入数据量、完成百分比情况;
4. 风险描述:
UAT阶段都没什么问题,上线时因某个功能原因推迟上线。应对措施:
项目启动时,严格制定上线标准;
UAT阶段要有详细的功能清单、EDI清单、打印套版、接口清单,让关键用户知道试用的内容;
在UAT期间,必须要让关键用户对这些清单进行试用,并规定问题反馈的期限; 上线一周前收集关键用户对这些清单的签字确认,至少预留一周的缓冲时间。2.4.收尾阶段 1. 风险描述:
系统的验收是整个项目过程中最难的里程碑点,系统不可能做到完全没有问题,客户可以找一些理由迟迟不验收系统。应对措施:
签订商务合同的时候,规定验收的期限,例如:上线后多长时间完成验收工作; 验收标准正常情况下是按需求规格说明书及合同规定的交付物进行验收,但是项目周期紧,开始写的需求规格说明书到了系统验收阶段往往偏离比较大。双方项目经理及相关领导讨论制定系统需求收集期限,并对需求进行划分,划分出合同范围内验收前解决的需求清单,合同范围外验收前解决的需求清单。针对这些需求进行集中处理。
双方对合同交付物的理解可能会存在一定的偏差,也需要双方项目经理及相关领导进行详细的沟通,确定验收时的不违背合同的交付物清单,项目组集中收集这些信息。
3.总结
软件项目风险贯穿整个项目的始终,风险无处不在,风险无时不有,风险并不可怕,可怕的是没识别风险,可怕的是没有风险管控。
第三篇:项目风险管理计划
项目风险管理计划
风险管理计划(Risk management plan)
目录
[隐藏]
1 项目风险管理计划概述 2 项目风险管理计划的制
订依据
3 项目风险管理计划制定的方法
4 项目风险管理计划制定的成果
[编辑]
项目风险管理计划概述
项目风险管理计划就是制定风险识别、风险分析、风险减缓策略,确定风险管理的职责,为项目的风险管理提供完整的行动纲领。是确定如何在项目中进行风险管理活动,以及制定项目风险管理计划的过程。
本计划主要针对项目开发涉及到的风险,包括在项目开发周期过程中可能出现的风险以及项目实施过程中外部环境的变化可能引起的风险等进行评估。
[编辑]
项目风险管理计划的制订依据
⑴项目许可。
⑵风险管理政策。
⑶规定的任务和责任。
⑷利害关系人的风险容忍度。
⑸风险管理计划模板。
⑹WBS.[编辑]
项目风险管理计划制定的方法
风险管理计划制定的方法通常是采用项目风险管理计划会议的形式。项目经理、项目团队领导以及任何相关的责任者与实施者等都在需要参与之列。所使用的工具是项目风险管理模板,将模板具体应用到当前项目之中。
[编辑]
项目风险管理计划制定的成果
项目风险管理计划的成果是风险管理计划文件,它的内容包括以下方面。
⑴方法:确定可能采用的风险管理方法、工具和数据信息来源。针对项目的不同阶段、不同局部、不同的评估情况,可以灵活采用不
同的方法策略。⑵岗位职责:确定风险管理活动中每一类别行动的具体领导者、支持者及行动小组成员,明确各自的岗位职责。
⑶时间:明确在整个项目的生命周期中实施风险管理的周期或频率,包括对于风险管理过程各个运行阶段、过程进行评价、控制和修正的时间点或周期。
⑷预算:确定用于项目风险管理的预算。
⑸评分与说明:明确定义风险分析的评分标准并加以准确的说明,有利于保证执行过程的连续性和决策的及时性。
⑹承受度:明确对于何种风险将由谁以何种方式采取何种应对行动。作为计划有效性的衡量基准,可以避免项目相关各方对计划理解的歧义。
⑺报告格式:明确风险管理各流程中应报告和沟通的内容、范围、渠道和方式,使项目团队内部、与上级主管和投资方之间、以及与协作方之间的信息沟通顺畅、及时、准确。
⑻跟踪:为了有效地对当前项目进行管理、监察、审计,以及积累经验、吸取教训,应该将风险及对其采取的管理行为的方方面面都记录下来,归档留存。记录应该按照统一规定的文档格式和要求。
第四篇:软件项目风险评估报告范文
软件项目风险评估报告范文
本文主要针对软件开发涉及到的风险,包括在软件开发周期过程中可能出现的风险以及软件实施过程中外部环境的变化可能引起的风险等进行评估。在文中对所提到的风险都一一做了详细的分析,并提出了相应的风险回避措施。
由于风险是在项目开始之后才开始对项目的开发起负面的影响,所以风险分析的不足,或是风险回避措施不得力,都很有可能造成软件开发的失败。风险分析是在事前的一种估计,凭借一定的技术手段和丰富的经验,基本能够对项目的风险做出比较准确的估计,经过慎重的考虑提出可行的风险回避措施,是避免损失的重要环节。
主要风险综述
任何软件的开发,其主要风险均来自于两个方面,一是软件管理,二是软件体系结构。软件产品的开发是工程技术与个人创作的有机结合。软件开发是人的集体智慧按照工程化的思想进行发挥的过程。软件管理是保证软件开发工程化的手段。软件体系结构的合理程度是取决于集体智慧发挥的程度和经验的运用。
软件管理将影响到软件的下列因素:
软件是否能够按工期的要求完成:软件的工期常常是制约软件质量的主要因素。很多情况下,软件开发商在工期的压力下,放弃文档的书写,组织,结果在工程的晚期,大量需要文档进行协调的工作时,致使软件进度越来越慢。软件的开发不同于其他的工程,在不同的工程阶段,需要的人员不同,需要配合的方面也不同,所有这些都需要行之有效的软件管理的保证。
软件需求的调研是否深入透彻:软件的需求是确保软件正确反映用户的对软件使用的重要的文档,探讨软件需求是软件开发的起始点,但软件的需求却会贯穿整个软件的开发过程,软件管理需要对软件需求的变化进行控制和管理,一方面保证软件需求的变化不至于造成软件工程的一改再改而无法按期完成;同时又要保证开发的软件能够为用户所接受。软件管理需要控制软件的每个阶段进行的成度,不能过细造成时间的浪费,也不能过粗,造成软件缺陷。
软件的实现技术手段是否能够同时满足性能要求:软件的构造需要对软件构造过程中的使用的各种技术进行评估。软件构造技术通常是这样:最成熟的技术,往往不能体现最好的软件性能;先进的技术,往往人员对其熟悉程度不够,对其中隐含的缺陷不够明了。软件管理在制定软件开发计划和定义里程碑时必须考虑这些因素,并做出合理的权衡决策。
软件质量体系是否能够被有效地保证:任何软件管理忽略软件质量监督环节都将对软件的生产构成巨大的风险。而制定卓有成效的软件质量监督体系,是任何软件开发组织必不可少的。软件质量保证体系是软件开发成为可控制过程的基础,也是开发商和用户进行交流的基础和依据。
软件体系结构影响到软件的如下质量因素:
软件的可伸缩性:是指软件在不进行修改的情况下适应不同的工作环境的能力。由于硬件的飞速发展和软件开发周期较长的矛盾,软件升级的需要显得非常迫切。如果软件的升级和移植非常困难,软件的生命期必定很短,使得化费巨大人力物力开发出的软件系统只能在低性能的硬件或网络上运行,甚至被废弃不用,造成巨大的浪费。
软件的可维护性:软件的维护也是必然的事情,为了保证软件的较长使用寿命,软件就必须适应不断的业务需求变化,根据业务需求的变化对软件进行修改。修改的成本和周期都直接和软件的体系结构相关。一个好的软件体系结构可以尽可能地将系统的变化放在系统的配置上,即软件代码无需修改,仅仅是在系统提供的配置文件中进行适当的修改,然后软件重新加载进入运行状态,就完成了系统部分功能和性能要求的变化。对于重大改动,需要打开源代码进行修改的,也仅仅是先继承原先的代码,然后用新的功能接替原先的调用接口,这样将把软件改动量减小到最低。
软件易用性:软件的易用性是影响软件是否被用户接受的关键之关键因素。在软件产品中,设计复杂,功能强大而完备,但因为操作繁复而被搁置者屡见不鲜。造成的主要原因在于缺乏软件开发中软件体系结构的宏观把握能力。另一方面,缺乏有效的手段进行软件需求的确定和对潜在需求的挖掘。
项目管理的风险
软件项目管理的风险来自于软件项目自身的特点:
软件产品不可见:开发的进展以及软件的质量是否符合要求难于度量,从而使软件的管理难于把握。
软件的生产过程不存在绝对正确的过程形式:可以肯定的是不同的软件开发项目应当采用不同的或者说是有针对性的软件开发过程,而真正合适的软件开发过程是在软件项目的开发完成才能明了的。因此项目开发之初只能根据项目的特点和开发经验进行选择,并在开发过程中不断的调整。
大型软件项目往往是“一次性”的。以往的经验可以被借鉴的地方不多。回避和控制软件管理风险的唯一办法就是设立监督制度,项目开发中任何较大的决定都必须有主要技术环节甚至是由用户参与进行的。在该项目中项目监督由项目开发中的质量监督组来实施。
一般参与软件开发的人员(包括管理者和技术人员)和其责任进行分析如下:
参与者
项目经理1人
主要职责:进行全局把握,侧重于项目的商务方面,充当项目组同客户正式交流的接口环节。
项目负责人1人
主要职责:制定项目开发计划和开发策略,参与项目核心系统的分析设计,同时努力保证开发计划的按时完成和开发策略的真正贯彻落实。
领域专家1或2人
主要职责:在软件分析阶段帮助分析人员界定系统实现边界和实现的功能,对特定检测点进行算法审核,同时对测试策略和软件操作界面提出参考意见。
质量监督组1或2人
主要职责:编制软件质量控制计划,并负责落实;控制必要文档的生产,通过文档,监督项目实施过程中软件的质量,并产生软件质量报告,提请项目经理和项目负责人审阅;对于项目中出现的质量问题,主持召开质量复审会议。
系统分析员1或2人
主要职责:协同项目负责人进行软件系统的分析和设计工作,书写软件需求分析和系统设计相关文档。在软件实现阶段进行测试策略的编制和对性能测试的指导。
程序员2或3人
主要职责:协助分析人员进行详细设计,和软件系统的代码实现,并进行适当的白盒测试。
测试员2或3人
主要职责:已经实现的软件组件、构件或系统进行正确性验证测试,整合后的系统的性能测试等。书写测试报告和测试统计报告提请质量监督组复审。
技术支持2或3人
主要职责:协同系统分析人员听取用户需求,对需求分析进行参考性复审。协同测试人员进行测试,书写操作手册和在线帮助,在项目交付用户之后进行跟踪服务。
文档组1或2人
主要职责:对各部门产生的文档进行格式规范、版本编号和控制、存档文件的检索;协助质量监督组进行软件质量监督。通过适当的人员配备和职责划分,能有效的降低软件开发在后期的失控的可能性,和软件对关键人员的依赖性。
软件技术风险
本系统拟订采用的两个重大的软件技术是面向对象的构件和基于微软的COM组件技术。组件和构件技术都是为了提高软件的可靠性和软件的可扩展性而采用的技术手段。从技术成熟度上说不存在风险,但为了实现良好的软件构架和稳定的组件,与传统开发方法比较,有相当的多的额外工作需要做,这会给项目工期带来较大的风险。
回避和控制这部分风险的办法是在项目进行的过程不断的对该阶段进行风险估计和指定有效的里程碑。同时采用“范例”方式提高开发人员的构件组件的分析识别能力,适时调整构件组件的数量和粒度。
软件过程风险
软件需求阶段的风险
软件的开发是以用户的需求开始,在大多数情况下,用户需求要靠软件开发方诱导才能保证需求的完整,再以书面的形式形成《用户需求》这一重要的文档。需求分析更多的是开发方确认需求的可行性和一致性的过程,在此阶段需要和用户进行广泛的交流和确认。需求和需求分析的任何疏漏造成的损失会在软件系统的后续阶段被一级一级地放大,因此本阶段的风险最大。
设计阶段的风险
设计的主要目的在于软件的功能正确的反映了需求。可见需求的不完整和对需求分析的不完整和错误,在设计阶段被成倍地放大。设计阶段的主要任务是完成系统体系结构的定义,使之能够完 成需求阶段的即定目标;另一方面也是检验需求的一致性和需求分析的完整性和正确性。
设计本身的风险主要来自于系统分析人员。分析人员在设计系统结构时过于定制,系统的可扩展性较弱,会给后期维护带来巨大的负担,和维护成本的激增。对用户来说系统的使用比例会有明显的折扣,甚至造成软件寿命过短。反之,软件结构的过于灵活和通用,必然引起软件实现的难度增加,系统的复杂度会上升,这又会在实现和测试阶段带来风险,系统的稳定性也会受到影响。从另一个角度上看,业务规则的变化,或说用户需求和将来软件运行环境的变化都是必然的情况,目前软件设计的所谓“通用性”是否就能很好的适应将来需求和运行环境的的变化,是需要认真折衷的。这种折中也蕴涵着很大的风险。
设计阶段蕴涵的另一种风险来自于设计文档。文档的不健全不仅会造成实现阶段的困难,更会在后期的测试和维护造成灾难性的后果,例如根本无法对软件系统进行版本升级,甚至是发现的简单错误都无从更正。
实现阶段引入的风险
软件的实现从某种意义上讲是软件代码的生产。原代码本身也是文档的一部分,同时它又是将来运行于计算机系统之上的实体。源代码书写的规范性,可读性是该阶段的主要风险来源。规范的代码生产会把属于程序员自身个性风格的成分引入代码的比例降到最低限度,从而减小了系统整合的风险。
维护阶段的风险
软件维护包含两个主要的维护阶段,一个是软件生产完毕到软件试运行阶段的维护,这个阶段是一种实环境的测试性维护,其主要目的是发现在测试环境中不能或未发现的问题;另一个阶段是当软件的运行不再能适应用户业务需求或是用户的运行环境(包括硬件平台,软件环境等)时进行的软件维护,具体可能是软件的版本升级或软件移植等。
从软件工程的角度看,软件维护费用约占总费用的55%~70%,系统越大,该费用越高。对系统可维护性的轻视是大型软件系统的最大风险。在软件漫长的运营期内,业务规则肯定会不断发展,科学的解决此问题的做法是不断对软件系统进行版本升级,在确保可维护性的前提下逐步扩展系统。
在软件系统运营期间,主要的风险源自于技术支持体系的无效运转。科学的方法是有一支客户支持队伍不断收集运行中发现的问题,并将解决问题的方法传授给软件系统的所有使用者。
项目风险表
风险评估表中所提到的风险是一般项目在开发过程中都客观存在的,表中所列出的风险系数是指在不对风险进行深入的分析和有效的规避的情况下,该风险项发生的概率。比如软件产品的设计目标是运行十年,体系结构不合理的风险是40%的含义是,如果不对系统进行深入的分析,未采用最合理的软件技术进行设计,则生产出一个不具备可扩展性的软件系统的概率是40%。由于客户公司是仍将不断发展的,在十年内,该软件系统都能满足公司运营要求的可能性极低。由此而可能产生的灾难性后果是公司在业务发展的时候,必须重新开发新系统。
向客户提供风险评估,是按照国际惯例进行的例行操作,一方面让客户对潜在的风险有更充分的了解,表明公司诚信 为本的态度,另一方面也用以鞭策和激励全体开发人员严格执行开发标准,共同监督项目开发过程,努力避免风险的发生。
第五篇:【资料】软件项目风险评估报告
软件项目风险评估报告
本文主要针对软件开发涉及到的风险,包括在软件开发周期过程中可能出现的风险以及软件实施过程中外部环境的变化可能引起的风险等进行评估。在文中对所提到的风险都一一做了详细的分析,并提出了相应的风险回避措施。由于风险是在项目开始之后才开始对项目的开发起负面的影响,所以风险分析的不足,或是风险回避措施不得力,都很有可能造成软件开发的失败。风险分析是在事前的一种估计,凭借一定的技术手段和丰富的经验,基本能够对项目的风险做出比较准确的估计,经过慎重的考虑提出可行的风险回避措施,是避免损失的重要环节。主要风险综述
任何软件的开发,其主要风险均来自于两个方面,一是软件管理,二是软件体系结构。软件产品的开发是工程技术与个人创作的有机结合。软件开发是人的集体智慧按照工程化的思想进行发挥的过程。软件管理是保证软件开发工程化的手段。软件体系结构的合理程度是取决于集体智慧发挥的程度和经验的运用。
1.1 软件管理将影响到软件的下列因素:
软件是否能够按工期的要求完成:软件的工期常常是制约软件质量的主要因素。很多情况下,软件开发商在工期的压力下,放弃文档的书写,组织,结果在工程的晚期,大量需要文档进行协调的工作时,致使软件进度越来越慢。软件的开发不同于其他的工程,在不同的工程阶段,需要的人员不同,需要配合的方面也不同,所有这些都需要行之有效的软件管理的保证。软件需求的调研是否深入透彻:软件的需求是确保软件正确反映用户的对软件使用的重要的文档,探讨软件需求是软件开发的起始点,但软件的需求却会贯穿整个软件的开发过程,软件管理需要对软件需求的变化进行控制和管理,一方面保证软件需求的变化不至于造成软件工程的一改再改而无法按期完成;同时又要保证开发的软件能够为用户所接受。软件管理需要控制软件的每个阶段进行的成度,不能过细造成时间的浪费,也不能过粗,造成软件缺陷。
软件的实现技术手段是否能够同时满足性能要求:软件的构造需要对软件构造过程中的使用的各种技术进行评估。软件构造技术通常是这样:最成熟的技术,往往不能体现最好的软件性能;先进的技术,往往人员对其熟悉程度不够,对其中隐含的缺陷不够明了。软件管理在制定软件开发计划和定义里程碑时必须考虑这些因素,并做出合理的权衡决策。
软件质量体系是否能够被有效地保证:任何软件管理忽略软件质量监督环节都将对软件的生产构成巨大的风险。而制定卓有成效的软件质量监督体系,是任何软件开发组织必不可少的。软件质量保证体系是软件开发成为可控制过程的基础,也是开发商和用户进行交流的基础和依据。
1.2 软件体系结构影响到软件的如下质量因素:
软件的可伸缩性:是指软件在不进行修改的情况下适应不同的工作环境的能力。由于硬件的飞速发展和软件开发周期较长的矛盾,软件升级的需要显得非常迫切。如果软件的升级和移植非常困难,软件的生命期必定很短,使得化费巨大人力物力开发出的软件系统只能在低性能的硬件或网络上运行,甚至被废弃不用,造成巨大的浪费。软件的可维护性:软件的维护也是必然的事情,为了保证软件的较长使用寿命,软件就必须适应不断的业务需求变化,根据业务需求的变化对软件进行修改。修改的成本和周期都直接和软件的体系结构相关。一个好的软件体系结构可以尽可能地将系统的变化放在系统的配置上,即软件代码无需修改,仅仅是在系统提供的配置文件中进行适当的修改,然后软件重新加载进入运行状态,就完成了系统部分功能和性能要求的变化。对于重大改动,需要打开源代码进行修改的,也仅仅是先继承原先的代码,然后用新的功能接替原先的调用接口,这样将把软件改动量减小到最低。
软件易用性:软件的易用性是影响软件是否被用户接受的关键之关键因素。在软件产品中,设计复杂,功能强大而完备,但因为操作繁复而被搁置者屡见不鲜。造成的主要原因在于缺乏软件开发中软件体系结构的宏观把握能力。另一方面,缺乏有效的手段进行软件需求的确定和对潜在需求的挖掘。项目管理的风险
软件项目管理的风险来自于软件项目自身的特点:
软件产品不可见:开发的进展以及软件的质量是否符合要求难于度量,从而使软件的管理难于把握。软件的生产过程不存在绝对正确的过程形式:可以肯定的是不同的软件开发项目应当采用不同的或者说是有针对性的软件开发过程,而真正合适的软件开发过程是在软件项目的开发完成才能明了的。因此项目开发之初只能根据项目的特点和开发经验进行选择,并在开发过程中不断的调整。
大型软件项目往往是“一次性”的。以往的经验可以被借鉴的地方不多。回避和控制软件管理风险的唯一办法就是设立监督制度,项目开发中任何较大的决定都必须有主要技术环节甚至是由用户参与进行的。在该项目中项目监督由项目开发中的质量监督组来实施。
一般参与软件开发的人员(包括管理者和技术人员)和其责任进行分析如下: 参与者 项目经理1人
主要职责:进行全局把握,侧重于项目的商务方面,充当项目组同客户正式交流的接口环节。项目负责人1人
主要职责:制定项目开发计划和开发策略,参与项目核心系统的分析设计,同时努力保证开发计划的按时完成和开发策略的真正贯彻落实。领域专家1或2人
主要职责:在软件分析阶段帮助分析人员界定系统实现边界和实现的功能,对特定检测点进行算法审核,同时对测试策略和软件操作界面提出参考意见。质量监督组1或2人
主要职责:编制软件质量控制计划,并负责落实;控制必要文档的生产,通过文档,监督项目实施过程中软件的质量,并产生软件质量报告,提请项目经理和项目负责人审阅;对于项目中出现的质量问题,主持召开质量复审会议。系统分析员1或2人
主要职责:协同项目负责人进行软件系统的分析和设计工作,书写软件需求分析和系统设计相关文档。在软件实现阶段进行测试策略的编制和对性能测试的指导。程序员2或3人
主要职责:协助分析人员进行详细设计,和软件系统的代码实现,并进行适当的白盒测试。测试员2或3人
主要职责:已经实现的软件组件、构件或系统进行正确性验证测试,整合后的系统的性能测试等。书写测试报告和测试统计报告提请质量监督组复审。技术支持2或3人
主要职责:协同系统分析人员听取用户需求,对需求分析进行参考性复审。协同测试人员进行测试,书写操作手册和在线帮助,在项目交付用户之后进行跟踪服务。
文档组1或2人
主要职责:对各部门产生的文档进行格式规范、版本编号和控制、存档文件的检索;协助质量监督组进行软件质量监督。通过适当的人员配备和职责划分,能有效的降低软件开发在后期的失控的可能性,和软件对关键人员的依赖性。软件技术风险
本系统拟订采用的两个重大的软件技术是面向对象的构件和基于微软的COM组件技术。组件和构件技术都是为了提高软件的可靠性和软件的可扩展性而采用的技术手段。从技术成熟度上说不存在风险,但为了实现良好的软件构架和稳定的组件,与传统开发方法比较,有相当的多的额外工作需要做,这会给项目工期带来较大的风险。
回避和控制这部分风险的办法是在项目进行的过程不断的对该阶段进行风险估计和指定有效的里程碑。同时采用“范例”方式提高开发人员的构件组件的分析识别能力,适时调整构件组件的数量和粒度。软件过程风险 软件需求阶段的风险
软件的开发是以用户的需求开始,在大多数情况下,用户需求要靠软件开发方诱导才能保证需求的完整,再以书面的形式形成《用户需求》这一重要的文档。需求分析更多的是开发方确认需求的可行性和一致性的过程,在此阶段需要和用户进行广泛的交流和确认。需求和需求分析的任何疏漏造成的损失会在软件系统的后续阶段被一级一级地放大,因此本阶段的风险最大。设计阶段的风险
设计的主要目的在于软件的功能正确的反映了需求。可见需求的不完整和对需求分析的不完整和错误,在设计阶段被成倍地放大。设计阶段的主要任务是完成系统体系结构的定义,使之能够完成需求阶段的即定目标;另一方面也是检验需求的一致性和需求分析的完整性和正确性。
设计本身的风险主要来自于系统分析人员。分析人员在设计系统结构时过于定制,系统的可扩展性较弱,会给后期维护带来巨大的负担,和维护成本的激增。对用户来说系统的使用比例会有明显的折扣,甚至造成软件寿命过短。反之,软件结构的过于灵活和通用,必然引起软件实现的难度增加,系统的复杂度会上升,这又会在实现和测试阶段带来风险,系统的稳定性也会受到影响。从另一个角度上看,业务规则的变化,或说用户需求和将来软件运行环境的变化都是必然的情况,目前软件设计的所谓“通用性”是否就能很好的适应将来需求和运行环境的的变化,是需要认真折衷的。这种折中也蕴涵着很大的风险。
设计阶段蕴涵的另一种风险来自于设计文档。文档的不健全不仅会造成实现阶段的困难,更会在后期的测试和维护造成灾难性的后果,例如根本无法对软件系统进行版本升级,甚至是发现的简单错误都无从更正。实现阶段引入的风险软件的实现从某种意义上讲是软件代码的生产。原代码本身也是文档的一部分,同时它又是将来运行于计算机系统之上的实体。源代码书写的规范性,可读性是该阶段的主要风险来源。规范的代码生产会把属于程序员自身个性风格的成分引入代码的比例降到最低限度,从而减小了系统整合的风险。维护阶段的风险
软件维护包含两个主要的维护阶段,一个是软件生产完毕到软件试运行阶段的维护,这个阶段是一种实环境的测试性维护,其主要目的是发现在测试环境中不能或未发现的问题;另一个阶段是当软件的运行不再能适应用户业务需求或是用户的运行环境(包括硬件平台,软件环境等)时进行的软件维护,具体可能是软件的版本升级或软件移植等。
从软件工程的角度看,软件维护费用约占总费用的55%~70%,系统越大,该费用越高。对系统可维护性的轻视是大型软件系统的最大风险。在软件漫长的运营期内,业务规则肯定会不断发展,科学的解决此问题的做法是不断对软件系统进行版本升级,在确保可维护性的前提下逐步扩展系统。
在软件系统运营期间,主要的风险源自于技术支持体系的无效运转。科学的方法是有一支客户支持队伍不断收集运行中发现的问题,并将解决问题的方法传授给软件系统的所有使用者。项目风险表
风险评估表中所提到的风险是一般项目在开发过程中都客观存在的,表中所列出的风险系数是指在不对风险进行深入的分析和有效的规避的情况下,该风险项发生的概率。比如软件产品的设计目标是运行十年,体系结构不合理的风险是40%的含义是,如果不对系统进行深入的分析,未采用最合理的软件技术进行设计,则生产出一个不具备可扩展性的软件系统的概率是40%。由于客户公司是仍将不断发展的,在十年内,该软件系统都能满足公司运营要求的可能性极低。由此而可能产生的灾难性后果是公司在业务发展的时候,必须重新开发新系统。
向客户提供风险评估,是按照国际惯例进行的例行操作,一方面让客户对潜在的风险有更充分的了解,表明公司诚信为本的态度,另一方面也用以鞭策和激励全体开发人员严格执行开发标准,共同监督项目开发过程,努力避免风险的发生。