软件工程2021/6/32第2章可行性研究•许多问题不可能在预定的系统规模或时间期限内解决•目的:使用最小的代价,尽可能在短的时间内,确定问题是否能够解决2021/6/33第2章可行性研究•2.1可行性研究的任务•2.2可行性研究过程•2.3系统流程图•2.4数据流图•2.5数据字典•2.6成本/效益分析2021/6/342.1可行性研究的任务•确定问题是否值得去解–分析可能的解法–判定系统规模和目标是否能够实现–效益是否可观•较高层次的系统分析和设计过程2021/6/352.1可行性研究的任务•问题定义–是否正确–如有错误加以改正–如有约束和限制必须清楚的列出•系统逻辑模型主要解法研究可行性。。。2021/6/362.1可行性研究的任务•可行性的4个方面–技术可行性–经济可行性–操作可行性–法律可行性•预期工程总成本的5%~10%2021/6/372.2可行性研究过程•1.复查系统规模和目标–改正含糊或不确切的叙述–清晰地描述限制和约束•——解决正确的问题2021/6/382.2可行性研究过程•2.研究目前正在使用的系统–完成现有系统的基本功能–解决现有系统的问题–绘制高层系统流程图–掌握与其他系统的接口2021/6/392.2可行性研究过程•3.导出新系统的高层逻辑模型–现有物理系统现有系统的逻辑模型目标系统逻辑模型新的目标系统–高层数据流图–初步的数据字典2021/6/3102.2可行性研究过程•4.进一步定义问题–分析员和用户–以数据流图和数据字典为基础–复查问题定义、工程规模和目标–重复1~4步,直至提出的逻辑模型完全符合系统目标2021/6/3112.2可行性研究过程•5.导出和评价供选择的解法–从技术角度出发,考虑解决问题的不同方案–技术可行性,排除不现实的系统–操作可行性,排除用户不能接受的方案–经济可行性,排除利润低的方案•(成本/效益分析)–制定进度表(估算生命周期每个阶段的工作量)2021/6/3122.2可行性研究过程•6.推荐行动方针–如果值得开发,则选择最好的解法–成本/效益分析•7.草拟开发计划–工程进度表–各类开发人员、各种资源需求情况–生命周期每个阶段的成本–下一个阶段详细进度表和成本估计2021/6/3132.2可行性研究过程•8.书写文档提交审查–用户、客户组织负责人、评审组审查–见《可行性报告格式.doc》2021/6/3142.3系统流程图•系统流程图–概括描绘物理系统的传统工具–用图形符号,以黑盒子形式描述组成系统的每个部件–程序、文档、数据库、人工过程–数据在各部件之间的流动情况(非处理过程)2021/6/3152.3系统流程图•2.3.1符号–基本符号2021/6/3162.3系统流程图–系统符号(符号具体化)2021/6/3172.3系统流程图–系统符号(符号具体化)2021/6/318系统流程图例子•例子•每个符号用黑盒子形式定义了组成系统的一个部件。•没有部件内部的具体工作过程•箭头确定通过系统的逻辑路径(信息流动路径)2021/6/3192.3系统流程图•分层(逐层细化的思想)–高层次系统流程图描绘总体概貌–分别描绘每个关键功能2021/6/3202.4数据流图•当数据在软件系统中移动时,它将被一系列“变换”所修改。•数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。•在数据流图中没有任何具体的物理部件,只是描绘数据在软件中流动和被处理的逻辑过程。2021/6/3212.4.1符号•数据流图有四种基本符号:•数据流与程序流程图中用箭头表示的控制流有本质不同,千万不要混淆。2021/6/322附加符号2021/6/323•假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。•对于每个需要再次定货的零件应该列出下述数据;零件编号、零件名称、定货数量、目前价格、主要供应者和次要供应者。•零件入库或出库称为事务。•通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。2.4.2示例2021/6/3242.4.2示例2021/6/3252.4.2示例•一旦把数据流图的四种成分都分离出来以后,就可以着手画数据流图。•任何系统的基本模型都由若干个数据源点/终点以及一个处理组成,这个处理就代表了系统对数据加工变换的基本功能。定货系统的基本系统模型(突出表明了数据的源点和终点)2021/6/326•把基本系统模型细化,描绘系统的主要功能。•在图2.6中给处理和数据存储都加了编号,这样做的目的是便于引用和追踪。2.4.2示例2021/6/3272.4.2示例图2.6定货系统的功能级数据流图2021/6/3282.4.2示例图2.7把处理事务的功能进一步分解后的数据流图2021/6/329•注意:–当进一步分解将涉及如何具体实现一个功能时,就不应该再分解了。–当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。–2.4.2示例2021/6/330•数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性。•命名时应注意的问题:1.为数据流(或数据存储)•名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的•不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)•如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是2.4.3命名2021/6/3312.•通常先为数据流命名,然后再为与之相关联的处理命名。这样命名比较容易,而且体现了人类习惯的“由表及里”的思考过程。•名字应该反映整个处理的功能,而不是一部分功能。•名字最好由一个具体的及物动词,加上一个具体的宾语组成。应该尽量避免使用“加工”、“处理”等空洞笼统的动词作•通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能更恰•如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。2.4.3命名2021/6/332工资计算系统的顶层(0层)数据流图人事部门后勤部门出勤表业绩表水电扣款表职工银行工资条工资存款清单工资计算系统2021/6/333工资计算系统第一层数据流图人事部门后勤部门出勤表业绩表水电扣款表职工银行工资条1计算工资实发工资表3工资转存2打印工资清单工资存款清单工资清单F32021/6/334工资计算系统的第二层数据流图(a)“计算工资”子数据流图;(b)“工资转存”子数据流图2021/6/335工资计算系统的第三层数据流图人事部门1.1.2计算业绩奖出勤表业绩表请假、旷工时数出勤时数1.1.3计算出勤奖1.1.4计算缺勤扣款业绩奖奖惩条例F1缺勤扣款表1.1.5计算各项奖金之和奖金发放表1.1.1统计出勤、请假及旷工时数出勤奖1.2.1计算各项基本数据之和1.2.2计算工资奖金之和工资档案F2应发工资表奖金发放表基本工资2021/6/3362.4.4用途•交流信息的工具–一张数据流图处理少于9个–分层•分析和设计的工具–在数据流图上划分自动化边界–每个边界意味着一个不同的物理系统2021/6/3372.4.4用途2021/6/3382.4.4用途图2.8这种划分自动化边界的方法暗示以批量方式更新库存清单2021/6/3392.4.4用途图2.9另一种划分自动化边界的方法建议以联机方式更新库存清单2021/6/3402.4.4用途意味着什么样的系统?2021/6/3412.4.4用途联机更新库存,批量处理定货2021/6/3422.4数据流图•系统流程图:反应主体框架。•数据流图:反应数据走向,仅描述数据在系统中如何流动,如何处理和存储,它不考虑时序关系。图中的有向线段表示了数据流。•程序流程图:描述程序中控制流的情况,即程序中处理的执行顺序和执行序列所依赖的条件,图中的有向线段表示的是控制流,从一个处理走到下一个处理。人们对解决问题的方法、思路或算法的一种描述。2021/6/3432.4数据流图•程序流程图ABBCACYNX=CX=BX=CX=AYNYN2021/6/3442.4数据流图•业务流程图:就是用一些规定的符号及连线来表示某个具体业务处理过程。•业务流程图的基本图形符号非常简单,只有6个。–圆圈表示业务处理单位;–方框表示业务处理内容;–报表符号表示输出信息(报表、报告、文件、图形等);–不封口的方框表示存储文件;–卡片符号表示收集资料;–矢量连线表示业务过程联系。2021/6/3452.5•需要有一种系统化的方式,来表示每个数据对象和控制信息的特征。•数据字典是为了描述在结构化分析过程中定义的对象的内容,而使用的一种半形式化的工具。•数据字典是所有与系统相关的数据元素的有组织的列表,并且包含了对这些数据元素的精确、严格的定义,从而使得用户和系统分析员双方对输入、输出、存储的成分甚至中间计算结果有共同的理解。•简而言之,数据字典是描述数据的信息的集合,是对2021/6/3462.5•数据字典的用途是供人查阅不了解的条目的解释。提供分析设计过程中关于数据的描述。•数据字典与DFD相辅相成。•只有DFD和对应的元素的精确定义放在一起,才能构成系统的规格说明。2021/6/3472.5数据字典•2.5.1数据字典的内容–数据流–数据流分量(即数据元素)–数据存储–处理2021/6/348•数据字典信息:–名字——–别名——–使用地点与方式——使用数据或控制项的处理的列表,以及使用这些对象的方式(例如作为处理的输入,从处理输出,作为数据存储,作为外部实体)。–内容描述——描述数据或控制项内容的符号。–补充信息——2.5数据字典2021/6/349•2.5.2定义数据的方法–对数据自上而下的分解–数据元素组成数据的方式•顺序:分量的连接次序•选择:两个或多个元素中选取一个•重复:可指定重复次数•可选:重复0或1次2.5数据字典2021/6/350•虽然可以使用自然语言描述由数据元素组成数据的关系,–=意思是等价于(或定义为)–+意思是和(即,连接两个分量)–[]意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号分开供选择的分量;–{}意思是重复(即,重复花括弧内的分量)–()意思是可选(即,圆括弧里的分量可有可无)2.5数据字典2021/6/351•常常使用上限和下限进一步注释表示重复的花括弧。–一种注释方法是在开括弧的左边用上角标和下角标分别表明重复的上限和下限;–另一种注释方法是在开括弧左侧标明重复的下限,在闭括弧的右侧标明重复的上限。例如:{A}和1{A}52.5数据字典512021/6/3522.5数据字典•描述数据内容的示例:–定义长度不超过8个字符的字符串–第一个字符是字母–随后的字符既可以是字母也可以是数字标识符=字母字符+字母数字串字母数字串=0{字母或数字}7字母或数字=[字母字符|数字字符]2021/6/3532.5数据字典•2.5.3数据字典的用途–分析阶段的工具–避免模块间接口出现问题–掌握改变一个数据能产生的影响–开发数据库的第一步2021/6/3542.5数据字典•2.5.4数据字典的实现–CASE工具–人工卡片2021/6/355思考题•一个修改磁带上主文件的系统。文件管理员把修改信息穿孔在卡片上,系统读入穿孔卡片上的信息并按照记录号把修改信息顺序排列好。然后系统逐个读入主文件上的记录,根据记录上的校验码核对每个读入的记录,丢掉出错的记录,按照修改信息修改余下的记录,产生的新文件存储在磁盘上。最后,系统输出一份修改报告供文件管理员参阅。•分层画出上述主文件修改系统的数据流图。2021/6/356思考题答案•源点:文件管理员,提供修改信息•终点:文件管理员,接收修改报告2021/6/357思考题答案•处理:–接收修改信息、读主文件、校核记录、修改原始记录、产生报表•数据流:–修改信息、主文