软件工程第2章可行性研究与项目计划本章重点1.系统流程图;2.可行研究的过程;3.数据流图、数据字典本章难点数据流图、数据字典成本/效益分析教学目标●了解可行性研究的任务●了解可行性研究的过程●掌握系统流程图、数据流图、数据字典●了解成本/效益分析第2章可行性研究与项目计划•2.1可行性研究•2.2《可行性分析报告》格式•2.3项目立项•2.4项目计划•2.5系统流程图•2.6数据流图•2.7数据字典•2.8成本/效益分析第2章可行性研究与项目计划•2.1可行性研究•2.1.1可行性研究的任务•(1)经济可行性研究。•(2)社会可行性研究。•(3)工作量的估计。•(4)技术性研究。•(5)国内外同类产品的水平比较。•(6)风险性研究。•(7)法律性研究。•(8)市场前景的研究。任务不是解决问题,而是确定是否可解\值得解例:BookMis——可从下述3方面考虑:Technically(技术上)----使用现有的技术能实现吗?Operationally(操作上)----用户能行得通吗?Economically(经济上)----经济效益开发成本吗?注:不要花过多精力,占总成本的510%2.1.2可行性研究的步骤•1.确定项目规模和目标•可行性研究分析人员找到项目干系人中的关键人员,了解如下几方面的内容:(1)项目的规模有多大;(2)项目目标是什么;(3)目前系统的信息来源于何处;(4)目前系统的优点和缺点;(5)目前系统与国内外同类产品的比较,优势和劣势分别是什么。规模6•按软件规模进行划分:类别参加人员数研制期限源程序行数微型11~4周0.5k小型11~6月1k~2k数值计算或数据处理.通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。中型2~51~2年5k~50k应用程序和系统程序。软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。系统的软件工程方法是完全必要的。7大型5~202~3年50k~100k编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。甚大型100~10004~5年1M(=1024k)若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。。极大型2000~50005~10年1M~10M军事指挥、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。导出高层逻辑模型(conceptualdesign)…………抽象实现改进老系统模型新模型新系统报告应该告诉用户“What”而不是“How”步骤什么如何步骤逻辑模型重新定义1、复查定义注:此时合同未签,应考虑成本,不宜反复太多次。导出多种解法进度表经济上合算技术上可行操作上可行技术上不可行用户不可能操作不合算2.1.2可行性研究的步骤•2.建立新系统的高层逻辑模型。•从现有的物理系统出发,从而导出系统的高层逻辑。方法是用数据流图来描述逻辑模型,然后对导出的逻辑模型进行研究,最后根据开发的目标得到新系统的逻辑模型。•3.找出多种方案。•分析员从新系统的逻辑模型出发,导出几种高层次的物理解决方案供选择。•4.写出《可行性研究报告》。•5.进行审查。•1.引言•2.项目组织•3参考资料•4术语•5.可行性研究的前提•6.条件、假定和限制•7.产品方案•8销售重点2.2《可行性分析报告》书写规范•9.对现有系统的分析•10.所建议的系统在技术上的可行性分析•11.可选择的其他系统方案•12.市场分析•13.技术可行性评价•14.投资及效益分析•15.社会和法律因素方面的可行性•16.结论2.3项目立项2.4项目工作计划2.4.1项目工作计划•项目工作计划具体包括以下几项内容:•(1)项目概况;•(2)项目进度;•(3)人员构成;•(4)项目组联系方式;•(5)费用支出;•(6)客户资料。2.4.2硬件资源规划•1.服务器。•2.网络设备。•3.开发机。•4.测试机。•5.运行机。2.4.3软件资源规划•1.开发平台•2.第三方支持软件•3.项目管理工具•4.开发工具•软件开发时用到的解决工作效率问题的工具,它们是:•项目设计工具:如RATIONAL,PROJECT2007等;•软件设计绘图工具:如VISIO等;•测试工具:C++TEST,Mcabe,RationalClearCase,LoadRunner等等•BUG管理工具:BMS等。•服务器上传软件FTP软件;•软件配置软件:CVS、VSS、ROSE等。2.5系统流程图(SystemFlowDiagram)反映信息在各部分间流动的情况(描绘物理系统)≠控制、处理信息(不同于程序流程图)系统流程图是描绘系统物理模型的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。软件微软公司的WORD、金山公司的WPS等。其中微软的officevisio软件有专门用来设计各种流程图的模板。2.5.1系统流程图(SystemFlowDiagram)•例子:库存、采购•某装配厂有一座存放零件的仓库,仓库中现有的各种数据都记录在库存清单主文件中,当仓库中零件数量有变化时,应该及时修改主文件.•如果某种零件的库存量库存量临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告.变化仓库零库存量件临界值库存清单XX:————————XX:————…………库存临界值定货报告系统流程图注:符号=系统部件箭头=信息流动路径从顶向下,从左到右分层事务库存清单程序库存清单主文件定货信息报告生成程序定货报告即库存量变化2.6数据流图DFD数据流图(简称DFD):是描述系统中数据变换的图形工具。数据流图从数据传递和处理的角度,以图形的方式刻画数据流从输入到输出的传输变换过程。图中没有任何具体的物理元素,它仅仅描绘数据在系统中流动和被处理的情况。设计数据流图时只需考虑系统必须完成的基本逻辑功能,而不必考虑如何实现这些功能。因此,它也是进行软件设计的一个很好的出发点。数据流图的画法数据流图有四种成分:源点或终点、处理、数据存储和数据流。基本思想:(1)自顶向下,由外向里,逐步分解。(2)找出外部实体的输出数据流和输入数据流;(3)从外部实体的输出数据流出发,逐步画出一系列逻辑处理,直到找出外部实体所需的输入数据流,形成数据流的封闭;(4)重复上面的步骤,细化各部分逻辑处理,画出第二层或更下一级的数据流图。绘制数据流图的步骤(1)确定所开发的系统的外部项(外部实体),即系统的数据来源和去处。(2)确定整个系统的输出数据流和输入数据流,把系统作为一个加工环节,画出关联图。(3)确定系统的主要信息处理功能,按此将整个系统分解成几个加工环节(子系统)确定每个加工的输出与输入数据流以及与这些加工有关的数据存储。(4)根据自顶向下,逐层分解的原则,对上层图中全部或部分加工环节进行分解。(5)重复步骤(4),直到逐层分解结束。(6)对图进行检查和合理布局,主要检查分解是否恰当、彻底,DFD中各层是否有遗漏、重复、冲突之处,各层DFD及同层DFD之间关系是否争取及命名、编号是否确切、合理等,对错误与不当之处进行修改。(7)和用户进行交流,在用户完全理解数据图的内容的基础上征求用户的意见。X1321.11.21.41.32.12.21.1.11.1.22.1.32.1.22.1.12.2.22.2.32.2.1顶层中间层底层先全局后局部,先整体后细节,先抽象后具体.0图1图2图1.1图2.1图2.2图分层DFD图1、注释:与程序流程图不同,DFD不描述流动条件。忽略出错处理。命名尽可能清楚、具体。数据流、数据存储处理2、DFD用途:交流信息的工具(用户可以理解)。分析设计的工具(分析员)系统流程图(逻辑功能+物理实现方案)DFD(功能)自动化边界(逻辑模型物理实现).数据流图数据流图的实例数据流图有关的说明(1).处理到处理,实体到处理通常应标明数据流,处理到数据存储可省去数据流(2).数据守恒(3).数据存储必须有流入的数据流和流出的数据流(4).数据流致少有一端是处理框,数据流不能从外部实体直接到数据存储或反之,不能在外部实体之间或数据存储之间流动处理处理实体数据存储处理实体数据存储实体实体数据存储数据存储数据存储数据存储XXX处理处理OK储户检验登记帐卡E1存折E2付款取款信息E现款D存单B存折C检验出来的问题A付款通知IFGH下面是一个银行储蓄业务的数据流图。储户拿上存折或者存单到银行办理业务,银行首先检验真伪,如果是真的,那么进行扣帐登记,然后取款给储户,如果是假的,把信息返回给储户。图11-7银行储蓄业务的数据流图储户银行处理数据存储实体分解实例分解取款取款实体实体数据存储实体实体处理数据存储课堂作业1由需购置设备的部门填写申购表格,将此表格送交设备科,设备科填写预算表格送财务处,财务处核对后,将资金计划返回设备科,设备科利用资金购买设备,购得设备送需购设备的部门,将收据送财务处。实体实体实体车间填写领料单给仓库要求领料,库长根据用料计划审批领料单,未批准的领料单退回车间,已批准的领料单送到仓库保管员处,由他查阅库存帐。若帐上有货则通知车间前来领料(领料通知),否则将缺货通知采购人员课堂作业2实体实体处理数据存储数据存储课下作业请给出录取业务的最高层数据流图2.6数据字典(DataDictionary)2.6.1数据字典的用途数据字典:对DFD中的所有元素的定义系统的规格说明=DFD+数据字典是分析阶段的工具,这是数据字典最重要的用途用户通过它可以清楚地了解分析员队系统数据和处理的详细说明。不同的开发人员或不同的开发小组之间可以通过数据字典对数据做出严密一致的定义,从而避免定义得混乱。数据字典对处理的描述是很有价值的,如果改变了某个数据的定义,则很容易看出对处理所所产生的影响,并能够对受到影响的处理做出相应的改变。数据字典也是下一步设计得依据,如果要求所有开发人员都根据数据字典的定义去设计模块,则能避免许多麻烦的接口问题。2.6.2数据字典的内容1.数据流编号:数据流名称:说明:简要介绍作用即其产生的原因和结果数据流来源:从哪里来数据流去向:到那里去数据流组成:数据结构2.数据元素编号:数据元素名称:类型:数字(连续值、离散值),字符(编码类型)长度:取值范围:相关的数据元素即数据结构:3.数据存储编号:数据存储名称:简述:存放的是什么数据输入数据:输出数据:数据存储组成:数据结构存储方式:顺序、直接、关键码数据存储数据存储4.处理编号:反映该处理的层次处理名称:简要描述:处理逻辑及功能简述输入数据流:输出数据流:处理逻辑:简述处理程序、处理顺序5.外部实体编号:外部实体名称:简要描述:什么外部实体从外部实体输入:向外部实体输出:实体处理由数据元素组成数据(即数据结构)的方式四种基本类型:(1)顺序:确定次序连接两个或多个分量。(2)选择:两个或多个可能的数据元素中选取一个。(3)重复:指定的分量重复零次或多次。(4)可选:一个分量是可有可无的(重复零次或一次)2.6.3定义数据的方法符号含义及解释=等价于(或被定义为)+和(即,连接两个分量);X=a+b表示X由a和b组成[]选择符号,表示对[]中列举的值可以任选其一;X=[a|b]表示X由a或b组成{}重复符号,表示对{}中的内容可视需要重复使用;X={a}表示X由0个或多个a组成()可选符号,表示对()中的内容可由设计者决定取舍;X=(a)表示a可在X中出现,也可不出现M••N••为连接符号,表示取值范围在M到N之间;X=1••9表示X可取1到9中的任意一个值“•••”基本数据元素;X=“a”表