授课教师:梁丽第二章可行性研究与项目开发计划内容要点:本章概括地讲述软件开发的第一个阶段——软件可行性研究与项目开发计划阶段中可行性研究的任务、步骤和内容以及项目开发计划的内容,介绍了可行性研究的主要方法,如系统流程图和成本—效益分析等。教学重点:可行性研究的任务和必要性可行性研究的具体步骤教学难点:可行性研究的具体步骤系统流程图的作用与符号本章的知识结构图要点:可行性研究的任务、步骤系统流程图数据流图数据字典成本/效益分析可行性研究的任务:可行性研究目的:就是用最小代价在尽可能短的时间内确定问题是否能够解决。即弄清要计算机解决的问题根本所在,确定新系统的作用域,以及项目所需的资源和经费。(不是解决问题,而是确定问题是否值得去解)可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,即在较高层次上以较抽象的方式进行系统分析和设计的过程。可行性研究的任务:首先需要进一步分析和澄清问题定义。在澄清问题定义之后,分析员应该导出系统的逻辑模型。然后从系统的逻辑模型出发,探索若干种可供选择的主要解法(即系统实现方案)。一般从三个方面分析每种解法的可行性:技术可行性经济可行性社会可行性各方案可行性技术可行性:综合考虑待开发项目的功能、性能、限制条件以及现有的软硬件资源,来评估项目的可行性和技术风险。由于以上条件的模糊性,使得技术可行性成为最难解决的问题。经济可行性:进行成本估算和效益评估,以确定项目是否值得开发。研究内容包括成本—效益分析、经营策略、成本和资源、市场前景等。社会可行性:是否存在侵权等责任问题、项目的运行方式与当前用户的管理制度、人员素质、操作方式是否符合及可行。复查系统规模和目标。可行性研究的步骤:访问关键人员分析有关材料报告书复查确认了解系统应解决的问题,这些问题是如何提出的设想这些问题如何解决才能满足要求了解问题的结构我们认为用户要的用户要的?市场调查可行性研究的步骤:现有系统手工系统分析文档资料使用手册旧系统完成的功能旧系统存在的问题旧系统与其他系统的接口旧系统的高层系统流程图了解市场对待开发软件的需求情况调查市场上已有的类似软件系统的功能、性能、价格情况解决老系统问题老系统功能新系统效益?注:只了解老系统做什么,而不管怎样做;注意了解与其它系统的接口。老系统效益新增功能导出新系统的高层逻辑模型。可行性研究的步骤:数据流图旧系统的高层系统流程图数据字典(初步)新系统的高层逻辑模型…………抽象实现改进老系统物理模型模型逻辑模型新模型逻辑模型新系统物理模型重新定义问题。可行性研究的步骤:复查问题定义工程规模目标新系统的高层逻辑模型依据数据字典数据流图新系统的高层逻辑模型(1)分析员应和用户一起再次复查问题定义、工程规模和目标(2)前四个步骤构成一个循环。注:此时合同未签,应考虑成本,不宜反复太多次。导出和评价供选择的解法。可行性研究的步骤:新系统的高层逻辑模型物理方案1物理方案2物理方案3较高层物理方案1物理方案2去掉技术不可行的方案物理方案1去掉操作、经济不可行的方案推荐行动方案。可行性研究的步骤:物理方案1物理方案5分析员建议使用部门负责人决定物理方案5草拟开发计划。开发计划工程进度表人力资源需求其它资源需求成本计划……书写文档提交审查。可行性研究报告审查可行性研究报告的编写提示GB8567-88《计算机软件产品开发文件编制指南》1引言1.1编写目的1.2背景1.3定义1.4参考资料2可行性研究的前提2.1要求2.2目标2.3条件、假定和限制2.4进行可行性研究的方法2.5评价尺度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技术条件方面的可行性5可选择的其它系统方案5.1可选择的其它系统15.2可选择的其它系统2......6投资及收益分析6.1支出6.2收益6.3收益/投资比6.4投资回收周期6.5敏感性分析7社会条件方面的可行性7.1法律方面的可行性7.2使用方面的可行性系统流程图:在可行性研究阶段使用系统流程图来对现有的系统(旧系统或手工系统)进行描述表示。系统流程图用来表达信息在系统各部件(包括程序、文件、数据库、表格、人工过程等)之间的流动情况,而不是对信息进行加工处理的控制过程的描述。(系统流程图与程序流程图是不同的)系统流程图的基本思想是选择恰当的图形符号,以黑匣子的形式描绘系统的程序、文件、数据库、表格、人工处理过程等每个部件。它以概括的形式描述现有系统的高层逻辑模型,也可以用它来描述所建议系统的物理模型。注意:反映信息在各部分间流动的情况≠控制、处理信息(不同于程序流程图)系统流程图:符号:处理:能改变数据值或数据位置的加工或部件,例如,程序、处理机、人工加工等都是处理。输入/输出:表示输入或输出(或既输入又输出),是一个广义的不指明具体设备的符号。连接指出转到图的另一部分或从图的另一部分转来,通常在同一页上换页连接:指出转到另一页图上或由另一页转来数据流:用来连接其它符号,指明数据流动方向对于复杂的系统,一般采用分层的形式。系统流程图表示一个具体的物理系统穿孔卡片:表示用穿孔卡片输入或输出,也可表示一个穿孔卡片文件文档:通常表示打印输出,也可表示用打印终端输出数据系统流程图磁带:磁带输入/输出,或表示一个磁带文件联机存储:表示任何种类的联机存储,包括磁盘、磁鼓、软盘和海量存储器等磁盘:磁盘输入/输出,也可表示存储在磁盘上的文件和数据库系统流程图磁鼓:磁鼓输入/输出,也可表示存储在磁鼓上的文件和数据库显示:CRT终端或类似的显示部件,可用于输入或输出,也可既输入又输出人工输入:人工输入数据的脱机处理,例如填写表格系统流程图人工操作:人工完成的处理,例如,会计在工资支票上签名辅助操作:使用设备进行的脱机操作通信链路:通过远程通信线路或链路传送数据系统流程图例子变化仓库零库存量件临界值库存清单XX:————————XX:————…………库存临界值定货报告例子:库存清单程序事务库存清单主文件订货信息报告生成程序订货报告该装配厂使用一台小型计算机处理更新库存清单主文件和产生订货报告的任务。零件库存量的每一次变化称为一个事务,由放在仓库中的CRT终端输入到计算机中;系统中的库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的订货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出订货报告。注:符号=系统部件箭头=信息流动路径即库存量变化画法习惯上信息在图中从顶向下或从左向右流动可以在图上加注释,注释较多时,可以另外加一个文档来进行解释复杂系统可以用分层方法来表示首先用一张高层次的系统流程图描绘系统总体概貌,表明系统的关键功能每个关键功能扩展到适当的详细程度,画在单独的一页纸上用系统流程图设计管理系统应该注意的问题1、尽量缩短处理时间。2、尽量减少空闲时间。3、要考虑便于完成程序的调试。系统流程图实例1——借书处理某图书馆闭架借书流程如下:读者必须被验明证件后才能进入查询室。读者在查询室内通过检书卡或利用终端检索图书数据库来查找自己所需的图书。找到所需的图书并填好索书单后到服务台借书。如果所借图书还有剩余,管理员将填好借书单,从库房中取出图书交于读者。图书数据库读者验证图书查询检书卡索书单借书借书单取书系统流程图例2结束学生申请购书购书证明检索教材帐本是否有该教材购书单开购书发票和购书单购书发票到书库领书人工销售教材流程图计算机售书系统流程图结束学生购书发票到书库领书购书单终端审查并开发票11---学生各学期用书数据库购书单22---教材存量数据库数据流图:使用数据流图来描述所分析系统的逻辑模型。在数据流图中无具体的物理元素,主要描绘系统中的数据的流动与处理情况。数据流图使用直观的图示方法,并且简单,是分析人员与用户之间沟通的极好的通讯工具。它只反映系统必须完成的逻辑功能,所以是一种功能模型。数据流图:数据流图中的主要图形元素数据流图:描述银行取款过程的数据流图数据流图:数据流与数据加工之间的关系注意点数据流与程序流程图中用箭头表示的控制流有本质不同在数据流图中应描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件处理并不一定是一个程序,可以代表一系列程序、单个程序或者程序的一个模块,甚至人工处理过程一个数据存储也并不一定是一个文件,它可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等等通常在数据流图中忽略出错处理,也不包括如打开文件、关闭文件之类的内务处理数据流图的要点是描绘“做什么”,而不是“怎么做”命名为数据流(或数据存储)命名名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)如果在为某个数据流(或数据存储)起名字时遇到了困难,则可能是因为数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难为处理命名通常先为数据流命名,然后再为与之相关联的处理命名名字应该反映整个处理的功能,而不是一部分名字最好由一个具体的及物动词,再加上一个具体的宾语构成通常名字中仅包括一个动词,如果必须用两个动词才能描述清楚,可能分成两个处理更恰当如果再为某个处理命名时遇到困难,则可能是发现了分解不当的迹象,应该重新分解数据源点/终点是目标系统的外围环境,采用它们在问题域中习惯使用的名字(如“采购员”,“仓库管理员”等)数据流图:数据流图的层次结构为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统数据流图:分层数据流图数据流图:在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。商店业务处理系统这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能数据流图绘制步骤•首先确定系统的输入和输出•根据商店业务,画出顶层数据流图,以反映最主要业务处理流程•经过分析,商店业务处理的主要功能应当有销售、采购、会计三大项。主要数据流输入的源点和输出终点是顾客和供应商。•然后从输入端开始,根据商店业务工作流程,画出数据流流经的各加工框,逐步画到输出端,得到第一层数据流图第一层数据流图对销售进行细化:客户提出要求,根据商品名册编辑订单判断数据库中是否有该客户,如果没有要进行登记。根据商品库存进行订单检查如果有货,则下订单如果无货,产生暂存订单,通知采购部门订货,当货品到达后,采购部门发到货通知,此时,与暂存订单相对比,如果有货了,则下订单给会计部门发收款单,会计部门将据此开收据,同时,修改库存将发货票和收据返回给客户编写销售历史经理可以查询库存加细每一个加工框销售细化采购细化检查和修改数据流图的原则数据流图上所有图形符号只限于前述四种基本图形元素数据流图的主图必须包括前述四种基本元素,缺一不可数据流图的主图上的数据流必须封闭在外部实体之间每个加工至少有一个输入数据流和一个输出数据流在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡可以在数据流图中加入物质流,帮助用户理解数据流图图上每个元素都必须有名字数据流图中不可夹带控制流初画时可以忽略琐碎的细节,以集中精力于主要数据流数据流图的用途基本目的:交流信息的工具,因而需要分层,需要画得清楚分析和设计的工具分