第2章软件的定义及可行性研究内容提要2.1问题定义2.2可行性研究2.3可行性研究报告的主要内容以及在软件开发中的作用2.4实例分析2.5本章小结软件的定义及可行性研究•一般说来,把软件的生命周期划分为软件定义、软件开发、软件运行三个时期。•软件定义时期是生命周期的第一个时期,也是软件开发的基础。根据软件开发的基本过程,这个时期可分为两个阶段:问题定义和可行性研究。这两个阶段的主要任务就是分析用户要求,在对用户要求充分了解的前提下,分析未来新系统(即目标系统)的主要目标,分析开发系统的可行性。参加这个时期工作的人员有用户和系统分析员。软件的定义及可行性研究图2.1软件定义时期工作流程2.1问题定义问题定义•问题定义是软件定义时期的第一个阶段,作为软件的开发者,在这个阶段必须弄清用户“需要计算机解决什么问题”。•2.1.1问题定义的内容(1)问题的背景,弄清楚待开发系统现在处于什么状态,为什么要开发它,是否具备开发条件等问题。(2)提出开发系统的问题要求以及总体要求。(3)明确问题的性质、类型和范围。(4)明确待开发系统要实现的目标、功能和规模。(5)提出开发的条件要求和环境要求。问题定义•2.1.2问题定义的方法在问题定义阶段,需要用户和系统分析员共同协作、紧密配合,方能圆满地完成问题定义报告。具体步骤如下:首先,系统分析员要针对用户的要求做详细的调查研究,认真听取用户对问题的介绍;阅读与问题有关的资料,必要时还要深入现场,亲自操作;调查开发系统的背景;了解用户对开发的要求。其次是与用户反复讨论,以使问题进一步确定化。经过用户和系统分析员双方充分协商,确定问题定义的内容。最后写出双方均认可的问题定义报告。2.2可行性研究可行性研究•可行性研究是在问题定义之后进行的,它是软件定义时期的第二个阶段。可行性研究的目的是明确“问题是否能够解决”和“是否值得去解决”。也就是判断为开发系统所定的目标和规模是否能够实现,新系统是否能够带来经济效益。•可行性研究的实质是在高层次上做一次大大简化了的需求分析和设计。•作为可行性研究的成果,最后要写出《可行性论证报告》。可行性研究•2.2.1可行性研究的任务•1.技术可行性•从技术的角度去研究系统实现的可行性。主要包括:在给出的限制范围内,能否设计出系统,并实现必要的功能和性能;开发人员、硬件和软件是否存在问题;系统所用到的相关技术是否支持。•2.经济可行性•是对软件开发项目进行成本.效益估算,分析实现这个系统有没有经济效益。•3.运行可行性•指为新系统规定的运行方式是否可行。如果新系统建立在原来已担负其他任务的原系统上,就不能要求它在实时在线状态下运行,以免与原有的任务相矛盾。可行性研究•4.法律可行性•研究新系统的开发在社会上和政治上会不会引起侵权、破坏以及会不会与法律相抵触等问题。•可行性研究最根本的任务是对以后的行动方向提出建议。如果可行性研究的结果是问题没有可行的解,那么系统分析员应该建议停止这项工程的开发;如果可行性研究的结果是问题值得去解决,那么系统分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的开发计划。可行性研究•2.2.2可行性研究的方法和步骤•可行性研究的整个过程是从分析《新系统目标与范围的说明书》开始到新系统的推荐方案通过审查为止。在整个过程中,要经过以下步骤:•1.审核系统的规模和目标•2.研究当前正在使用的系统•3.导出新系统的高层逻辑模型(1)由当前物理系统提出当前系统物理模型;(2)由当前系统物理模型,导出当前系统逻辑模型;(3)参考当前系统逻辑模型,设想出新系统逻辑模型;(4)根据新系统逻辑模型建造新系统物理模型,导出新物理系统。可行性研究•4.重新定义问题图2.3建立系统逻辑模型的过程可行性研究•5.提出和评价供选择的方案•6.推荐一个方案和行动方针•(1)项目的开发价值;(2)推荐这个方案的理由。•7.草拟项目开发计划•(1)工程进度表•(2)开发人员•(3)各种资源•(4)成本估计•8.书写文档,提交审查可行性研究•2.2.3系统流程图•在进行可行性研究的过程中,需要用物理模型对当前物理系统和新物理系统进行描述,系统流程图是用来描述系统物理模型的一种传统工具。••系统流程图的基本内容是:•(1)用图形符号以黑盒子形式描述系统内的每一个成分(例如:程序、文件、数据库、硬件设备、人工过程等)。••(2)用“→”表示信息在系统各个成分之间的流动情况(不要误认为“”表示信息的加工和控制过程)。可行性研究图2.4教师图书采购系统流程图可行性研究•2.2.4数据流图•数据流图(DFD)是描述数据处理过程的工具。它从数据传递和加工的角度,以图形的方式描述数据流从输入到输出的传输变换过程。它表示了系统内部信息的流向以及系统的逻辑处理功能。•数据流图中的基本图形符号有四种:(1)“→”表示数据和数据流。箭头表示数据的流动方向。数据流图中应在线旁标注数据流名。(2)“○”表示对数据的加工,即对数据的某种操作或变换。数据流图中应在圆圈内写上加工名。(3)“”表示按照某种规则生成,且长度不限的数据文件(也称数据存储)。数据流图中应在双线旁标注文件名。(4)“□”表示数据流的源头和终端。可行性研究图2.5教师图书采购系统数据流图可行性研究•数据流图中各种成分及命名方法(1)数据流数据流表明数据和数据流向,它通常由一组数据项组成。•两个加工之间可以有多个数据流,这些数据流之间没有任何联系。数据流图中也不表明它们的先后次序。指向文件的数据流可以是写入文件或查询文件,从文件引出的数据流可以是从文件读出的数据或得到的查询结果。•在加工之间传输的数据流必须有一个合适的名词,而在文件和加工之间传输的数据流可以不命名,因为可以从“加工”和“文件”的名字,弄清数据流的含义。可行性研究(2)加工加工是对数据的某种操作或变换。加工要取适当的名字,以提高可读性。“加工”的名字通常是动词短语,它应简明扼要地表明完成什么加工。不要使用含糊不具体的动词,如“处理”、“加工”等。(3)文件文件起暂时保存数据的作用。文件的命名方法与数据流的命名方法类似。(4)数据源头和终点数据源头和终点是数据的始发点和终止点,是表示系统和环境的接口。在实际问题中,它可以是人员、计算机外部设备或其他装置,不需要对它进行软件设计和实现。因此,在命名时应符合环境的真实状况。可行性研究•2.2.5经济可行性在可行性研究过程中,经济可行性研究占有重要地位,它从经济上衡量一个项目是否有开发价值。经济可行性研究主要包括两个方面的内容:一是新系统成本的估计;二是新系统可能产生的效益。又称为成本/效益分析。主要内容系统成本系统效益软件开发成本运行维护成本经济效益社会效益图2.6经济可行性分析的主要内容可行性研究报告的主要内容以及在软件开发中的作用可行性研究报告的主要内容以及在软件开发中的作用•可行性研究报告是可行性分析阶段结束后提交的文档,是决定软件开发项目的重要基础,也是软件后续设计的基本依据。2.3.1可行性研究报告的基本内容1.引言2.可行性研究的前提3.对现有系统的分析4.所建议技术的可行性分析5.所建议系统经济可行性分析6.社会因素可行性分析7.其他可供选择的方案8.结论意见可行性研究报告的主要内容以及在软件开发中的作用•1.引言(1)阐明编写该报告的目的,指出读者对象。(2)指出项目的背景。包括项目名称;项目的任务提出者、开发者、用户及实现软件的单位;项目与其他软件系统的关系。(3)定义。给出报告中用到的专门术语的定义和英文缩写的原文。(4)参考资料。列出可能使用到的有关资料的标题、标号、作者、发表日期、出版社或资料来源。①书写文档所引用的有关资料所参考的软件标准或规范;②与项目有关的已发表的资料;③项目经批准的计划任务书、合同或上级机关的批文。可行性研究报告的主要内容以及在软件开发中的作用2.可行性研究的前提(1)要求:列出对拟开发项目的各项基本要求,并加以说明。包括:功能、性能、输入.输出、基本数据流图、安全与保密要求等。(2)目标:可包括人力与设备费用的节省、处理速度的提高、控制精度或生产力的提高、管理信息服务的改进、决策系统的改进、人员工作效率的提高。(3)条件、假定和限制:可包括建议开发软件运行的最短寿命,经费来源和使用限制,法律和政策方面的限制,硬件、软件、运行环境和开发环境的条件和限制,可利用的信息和资源,建议开发软件投入使用的最迟时间等。(4)可行性研究方法。(5)决定可行性的主要因素。可行性研究报告的主要内容以及在软件开发中的作用3.对现有系统的分析(1)处理流程和数据流程。(2)工作负荷。(3)费用支出:如人力、设备、空间、支持性服务、材料等各项开支。(4)人员:列出所需人员的专业技术类别和数量。(5)设备。(6)局限性:说明现有系统存在的问题以及开发新系统的必要性。可行性研究报告的主要内容以及在软件开发中的作用•4.所建议技术的可行性分析(1)对系统的简要概述。(2)与现有系统比较的优越性。(3)处理流程和数据流程。(4)采用建议系统带来的影响:对设备的影响、对现有软件的影响、对用户的影响、对系统运行的影响、对开发环境的影响、对经费支出的影响。(5)技术可行性评价:包括在限制的条件下,功能目的能否达到;利用现有技术,功能目的能否达到;对开发人员数量和质量的要求,并说明是否满足;在规定的期限内,开发能否完成。可行性研究报告的主要内容以及在软件开发中的作用5.所建议系统经济可行性分析(1)支出。(2)效益。(3)收益/投资比。(4)投资回收周期。(5)敏感性分析:指一些关键性因素,如系统生命周期长短、系统工作负荷量、处理速度要求、设备和软件配置变化等对支出和收益的影响分析。可行性研究报告的主要内容以及在软件开发中的作用6.社会因素可行性分析(1)法律因素:如合同责任、侵犯专利权、侵犯版权等。(2)用户使用可行性:如用户单位的行政管理、工作制度、人员素质等能否满足要求。7.其他可供选择的方案逐个阐明其他可供选择的方案,并重点说明未被推荐的理由。8.结论意见(1)着手组织开发;(2)等待若干条件具备后才能开发;(3)需对开发目标进行某些修改;(4)不能进行或不必进行;(5)其他。可行性研究报告的主要内容以及在软件开发中的作用•2.3.2可行性研究报告编制中应注意的问题1.坚持实事求是的原则,不要随意夸大新系统的功能和其他指标。2.任何一项内容的书写均要以科学分析的结果为依据,不能凭空想象。3.对每一项内容的描述必须反复推敲,一定要做到用词恰当、准确。4.从具体情况出发。可行性研究报告不一定面面俱到,但对于用户关心的部分或项目中重要的部分要重点阐明。5.书写形式要规范。可行性研究报告的主要内容以及在软件开发中的作用•2.3.3可行性研究报告在软件开发中的作用1.可行性研究报告是可行性研究阶段的成果。2.可行性研究报告提出了软件开发的总体目标和范围,因此它是软件开发的行动指南。3.可行性研究报告是需求分析的基础和依据。2.4实例分析实例分析2.4.1弄清问题的背景及定义2.4.2确定目标系统的功能2.4.3技术可行性分析1.网络方面2.数据库方面2.4.4经济效益分析2.4.5项目实施计划1.需求分析;2.需求分析确认;3.系统设计;4.程序设计;5.新作业制度实施;6.数据收集整理与建档本章小结软件的定义及可行性研究是软件生命周期的第一个阶段。在问题正确定义的基础上,通过分析,导出问题的初步试探性的解法。然后在此基础上复查,并修改问题的定义,再分析,再提出改进解法……如此反复,直至提出一个符合系统目标的高层次的逻辑模型。由这个逻辑模型可设想出多种可能的物理系统。然后对这些物理系统进行可行性研究,最后由系统分析员提出一个推荐的行动方案,提交审查。数据流图是描述系统逻辑模型的最好工具,而系统流程图则是描述系统物理模型的最好工具。在可行性研究中,经济可行性是一项重要内容。使用部门往往从经济的角度考虑是否投资于这项工程。”可行性研究报告”是软件的定义及可行性研究时期所产生的重要文档。