- 浏览: 3503290 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
本文档的范围和目的
本文主要针对软件开发涉及到的风险,包括在软件开发周期过程中可能出现的风险以及软件实
施过程中外部环境的变化可能引起的风险等进行评估。在文中对所提到的风险都一一做了详细的分
析,并提出了相应的风险回避措施。
由于风险是在项目开始之后才开始对项目的开发起负面的影响,所以风险分析的不足,或是风
险回避措施不得力,都很有可能造成软件开发的失败。风险分析是在事前的一种估计,凭借一定的
技术手段和丰富的经验,基本能够对项目的风险做出比较准确的估计,经过慎重的考虑提出可行的
风险回避措施,是避免损失的重要环节。
主要风险综述
任何软件的开发,其主要风险均来自于两个方面,一是软件管理,二是软件体系结构。软件产
品的开发是工程技术与个人创作的有机结合。软件开发是人的集体智慧按照工程化的思想进行发挥
的过程。软件管理是保证软件开发工程化的手段。软件体系结构的合理程度是取决于集体智慧发挥
的程度和经验的运用。
软件管理将影响到软件的下列因素:
软件是否能够按工期的要求完成:软件的工期常常是制约软件质量的主要因素。很多情况下,
软件开发商在工期的压力下,放弃文档的书写,组织,结果在工程的晚期,大量需要文档进行协调
的工作时,致使软件进度越来越慢。软件的开发不同于其他的工程,在不同的工程阶段,需要的人
员不同,需要配合的方面也不同,所有这些都需要行之有效的软件管理的保证。
软件需求的调研是否深入透彻:软件的需求是确保软件正确反映用户的对软件使用的重要的文
档,探讨软件需求是软件开发的起始点,但软件的需求却会贯穿整个软件的开发过程,软件管理需
要对软件需求的变化进行控制和管理,一方面保证软件需求的变化不至于造成软件工程的一改再改
而无法按期完成;同时又要保证开发的软件能够为用户所接受。软件管理需要控制软件的每个阶段
进行的成度,不能过细造成时间的浪费,也不能过粗,造成软件缺陷。
软件的实现技术手段是否能够同时满足性能要求:软件的构造需要对软件构造过程中的使用的
各种技术进行评估。软件构造技术通常是这样:最成熟的技术,往往不能体现最好的软件性能;先
进的技术,往往人员对其熟悉程度不够,对其中隐含的缺陷不够明了。软件管理在制定软件开发计
划和定义里程碑时必须考虑这些因素,并做出合理的权衡决策。
软件质量体系是否能够被有效地保证:任何软件管理忽略软件质量监督环节都将对软件的生产
构成巨大的风险。而制定卓有成效的软件质量监督体系,是任何软件开发组织必不可少的。软件质
量保证体系是软件开发成为可控制过程的基础,也是开发商和用户进行交流的基础和依据。
软件体系结构影响到软件的如下质量因素:
软件的可伸缩性:是指软件在不进行修改的情况下适应不同的工作环境的能力。由于硬件的飞
速发展和软件开发周期较长的矛盾,软件升级的需要显得非常迫切。如果软件的升级和移植非常困
难,软件的生命期必定很短,使得化费巨大人力物力开发出的软件系统只能在低性能的硬件或网络
上运行,甚至被废弃不用,造成巨大的浪费。
软件的可维护性:软件的维护也是必然的事情,为了保证软件的较长使用寿命,软件就必须
适应不断的业务需求变化,根据业务需求的变化对软件进行修改。修改的成本和周期都直接和软件
的体系结构相关。一个好的软件体系结构可以尽可能地将系统的变化放在系统的配置上,即软件代
码无需修改,仅仅是在系统提供的配置文件中进行适当的修改,然后软件重新加载进入运行状态,
就完成了系统部分功能和性能要求的变化。对于重大改动,需要打开源代码进行修改的,也仅仅是
先继承原先的代码,然后用新的功能接替原先的调用接口,这样将把软件改动量减小到最低。
软件易用性:软件的易用性是影响软件是否被用户接受的关键之关键因素。在软件产品中,设
计复杂,功能强大而完备,但因为操作繁复而被搁置者屡见不鲜。造成的主要原因在于缺乏软件开
发中软件体系结构的宏观把握能力。另一方面,缺乏有效的手段进行软件需求的确定和对潜在需求
的挖掘。
项目管理的风险
软件项目管理的风险来自于软件项目自身的特点:
软件产品不可见:开发的进展以及软件的质量是否符合要求难于度量,从而使软件的管理难于
把握。
软件的生产过程不存在绝对正确的过程形式:可以肯定的是不同的软件开发项目应当采用不
同的或者说是有针对性的软件开发过程,而真正合适的软件开发过程是在软件项目的开发完成才能
明了的。因此项目开发之初只能根据项目的特点和开发经验进行选择,并在开发过程中不断的调整
。
大型软件项目往往是"一次性"的。以往的经验可以被借鉴的地方不多。回避和控制软件管理
风险的唯一办法就是设立监督制度,项目开发中任何较大的决定都必须有主要技术环节甚至是由用
户参与进行的。在该项目中项目监督由项目开发中的质量监督组来实施。
一般参与软件开发的人员(包括管理者和技术人员)和其责任进行分析如下:
参与者
项目经理1人
主要职责:进行全局把握,侧重于项目的商务方面,充当项目组同客户正式交流的接口环节。
项目负责人1人
主要职责:制定项目开发计划和开发策略,参与项目核心系统的分析设计,同时努力保证开发
计划的按时完成和开发策略的真正贯彻落实。
领域专家1或2人
主要职责:在软件分析阶段帮助分析人员界定系统实现边界和实现的功能,对特定检测点进行
算法审核,同时对测试策略和软件操作界面提出参考意见。
质量监督组1或2人
主要职责:编制软件质量控制计划,并负责落实;控制必要文档的生产,通过文档,监督项目
实施过程中软件的质量,并产生软件质量报告,提请项目经理和项目负责人审阅;对于项目中出现
的质量问题,主持召开质量复审会议。
系统分析员1或2人
主要职责:协同项目负责人进行软件系统的分析和设计工作,书写软件需求分析和系统设计相
关文档。在软件实现阶段进行测试策略的编制和对性能测试的指导。
程序员2或3人
主要职责:协助分析人员进行详细设计,和软件系统的代码实现,并进行适当的白盒测试。
测试员2或3人
主要职责:已经实现的软件组件、构件或系统进行正确性验证测试,整合后的系统的性能测
试等。书写测试报告和测试统计报告提请质量监督组复审。
技术支持2或3人
主要职责:协同系统分析人员听取用户需求,对需求分析进行参考性复审。协同测试人员进行
测试,书写操作手册和在线帮助,在项目交付用户之后进行跟踪服务。
文档组1或2人
主要职责:对各部门产生的文档进行格式规范、版本编号和控制、存档文件的检索;协助质量
监督组进行软件质量监督。 通过适当的人员配备和职责划分,能有效的降低软件开发在后期的失
控的可能性,和软件对关键人员的依赖性。
软件技术风险
本系统拟订采用的两个重大的软件技术是面向对象的构件和基于微软的COM组件技术。组件和
构件技术都是为了提高软件的可靠性和软件的可扩展性而采用的技术手段。从技术成熟度上说不存
在风险,但为了实现良好的软件构架和稳定的组件,与传统开发方法比较,有相当的多的额外工作
需要做,这会给项目工期带来较大的风险。
回避和控制这部分风险的办法是在项目进行的过程不断的对该阶段进行风险估计和指定有效的
里程碑。同时采用"范例"方式提高开发人员的构件组件的分析识别能力,适时调整构件组件的数量
和粒度。
软件过程风险
软件需求阶段的风险
软件的开发是以用户的需求开始,在大多数情况下,用户需求要靠软件开发方诱导才能保证需
求的完整,再以书面的形式形成《用户需求》这一重要的文档。需求分析更多的是开发方确认需求
的可行性和一致性的过程,在此阶段需要和用户进行广泛的交流和确认。需求和需求分析的任何疏
漏造成的损失会在软件系统的后续阶段被一级一级地放大,因此本阶段的风险最大。
设计阶段的风险
设计的主要目的在于软件的功能正确的反映了需求。可见需求的不完整和对需求分析的不完整
和错误,在设计阶段被成倍地放大。设计阶段的主要任务是完成系统体系结构的定义,使之能够完
成需求阶段的即定目标;另一方面也是检验需求的一致性和需求分析的完整性和正确性。
设计本身的风险主要来自于系统分析人员。分析人员在设计系统结构时过于定制,系统的可扩
展性较弱,会给后期维护带来巨大的负担,和维护成本的激增。对用户来说系统的使用比例会有明
显的折扣,甚至造成软件寿命过短。反之,软件结构的过于灵活和通用,必然引起软件实现的难度
增加,系统的复杂度会上升,这又会在实现和测试阶段带来风险,系统的稳定性也会受到影响。从
另一个角度上看,业务规则的变化,或说用户需求和将来软件运行环境的变化都是必然的情况,目
前软件设计的所谓"通用性"是否就能很好的适应将来需求和运行环境的的变化,是需要认真折衷的
。这种折中也蕴涵着很大的风险。
设计阶段蕴涵的另一种风险来自于设计文档。文档的不健全不仅会造成实现阶段的困难,更会
在后期的测试和维护造成灾难性的后果,例如根本无法对软件系统进行版本升级,甚至是发现的简
单错误都无从更正。
实现阶段引入的风险
软件的实现从某种意义上讲是软件代码的生产。原代码本身也是文档的一部分,同时它又是将
来运行于计算机系统之上的实体。源代码书写的规范性,可读性是该阶段的主要风险来源。规范的
代码生产会把属于程序员自身个性风格的成分引入代码的比例降到最低限度,从而减小了系统整合
的风险。
维护阶段的风险
软件维护包含两个主要的维护阶段,一个是软件生产完毕到软件试运行阶段的维护,这个阶段
是一种实环境的测试性维护,其主要目的是发现在测试环境中不能或未发现的问题;另一个阶段是
当软件的运行不再能适应用户业务需求或是用户的运行环境(包括硬件平台,软件环境等)时进行
的软件维护,具体可能是软件的版本升级或软件移植等。
从软件工程的角度看,软件维护费用约占总费用的55%~70%,系统越大,该费用越高。对系统
可维护性的轻视是大型软件系统的最大风险。在软件漫长的运营期内,业务规则肯定会不断发展,
科学的解决此问题的做法是不断对软件系统进行版本升级,在确保可维护性的前提下逐步扩展系统
。
在软件系统运营期间,主要的风险源自于技术支持体系的无效运转。科学的方法是有一支客户
支持队伍不断收集运行中发现的问题,并将解决问题的方法传授给软件系统的所有使用者。
项目风险表
风险评估表中所提到的风险是一般项目在开发过程中都客观存在的,表中所列出的风险系数是
指在不对风险进行深入的分析和有效的规避的情况下,该风险项发生的概率。比如软件产品的设计
目标是运行十年,体系结构不合理的风险是40%的含义是,如果不对系统进行深入的分析,未采用
最合理的软件技术进行设计,则生产出一个不具备可扩展性的软件系统的概率是40%。由于客户公
司是仍将不断发展的,在十年内,该软件系统都能满足公司运营要求的可能性极低。由此而可能产
生的灾难性后果是公司在业务发展的时候,必须重新开发新系统。
向客户提供风险评估,是按照国际惯例进行的例行操作,一方面让客户对潜在的风险有更充分
的了解,表明公司诚信 为本的态度,另一方面也用以鞭策和激励全体开发人员严格执行开发标准
,共同监督项目开发过程,努力避免风险的发生。
--------------------------------------------------
风险 概率 影响
--------------------------------------------------
规模估计过低 60% 严重的
交付期限太紧张 50% 严重的
用户需求变化频繁 75% 严重的
技术达不到预期效果 30% 轻微的
质量保证体系的措施实施不利 60% 严重的
软件体系结构设计不合理 40% 灾难性的
人员流动 30% 严重的
发表评论
-
Fitnesse使用
2012-05-05 13:27 23494Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2134FitNesse began its life using ... -
单元测试------理论篇
2011-03-12 12:20 1658测试是软件开发的重要 ... -
DbUnit入门实战
2011-03-09 09:13 32707相信做过单元测试的 ... -
一个愚蠢农夫和奶牛的故事-转载
2011-03-07 09:20 1773Ivar Jacobson博士 ... -
Web测试工具Selenium入门心得
2011-02-16 23:50 34702009-02-05 ... -
selenium 和webdriver_入门实践
2011-02-16 23:47 8971我们一直非常强调建立以底层为核心的分层自动化测试 ... -
VPS服务器性能压力测试工具(转载)
2010-12-01 23:35 3270VPS服务器性能 压力测试工具 http_load、webb ... -
软件测试工具英雄榜
2010-08-24 11:12 5031几乎毫无悬念地, ... -
净室软件认证
2010-05-16 22:20 1590软件测试 的统计方 ... -
SVN—patch的应用
2010-03-07 14:43 27341.create patch 使用create ... -
diff和patch十分钟指南
2010-03-07 14:10 2695情景一:你正尝试从代码编译一个软件包,发现有人已经对代码进行了 ... -
patch用法(转)
2010-03-07 14:08 9173首先介绍一下 diff 和 patch 。 ... -
补丁Patch
2010-03-07 14:04 3129补丁Patch是天才程序员、Perl的发明者Larry ... -
开源性能测试工具Curl-Loader
2010-02-28 14:52 4863curl-loader 是一个用C语言 编写的Web 应用 ... -
用 easyb 驱动开发
2009-01-03 22:25 2222长期以来,定义需求 ... -
亲身体验行为驱动开发
2009-01-03 22:17 7107开始学习使用 JBehave 测试驱动的开发(TDD)在实践 ... -
软件测试之测试策略
2009-01-03 22:05 3485第一部分 软件测试 策略基础 为什么要编写测试策 ... -
自动化测试框架模型SAFS
2009-01-03 22:00 2606SAFS(Software A ... -
探索 JUnit 4.4 新特性
2008-12-22 18:34 2109随着当前 Java 开发的越发成熟,Agile 和 T ...
相关推荐
软件项目风险评估报告 软件项目风险评估报告是软件开发过程中不可或缺的一部分,它对软件开发过程中的风险进行评估和分析,并提出了相应的风险回避措施。软件项目风险可以来自于两个方面:软件管理和软件体系结构。...
《软件项目风险评估报告》是IT领域中一个重要的文档,主要关注的是在软件开发过程中可能出现的风险及其管理策略。教育背景下的软件项目风险评估对于培养具备风险意识和技术管理能力的IT专业人才至关重要。以下是对...
软件项目风险评估报告主要关注软件开发周期中可能遇到的风险,以及实施过程中外部环境变化带来的影响。以下是对这些风险的详细分析和应对策略。 首先,软件管理是项目风险的关键来源之一。有效管理软件开发工程化是...
《软件项目风险评估报告》是针对软件开发过程中可能面临的风险进行全面分析和预防策略制定的文档。这份报告关注的焦点在于软件开发的管理风险和软件体系结构的风险,这两大类风险是影响软件项目成功与否的关键因素。...
【软件项目风险评估报告】是IT领域中针对软件开发过程中的风险进行系统分析和规避策略制定的重要文档。软件项目的成功与否很大程度上取决于风险管理的有效性。本报告主要关注两个核心方面:软件管理和软件体系结构,...
《软件项目风险评估报告》是针对软件开发过程中可能面临的风险进行深入分析的文档。软件项目的成功与否往往取决于风险管理的有效性,因为风险一旦发生,可能会对项目的进度、成本和质量产生严重影响。以下是对报告中...
通过对精品资料中的软件项目风险评估报告的详细分析,我们了解到了软件开发项目中可能面临的主要风险及其应对策略。无论是从软件管理的角度还是从软件体系结构的角度来看,风险评估都是保证项目成功的关键步骤。通过...
【资料】软件项目风险评估报告.doc
软件风险评估报告是软件开发过程中的重要文档,用于识别、分析和管理可能影响项目成功的潜在问题。这份报告通常包括对软件开发周期和实施过程中可能遇到的风险的详细分析,以及为应对这些风险提出的策略和措施。 ...
综上所述,软件项目风险管理涉及项目全过程,需要全面考虑各种因素,通过科学的管理方法和工具,降低风险对项目的影响,提高项目成功率。在实际操作中,项目经理应灵活应对,不断优化管理策略,以应对软件开发过程中...
【软件项目风险评估】 软件开发是一项复杂且充满挑战的任务,风险评估是确保项目成功的关键步骤。本报告聚焦于2021年至2022年间软件项目的风险评估,旨在识别和管理潜在问题,以降低软件开发失败的可能性。风险评估...
精品课件
《国家电子政务工程建设项目非涉密信息系统信息安全风险评估报告》是针对国家电子政务工程中非涉密信息系统的安全风险管理的重要文档。这份报告旨在确保在信息化建设过程中,对可能存在的安全风险进行科学、全面的...
数据安全风险评估报告是企业在确保数据安全方面的重要文档,它详尽地分析了组织的数据安全状况,识别潜在的风险,并提出相应的防护措施。本报告模板旨在为初学者提供一个清晰的框架,以帮助他们有效地进行数据安全...
对软件风险管理中非常关键的部分,软件项目风险的评估进行分析,研究了几种定性的且目前比较适用的软件项目风险评估方法。从理论上来说,提出了一套从易到难进行研究的风险评估研究思路和方法;从实践上来讲,为软件...
综上所述,信息化建设风险评估报告是对整个工程项目风险进行全面、深入分析的工具,旨在确保信息化建设的安全性和稳健性。报告内容详实,涵盖了项目概况、风险评估过程、评估对象和资产分析等多个方面,为决策者提供...