软件工程导论第2章可行性研究2.1可行性研究的任务2.2可行性研究过程2.4数据流图2.5数据字典2.6成本/效益分析目标理解可行性研究过程设计软件系统的数据流图定义数据字典2.1可行性研究的任务2.1可行性研究的任务对以后的行动方针,提出建议。需要的时间长短取决于工程的规模。技术可行性经济可行性操作可行性法律可行性2.2可行性研究过程(I)2.2可行性研究过程(II)2.3系统流程图概括地描绘物理系统的传统工具。用图形符号以黑盒子形式,描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,是物理数据流图而不是程序流程图。2.3.1符号2.3.2例子某装配厂有一座存放零件的仓库,零件库存量的每一次变化称为一个事务,库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件,并且把必要的定货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出定货报告。图中每个符号用黑盒子形式定义了组成系统的一个部件,然而并没有指明每个部件的具体工作过程;图中的箭头确定了信息通过系统的逻辑路径。2.4数据流图(DataFlowDiagram)一种图形化技术,描绘信息流和数据,从输入移动到输出的过程中,所经受的变换。数据流图和数据字典(DataDictionary)共同构成了系统的逻辑模型。描绘“做什么”而不考虑“怎样做”。基本元素数据流(dataflow):由一组固定成分的数据组成,代表数据的流动方向处理/加工(process):描述了输入数据流到输出数据流的变换,即将输入数据流加工成输出数据流数据存数/文件(file):使用文件、数据库等保存某些数据结果供以后使用源或宿(sourceorsink):由一组固定成分的数据组成,代表数据的流动方向2.4.3数据流与数据加工之间的关系示例:图书订购系统DFD图书库存入库单图书代理商书库管理收费制作财务报表财务报表经理帐务数据库制作发书单图书订购核准的订购单发书单订购单顾客顾客收费数据帐单数据流图的层次结构(I)为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统数据流图的层次结构(II)在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入/输出流是该系统的输入/输出数据底层流图是指其加工不需再做分解,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。数据流图的层次结构(III)考务处理系统考试中心考生不合格报名单阅卷站错误成绩清单成绩清单考生名单合格标准报名单准考证考生通知单统计分析表画数据流图的步骤1.画系统的输入和输出2.画系统内部3.画加工内部4.重复第3步,直至每个尚未分解的加工都足够简单(即不必再分解)2.4.2例子假设一家工厂的采购部,每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件,应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量,少于库存量临界值时,就应该再次定货。如何画出数据流图确定数据的源点和终点,确定处理/加工确定数据流确定数据存储从问题描述中,提取数据流图的4种成分:如何画出数据流图数据的源点和终点“采购部每天需要一张定货报表”,“通过放在仓库中的CRT终端把事务报告给定货系统”,所以采购员是数据终点,而仓库管理员是数据源点。处理/加工,“采购部需要报表”,显然他们还没有这种报表,因此必须有一个用于产生报表的处理。事务的后果是改变零件库存量,然而任何改变数据的操作都是处理,因此对事务进行的加工是另一个处理。数据流和数据存储系统把定货报表送给采购部,因此定货报表是一个数据流;事务需要从仓库送到系统中,显然事务是另一个数据流。顶层DFD不需要画出数据存储系统必须完成的两个主要功能是“产生报表”和“处理事务”,它们将代替顶层图的“定货系统”,并加了编号。系统必须增加了两个数据存储:处理事务需要“库存清单”数据;产生报表和处理事务在不同时间,因此需要存储“定货信息”。系统功能的进一步细化:当发生一个事务时必须首先接收它;随后按照事务的内容修改库存清单;最后如果更新后的库存量少于库存量临界值时,则应该再次定货,也就是需要处理定货信息。因此,把“处理事务”分解为下述3个处理:“接收事务”、“更新库存清单”和“处理定货”2.4.4用途利用它作为交流信息的工具。仅仅使用4种基本符号,而且不包含任何有关物理实现的细节,因此,绝大多数用户都可以理解和评价它。另一个主要用途是作为分析和设计的工具。这种描绘方法形象具体,比较容易验证它的正确性用数据流图辅助物理系统的设计用数据流图辅助物理系统的设计,以图中不同处理的定时要求为指南,能够在数据流图上画出许多组自动化边界,每组自动化边界可能意味着一个不同的物理系统,因此可以根据系统的逻辑模型考虑系统的物理实现另一种划分自动化边界的方法建议检查和修改数据流图的原则(I)图形符号只限于前述四种基本图形元素主图必须包括前述四种基本元素,缺一不可主图上的数据流必须封闭在外部实体之间每个加工至少有一个输入数据流和一个输出数据流在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系规定任何一个数据流子图,必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡父图与子图的平衡分层DFD中应该不存在矛盾和冲突不存在遗漏的数据流、加工等元素例:123ABCMNT2.12.22.3NPSTQ一致性的实例:父图与子图平衡关键:数据流中的数据项全体平衡。若b=b1+b2,下面父图与子图平衡e2.52.42.32.22.1b2b1acdb21acde(a)父图(b)子图2.5数据字典字典的用途,是供人查阅对不了解的条目的解释,数据字典的作用,是在软件分析和设计的过程中,给人提供关于数据的描述信息。数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。只有DFD与DD在一起,才能共同构成系统的规格说明。2.5.1数据字典的内容4类元素的定义组成:(1)数据流(2)数据流分量(数据项)(3)数据存储(4)处理定义的内容有:名字,别名或编号,分类,描述,定义,位置,其它,等用其他工具(如IPO图或PDL)对数据处理描述更方便,2.5.1数据流描述数据流名:说明:简要介绍作用即它产生的原因和结果数据流来源:来自何方数据流去向:去向何处数据流组成:数据结构数据量流通量:数据量,流通量2.5.2数据元素词条描述数据元素名:类型:数字(离散值,连续值),文字(编码类型)长度:取值范围:相关的数据元素及数据结构:2.5.3数据文件词条描述数据文件名:简述:存放的是什么数据输入数据:输出数据:数据文件组成:数据结构存储方式:顺序,直接,关键码存取频率:2.5.4加工逻辑词条描述加工名:加工编号:反映该加工的层次简要描述:加工逻辑及功能简述输入数据流:输出数据流:加工逻辑:简述加工程序,加工顺序2.5.5源点及汇(终)点词条描述名称:外部实体名简要描述:什么外部实体有关数据流:数目:课堂作业Page54习题2.5电话号码=[校内电话|校外电话]校内电话=非零数字+3{数字}3校外电话=[本市号码|外地号码]本市号码=数字零+8位号码外地号码=数字零+区号+8位号码数字零=0区号=3{数字}38位号码=非零数字+7{数字}7数字=[数字零|非零数字]非零数字=[1..9]2.6成本/效益分析开发一个软件系统是一种投资,期望将来获得更大的经济效益。经济效益通常表现为减少运行费用或(和)增加收入。为了对比成本和效益,首先需要估计它们的数量。2.6.1成本估计1.代码行技术2.任务分解技术3.自动估计成本技术2.6.2成本/效益分析的方法(I)成本=开发成本+运行费用效益=新系统节约的运行成本+增加的收入2.6.2成本/效益分析的方法(II)1.货币的时间价值如果n年后能收入F元钱,那么这些钱的现在价值是P=F/(1+i)n2.投资回收期使累计的经济效益,等于最初投资所需要的时间。3.纯收入在整个生命周期之内,系统的累计经济效益(折合成现在值)与投资之差。4.投资回收率把资金存入银行或贷给其他企业能够获得利息