©CopyrightbyPuQiumei软件工程第二章可行性分析信息工程学院本科生课程©CopyrightbyPuQiumei第二章可行性分析2.1可行性研究的任务2.2可行性研究过程2.3系统流程图2.4数据流图2.5数据字典2.6成本/效益分析2.7小结©CopyrightbyPuQiumei开始问题定义可性行研究可行否?项目实施计划终止项目的建议结束YN问题的定义与可性行研究Who为谁设计,用户是谁?What要解决哪些问题?Why为什么要解决这些问题有用的软件3W©CopyrightbyPuQiumei可行性研究目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。不是解决问题,而是确定问题是否值得去解决。说明该软件开发项目的实现在技术上、经济上和社会条件上的可行性;评述为合理地达到开发目标可能选择的各种方案。GB8567-88《计算机软件产品开发文件编制指南》©CopyrightbyPuQiumei项目的筹备、规划与准备是软件项目实施的前期工作,它由两个重要的工作阶段构成:一是项目规划及可行性分析;二是项目需求分析。项目准备阶段的第一个工作,是项目的总体规划。首先要做的是明确系统的需求,也就是用户要计算机解决什么问题,即问题定义。系统分析员应该深入现场,了解用户单位对系统的要求,调查开发背景,进行市场调研。经过调查分析,分析员要在较短的时间内对问题进行抽象、概括,并把自己的认识写成书面报告,即项目需求报告,提交给用户方面进行讨论审查。项目需求报告应该尽可能清楚简洁,内容通常包括项目的名称,对问题的概括,项目的目标,项目的规模及对可行性研究的具体建议(即需要用的时间和成本)等等。图2.1通过一个实际项目给出了项目需求报告编写示例。可行性研究©CopyrightbyPuQiumei项目需求报告2008年10月1.项目:××公司工资管理系统2.问题:在公司日常工资管理工作中,现有系统所承担的工作只能实现工资管理的简单功能,已无法适应目前工作中处理大量数据(如日常打印工资条等)要求,工作效率低下,容易出错。3.项目目标:为了提高公司日常工资管理的效率与准确率,而开发该项软件。该软件应逐步向本市各企业推广。4.项目范围:硬件主要利用现有的计算机网络,增配少量专用设备,软件开发费用预计20000元。5.初步设想:实现××公司工资管理系统,包括工资录入、数据查询、工资条、工资统计、部门设置、人员设置、项目设置等具体功能。要求将各种输出数据以表单形式打印;系统各模块具有添加新数据的功能;系统软件具有权限功能,使不同的用户具有不同的权限;建立后的数据库需要加密。6.可行性研究:由分析员和××公司工资管理部门进行,主要对公司日常工资管理规程和系统实施方案进行研究。建议进行大约3天的可行性研究,研究费用不超过200元。©CopyrightbyPuQiumei一般的做法是分析员和用户方面的人员一起阅读讨论这份报告,通过修改得到一份双方都满意的文档。当分析员和用户双方就项目需求取得了完全一致的看法,项目的可行性研究即可开始。©CopyrightbyPuQiumei2.1可行性研究的任务可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”GB8566-88《计算机软件开发规范》可行性研究的最根本任务对软件开发以后的行动方针提出建议。©CopyrightbyPuQiumei可行性研究的内容(1)技术可行性(2)经济可行性(3)操作可行性(4)社会可行性(法律可行性)(5)抉择©CopyrightbyPuQiumei技术可行性度量一个特定技术信息系统解决方案的实用性及技术资源的可用性考虑的问题(1)开发风险分析(2)资源分析(3)相关技术的发展(现有技术能否实现新系统,技术难点、建议采用技术的先进性)©CopyrightbyPuQiumei经济可行性度量系统解决方案的性能价格比。考虑的问题成本/效益分析(开发、运行的成本/效益)有形成本、效益无形成本、效益价值和成本的关系质量与价值、成本的关系价值/成本的均衡©CopyrightbyPuQiumei举例12345年6040200成本-效益(万元)该系统节省经费该系统成本盈亏平衡点投资回收期---------成本及效益分析图©CopyrightbyPuQiumei操作可行性•用户使用可能性•时间进度可行性•组织和文化上的可行性©CopyrightbyPuQiumei2.2可行性研究过程1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型4.进一步定义问题5.导出和评价供选择的解法6.推荐行动方针7.草拟开发计划8.书写文档提交审查©CopyrightbyPuQiumei可行性研究报告的编写1引言1.1编写目的1.2背景1.3定义1.4参考资料2可行性研究的前提2.1要求2.2目标2.3条件、假定和限制2.4进行可行性研究的方法2.5评价尺度©CopyrightbyPuQiumei可行性研究报告的编写3对现有系统的分析3.1数据流程和处理流程3.2工作负荷3.3费用开支3.4人员3.5设备3.6局限性4所建议的系统4.1对所建议系统的说明4.2数据流程和处理流程4.3改进之处4.4影响4.5局限性4.6技术条件方面的可行性©CopyrightbyPuQiumei可行性研究报告的编写5可选择的其它系统方案5.1可选择的其它系统15.2可选择的其它系统2......6投资及收益分析6.1支出6.2收益6.3收益/投资比6.4投资回收周期6.5敏感性分析7社会条件方面的可行性7.1法律方面的可行性7.2使用方面的可行性©CopyrightbyPuQiumei可行性分析的目标识别用户要求评价系统的可行性进行经济分析和技术分析把功能分配给硬件、软件、人、数据库和其它系统元素建立成本和进度限制生成系统规格说明,形成所有后续工程的基础©CopyrightbyPuQiumei可行性分析的出发点是前阶段所书写的文档(即项目需求报告),对于项目需求报告中所确定的目标和规模,如果正确就进一步确认,如果错误则及时修改,为做出正确的可行性分析打好基础。具体地说,分析员应从下面三个方面对项目做出可行性分析:(1)技术可行性:使用现有的技术能实现这个系统吗?(2)经济可行性:这个系统的经济效益能超过它的开发成本吗?(详细在后面介绍成本/效益分析)(3)操作可行性:系统的操作方式在该用户组织内行得通吗?必要时还应该进一步从法律、社会效益等更广泛的角度研究每种解法的可行性。可行性分析的主要任务©CopyrightbyPuQiumei可行性分析的结论可以是以下四种:(1)项目可行,可以立即开始执行;(2)需要推迟到某些条件(例如资金、人力、设备等)具备或成熟之后才能开始;(3)需要对开发目标进行某些修改之后才能开始进行;(4)不能进行或不必进行;例如因技术不成熟,经济上不合算或可能产生负面的社会影响等原因,这种情况下,分析员应该建议尽早终止项目计划,以免浪费人力、物力和财力。可行性分析结束后,要写出可行性分析报告,提交有关专家论证和上级主管部门批准。根据可行性分析结果,如果项目是可行的,那么对该项目的开发工作就继续进行。此时,分析员要做出项目开发的初步计划。©CopyrightbyPuQiumei1.成本/效益分析成本—效益分析的目的是从经济角度评价开发一个新的软件项目是否可行。开发一个软件系统也是一种投资,期望在将来获得更大的利润。因此在正式进行投资之前,投资商必须对成本/效益进行分析。(1)成本估算开发软件的成本主要是人的劳动消耗。软件开发成本的计算方法是以一次性开发过程所花费的代价来计算的,也就是从项目计划、需求分析、总体设计、详细设计、编码、单元测试、整体测试等全过程所花费的代价作为成本。①根据代码行进行估计代码行技术是一种简单的方法,它通过估计软件中的代码行数来估计软件的开发成本。用每行代码的成本乘以行数就得到软件的开发成本。©CopyrightbyPuQiumei②根据任务分解进行估计这个方法首先将任务分解成若干子任务,然后对子任务进行成本估计,最后累加起来得出软件开发总成本。表1.1是在典型环境下各开发阶段需要使用的人力的百分比,可供开发人员在对软件成本估计时参考。©CopyrightbyPuQiumei③借助工具软件对成本进行估计这种估计方法需要大量的历史数据为基础,需要良好的数据库系统支持。(2)成本/效益分析在进行成本—效益分析之前,首先是要估计软件的开发成本、运行费用以及软件系统将带来的效益。系统的运行费用包括系统的操作费用(如操作人员数量、工作时间以及消耗的物资等)和维护费用。系统将来带来的经济效益包括因使用新的系统而增加的收入加上使用新系统可以节省的运行费用。估计出开发成本和将来带来的效益后,应将二者进行比较,但是,成本是现在的,效益是将来的,所以在对二者进行比较时应考虑到货币的时间价值。©CopyrightbyPuQiumei①货币的时间价值货币的时间价值通常用利率来表示。设年利率为i,现存放资金P元,则在n年后可得钱数为F,若不计复利,则F=P(1+i)n或P=F/(1+i)n例:假设购置一套应用软件投资20万元,预计可使用5年,每年直接经济效益9.6万元,年利率为5%,试计算投入/产出比。解:考虑到货币的时间价值,5年的总体收入应当逐年按照公式计算,并非为恒定的9.6万元。1~5年中,每年的收入折算到当前的数据如表2.1所示。©CopyrightbyPuQiumei年份将来收益/万元(1+i)n当前收益累计的当前收益19.61.059.6/1.05=9.14299.142929.61.10258.707517.851339.61.15768.292826.143249.61.21557.897934.041159.61.27637.521941.5630表2.1货币的时间价值年始年未©CopyrightbyPuQiumei根据上表所列数据,本软件投入/产出比为:41.5630/20=2.0785(实为产出投入比)②成本的回收周期是衡量一个项目开发价值的一个指标。成本回收周期就是使累计的经济效益等于最初的投资成本所需要的时间。显然,成本回收周期越短,就越快获得利润,则该项目就越值得开发。根据上例,两年后收入17.8513万元,尚欠2.15万元没有收回成本,在第三年还需要:2.15/26.1432=0.259(年),故投资回收期为2.259年。©CopyrightbyPuQiumei③衡量项目价值的另一个经济指标是项目的纯收入,也就是在整个生存周期之内的累计经济效益(现在值)与投资成本之差(在计算时要考虑到货币的时间价值)。若纯收入为零,则项目的预期效益和在银行存款一样,是不值得投资开发的。若纯收入小于零,那么这个项目显然不值得投资开发。在上例中:根据前面的计算结果,5年纯收入为:41.5630-20=21.5630万元这相当于比较一个待投入的软件项目可能获取的利润和将20万元存入银行所取得的效益。只有当纯收入大于0时,开发软件才有真正的效益。©CopyrightbyPuQiumei3.可行性分析的步骤(过程)(1)复查系统规模和目标。(2)研究正在运行的系统。(3)建立目标系统的逻辑模型。(4)重新定义问题(5)导出和评价各种方案。(6)推荐可行性方案。(7)草拟开发计划。(8)编写可行性分析报告提交审查。4.可行性分析报告编写规范©CopyrightbyPuQiumei“可行性报告”中最主要的内容是:(1)项目的背景:问题描述、实现环境和限制条件等。(2)管理概要与建议:重要的研究结果(结论)、说明、劝告和影响等。(3)推荐的方案(不止一个):候选系统的配置与选择最终方案的原则。(4)简略的系统范围描述:分配元素的可行性。(5)经济可行性分析结果:经费概算和预期的经济效益等。©CopyrightbyPuQiumei(6