收藏 分享(赏)

第4章 软件概要设计.ppt

上传人:gnk289057 文档编号:9231517 上传时间:2019-07-30 格式:PPT 页数:58 大小:476KB
下载 相关 举报
第4章 软件概要设计.ppt_第1页
第1页 / 共58页
第4章 软件概要设计.ppt_第2页
第2页 / 共58页
第4章 软件概要设计.ppt_第3页
第3页 / 共58页
第4章 软件概要设计.ppt_第4页
第4页 / 共58页
第4章 软件概要设计.ppt_第5页
第5页 / 共58页
点击查看更多>>
资源描述

1、第4章 软件概要设计,模块的划分 结构化设计方法 (SD) Parnas方法 Jackson方法 程序的逻辑构造(LCP)方法 概要设计文件与复审,第4章 软件概要设计,需求分析阶段解决了让软件“做什么”的问题,并且在软件需求说明书中得到了充分的表达 进入设计阶段,开始软件需求的实施工作,也就是解决“怎么做”的问题 概要设计 (总体设计或结构设计) 工作由设计员完成,设计员应该是经验丰富的软件人员,第4章 软件概要设计,通常,设计阶段的工作分成两步 概要设计着重解决程序模块的设计问题 考虑如何把软件系统划分成若干个模块 决定各模块的接口,即模块间的相互关系 模块之间传递的信息 详细设计 (也称

2、为程序设计)决定每个模块内部的具体算法 设计完成以后,要进行必要的阶段评审,使设计中发生的问题能够及时发现并得到解决,而不致将其带到开发的后期,造成更大的危害,4.1 模块的划分,需求分析中新系统基本模型设计表达了各个业务处理之间的自然逻辑,但没有表达出计算机处理的流程 概要设计要对基本模型中计算机处理的部分进行处理模块的划分,以明确其处理的流程,模块是数据说明、可执行语句等程序对象的集合,,它单独命名而且可通过名字来访问,例如,过程、函数、子程序、宏等都可作为模块 模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块组成一个整体,可以完成指定的功能,4.1 模块的划分,4.1

3、.1 系统性能的衡量标准,衡量软件系统性能的一般标准 系统效率 (批处理系统在单位时间内处理的业务量,或者,实时处理系统的响应时间等) 系统工作质量 (数据精度、输出报表的易读性等) 系统可靠性 (抵御各种外界干扰的能力) 系统的可维护性 (纠正系统错误和缺陷,以及为满足新的要求进行扩充或压缩的容易程度),4.1.2 软件结构,软件结构以层次表示程序的系统结构,即一种控制的层次体系,并不表示软件的具体过程 软件结构表示了软件元素 (模块) 之间的关系,例如调用关系、包含关系、从属关系和嵌套关系等,4.1.2 软件结构,深度表示软件结构中控制层数 能粗略表示一个系统的大小和复杂程度,深度和程序长

4、度之间存在着某种对应关系 宽度是软件内同一层次上的模块总数 一般来说,结构的宽度越大,则系统就越复杂 扇出是由一个模块直接控制的其他模块数的一种度量 扇出过大,表示模块过分复杂,需要控制和协调的下级模块太多。扇出的上限一般为 59,平均一般为3或4 扇入表示有多少个上级模块直接控制一个给定的模块 扇入过大,意味着共享该模块的上级模块数目多,这有一定的益处,但是决不能违背模块的独立性原则而片面追求高扇入,4.1.3 模块划分的基本原则,通常,一个系统由若干个子系统组成;每个子系统又可分解成更小的子系统 在实际中,要求改变整个系统的结构的情况是极为少见的。所谓系统的修改往往只是对某些子系统的某些细

5、节作一些变动,也就是说,这些修改通常都是局部的 由于各子系统之间是相互关联的,对其中某个子系统的修改,可能会通过这些相互关系而影响到其他子系统,乃至波及整个系统 要使系统易于修改,应使每一个修改都尽可能地局部化,4.1.3 模块划分的基本原则,进行系统模块划分时,要使模块的内部联系尽可能地强,而模块间的外部联系尽可能地弱,即尽可能地提高模块的相对独立性 评价模块结构质量的具体标准是 模块的内聚度(模块强度)指一个模块内部各成分之间的联系。内聚度高,则模块的相对独立性高。内聚度可划分为七级 模块的耦合度(模块结合度)是模块结构中各模块之间相互联系的一种度量。耦合度越弱,意味着模块独立性越高,模块

