您好,欢迎访问三七文档
第3章总体设计•本章主要内容:软件设计的概念与原则;总体设计的步骤和方法;面向数据流的设计方法;总体设计的文档与评审。•本章重点:总体设计的步骤和方法;面向数据流的设计方法•本章难点:软件设计的原则,内聚和耦合,系统结构图。第3章总体设计•本章结构:•3.1总体设计的任务和步骤•3.2总体设计的概念与原则•3.3面向数据流的设计方法•3.4总体设计规格说明书与评审•3.5总体设计文档写作范例3.1总体设计的任务和步骤•3.1.1总体设计的任务•第一个任务是将系统划分成物理元素,即程序、文件、数据库、文档等等。•第二个任务是设计软件结构,即将需求规格转换为体系结构,划分出程序的模块组成,模块间的相互关系。•第三个任务是编写总体设计说明书,用户手册,测试计划,用结构图来描述软件结构。•3.1.2总体设计的步骤•1.设计供选择的方案•2.推荐最佳实现方案•3.设计软件结构•4.数据库设计•5.制定测试计划•6.编写总体设计文档•7.审查与复审总体设计文档3.2总体设计的概念与原则•3.2.1模块化•模块化设计在软件开发过程中有着广泛的应用,进行模块化设计的好处有:一方面,降低了系统的复杂性,便于修改;另一方面,推动了系统各个部分的并行开发,提高了软件的生产效率。M最小成本区软件总成本接口成本成本/模块模块数目成本图3.1模块与软件耗费3.2总体设计的概念与原则•3.2.2抽象•即抽出事物的本质特性而暂时不考虑它们的细节。•抽象的思想在软件开发中起着重要作用。•3.2.3信息隐蔽•每一个模块的实现细节对于其他模块来说是隐蔽的,也就是说,模块中所包含的信息不允许其它不需要这些信息的模块调用。•信息隐蔽对于软件的测试与维护都有很大的好处。•3.2.4模块独立性•模块独立性是软件质量的关键,它指软件系统中的每个模块只涉及软件要求的具体子功能,而和系统中其他模块接口是简单的。•模块的独立性可以用两个定性标准度量:耦合和内聚。•耦合是模块之间相互连接的紧密程度的度量。模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱。•3.2总体设计的概念与原则•内聚是一个模块内部各个元素彼此结合的紧密程度的度量。一个模块内部各个元素之间的联系越紧密,内聚性就越高,相对与其它模块之间的耦合性就会降低,而模块独立性就越强。•1.耦合•耦合有七种类型:•(1)非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用实现的,这就是非直接耦合。•(2)数据耦合:两个模块彼此间通过数据参数(不是控制参数、公共数据结构或外部变量)交换信息,这种耦合称为数据耦合。•(3)标记耦合:模块之间通过参数表传递记录信息,就是标记耦合。•(4)控制耦合:模块传递的信息中有控制信息,就称作控制耦合。•(5)公共耦合:一组模块通过同一个公共数据环境相互作用,则它们之间的耦合称为公共耦合。3.2总体设计的概念与原则•(6)内容耦合:如果发生下列情形之一,两个模块之间就发生了内容耦合。•一个模块直接访问另一个模块的内部数据。•一个模块不能通过正常入口转到另一模块的内部。•两个模块有一部分程序代码重叠(只可能出现在汇编语言中)•一个模块有多个入口。•(7)外部耦合:如果一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称为外部耦合。低耦合性高强模块独立性弱非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合图3.2七种耦合类型的关系3.2总体设计的概念与原则•2.内聚•内聚性也有七种类型:•(1)偶然内聚:如果一个模块各部分之间没有关系,或者即使有关系,这种关系也是很松散的,则称作偶然内聚。•(2)逻辑内聚:如果一个模块中包含多个逻辑上相关的功能,每次被调用时,根据传递给该模块的判定参数来确定模块应执行的功能,称作逻辑内聚。•(3)时间内聚:如果一个模块所包含的任务必须在同一时间内执行,称作时间内聚。•(4)过程内聚:如果一个模块内的处理是相关的,而且必须以特定次序执行,则称为过程内聚。•(5)通信内聚:如果一个模块各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称为通信内聚。•(6)信息内聚:如果一个模块能够完成多个功能,各个功能都在同一数据结构上操作,每一项功能有唯一的入口点,称作信息内聚。3.2总体设计的概念与原则•7)功能内聚:如果一个模块内各个部分都是完成某一具体功能必不可少的组成部分,称作功能内聚。•以上七种内聚之间的关系如图3.3所示。•功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚偶然内聚低高强弱内聚性模块独立性功能单一功能分散图3.3七种内聚类型的关系3.2总体设计的概念与原则•3.2.5结构设计准则•1.提高模块独立性•2.选择合适的模块规模•3.适当选择模块的深度、宽度、扇入和扇出•4.模块的作用范围应在控制范围之内•5.降低模块接口的复杂程度•6.设计单入口单出口且功能可预测的模块•3.3面向数据流的设计方法•3.3.1系统结构图(SC图)•系统结构图(SC图)是SD方法使用的主要描述工具,它用来显示软件的组成模块及其调用关系。•1.SC图的组成符号•SD方法约定,用矩形框来表示模块,用带箭头的连线表示模块之间的调用关系,在调用线的两旁,应标出传入和传出模块的数据流。源漏控制XXX传入XYY变换传出XYXY图3.5SC图的六种模块3.3面向数据流的设计方法•2.SC图中的模块调用•简单调用:X,YZZACBACBX,YZZ12入出12(a)(b)图3.6模块的简单调用3.3面向数据流的设计方法•选择调用:•循环调用:•CABDABC图3.8模块的循环调用图3.7模块的选择调用3.3面向数据流的设计方法•3.3.2数据流图的类型•1.变换型数据流图图3.9变换型数据流图输入变换输出3.3面向数据流的设计方法•2.事务型数据流图事务事务中心活动通路图3.10事务型数据流图•3.3.3设计过程“事务”映射成事务结构映射成变换结构优化软件结构导出软件结构详细设计精化数据流图区分事务中心和数据库接收通路“变换”区分输入和输出分支类型复查图3.11结构化设计方法的设计过程3.3面向数据流的设计方法•3.3.4变换分析•变换分析是一系列设计步骤的总称,经过这些步骤把变换型数据流图按预先确定的模式映射成软件结构。具体的设计步骤如下:•1.复查并精化数据流图•2.鉴别数据流图的类型并区分系统的输入流、输出流和变换中心三个部分•3.进行一级分解•4.进行第二级分解•5.精化软件结构•3.3.5事务分析•事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差别仅在于由数据流图到软件结构的映射方法不同。A通路C通路B通路总控A_CTLB_CTLC_CTL调度接收通路。。图3.12事务分析的映射方法3.3面向数据流的设计方法•3.3.6设计优化•3.3.7教材购销系统的结构设计示例•【例3.1】通过前一章结构化分析,已获得教材购销系统第三层的两张DFD图,即销售子系统DFD图和采购子系统DFD图。试用结构化设计方法,从上述两张DFD图导出教材,购销系统的总体结构图,包括初始终的SC图和按改进规则进行修改后的最终SC图。•第一步:细化并修改DFD图。文件名称F7F2F1F4F3学生学生1.71.11.21.61.51.4F1教材存量表F2缺书登记表F3学生用书表F4售书登记表F7进书登记表1.1审查有效性1.2开发票1.3打印发票1.4登记售书1.5登记缺书1.6产生补售书单1.7打印领书单加工名称图3.13修改后的销售子系统DFD图(数据流未画出)F1教材存量表F2缺书登记表F5待购教材表F6教材一览表F7进书登记表文件名称加工名称2.1F7F2F1F6F52.22.3书库保管员2.1按书号汇总缺书2.2按出版社汇总缺书2.3修改教材库存和待购量图3.14修改后的采购子系统DFD图(数据流未画出)3.3面向数据流的设计方法•第二步:鉴别DFD图的类型。•第三步:画出SC图的框架。采购命令用户命令读出用户选择统计缺书登记进书事务层Ⅱ销售销售初售补售获得补售书单开领书单打印发票开发票获得有效购书单读进书登记表打印领书单登记缺书登记售书审查有效性读购书单售采购销售初售补售获得补售书单开领书单打印发票开发票获得有效购书单读进书登记表打印领书单登记缺书登记售书审查有效性读购书单售初售补售教材购销系统销售命令初售命令补售命令统计命令登记命令事务层Ⅰ图3.15教材购销系统的上层框架3.3面向数据流的设计方法•第四步:分解动作分支,补充动作层与细节层。图3.16销售子系统初始SC图读购书单初售补售获得补售书单开领书单打印发票获得有效购书单读进书登记表打印领书单登记缺书登记售书审查有效性销售开发票3.4总体设计规格说明书与评审•在总体设计阶段设计人员完成的主要文档是总体设计说明书,它主要规定软件的结构。•1.引言•2.任务概述•3.总体设计•4.接口设计•5.数据结构设计•6.运行设计•7.出错处理设计•8.安全保密设计3.5总体设计文档写作范例•某高校教材管理系统中教材购销子系统的总体设计说明书。教材购销系统销售采购审查有效性开发票打印发票登记售书和打印领书单登记缺书产生补售书单按书号汇总缺书按出版社统计缺书修改教材库存和待购量图3.22总体功能图
本文标题:软件工程 3
链接地址:https://www.777doc.com/doc-212946 .html