第二章可行性研究2019/8/302目录2.1可行性研究的任务2.2可行性研究的步骤2.3系统流程图2.4成本效益分析可行性报告编写2019/8/303本章教学目标通过本次章学习,使学生掌握可行性研究的任务及步骤,掌握系统流程图的画法及成本/效益分析方法。2019/8/304本章重点、难点•掌握可行性研究的任务及步骤•掌握系统流程图的使用方法•掌握成本/效益分的方法2019/8/305•问题:•可行性研究最根本的任务是什么?•可行性研究的步骤是什么?2019/8/306当我们在着手做任何一件工作以前,必须明确工作的性质,任务,制定完成任务的计划,这是非常必要的。同样对于软件产品的开发,显然也应该解决好这样类似的问题,明确软件产品开发的任务,以及完成任务的价值从而制定出完成任务的计划。通过可行性研究可以知道问题有无可行解,进而避免人力、物力和财力的浪费。可行性研究就是制定软件计划的第一步。所以,软件工程称其为计划时期。2019/8/307问题定义-简单地描述问题•目的:弄清用户需要计算机解决的问题根本所在,及项目所需的资源和经费。•任务:在向用户调查的基础上,编写项目任务说明书,作为下一步工作可行性分析的依据。2019/8/3082.1可行性研究的任务可行性研究的任务:不是解决问题,而是确定问题是否值得去解决。可行性研究的实质:进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。2019/8/309可行性研究的内容:•首先进一步分析和澄清问题定义,导出系统的逻辑模型;•然后从系统逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案);•对每种解法都研究它的可行性。2019/8/30102.1可行性研究的任务可行性研究的内容①经济可行性②技术可行性③运行可行性④法律可行性⑤开发方案可行性2019/8/30112.1可行性研究的任务①经济可行性1)度量系统解决方案的性能价格比2)考虑的问题成本/效益分析•有形成本、效益•无形成本、效益价值和成本的关系•质量与价值、成本的关系•价值/成本的均衡2019/8/30122.1可行性研究的任务②技术可行性1)最难决断和最关键的问题,度量一个特定技术信息系统解决方案的实用性及技术资源的可用性。2)考虑的问题(1)开发风险(2)资源有效性(3)相关技术的发展2019/8/30132.1可行性研究的任务③运行可行性1)建立一个项目范围,该范围在管理级及技术级均是无二义性的和可理解的。2)项目计划的目标提供一个框架,使项目的结果限定在这一个合理的范围内。3)正确接受用户的建议,满足用户的要求、操作规程简便。容易获得结果2019/8/30142.1可行性研究的任务④法律可行性•考察该项目是否侵权•考察该项目是否违法•经费使用是否正确2019/8/30152.1可行性研究的任务⑤开发方案可行性•提出系统实现的各种方案之后,从中选择最优秀的一种方案。2019/8/3016主要方面:•技术可行性,使用现有的技术能实现这个系统吗?•经济可行性,这个系统的经济效益能超过它的开发成本吗?•运行可行性,系统的运行方式是否可行?•法律可行性,系统是否侵犯他人、集体或国家的利益,是否违反法律?•开发方案可行性,提出系统实现的各种方案中哪个方案是最优秀方案?2019/8/30172.1可行性研究的任务可行性研究最根本的任务:如果问题没有可行的解,应该建议停止这项工程的开发;如果问题值得去解,应该推荐一个较好的解决方案,并且为工程制定一个初步的计划。可行性研究需要的时间长短取决于工程的规模。一般说来,可行性研究的成本只是预期的工程总成本的5%~10%。2019/8/30182.2可行性研究的步骤1.复查确认系统目标、规模2.研究正使用系统工作流程3.导出新系统高层逻辑模型4.重新定义问题5.导出和评价供选择的方案6.推荐行动方针7.草拟开发计划8.书写文档,送审2019/8/30192.2可行性研究的步骤1.复查确认系统目标、规模对问题定义阶段书写的关于规模和目标的报告书进一步复查确认。2.研究正使用系统工作流程通过对现有系统的文档资料的阅读、分析和研究,再如实的考虑该系统,总结出现有系统的优点和缺点,从而得出新系统的雏形。2019/8/30202.2可行性研究的步骤3.导出新系统的高层逻辑模型现有的物理系统→现有系统的逻辑模型→目标系统的逻辑模型→新的物理系统注:物理模型:通过分析现实世界,理解当前系统的运行过程,用一个具体化的模型模拟、了解当前系统的组织结构、资源利用情况和日常数据处理过程,这一模型称为当前系统的物理模型。合理的物理模型应该客观反映现实世界的实际情况。这是软件开发计划中较重要的一步,也是软件需要分析中的第一步。逻辑模型:在理解当前系统的具体运行过程后,从个体的细节中抽象出本质的过程模型,即当前系统的逻辑模型。2019/8/30212.2可行性研究的步骤4.进一步定义问题分析员应该和用户一起再次复查问题定义、工程规模、目标和约束条件,并修改已发现的错误。可行性研究的前4个步骤实质上构成一个循环。2019/8/30222.2可行性研究的步骤5.导出和评价供选择的解法•首先从技术角度出发排除不可行方案;•其次考虑操作可行性,去掉用户不能接受的方案;•接下来考虑经济可行性,估计余下的每个可能的系统的开发成本和运行费用,进行成本/效益分析;2019/8/30232.2可行性研究的步骤6.推荐行动方针•根据可行性研究结果应该做出的一个关键性决定是否继续进行这项开发工程。•若继续开发,选择一种最好的解法,在选择的方案中应清楚的表明:1)本项目的开发价值2)推荐这个方案的理由3)制定实现进度表。2019/8/30242.2可行性研究的步骤7.草拟开发计划•分析员应该为所推荐的方案草拟一份开发计划,制定工程进度表、估计对各类开发人员和各种资源的需要情况、估计系统生命周期每个阶段的成本、给出下一个阶段(需求分析)的详细进度表和成本估计。2019/8/3025项目实施计划1.系统概述包括项目目标,主要功能,系统特点,以及关于开发工作的安排2.可行性分析新系统在经济上、技术上、运行上、法律上的可行性,以及对新系统的主客观条件的分析。3.拟定开发计划工程进度表、人员配备情况、资源配备情况,估计每个阶段的成本和约束条件。4.结论意见2019/8/30262.2可行性研究的步骤8.书写文档提交审查•把可行性研究各个步骤的工作结果写成清晰的文档,请用户、客户组织的负责人及评审组审查,以决定是否继续这项工程及是否接受分析员推荐的方案。2019/8/3027•问题:1)系统流程图是用于描绘物理模型还是逻辑模型?2)成本\效益分析的目的是什么?2019/8/30282.3系统流程图1.系统流程图:描述系统物理模型的传统工具。基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序,文件,数据库,表格,人工过程等)。表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。注:≠控制信息(不同于程序流程图)2019/8/30292019/8/30302.3系统流程图2.作用:1)制作系统流程图的过程是系统分析员全面了解系统业务处理情况的过程,它是系统分析员作进一步分析的依据。2)系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。3)系统分析员可直接在系统流程图上拟出可以实现计算机处理的部分。4)可利用系统流程图来分析业务流程的合理性2019/8/30312.3系统流程图3.用途:可行性研究阶段:了解和分析现有的系统,概括地表示对现有系统的认识。设计阶段:把设想的新系统的逻辑模型转化为物理模型。2019/8/30322.3系统流程图3.基本符号:2019/8/30332.3系统流程图3.基本符号:处理输入输出连接换页连接人工操作数据流2019/8/30342.3系统流程图3.基本符号:处理输入输出连接换页连接人工操作数据流2019/8/30352.3系统流程图4.例:图书馆借书流程图:验证读者图书查询检书卡图书数据库索书单借书借书单借书图2-1图书馆借书系统流程图2019/8/30362.3系统流程图5.例子:某装配厂有一座存放零件的仓库,仓库中现有的各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件上。当仓库零件数量发生变化时,应该及时修改库存清单主文件。如果哪种零件的库存量少于它的库存临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告。该装配厂使用一台小型计算机,处理更新库存清单主文件和产生定货报告。零件库存量的每一次变化称为一个事务,由放在仓库中CRT终端输入到计算机中;系统中的库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的订货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出订货报告。2019/8/30372.3系统流程图部件:包括程序、文档、数据库、人工过程等•程序:更新库存清单程序产生定货报告程序•文档:定货报告•数据:磁盘上的库存清单主文件磁带上的定货信息CRT终端输入事务•人工过程:无2019/8/3038库存清单系统的系统流程图2019/8/30392.4成本/效益分析成本/效益分析的目的:正是要从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。2019/8/30402.4成本/效益分析成本/效益分析的方法:首先估算待开发系统的开发成本。然后与可能取得的效益(有形的和无形的)进行比较。其中:有形的效益可用货币的时间价值,投资的回收期、纯收入等指标。2019/8/30412.4成本效益分析1.成本估计①自顶向下成本估计(专家判断)•方法:•着眼于系统整体。•首先估算出总的开发成本,然后在项目内部进行成本分配。•缺点:•对开发中某些局部的问题或特殊困难容易低估,甚至没有考虑到,如果软件缺乏可借鉴的经验,在估计时可能出现较大误差。2019/8/30422.4成本效益分析1.成本估计②自底向上成本估计(群众路线)•方法:•将开发任务分解成许多子任务,子任务又分成子子任务,直到每个任务单元的内容都足够明确,然后把各个任务单元的成本估算出来,汇合成项目的总成本。•缺点:•对综合测试、质量管理和项目管理等涉及全局的花费可能估计不足。2019/8/30432.4成本效益分析1.成本估计③算法模型估计又称为资源模型,这种模型导出的结果较客观,因为任何资源模型都是根据历史数据导出的,计算结果的重复性也好(重复计算多次,结果都是一样的)。缺点:关键在于选择一个适当的模型。2019/8/30442.4成本效益分析2.费用估计①代码行技术:将软件功能的成本和实现这个功能需要的源代码行数联系起来。②任务分解技术:步骤:a)确定任务b)确定每项任务的工作量,估算需要的人月数c)找出与各项任务对应的劳务费数据d)计算各个功能和各个阶段的成本和工作量,然后计算总成本和总工作量.2019/8/3045代码行技术例子:功能生产率(行/人月)估计行数每行成本(元/行)成本(元)获取实时数据9284010890720更新数据库10212105465340脱机分析1346007243200产生报告1454503314850实时控制801100135148500总计3626102019/8/3046任务分解技术例子:任务估计人力(人月)元/人月成本(元)需求分析5.01020051000设计15.09600144000编码和单元测试8.0795063600综合测试16.58700143550总计44.54021502019/8/30472.4成本效益分析2.费用估计•各阶段在生存周期中所占百分比任务百分比可行性分析5需求分析10软件设计25编码单元测试20综合测试40总计1002019/8/30483.几种度量效益的方法①货币的时间价值F=P(1+i)n其中,设年利率为I,现已存入P元,则N年后可得的钱