第二章可行性研究合肥工业大学理学院本章主要内容可行性研究的任务可行性研究的步骤系统流程图成本效益分析2.1可行性研究的任务可行性研究的目的以最小的代价、最短的时间确定系统是否值得解决可行性研究的任务可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”(GB8566-88《计算机软件开发规范》)2.1可行性研究的任务可行性研究的内容技术可行性经济可行性操作可行性社会可行性(法律可行性)决择:是否有可行性解决方案可行:给出可行的解决方案不可行:给出不可行的主要原因,停止项目可行性研究成本占系统预期成本的5%~10%2.2可行性研究的步骤定义的是用户所需要的系统可行性分析复查系统规模和目标研究目前正在使用的系统导出新系统的高层逻辑模型重新定义问题导出和评价供选择的解法推荐行动方针草拟开发计划书写文档提交审查2.2可行性研究的步骤1.复查系统规模和目标主要任务:确认系统规模、范围、目标工具或方法仔细研究任务书/任务建议书走访关键人员(领域专家、工作人员等)查阅相关资料成果:理解/得出真正要解决的问题2.2可行性研究的步骤2.研究老系统主要任务:现有系统优缺点分析了解旧系统所具备的有用功能分析旧系统存在的问题分析旧系统运行成本了解旧系统与其它系统之间的接口工具系统流程图现有系统功能新增功能2.2可行性研究的步骤2、研究老系统解决老系统问题老系统功能新增功能新系统效益?注:只了解老系统做什么,而不管怎样做;注意了解与其它系统的接口。老系统效益2.2可行性研究的步骤3.导出新系统的高层逻辑模型(conceptualdesign)主要任务:确定目标系统的概念模型工具数据流图数据字典…………抽象实现改进现有系统模型新模型新系统Itiswritteninthecustomer’slanguageItcontainsnotechnicaljargonItdescribesthefunctionsofthesystemItisindependentofimplementationItislinkedtotherequirementsdocuments报告应该告诉用户“What”而不是“How”2.2可行性研究的步骤描述目标系统逻辑模型时注意的问题以用户的语言描述不应包含难懂的技术词汇仅描述目标系统的功能目标系统模型与实现无关与需求文档息息相关2.2可行性研究的步骤4.重新定义问题主要任务:找出分析员对目标系统的理解与实际需要之间的不符…………规模、范围、目标分析员用户2.2可行性研究的步骤3、逻辑模型4、重新定义1、复查定义(1)分析员应和用户一起再次复查问题定义、工程规模和目标(2)前四个步骤构成一个循环。注:此时合同未签,应考虑成本,不宜反复太多次。2.2可行性研究的步骤5.导出和评价供选择的解法主要任务导出多个可能的解决方案技术可行性研究实现技术能否达到开发团队是否掌握相应的技术经济可行性研究开发成本运行维护成本成本效益分析操作可行性研究——是否满足用户操作习惯社会可行性研究是否满足所有项目涉及者的利益是否满足满足法律或合同的要求,如环境法规粗略的进度表2.2可行性研究的步骤2.2可行性研究的步骤导出和评价供选择的解法进度表经济上合算技术上可行操作上可行策略上不可行用户不可能操作不合算……2.2可行性研究的步骤6、推荐行动方针YesorNo?NoYesWhy?Whichoneisthebest?Why?(cost/benefit)什么都不做永远是一个值得考虑的方案2.2可行性研究的步骤7.草拟开发计划主要任务:制定初步的系统开发计划计划内容工程进度规划任务分解,确定负责人资源规划财务预算风险分析及对策2.2可行性研究的步骤8.书写文档提交审查主要任务:提交可行性研究报告可行性研究报告的形式可以有多种,但最重要的内容应当有:Ⅰ.项目背景:①问题描述②实现环境③限制条件Ⅱ.管理概要和建议:①重要的研究结果②说明③建议④影响Ⅲ.候选方案:①候选系统的配置②最终方案的选择标准Ⅳ.系统描述:①系统工作范围的简要说明②被分配系统元素的可行性2.2可行性研究的步骤Ⅴ.经济可行性(成本-效益分析):①经费概算②预期的经济效益Ⅵ.技术可行性(技术风险评价):①技术实力②已有工作基础③设备条件Ⅶ.法律可行性:①系统开发可能导致的侵权,违法和责任Ⅷ.用户使用可行性:①用户单位的行政管理,工作制度②使用人员的素质Ⅸ.其它与项目有关的问题:①其它方案介绍②未来可能的变化2.3系统流程图1.用途2.图形符号及意义3.实例4.分层系统流程图2.3系统流程图1.用途要了解和分析现有的系统,概括地表示对现有系统的认识;要把设想的新系统的逻辑模型转变为物理模型,需要描绘未来的物理系统的概貌。——系统流程图:是概括描绘物理系统的传统工具2.图形符号及意义基本符号(以概括的形式抽象地描绘物理系统)处理:能改变数据值或数据位置的加工或部件,例如,程序、处理机、人工加工等都是处理。输入/输出:表示输入或输出(或既输入又输出),是一个广义的不指明具体设备的符号。连接:指出转到图的另一部分或从图的另一部分转来,通常在同一页上。换页连接:指出转到另一页图上或由另一页转来。数据流:用来连接其它符号,指明数据流动方向。2.3系统流程图系统符号(更具体地描绘物理系统)穿孔卡片:表示用穿孔卡片输入或输出,也可表示一个穿孔卡片文件文档:通常表示打印输出,也可表示用打印终端输入数据磁带:磁带输入/输出,或表示一个磁带文件2.3系统流程图2.3系统流程图联机存储:表示任何种类的联机存储,包括磁盘、磁鼓、软盘和海量存储器等磁盘:磁盘输入/输出,也可表示存储在磁盘上的文件和数据库磁鼓:磁鼓输入/输出,也可表示存储在磁鼓上的文件和数据库2.3系统流程图显示:CRT终端或类似的显示部件,可用于输入或输出,也可既输入又输出人工输入:人工输入数据的脱机处理,例如填写表格人工操作:人工完成的处理,例如,会计在工资支票上签名2.3系统流程图辅助操作:使用设备进行的脱机操作通信链路:通过远程通信线路或链路传送数据系统流程图用图形符号以黑盒子形式描绘组成系统的每个具体部件。2.3系统流程图-实例例1变化库存清单XX:————————XX:————…………库存量临界值定货报告仓库零库存量件临界值2.3系统流程图该装配厂使用一台小型计算机处理更新库存清单主文件和产生订货报告的任务。零件库存量的每一次变化称为一个事务,由放在仓库中的CRT终端输入到计算机中;系统中的库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的订货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出订货报告。事务库存清单程序库存清单主文件定货信息报告生成程序定货报告即库存量变化注:•符号:系统部件。•箭头:信息流动路径,反映信息在各部件间流动的情况。2.3系统流程图例2早期银行储蓄所存取款处理业务系统流程图储户存取款事务储户主文件客户存取款业务处理程序主文件更新程序营业报告事务文件2.3系统流程图例3现在银行储蓄所存取款处理业务系统流程图储户存取款事务远程储户主文件客户存取款业务处理程序汇总处理程序营业报告本地储户主文件2.3系统流程图注:系统流程图反映信息在各部件间流动的情况,不同于程序流程图,表示的是对信息的控制、处理。习惯上信息在图中从上向下或从左向右流动。2.6成本/效益分析(Cost/Benefit)目的成本估计效益分析2.6成本/效益分析目的分析开发目标系统是否合算帮助决策部门做出决策成本估计效益分析2.6成本/效益分析目的成本估计(开发投入,主要为人力消耗)代码行技术-估计将会有多少代码,从而估计成本(需要历史经验)任务分解技术-典型情况下使用人力情况自动成本估计-依赖大量的历史数据效益分析成本/效益分析任务人力(%)可行性研究5需求分析10设计25编码与单元测试20综合测试40总计100典型项目人力资源百分比2.6成本/效益分析目的成本估计效益分析社会效益经济效益货币的时间价值投资回收期纯收入投资回收率货币的时间价值假设年利率i,现在存入P元,n年后的可得的钱数为FF=P(1+i)n,F就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,则这些钱的现在价值是P=F/(1+n)i。所以通常有利率的形式表示货币的时间价值。投资回收期就是使累计的经济效益等于最初的投资所需要用的时间。2.6成本/效益分析纯收入就是在软件整个生命周期内系统的累计经济效益(折合成现在值)与投资额之差。投资回收率衡量投资效益大小的重要指标,算法类似银行年利率。P为现在的投资额,Fi是第i年底的效益(i=1,2,…,n),n是系统的使用寿命,j是投资回收率。P(1+j)n=F1(1+j)n-1+F2(1+j)n-2+…+Fn-1(1+j)+Fn或P=F1/(1+j)1+F2/(1+j)2+…+Fn/(1+j)n2.6成本/效益分析2.6成本/效益分析例题:假设某软件生命周期为5年。现在投资20万元,平均年利率3%。从第一年起,每年年底收入4.2万元,问该项目是否值得投资?P=20万4.2万4.2万4.2万4.2万4.2万012345的值年底为第PnF为年利率为初始投资iP,,PFn)1(i+=2.6成本效益分析到第5年底结算时:投资额=200000(1+3%)5231855(元)收入=42000[(1+3%)4+(1+3%)3+(1+3%)2+(1+3%)+1]222984(元)不合算!2.6成本效益分析衡量工程价值的经济指标:⑴纯收入=折合现价的总收入-当前投资额=⑵投资回收期第6年底可收回)(3517403.11420006元年回收期年5.22)(22.0351747652)(765220000003.1103.1103.1103.1103.11420002345元++++2.6成本效益分析⑶投资回收率设为jP=F1/(1+j)1+F2/(1+j)2+…+Fn/(1+j)n3%%65.1)1(1)1(1)1(1)1(111420002000005432年利率+++++++++=jjjjjj2.4数据流图(DataFlowDiagram)数据流图描绘系统的逻辑模型,图中无具体的物理元素,只是描绘信息在系统中流动和处理的情况数据流图可以作为计算机人员与客户之间的通信工具软件设计的出发点2.4数据流图-图形符号数据的源点/终点数据加工/变换数据存储数据流2.4数据流图2.4数据流图注意点数据流与程序流程图中用箭头表示的控制流有本质不同在数据流图中应描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件处理并不一定是一个程序,可以代表一系列程序、单个程序或者程序的一个模块,甚至人工处理过程一个数据存储也并不一定是一个文件,它可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等等2.4数据流图通常在数据流图中忽略出错处理,也不包括如打开文件、关闭文件之类的内务处理数据流图的要点是描绘“做什么”,而不是“怎么做”2.4数据流图重复元素的画法有时数据的源点和终点相同数据存储有时也要重复——为了表示方便,代表同一事物的同样符号在图中出现在n个地方,则在这个符号的一个角上画n-1条短斜线做标记2.4数据流图命名为数据流(或数据存储)命名名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)如果在为某个数据流(或数据存储)起名字时遇到了困难,则可能是因为数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难2.4数据流图为处理命