6、间相互影响就越小。耦合度分四个方面,4.1.4 内聚度,偶然内聚 模块内各成分间无实质性联系,只是偶然地被凑合到一起 逻辑内聚 将几个逻辑上相似 (实际上并无必然联系) 的功能放入一个模块 时间内聚 将若干在同一个时间带内进行的工作集中在一起所形成的模块,但这些工作彼此间毫无关系 过程内聚 模块内的各成分是相关的,且必须以特定的次序执行,中间不能穿插其他工作 通讯内聚 模块中的各成分引用相同输入数据和 (或) 产生相同的输出数据,但各成分的执行次序可以是任意的 顺序内聚 模块内各成分间具有这样的特征:前一成分所产生的输出是另一成分的输入 功能内聚 模块内所有成分属于一个整体,为完成同一个功能而

7、存在,4.1.5 耦合度,数据耦合度 两个模块之间的通讯信息是若干个数据 由于两者之间没有控制信号的交换,因此相互间的影响最小 控制耦合度 两个模块之间传递的信息中含有控制信号,使得一个模块控制了另一个模块的内部逻辑 公共耦合度 两个模块通过对公共数据的访问建立联系 因为若干个模块共用某几个数据,就使联结关系复杂起来,增加了模块修改的难度 内容耦合度 一个模块不经调用直接使用另一模块的内容 例如模块A用绝对地址直接使用模块B的数据就是一例。这是最坏的一种联结形式,给模块维护带来很大困难,4.1.6 高内聚和低耦合,内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的低耦合 内聚度和耦合度要

8、说明的是同一内容,即模块的独立性,它们是衡量这种独立性的两个不同的方面,4.1.6 高内聚和低耦合,在软件设计中,应该追求高内聚、低耦合 (即块内要紧,块间要松) 的系统 可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解 由于模块间联系简单,发生在某处的错误传播到整个系统的可能性很小 模块间的耦合程度强烈地影响着系统的可理解性、可测试性、可靠性和可维护性等性能,4.1.7 模块划分的方法,根据模块间的结合方式,可以把模块划分的方法分成 按控制流划分 按数据流划分,控制流结合的模块划分法,按功能调用关系 (控制流) 来进行模块划分 设有一个主模块,这个主模块通过调用关系将各处

9、理模块组织起来,同时用参数等形式进行数据传递 时间结合的功能调用划分法以时间为基础来考虑模块的划分 该模块只处理一种业务 具有时间执行顺序 功能结合的功能调用划分法按业务类型 (每一类业务执行某一个功能) 来划分模块,图4-2 时间结合的功能调用划分法,图4-3 功能结合的功能调用划分法,数据流结合的模块划分法,数据流划分法也叫变换为中心划分法 逐次运用“黑盒”的工程定义将问题进行功能分解 即按数据变换的阶段划分模块,其中每个模块都看成是一个“黑盒” 对这个“黑盒”进行输入、输出以及输入、输出间的变换的考察 考察的结果又划分成若干更小的模块,然后将这些模块作为新的“黑盒”,再进行考察 最后细分

10、到每个“黑盒”都能用简单程序实现为止,图4-4 数据流结合的 模块划分,模块划分法的选择,在实际工作中,上述划分方法是交替使用的 研究系统的主要输入、输出数据的结构,如果之间存在对应关系,则进行与该对应关系相符合的控制流模块划分。这相当于功能结合的功能调用划分 如果主要的输入、输出数据之间没有明确的对应关系,则可引入中间数据,并通过这些中间数据进行数据流划分,以使输入、输出数据能逐次对应 如果从输入到输出,整个处理存在着明显的数据变换过程,那么可以考虑采用数据流划分,4.2 结构化设计方法 (SD),SD方法适合于软件系统的总体设计,是从整个程序的结构出发,突出程序模块的一种设计方法 它对确定

