【文档说明】软件计划与可行性研究课件.ppt,共(48)页,755.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-50514.html
以下为本文档部分文字说明:
第二章软件计划与可行性研究第1页,共48页。2有这样一个笑话:一个旅客走进硅谷的一家宠物店,浏览展示的宠物。这时,走进一个顾客,对店主说:"我要买一只C猴。"店主点了点头,走到商店一头的兽笼边,抓出一只猴,递给顾客说:"总共5000美
元。"顾客付完款,然后带走了他的猴子。这位旅客非常惊讶,走到店主跟前说:"那只猴子也太贵了!"店主说:"那只猴子能用C编程,非常快,代码紧凑高效,所以值那么多钱。"这时,旅客看到了笼子中的另一只猴子,它标价10000美元。
于是又问:"那只更贵了!它能做什么?"店主回答:"哦,那是一只C++猴;它会面向对象的编程,会用VisualC++,还懂得一点Java,是非常有用的。"旅客又逛了一会儿,发现了第三只猴子,它独占一个笼子,脖子上的标价是50000美元。旅客倒抽一口气,问道
:"那只猴子比其他所有猴子加起来都贵!它究竟能做什么?"店主说:"我们也不知道它究竟能做什么,不过它是做项目顾问出身的。"第2页,共48页。3第3页,共48页。4第二章软件计划与可行性研究在组织管理工作中,为了掌握工
作的主动权,人们针对不同的工作目的要制定不同的工作计划。同样,为了成功的开发软件,也要制定软件开发计划。经验告诉我们,在项目开始以前,要精确地估计软件的工作量是很困难的,一些大型软件项目在总结经验教训时,常常提到计划不周造成的不良影响。例如,对项目所需投入的人力、资金、设备作出错误的估计,而
在工程期限临近时不得不仓促增加,造成系统的一致性差或培训费用的增加,甚至在完工后才发现系统功能上存在着重大问题,软件计划中的错误可能导致软件开发后期问题的急剧膨胀。因此,要对软件项目有一个初步计划,对要解决的主要问题有相应的对策,是软件开发工作必不可少的一步。第4页,共48页。
5第一节软件计划与系统目标的描述1.软件计划作为软件开发阶段的第一步,就是要明确软件项目的性质、目标、开发软件涉及的工作范围、所需资源、经费和应完成的时间进度等内容,以此来制定软件项目的开发计划。即首先经过系统目标的描
述、进行可行性研究、然后进入项目的实施开发阶段。第5页,共48页。61.1软件计划的任务:软件计划阶段有以下任务:(1)确定要开发软件的总体要求与适用范围;(2)描述所开发的软件与外部资源、人员操作与数据的工作关系;(3)确定所需的软硬件支持;(4)对开发的进度、风险、效益与成本作初步估计;(
5)进行系统的可行性分析;(6)确定所开发软件的性能,与原有软硬件的关系及其它关系;(7)列出资源的初步分配计划和系统构成;以上各项常常要考虑多种可能的方案,并从中进行权衡与选择。第6页,共48页。71.2软件计划的内容:软件计划确定软件开发的工作范围、使用的资源
、花费的工作量以及应遵循的进度。软件计划以可行性研究报告为基础,由软件人员和用户共同确立软件的功能与限制,提出软件计划任务书。它是一份简洁的文档资料,是用管理人员、技术人员、用户都能理解的术语来描述的,典型的软件
计划任务书应包括如下四个方面:第7页,共48页。81.2软件计划的内容:软件范围:包括软件的功能、性能、可靠性和与其它系统的接口等问题的描述;功能说明给出整个软件的功能的简短描述,在可能的情况下作进一步分解,提供更多的子功能描述;性能描述包括处理时间的限制,存储容量及与物理特性相关的特点
描述;对功能和性能要同时考虑才能做出正确的估计;不同的性质的软件对可靠性有不同的要求,有些要求采取特殊的技术措施才可能实现;软件要与计算机系统的其他部分进行交互作用,有可能是更大系统的一部分,软件计划应该考虑每一接口界面的性质和复杂程度,确
定对开发资源、成本及进度表的影响;第8页,共48页。91.2软件计划的内容:环境资源:包括软件、硬件和人,每种资源均应从资源的描述、对资源的要求的日程、时间,以及使用资源的持续时间三方面来说明。硬件资源包括开发系统、目标机器和新系统的其他部件。软件资
源包括系统软件、支撑软件工具和实用软件,系统软件是必不可少的,支撑软件工具在软件开发中起辅助作用,实用软件有时可成为新软件系统的一部分。人是主要的软件开发资源,对于相当小的软件项目,一个人就可以完成。而对于大型软件工程项目,在软件的整个生命周期中,
人员的组成情况是变动的,一个典型的软件项目,在软件生命周期的开发阶段对各类人员有不同的要求,如图2-1所示:第9页,共48页。10软件生命期各个阶段人员分配软件计划需求分析总体设计详细设计软件编码模块测试整体测试验收确认维护使用阶段人数初级技术人员高级技术人员管
理人员图2-1软件生命周期各阶段对人员数量的要求第10页,共48页。111.2软件计划的内容:制定进度表:软件交付日期常常预先确定,关键是软件开发组织如何在指定的期限内分配资源和力量。分析员要协调可用资源与项
目的工作量,考虑各项任务之间的相互依赖,在可能的情况下并行地安排工作,预见潜在的瓶口问题,提供意外事故的处理等;复审也要作为一个实施任务考虑在计划内;第11页,共48页。121.2软件计划的内容:软件成
本:现在软件价格已是构成计算机系统价格的重要组成部分,开发软件的价格不可能精确计算,许多可变的因素都可能影响软件的最终价格,我们可以采取一些方法,使得软件价格的估算结果基本上是可以接受的。如:源程序代码行估算法、任务工作量分解法、模型分析法等。第12页,共48页。13软件成本估算方法:
源程序代码行估算法是比较简单的估算方法,它把开发软件的每个功能的成本与实现这个功能所需的源程序代码行联系起来,根据经验和历史数据去估计一个功能需要的源程序行数,将每行代码的平均成本乘以行数就可以确定软件的成本,每行代码的平均成本主要取决于软件的复杂程度和平均工资水平,当以往有
开发类似工程的历史数据可供参考时,这种方法非常有效;第13页,共48页。14软件成本估算方法:任务工作量分解法是将开发的软件项目分解为若干个相对独立的任务,可将软件项目分解为若干个子系统,再将子系统按开发阶段划分成更小的任务,分别估计单独开发每个任务的成本,最后累加起来得到软件开发项目
的总成本。估计每个任务的成本时,通常先估计完成该项任务所需的人力时间(以人月为单位),再乘以每人每月的平均工资而得出每个任务的成本,最终得到整个系统的成本;第14页,共48页。15软件成本估算方法:模型分析法是以长
期收集的大量历史数据为基础,建立各种性质的开发软件的成本估算模型和提供相应的数据库支持,利用软件计算工具输入相关的估算参数,估算软件的开发成本,这种自动估计软件成本的方法可以减轻脑力劳动,使估计的结果更加客观,但并不容易得到准确的软件成本估算
模型。第15页,共48页。162.系统目标描述与步骤2.1系统目标描述:进行系统目标的描述,就是描述项目的背景,了解开发系统的现状、开发的理由与条件、存在的主要问题、要解决的主要问题,确定开发系统的要求与总体
目标、总体规模、实现目标的初步方案、环境要求,写出系统目标与问题的描述报告,供可行性分析使用。应该请应用项目的用户负责人、用户方的技术人员与开发项目的系统分析员、甚至软、硬件技术专家一道,共同讨论与项目有关的问题。用户根据实际工作的情况,提出希望解决的主要问题,并以项目任务书的形式对
问题的性质、目标和规模进行描述。第16页,共48页。17例如:某企业提出开发一套仓库管理系统的要求,经过系统分析员与企业技术人员的调查,写出初步的系统目标的描述,说明系统的目标范围和开发限制的时间。(1)项目:仓库管理系统;(2)背景:人工管理效率低,物
品种类繁多,易出差错;(3)项目目标:建立一个高效率、无差错的仓库管理系统;(4)项目范围:硬件利用现有微机系统,软件委托开发,费用≤5000元;(5)初步设想:建议增加缺货统计报告与库存月报功能,并可随时查询;(6)可行性研
究:建议进行一周分析,费用≤450元;(一般为5%-10%)(7)项目开发时间:四个月内完成。第17页,共48页。181.2系统目标描述的工作步骤:进行系统目标的描述(初步定义)的工作步骤如下:(1)了解项目中实际问题的建议和要求;(2)了解现场状况,调查开发项目的原
因与背景;(3)查阅用户的书面报告,用较短的时间加工整理;(4)反复讨论,澄清对有关问题的模糊认识,确定软硬件功能的范围;(5)写出实现目标的系统描述文档;(6)进一步确定双方是否可进行深入的的可行性研究意向。第18页,共48页。19第二节可行性研究可行性研究的重要内容是以尽量少的投入,在
最短的时间内,对将要开发的系统进行技术可行性、经济可行性、社会(法律)可行性、人员、操作、资源的可行性研究,并得出项目是否现实可行和值得开发的结论,如果可行,确定实施方案和计划,否则,可能取消一个所建议的不合适的项目。第
19页,共48页。201.可行性研究的目的一般的项目开发,都要进行可行性研究,可行性研究的目的不是研究如何解决问题,而是确定问题是否能够解决和是否值得解决。如果软件项目不值得开发,则终止进行。不值得开发的项
目,做任何时间上、人力上、经费上的开发活动都是无谓的浪费。有些项目值得开发是不言而喻的,有些项目需要经过可行性论证才能知道是否值得开发。如果仅仅根据系统目标的初步描述就开始寻找项目的承包单位去签定合同,这是很冒险的。因为并不是所有问题都能在规定
的时间和经费内得到解决。中途终止项目的开发,对于双方都是很大的损失,因此,进行可行性分析研究是不可忽视的。第20页,共48页。212.可行性研究的内容(1)项目背景:问题描述;实现环境;限制条件;(2)管理概要与劝告:重要的研究结果;说明;劝告;影响;(3)候选方案:候选系统的配置;选择最终方
案的准则;(4)系统描述:简略的系统范围的描述;分配系统元素的可行性;(5)经济可行性:(成本—效益分析)经费概算;预期的经济效益;运行成本;(6)技术可行性:(技术风险评价评价)技术实力;已有工作基础、设备条件;(7)法律可行性:系统开发应避免侵权、违
法和责任;(8)用户使用可行性:用户单位的行政管理、工作制度;使用人员素质;(9)其他与项目有关的问题,未来可能的变化;第21页,共48页。223.可行性研究的主要方面可行性研究与风险分析密切相关,如果项目的风险很大,就会降低产生高质量软件的可行性,因此,可行性研
究主要集中于与风险相关的因素上,体现在以下四个方面:经济、社会效益可行性:技术可行性:法律可行性;用户操作可行性:技术可行性常常最难决断,因为系统的目标、功能、性能比较模糊,一般与系统评估、分析和定义过程并行进行,应考虑如下因素
:开发的风险、资源的有效性、技术方面第22页,共48页。234.可行性研究的步骤可行性研究典型的研究步骤如下:复查系统规模和目标研究目前正在使用的系统导出新系统的高层逻辑模型重新定义系统的问题和目标导出和评价供选择的多个高层解决方案做出可行性研究判断草拟开发计划书写文档、提交检查
第23页,共48页。24第三节成本/效益分析一般来说,人们投资于一项事业的目的是为了在将来获得更大的好处。开发一个新系统也是一种投资,期望将来获得更大的经济效益。经济效益通常表现为减少运行费用或增加收入。但是,投资开发新系统往往要冒一定风险,系统的开发成本有可能比预计的高,运行效益有可能比预
计的差。那么,在什么情况下投资开发新系统更划算?成本/效益分析的目的正是从经济的角度分析开发一个特定的新系统是否划算,是否值得投资。是可行性分析中的经济可行性分析的重要组成部分。第24页,共48页。251、成本估计一般来说,基于计算机系统的成本由四个部分组成:1、购置并安装软硬
件及有关设备的费用2、系统开发费用3、系统安装、运行和维护费用4、人员培训费用对于我们来讲,最关心的是第二项:开发费用。软件开发成本主要表现为人力的消耗(乘以平均工资则得到开发费用),但是人力又分等级,工作也难于准确衡量,因此,成本估算一般不是很准
确,只是粗略估算。第25页,共48页。261、成本估计一、成本估计有两种基本的估算方法(estimation):自顶向下和自底向上(1)自顶向下成本估计估计总的开发成本----内部成本分配----专家判断缺点:对于某些局部的问题和特殊困难容易低估,全凭经验来衡量,否则,
误差很大。(2)自底向上成本估计各个任务单元成本---汇总---总体成本缺点:工作人员只注意自己的工作,容易忽视对综合测试、质量管理、项目管理等花费,因此估计量偏低。(3)算法模型估计算法模型就是资源模型,
由于资源模型是根据历史数据导出的,故可重复性好,关键在于选择好的模型。第26页,共48页。27二、费用估计(1)代码行技术代码行技术是比较简单的定量估算方法,也是一种自底向上的估算方法。它把开发每个软件功能的成本和实现这个功能需要用的源代码行数联系起来。通常根据
经验和历史数据估计实现一个功能需要的源程序行数。一旦估计出源代码行数以后,用每行代码的平均成本乘以行数即可确定软件的成本。每行代码的平均成本主要取决于软件的复杂程度和开发小组的工资水平。一般计算办法软件成本=代码行数*每行代码平均成本每行代码平均成本取决于软
件复杂程度和工资水平代码行数取决于工作的历史与经验第27页,共48页。28二、费用估计(1)代码行技术大致分如下两步:a、对要求设计的系统进行功能分解,直到可以对为实现该功能所要求的源代码行数做出可靠的估算为止。根据经验和历史数据,对每个功能块估计一个最有利的、最可能的和最不利的值。设最有利的值
为a,最可能的值为m,最不利的值为b,则代码行的期望(平均)值lc和对期望值偏离的方差ld为64bmalc21)6(nidabl第28页,共48页。29二、费用估计(1)代码行技术b、再根据历
史数据和经验,选择每个软件功能块的价格;计算每个功能块的价格及工作量,并确定该软件项目总的估算价格和工作量。举例:CAD软件,项目范围确定了其主要功能:*用户接口控制(UIC)*二维几何图形分析(2DGA)*三维几何图形分析(3DGA)*数据结构管理(DSM)*图形显示(CGD)*
外围设备控制(PC)*设计分析(DA)第29页,共48页。30二、费用估计(1)代码行技术功能最有利最可能最不利期望值方差数$/行行/人月人月价格UIC1800240026502340140143157.4327602
DGA41005200740053805502022024.41076003DGA46006900860068006702022030.9136000DSM29503400360033501101824013.960300CGD40504
900620049503602220024.7108900PC2000210024502140752814015.259920DA66008500980084005401830028151200估算值333601100144.565668
0第30页,共48页。31二、费用估计(1)代码行技术(人月=期望值/行/人月,价格=$/行*期望值)可以看出,开发估算的范围,考察前三列数据,估算者完全确信外围设备控制(PC)功能块所要求的,因为它最有利的和最不利的估算只差450
。另外,对于三维几何图形分析这个功能块,是比较心中无数的,差了4000。第31页,共48页。32二、费用估计(2)任务分解技术首先把软件开发工程分解为若干个相对独立的任务,再分别估计每个单独的开发任务的成本,最后累加起来就得出软件开发
工程的总成本。估计每个任务的成本时,通常先估计完成该项任务需要用的人力(以人月为单位),再乘以每人每月的平均工资而得出每个任务的成本。最常用的方法是按开发阶段划分任务。如果软件系统很复杂,由若干个子系统组成,则可以把
每个子系统再按开发阶段进一步划分为更小的任务。软件成本=各个相对独立的功能模块的开发成本之和每个模块的开发成本=开发人力*平均工资第32页,共48页。33二、费用估计(2)任务分解技术功能需求分析设计编码测试总计UIC1.02.00.53.57.02
DGA2.010.04.59.526.03DGA2.512.06.011.031.5DSM2.06.03.04.015.0CGD1.511.04.010.027.0PC1.56.03.55.016.0DA4.014.05.07.030.0总计14.561.026.550.5152.5劳务费(
$/人月)5200480042504500成本75400292800112625227250708075第33页,共48页。34二、费用估计(2)任务分解技术1)确定任务。每个功能都必须经过需求分析、设计、编码和测试工作。2)确定每项任务的
工作量。对每项任务要估算它们所需要的人月数。3)找出与各项任务的对应的劳务费数据。即每个单位工作量成本(元/人月)。因为各阶段的劳务费用不同,需求分析和概要设计阶段需要较多的高级技术人员;而详细设计、编码和早期测试则要求较
多的初级技术人员。而他们的工资是不同的。4)计算。计算各个工作各个阶段的成本和工作量,然后计算总成本和总工作量。5)分析比较。在整个开发工作量中,需求分析和设计用去了75人月,约占全部任务工作量的50%,说明了这项工作的重要性。劳务费反映了劳动者的成本,其中包括管
理费。需求分析的劳务费(5200元/人月)比设计、编码和测试都高,这也说明了这项工作的重要性。第34页,共48页。35二、费用估计(2)任务分解技术用这种方法估算,CAD软件成本和工作量总计为708075元和152.5人月。将这些数据与代码行的成本估算
比较(分别为656680元和144.5人月),前者相差7%,后者相差5%,结果非常接近,可以接受。若相差较大,应该分析原因,很多情况下是由于估算人员对任务没有完全理解或有误解,或使用的劳务费数据不够恰当。计划人员必须找出原因后再重新
估算,结果应基本一致。第35页,共48页。36典型环境下各个开发阶段需要使用的人力的百分比任务人力(%)可行性研究5需求分析10设计25编码和单元测试20综合测试40总计100第36页,共48页。37(3)自动估计成本技
术采用自动估计成本的软件工具可以减轻人的劳动,并且使得估计的结果更客观。但是,采用这种技术必须有长期收集的大量历史数据为基础,并且需要有良好的数据库系统支持。第37页,共48页。382、成本/效益分析的方法成本/效益分析的第一步是估计开发成本、运行费用和新系
统将带来的经济效益。前面已经介绍了几种成本的估算方法,说到效益,因为涉及到回收时间的限制,不可能说花几百年的时间收回软件开发的成本,我们规定以后软件的正常生命期默认为5年。同时,我们投资是现在的钱,效益时间来的钱,我们不能将其直接比较,还必须考虑货币的
时间价值第38页,共48页。39(1)货币的时间价值通常用利率的形式表示货币的时间价值。假定年利率为i,如果现在存入P元,则n年后可以得到的钱数为:这也就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,
那么这些钱的现在价值是:niPF)1(niFP)1/(第39页,共48页。40例如,修改一个已有的库存清单系统,使它能在每天送给采购员一份定货报表。修改已有的库存清单程序并且编写产生报表的程序,估计共需5000元;系统修改后能及时定货将消除零件短缺问题,估计因此每年可以节省2500元,
五年共可节省12500元。但是,不能简单地把5000元和12500元相比较,因为前者是现在投资的钱,后者是若干年以后节省的钱。假定年利率为12%,利用上面计算货币现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价
值,如表所示。年将来值现在值累计现在值125001.122232.142232.14225001.251992.984225.12325001.401779.456004.57425001.571588
.807593.37525001.761418.579011.94ni)1(第40页,共48页。41(2)投资回收期通常用投资回收期衡量一项开发工程的价值。所谓投资回收期就是使累计的经济效益等于最初投资所需要的时间。显然,投资回收期越短就能越
快获得利润,因此这项工程也就越值得投资。例如,修改库存清单系统两年以后可以节省4225.12元,比最初的投资(5000元)还少774.88元,第三年以后将再节省1779.45元。774.88/1779.45=0.44,因此,投资回收期是2.44年。投资回收期仅仅是一项经
济指标;为了衡量一项开发工程的价值,还应该考虑其他经济指标。第41页,共48页。42(3)纯收入衡量工程价值的另一项经济指标是工程的纯收入,也就是在整个生命周期之内系统的累计经济效益(折合成现在值)与投资之差。这相当于比较投资开发一个软件系统和把钱存在银行中(或贷给其他企业
)这两种方案的优劣。如果纯收入为零,则工程的预期效益和在银行存款一样,但是开发一个系统要冒风险,因此从经济观点看这项工程可能是不值得投资的。如果纯收入小于零,那么这项工程显然不值得投资。例如,上述修改库存清单系统,工程的纯收入预计是9011.94-5000=
4011.94(元)第42页,共48页。43(4)投资回收率把资金存入银行或贷给其他企业能够获得利息,通常用年利率衡量利息多少。类似地也可以计算投资回收率,用它衡量投资效益的大小,并且可以把它和年利率相比较,在衡量工程的经济效益
时,它是最重要的参考数据。已知现在的投资额,并且已经估计出将来每年可以获得的经济效益,那么,给定软件的使用寿命之后,怎样计算投资回收率呢?设想把数量等于投资额的资金存入银行,每年年底从银行取回的钱等于系统每年预期可以获得的效益,在时间等于系
统寿命时,正好把在银行中的存款全部取光,那么,年利率等于多少呢?这个假想的年利率就等于投资回收率。第43页,共48页。44根据上述条件不难列出下面的方程式:其中P是现在的投资额;Fi是第i年年底的效益(i=1,2
,…,n);n是系统的使用寿命;j是投资回收率。解出这个高阶代数方程即可求出投资回收率(假设系统寿命n=5)。许多科学计算软件包中都有解高阶代数方程的子程序。W.Davis的书中给出了一个用BASIC语言写的计算投资回收率的简单子程序。.例如,上述修改库
存清单系统,工程的投资回收率是41%~42%。nnjFjFjFP)1/(...)1/()1/(221第44页,共48页。45课堂练习在工程设计中用CAD系统来取代大部分人工设计工作,每年可节省9.6万元。若软件生存期为5年,则5年可节省4
8万元。开发这个CAD系统共投资20万元。就不能简单地把20万元同48万元相比较。因为前者是现在投资的钱,而后者是5年以后节省的钱(银行年利率为5%)。需要把5年内每年预计节省的钱折合成现在的价值才能进行比较。求:货币的时间价值表;投资回收期;纯收入
。第45页,共48页。46解答:分析前面的题,得出几个相关的参数:投资:20万元每年节省:9.6万元年利率:5%软件生命期:5年(1)货币的时间价值现在的投资在5年后的价值:20*1.055每年节省的钱在软件生命期结束时的时间价值:9.6*1.054+9.6*1.053+9.6*1
.052+9.6*1.05+9.6每年节省的钱在现在的时间价值:9.6/1.054+9.6/1.054+9.6/1.053+9.6/1.052+9.6/1.05(2)投资回收期与纯收入:第46页,共48页。47投资回收期:2+(20-17.8513)/8.2
928=2.259年纯收入:41.5630-20=21.5630万元年份将来值(1+i)n现在值累计的现在值19.61.059.14299.142929.61.10258.707517.851339.61.15768.292826.143249.61.21557.89793
4.041159.61.27637.521941.5630货币的时间价值表第47页,共48页。48课后练习1、可行性分析研究的主要目的是什么?2、可行性研究主要集中于哪些方面?3、调查一个需要开发软件的系统,给出问题的系统描述,进行可行性研究。4、软件计划包含哪些方
面?有哪些主要任务?第48页,共48页。