系统设计专业知识大全及案例分析
练习绘制数据流程图,某仓库管理系统按以下步骤进行信息处理,试画出其数据流程图 (1)保管员根据当日的出库单和入库单通过出库处理和入库处理分别将数据输入到”出库流水帐”和”入库流水帐”,并修改”库存台帐”; (2)根据库存台帐由统计打印程序输出库存日报表 (3)需要查询时,可利用查询程序在输入查询条件后,到库存台帐去查询,显示查询结果. 分析: 加工: 出库处理 入库处理 统计 打印 查询 文件: 出库流水帐 入库流水帐 库存台帐 数据流: 出库单 入库单 库存日报表 查询条件 查询结果,仓管员,入库单,出库单,入库处理,出库处理,入库流水帐,出库流水帐,库存台帐,查询处理,查询条件,查询结果,统计,打印,库存日报表,习题数据流程图(DFD),仓管员,习题:加工说明(结构式语言判定树判定表,运费,本省,外省,快件,慢件,=25公斤,快件,慢件,25公斤,快件,慢件,8元/公斤,6元/公斤,10元/公斤,8元/公斤,6元/公斤,4元/公斤,判定表,结构式语言,If 本省 then If 快件 then 运费=6元/公斤 else 运费=4元/公斤 end if else if 重量=25公斤 then if 快件 then 运费=8元/公斤 else 运费=6元/公斤 end if else if 快件 then 运费=10元/公斤 else 运费=8元/公斤 end if end if End if,第五章 系统设计,系统设计的原则 效率性 可靠性 准确性 可维护性 经济性,系统分析阶段的主要方法:结构化系统设计,结构化系统设计方法:采用模块化方法,进行新系统模块分解设计.把数据流程图表示的系统逻辑模型转变为系统模块层次结构. 核心:模块分解设计,结构化设计的主要内容,DFD,DD,模块1,模块2,模块N,借助HIPO等工具,目的:把系统划分为多个大小适当,功能明确,具有一定独立性,并容易实现的模块,从而把复杂系统的设计转变为多个简单模块的设计.,划分系统模块,数据流程图中的每一个加工(处理功能)都可以看作是一个模块,每一个模块都要完成一项功能,而这个模块的功能最终要采用程序语言来实现 我们可以由数据流程图推导出系统的模块结构,实现由系统的逻辑模型向系统物理模型的转化.,模块,程序代码,数据流程图,模块结构图,程序代码,逻辑模型,物理模型,加工,系统分析,系统设计,系统实施,第四章 第五章 系统分析 系统设计 做什么 怎么做 逻辑模型 物理模型 数据流程图 模块结构图 结构化分析 结构化设计,模块,模块含义:组成系统的功能单元. 模块的属性:功能/逻辑/状态 逻辑模块与物理模块,3.模块结构基本符号及表示法,编辑学生记录,读学生记录,学生数据,无此学生,学号,模块的调用,数据信息,控制信息,模块的三种调用关系,顺序调用 选择调用 重复调用(循环调用),顺序调用,B,A,C,x,y,z,(a)表示法一,(b)表示法二,z,B,A,C,1,2,入,出,1,2,x,y,z,z,A调用B和C,SC中的选择调用,A,C,B,D,A根据内 部判断决定是否调用B,A按另一判 定结果选择调用C或D,1,2,选择调用的例子: A( ) : if (条件) B( ) else C( ) : ,A,B,C,SC中的循环调用,A,B,C,A根据循环条件重复调用B、C等模块,循环调用的例子: A( ) : while (条件) B( ); : ; : ,A,B,模块层次功能分解图(HIPO图),基本思想:对模块各组成部分进行分解,输入,处理,输出,模块的组成,基本步骤: 将模块分解成输入、处理和输出三个部分 分解模块的输入部分 分解模块的处理部分 分解模块的输出部分,处理,输入,输出,入库单,出库单,入库处理,出库处理,入库流水帐,出库流水帐,库存台帐,统计,打印,库存日报表,第1层DFD,给出模块数据流程图,绘制库存管理模块的HIPO图, 根据数据流程图把库存管理模块分解成输入、处理和输出三个功能模块画出总体IPO图,输入入库单 输入出库单,入库处理 出库处理,统计库存日报表 打印库存日报表,输入,输出,处理,“库存管理”模块总体IPO图,总体IPO图,对模块横向的分解,3 根据总体IPO图,将输入、处理和输出三个模块再分别进行分解绘制出库存管理的HIPO图,库存管理,处理,输入,输出,输入 出库单,输入 入库单,入库处理,出库处理,统计打印库存台帐,3 根据总体IPO图,将输入、处理和输出三个模块再分别进行分解绘制出库存管理的HIPO图,库存管理,处理,输入,输出,输入 出库单,输入 入库单,入库处理,出库处理,登记入 库流水帐,登记出 库流水帐,修改库 存台帐,修改库 存台帐,统计打印库存台帐,打印库 存台帐,统计库 存台帐,分析:,HIPO图是对模块横向和纵向的分解 H:要求反映模块的纵向上的层次关系和模块间控制和被控制的关系,是对模块纵向上的分解. IPO:要求反映模块输入、处理和输出的结构,是对模块横向上的分解,在HIPO图的基础上,根据数据字典,绘制各模块的IPO图,作为程序设计的依据.,系统名称:库存管理 设计者:张三 模块名称:登记入库流水帐 日期:04.11.26,上层调用模块: 入库处理,可调用的下层模块: 无,输入: 入库货物编号 入库数量 入库时间等,输出: 更新后的入库 流水帐,处理: 在入库流水帐中增加一条新的入库记录, 分别在该新记录中录入货物编号, 入库数量,入库时间等信息,比较:,DFD与DD关系 HIPO与底层IPO关系 DD DFD 底层IPO HIPO,补充说明,补充说明,(三) 模块设计的原则模块独立性,系统的可维护性是系统评价的一个重要因素,可维护性,模块的独立性,1.模块的独立性,模块独立的含义: 模块完成独立、单一的功能 模块间关联和依赖程度尽量小,2.模块独立性的度量,模块独立性取决于模块的内部和外部特性。 模块独立性的度量标准: 模块自身的聚合性(块内联系) 模块之间的耦合性(块间联系),模块内的联系尽可能多(聚合) 模块间的联系尽可能的少 (耦合),目标,4. 模块独立性的度量之一:聚合度,衡量一个模块内部各成分之间彼此结合的紧密程度 设计目标:高聚合 模块的聚合度越高,独立性越强,(1) 功能聚合,一个模块内的所有成分的处理动作全部为完成某个功能,且只执行一个功能,缺一不可, 称为功能聚合。 聚合性最强 如:计算实发工资,打印发票等,(2) 顺序聚合,一个模块能完成多个操作,前一个操作处理的输出数据是下一个操作处理的输入数据,模块中各成份的工作是有次序的,各成份的关系也较紧密,则称为顺序聚合。,顺序聚合模块例,模块1,模块2,(3) 数据聚合,模块内各部分使用相同的输入数据,或产生相同的输出结果,称为数据聚合,数据聚合模块例,产生工资报表,计算平均工资,职工工资记录,职工工资报表,平均工资,产生职工工资报表并计算平均工资模块,数据聚合模块例,开领 书单,登记 售书,发票,领书单,售 书 登记表,文件,删除,修改,(4) 过程聚合,一个模块内各处理成分的动作各不相同,彼此也没什么关系,但它们都受一个控制流的支配,且决定了它们的执行次序。,过程聚合模块,建立方程组系数矩阵,全部任务纳入一个 模块,得到一过程 性模块,高斯消去法,回 代,高斯消去法解题流程,控制流:计算某线形方程的解,(5) 时间聚合,模块完成的功能几乎在同一时间 内执行,这些功能只因时间因素 关联在一起。 例如:初始化系统模块、 系统结束模块、 紧急故障处理模块等均是时间性聚合 模块.,(6) 逻辑聚合,把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。,逻辑聚合模块例,A,B,C,E,F,G,A,B,C,EFG,A1,B1,C1,EFG模块内部逻辑,E、F、G逻辑 功能相似,组 成新模块EFG,公用代码段,公用代码段,(7) 偶然聚合,模块内各部分间无联系,A,B,C,M,MOVE O TO R READ FILE F MOVE S TO T,模块M中的三个语句没有任何联系 缺点:可理解性差, 可修改性差,例:,做杂事,模块的聚合性类型:,低 偶然聚合 内 逻辑聚合 聚 时间聚合 性 过程聚合 数据聚合 顺序聚合 高 功能聚合,模 块 独 立 性,弱(功能分散),强(功能单一),在设计中,并不需要精确判定任何两个模块间的联系程度,重要的是应当尽可能作到高度的块内组合,通过修改设计,使每一个模块执行单一的功能,提高模块的块内组合,降低块间的联系,争取获得较高的模块独立性。,3.模块独立性的度量之二:耦合度,耦合度是模块间的联结关系,衡量不同模块间的相互依赖的紧密程度, 耦合度越高,模块独立性越,无耦合没有依赖关系,松散耦合有 少量依赖关系,紧密耦合有 很多依赖关系,模块耦合度(续),耦合度强弱的因素:,一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块的控制的数量 模块间接口的复杂程度,模块间耦合的类型:,低 耦 数据耦合 合 性 控制耦合 高 内容耦合,模 块 独 立 性,弱,(低耦合),强,(中耦合),(强耦合),(1) 数据耦合,一模块调用另一模块时,被调 用模块的输入、输出都是简单 的数据。 属松散耦合。, 数据耦合,指两个模块之间的联系是通过 数据交换而实现的。 是一种理想的耦合,耦合度最 低,因为一个模块与其它模块之间 的联系全部是数据联系,返回,图:数据耦合,返回,数据耦合举例,开发票,计算水费,单价 数量,金额, 控制耦合,两个模块之间除了传递数据信息外,还传递控制信息,模块间的这种连结方式称为控制耦合。,返回,例:“无此职工”就是用来表示传送来的职工号有误的控制信息,返回,查职工档案,读人事文件,档案数据,职工号,无此职工,按键或击鼠标,图:控制耦合,返回,(3) 内容耦合,一模块直接访问另一模块的 内部信息(程序代码或数据) 最不好内容耦合形式 !, 内容耦合,一个模块与另一个模块的内部属性(程序或内部数据)直接发生联系。 内容耦合的两个模块间是病态联结,在修改其中一个模块时,将直接影响到另一个模块,产生波动现象,影响整个系统。因此,在系统设计时,应完全避免内容耦合。,返回,模块化设计对耦合度的要求:,耦合是影响系统复杂程度和设计 质量的重要因素 目标:建立模块间耦合度尽可能 松散的系统,如何降低模块间耦合度:,(1) 模块必须存在耦合, 选择适当的耦合类型 原则:尽量使用数据耦合 少用控制耦合 坚决避免使用内容耦合,5. 耦合、聚合与模块独立性关系,耦合与聚合都是模块独立性的 定性标准,都反映模块独立性 的良好程度。但耦合是直接的 主导因素,聚合则辅助耦合共 同对模块独立性进行衡量。,聚合与耦合密切相关 同其它