11、结构采用了面向贯穿系统的数据流的方法,同时,它对软件结构质量的评价提供了一个指导原则 SD方法用模块结构图来表达程序模块之间的关系 由于数据流程图和模块结构图之间有着一定的联系,结构化设计方法可以和需求分析中采用的结构化分析方法 (SA) 很好地衔接 使用结构化设计方法的关键是恰当地划分模块 这一方法还能和结构化程序设计 (SP) 相适应,4.2.1 变换与事务型数据流分析,系统设计的策略是根据数据流程图,按信息类型的不同转换成不同的软件结构,然后用软件设计的原则优化软件结构,图4-5 面向数据流 的设计过程,4.2.1 变换与事务型数据流分析,信息流有两种类型 变换流类型 指信息由输入源经过

12、软件系统的变换 (处理) 再进入外部世界 (输出对象) 事务流类型 指信息由输入源进入系统后可能有多种路径进行处理,需要选择其中之一进行处理,图4-6 变换流类型,图4-7 事务流类型,4.2.2 模块化设计,结构化设计方法基本思想是将系统设计成由相对独立、单一功能的模块组成的结构 由于模块之间是相对独立的,所以每个模块可以独立地被理解、编码、测试、排错或修改,使复杂的软件开发工作得以简化 模块的相对独立性也能有效地防止错误在模块之间扩散蔓延,使错误的影响控制在最小的范围,从而提高系统的可靠性 模块的相对独立性是结构化设计方法最主要的优点,它提高了系统的质量,也减少了系统开发的工作量 模块独立

13、性还为扩充已有的系统、建立新系统带来许多方便,因为可以充分利用现有的模块作积木式的扩展,4.2.2 模块化设计,用SD方法进行系统设计时,一般可分两步进行 建立初始结构图应该审查分析这个结构,通过模块分解或合并力求降低耦合,提高内聚,逐步改进 改进初始结构图,4.2.2 模块化设计,改进初始结构图 减少块间联系,降低耦合性:可从方式、作用、数量等方面着手,最常用的是减少模块间传递的参数个数 消除管道性模块,提高内聚性 (管道性模块只是像管道一样将一些参数从主模块传送到它的几个下层模块) 适当考虑系统将来可能发生的变化 注意模块的大小:是降低复杂性的手段之一 适当控制调用或被调用的次数,即深度、

14、宽度、扇出和扇入都要适当 整体考虑问题:尽可能研究整张结构图,而不是分别考虑一张结构图的各个部分,4.2.3 模块结构图 (SC),模块结构图 (又称程序结构图) 是采用结构化设计方法进行软件概要设计的重要描述手段 描述系统的层次和分块结构关系,能十分简明地表达模块化的设计思想,清楚地表达模块之间的联系 与数据流程图反映数据流程的情况不同,结构图反映的是控制流的情况。在结构图中可以看到的是模块与模块之间的联系与通讯,(a) 简单模块结构图 (b) 选择调用 (c) 循环调用,图4-10 结构图中模块及其调用关系,4.2.4 从数据流程图导出模块结构图,图4-13 从数据流程图导出模块结构图,4

15、.3 Parnas方法,Parnas是一种以信息隐蔽为原则划分模块的方法 主张在进行概要设计时,要预先估计未来生存周期中可能发生的种种情况 采取相应措施来提高系统的可维护性和可靠性,信息隐蔽原则 (Parnas方法) Parnas提出提高可维护性的措施,在概要设计中应该: 列出将来可能发生变化的因素 划分模块时将一些可能发生变化的因素隐含在某个模块的内部,使其他模块与此因素无关,4.3.1 信息隐蔽原则,4.3.1 信息隐蔽原则,信息隐蔽技术将某个因素隔离在一个模块的内部,使这个因素的变化不至于传播到所在模块的边界之外 信息隐蔽的原则禁止使用在模块接口说明中没有的关于该模块的信息 信息隐蔽提高

16、了软件的可维护性和可靠性 信息隐蔽原则是软件工程学的一条重要原则,Parnas主张: 考虑到硬件有可能出现意外故障,所以接近硬件的模块应该对硬件的行为进行检查 考虑到操作人员有可能失误,接受输入的模块应该对输入数据进行合理性检查,并提供纠正错误的手段 考虑到软件本身会有错误,所以模块之间要加强检查,防止错误的蔓延,4.3.2 加强系统成分间的检查,4.4 Jackson方法,Jackson方法是一种面向数据结构开发软件的代表性方法 前期 (70年代) 主要研究结构化程序设计 后期 (80年代) 集中研究软件系统的开发,4.4.1 Jackson方法的基本思想,强调对问题解的组合而不是分解 认为

