第二章我们在做任何工作以前,必须明确工作的性质、任务、制定完成任务的计划。显然完成一个软件系统的开发,也应解决好类似的问题。明确软件开发系统的任务,完成任务的价值,2.12.1.1如果不限时间、不限资源、则任何研制项目都是可行的!然而在开发以计算机为基础的系统时,需要用最小的代价,在尽可能短的时间内确定问题是否能够解决。这种可行性研究的目的是确定我们所研究的问题是否值得去解,系统完成后所能带来的效益是否大到值得投资可行性研究的实质就是要进行一次压缩,简化了的系统分析和设计的过程,也就是在较高层次上以较抽象方式进行系统分析和系统设计的过程,可行性研究应着重考虑如下五个方1.技术可行性。是指使用现有的技术能否实现这个系统。它包括开发风险——在限制条件范围内达到必需的功能与性能;资源配置——指现有的技术人员是否胜任,开发系统的软、硬件资源是否能如期得到;技术——指现有的技术是否已发展到这样的水平,能够支持系统2.经济可行性。指新系统的经济效益能否超过开发成本。包括评价经济的合理性,权衡支出的费用和收到的利益,正确估计开发费用以及最终从所开发的系统获得的收入和利益。其中经济的合理性包括成本/效益分析,长期的总体的经营策略,对其他获利中心或获利产品3.运行可行性。指为新系统规定的运行方式是否可行。如果新系统是建立在原来已担负其他任务的计算机系统上,就不能要求它在实时在线状态下运行,以免与原有的任务相矛盾。4.操作可行性。指系统的操作方式在这个用户组织内是否行得通。它包括人事政策,科技政策和必要5.法律可行性。指新系统的开发是否会侵犯他人、集体或国家的利益,是否违反了国家可行性研究并不保证一个系统经济上明显合理、技术风险低,很少法律问题,而且不存在其他合理方案。然而,我们之所以要进行可行性研究,其目的是对以后的行动方针提出建议。如果问题没有可行的解,那么分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费。如果问题值得解,那么分析员应该推荐一个较好的解决方案,并为工程可行性研究需要的时间长短取决于系统的规模。一般来说,可行性研究的成本只是预期工程总成本的5~10%2.1.21.复查系统规模和目标。要仔细阅读和分析分析员在问题定义阶段书写的关于系统目标和规模的报告书,确定报告书的内容,修改不确切的叙述,清晰地描述对目标系统的一切限2.研究现有的系统。现有系统是信息的重要来源,现有系统要完成的工作,就是新系统所必须具备的功能。现有系统存在的缺点,新系统必须加以改进。现有系统所不具备的功能,又是用户必须的,则新系统一定要预以增加。现有系统所需要的费用是新系统的一个重要的投资依据。这样的调查研究,是了解一个陌生应用领域的最快方法。既可以使新系统脱胎而生,又不全盘照抄。另外还要注意现有系统与其他系统之间的通信接口,这是新系统设计的3.导出新系统的高层逻辑模型。软件工程设计总是从现有的物理系统出发,导出现有物理系统的逻辑模型;再以现有物理系统的逻辑模型为基础,设计出新系统的高层逻辑模型;最后根据高层逻辑模型建造新的物理系统。依据新系统的功能和约束条件,我们可以使用数据流图(DFD图)来描绘数据在系统中流动和处理的情况,使用数据字典来定义系统中使用的4.重新定义问题。新系统的逻辑模型是否能满足用户的要求,分析员和用户应该一起进行复审。复审以数据流图和数据字典为依据,对问题的定义、工程模型和目标进行审查。如上述可行性研究步骤实质上是一个循环,即定义系统目标—→复查系统目标和规模—→研究现有系统—→设计新系统—→再定义系统目标。重复这个循环过程,直到提出的新系统5.提出供选择的方案。从系统的逻辑模型出发,以系统要求为目标,利用在数据流图上划分自动化边界的方法,我们可以提出若干种较高层次的物理解法供用户选择。针对多种供(1)(2)(3)从经济角度估算每个可能系统的成本/效益。一般来说,只有投资预计能带来利润的只有在技术、操作经济等方面都可行的系统,我们才为其制定实现进度表。此进度表不需要很详细,只是要估计生存周期6.推荐建议方案。在对上一步提出的各种可行方案的分析、比较的基础上,向用户提出(1)(2)(3)7.决策。使用部门的负责人根据经济实力及分析员在可行性研究阶段对开发此项工程成本/8.制定开发计划。分析员应为推荐的系统制定一份开发计划,它包括工程的进度、人材资源的需求及使用、设备资源的需求及使用(软、硬件工具)、估算生存周期每个阶段的成本等,最后给出下一阶段(需求分析)9.书写文档提交审查。把上述可行性研究各个步骤的结果写成清晰的文档,请用户和使用部门的负责人仔细审查,也可以召开论证会。论证会成员由用户、使用部门负责人及有关方面的专家组成,负责对提出的方案进行论证,最后由论证会成员签署意见,指明该开发计2.1.31.系统概述。是对问题的简单陈述,包括系统的开发目的、目标、业务对象和范围,新系统和它的各子系统的功能与特性,新系统与当前系统的比较,所需资源以及费用和进度的2.可行性分析。这是报告的主体部分,包括新系统在经济上、技术上、操作上、运行上、法律上的可行性,以及对新系统的主客观条件的分析。若存在多种方案,则应对各种方案进3.限制。指对系统开发有影响的管理方面和技术方面的限制,包括项目的外部环境、接4.5.拟定开发计划。它包括工程进度表,人员配备情况,资源配备情况,估算出每个阶段6.结论意见。(1)(2)(3)2.2系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件。包括程序、文件、数据库和各种表格、人工过程等。它表达了信息在2.2.1国家标准(GB1526-89)《信息处理——数据流程图、程序流程图、系统流程图、程序网络图和系统资源图的文件编制符号及约定》为我们推荐了一套标准符号和使用约定。该标准是与国际标准化组织公布的标准ISO5807-85Informationprocessingdocumentationsymbolsandconventionsfordata,programandsystemflowcharts,programnetworkchartsandsystemresourcescharts相一致。系统流程图含有5种基本符号,如图2-1所示。11种系统符号如图2-2所示。符号名称说明处理能改变数据值或数据位置的加工或部件,例如,程序、处理机、人工加工等都是处理。输入/输出表示输入或输出(或既输入又输出),是一个广义的不指明具体设备的符号。连接指出转到图的另一部分或从图的另一部分转来,通常在同一页上。换页连接指出转到另一页图上或由另一页图转来。数据流用来连接其他符号,指明数据流动方向。图2-1符号名称说明穿孔卡片表示用穿孔卡片输入或输出,也可表示一个穿孔卡片文件。文档通常表示打印输出,也可表示用打印终端输入数据。磁带磁带输入/输出,或表示一个磁带文件。联机存储表示任何种类的联机存储,包括磁盘、磁鼓、软盘和海量存储器件等。磁盘磁盘输入/输出,也可表示存储在磁盘上的文件或数据库。磁鼓磁鼓输入/输出,也可表示存储在磁鼓上的文件或数据库。显示CRT终端或类似的显示部件,可用于输入或输出,也可既输入又输出。人工输入人工输入数据的脱机处理,例如,填写表格。人工操作人工完成的处理,例如,会计在工资支票上签名。辅助操作使用设备进行的脱机操作。通信链路通过远程通信线路或链路传送数据。图2-2系统符号2.2.2系统流程图是一种极好的设计工具,它有助于开发人员和用户交流信息,利用系统的每例某工厂有一座零件仓库,仓库中现有各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件中。当仓库中零件数量发生变化时,应及时修改库存清单主文件。当某种零件的库存量少于它的库存量临界值时,则应报告给采购部门以便定货。规定每工厂使用一台微机处理更新库存清单主文件和产生定货报告的任务。仓库中的每一项业务都通过CRT终端输入到计算机中。系统中的库存清单程序负责对事务进行处理,更新存储在磁盘上的库存清单主文件,把必要的定货信息写在磁带上。每天由报告生成程序读一次磁带,生成并打印出定货报告。如图2-3图中的箭头确定了信息流动的途径,对于复杂的系统,可以采用分层描述的方法来描绘整个系统。用一张高层次的系统流程图描绘系统总体概貌,然后分别把每个关键功能扩展到图2-3库存清单系统的系统流程图〖HT2.3数据流图简称DFD(DataFlowDiagram)图,它是描述数据处理过程的有力工具。数据流图从数据传送、加工的角度,以图形方式刻画数据处理系统的工作状况。数据流图描绘系统2.3.1数据流图有四种基本符号,如图2-4(a)所示。有六种附加符号,如图2-4(b)所示。数据的源点/终点表示该系统数据的外部来源或去处,不受系统控制,是系统以外的人或事物。例如,仓库的管理员、工厂的采购员、供货单位、售票处等。也可以是另外一个数据处加工(处理)并不一定是一个程序,它可以代表一系列程序,单个程序或者程序的一个模数据存储不是指数据保存的物理地点或物理存储介质,而是对数据存储的逻辑描述。数据存储并不等同于一个文件,它可以表示一个文件,文件的一部分,数据库的元素或记录的一部分等等。数据可以存储在磁盘、磁带、主存、微缩胶片等介质上。数据存储有四种形式,即把一个数据存入数据存储;用一个数据去修改数据存储中的数据;从数据存储中读出一个图2-4数据流表示数据在系统中的流动方向,一般分单向数据流和双向数据流两种。它可以由附加符号中的星号(*)表示数据流之间是“与”关系;加号(+)表示数据流之间是“或”(互斥关系)2.3.2例1一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,列出所有需要再次定货的零件。对于需要订货的零件列出其零件编号、零件名称、定货数量、单价、供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存量少于临界值时就应该再次定货。下面用软件工程的方法画出该系统的数据流图。其次是加工(处理),本题应该完成定货系统这最后考虑数据流,事务需从仓库送到系统中,显然事务是一个数据流;系统要把定货报依据以上三点我们画出定货系统的基本数据流图,如图2-5图2-5首先将加工(处理)——依据图2-5和以上两点,我们画出定货系统功能级数据流图,见图2-6图2-6定货系统功能级数据流图将事务处理进一步分解为接收事务,更新库存清单、处理定货三部分。依据本分析和图2-6我们可以画出定货系统功能分解后的数据流图。见图2-7所示。其中1.1、1.2、1.3是图2-6中功能1的分解编号。图2-7例2银行取款系统的数据流图(活期储蓄)加工(处理)依据以上三点画出银行取款系统的基本数据流图,如图2-8图2-8依据图2-8及以上二点分析,我们可以画出取款系统的功能级数据流图,如图2-9所示。图2-9取款系统功能级数据流图读者可以根据自己的需要,将图2-9例3病员监视系统的数据流图。该系统监视病房中的每个病人的重要病情信号,更新及管理病人的病历,若出现问题立即通知护理人员,并且在需要时给出某一病人的有关报告。加工(处理)依据以上分析,我们画出病员监视系统的基本数据流图,如图2-10图2-10病员监视系统基本数据流图对系统分析后,划分出四种功能,即通过一个床边监视器实现本地监视,在护士办公室依据图2-10和以上分析,我们画出病员监视系统功能级数据流图,如图2-11图2-11病员监视系统功能级数据流图将中央监视系统划分为四个处理部分,包括分解病员信号,检查是否超出界限,产生告警信息,整理病员数据。依据图2-11和本次功能分解,我们可以画出病员监视系统功能分解后的数据流图,如图2-12图2-122.3.31.2.确定系统的输入和输出数据流。随着加工(处理)的细化,功能也就越来越具体,数据流也就越来越多,输入和输出也会相应地增加,但要保持分解前后输入/输出数据流必须相同。3.用“自顶向下”的方法,逐层画出数据流图。每张数据流图中加工(处理)的个数不能超过94.将必要的存储与加工(处理)5.在画数据流图时应避免线条交