17、自顶向下、逐步求精的方法只适合描述问题的解,并不适合开发未知的解 基本思想是使程序结构与问题结构相对应,即与数据结构相对应 用Jackson方法建立文件系统的程序结构,要以此为基础,相应地建立模块的层次结构,如处理文件的模块要调用处理记录的模块,处理记录的模块要调用处理数据项的模块,图4-15 Jackson方法的对应结构,4.4.2 Jackson方法的描述方式,数据结构有“顺序”、“重复”和“选择”三种类型,按数据结构相应地建立的程序结构,也就有这三类控制结构 Jackson方法采用图形 (结构图) 或语言方式来描述上述数据结构和程序结构,4.4.3 Jackson方法的基本步骤,Jack

18、son方法的全过程分三步 考察问题环境,分析要处理的数据,建立系统的数据结构 (不仅要考虑组成成分,还要考虑各成分之间的相互关系) 在数据结构的基础上对应地建立程序结构 列出程序中要用到的各种基本操作,再将这些操作分配到程序结构的适当的模块中。这一步是Jackson方法的关键,4.5 程序的逻辑构造(LCP)方法,又称Warnier方法 是另一种面向数据结构的设计方法 从数据结构的描述开始 接着是对加工过程的形式表示 到伪代码生成、验证和优化工作,图4-16 Warnier图举例,4.5.1 Warnier图,花括号“”表示信息层次结构的层,一个花括号内的所有名字为该层的信息分量 符号“+”表

19、示“或”,名字后面的括号内的数字表示该分量的重复次数,4.5.2 LCP设计方法,LCP设计方法由以下几部分组成 建立输入和输出数据的Warnier图 利用已建立的Warnier图构造逻辑指令表或程序加工层次图 开发程序的指令序列或控制流程图 把指令序列或控制流程图转换成伪代码程序,图4-17 LCP方法图示,4.6 概要设计文件与复审,概要设计阶段应交付的文件包括 概要设计说明书 数据库/数据结构设计说明书 组装测试计划,4.6.1 概要设计说明书,概要设计说明书又称为(程序)系统设计说明书 编制目的,是说明对程序系统的设计考虑,为程序的详细设计打下基础,包括 程序系统的基本处理流程 程序系

20、统的组织结构 功能分配 模块划分 接口设计 运行设计 数据结构设计 出错处理设计等,第一章 引 言1.1 编写目的1.2 背 景1.3 定 义1.4 参考资料第二章 总体设计2.1 需求规定2.2 运行环境2.3 基本设计概念和处理流程2.4 结 构2.5 功能需求与程序的关系,表4-2 概要设计说明书,2.6 人工处理过程2.7 尚未解决的问题第三章 接口设计3.1 用户接口3.2 外部接口3.3 内部接口第四章 运行设计4.1 运行模块组合4.2 运行控制4.3 运行时间,第五章 系统数据结构设计5.1 逻辑结构设计要点5.2 物理结构设计要点5.3 数据结构与程序的关系第六章 系统出错处

21、理设计6.1 出错信息6.2 补救措施6.2.1 后备技术6.2.2 降效技术6.2.3 恢复及再启动技术6.3 系统维护设计,表4-2 概要设计说明书 (续),4.6.2 概要设计的复审,概要设计的复审集中在软件的顶层结构设计和需求设计的可追溯性 复审有下列人员参加 个别的结构设计负责人和设计文档的作者 个别的课题负责人和行政负责人 对开发任务进行技术监督的软件工程师 技术专家和其他方面的代表,4.7 小结,概要设计主要根据软件需求说明建立系统的总体结构,并把系统分解成一个个功能独立,规模适当的模块,以及规定各模块间的关系,定义各功能模块的接口等 用来评价模块结构质量的具体标准是模块的耦合度和内聚度。在软件设计中,应该追求高内聚低耦合 (即块内要紧,块间要松) 的系统,4.7 小结,常见的概要设计方法有以数据流程图为基础构造模块结构的结构化设计 (SD) 方法,以数据结构为基础构造模块结构的Jackson方法,有以信息隐蔽为原则构造模块结构的Parans方法,此外还有以数据结构为基础的LCP (Wanier) 方法等 概要设计产生的主要文件是概要设计说明书,它既是编程的基础,也是进行测试的依据之一,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报