1、过程设计:则是把结构成份转换成软件的过程性则是把结构成份转换成软件的过程性描述。描述。将分析模型转换为设计将分析模型转换为设计数据字典数据字典数数据据流流图图实实体体关关系系图图状态转换图状态转换图加加工工规规格格说说明明控控制制规规 格格说说明明数数据据对对象象描描述述过程设计过程设计接口设计接口设计体系结构设计体系结构设计数据设计数据设计一 软件设计4.软件设计的阶段概要设计/总体设计详细设计二 模块化设计1.模块(module)一个大而复杂的软件系统,根据其功能,划分许多较小的单元,或较小的程序,那么我们把这些较小的单元 就称为-模块。二 模块化设计2.模块化设计(module desi
2、gn)就是按适当的原则把软件划分为一个个较小的,相关而又相对独立的模块。二 模块化设计3.模块化设计的思想1)分解:将问题化大为小,无论其复杂度或求解的工作量都会随之减小。C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)软件工程基本定理软件工程基本定理设:设:C(x)为复杂程度函数为复杂程度函数 E(x)为决定解决问题为决定解决问题x x所需的工作量所需的工作量(时间时间)函数函数 二 模块化设计3.模块化设计的思想1)分解:最小成本区最小成本区M模块成本模块成本接口成本接口成本总成本总成本软件软件开发开发工作工作量量 模块数模块数 二 模块化设计3.模块化设计的思
3、想2)模块独立性:是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。衡量模块的独立性的标准:模块间的耦合和模块的内聚。2)模块独立性内聚:模块内部各成分之间的联系。低低功能功能内聚内聚顺序顺序内聚内聚通信通信内聚内聚过程过程内聚内聚时间时间内聚内聚逻辑逻辑内聚内聚偶然性偶然性内聚内聚 高高强强弱弱 内聚内聚性性模块独立性模块独立性模块内聚性越强,功能独立性越好,对于形成的模块内聚性越强,功能独立性越好,对于形成的模块结构有比较好的作用。模块结构有比较好的作用。一个模块中各个部分都是完成某一具体功能必一个模块中各个部分都是完成某一具体功能必不可少的组成部分
4、,或者说该模块中所有部分不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模联系,不可分割的。则称该模块为功能内聚模块。块。功能内聚模块的功能独立性最强。功能内聚功能内聚(Functional Cohesion)(Functional Cohesion)模块中各组成部分是顺序执行的。模块中各组成部分是顺序执行的。通常情况下,上一个处理框的输出就是下通常情况下,上一个处理框的输出就是下一个处理框的输入。一个处理框的输入。顺序内聚顺序内聚(Sequential Cohesion)(Seque
5、ntial Cohesion)如果一个模块内各功能部分都使用了相同的输如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。据流图来定义的。模块内各个功能是紧密相连的。通信内聚通信内聚 (Communication Cohesion)(Communication Cohesion)打印打印检验结检验结果果读文件读文件文件文件计算计算A计算计算B合并合并修改修改文件文件新文件新文件A结果结果B结果结果加工记录加工记录加工记录加工记录使用
6、流程图做为工具设计程序时,如果流程图使用流程图做为工具设计程序时,如果流程图太大,可以把流程图中的某一部分划出组成模太大,可以把流程图中的某一部分划出组成模块,就得到过程内聚模块。块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内算部分分成三个模块,这三个模块都是过程内聚模块。聚模块。过程内聚(过程内聚(Procedural CohesionProcedural Cohesion)时间内聚又称为经典内聚。这种模块大多为多时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有功
7、能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执关,通常要求所有功能必须在同一时间段内执行。行。例如,初始化模块和终止模块就是时间内聚模例如,初始化模块和终止模块就是时间内聚模块。时间内聚(时间内聚(Classical CohesionClassical Cohesion)这种模块把几种相关的功能组合在一起,每次这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。模块应执行哪一种功能。写一个记录写一个记录读一个记录读一个记录判定判定调用模块调用模块被调用被调用模块模块逻辑内聚
8、(逻辑内聚(Logical CohesionLogical Cohesion)当几个模块内正好有一段代码是相同的,将它们当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。这抽取出来形成单独的模块,即巧合内聚模块。这种模块没有独立功能,各部分之间没有联系,或种模块没有独立功能,各部分之间没有联系,或联系很松散。联系很松散。偶然性内聚(偶然性内聚(Coincidental Coincidental CohesionCohesion)ABCM STORE REC()TO N READ MASTER FILE ADD 1 TO x 2)模块独立性耦合:是程序结构中一个模
9、块与其它模块相互关联的度量。低低非直接非直接耦合耦合数据数据耦合耦合特征特征耦合耦合控制控制耦合耦合外部外部耦合耦合公共公共耦合耦合内容内容耦合耦合 高高弱弱 强强耦合性耦合性模块独立性模块独立性模块之间耦合性越强,功能独立性越差,这样形模块之间耦合性越强,功能独立性越差,这样形成的模块结构界面不好。成的模块结构界面不好。要求模块结构达到要求模块结构达到高内聚,低耦合高内聚,低耦合。非直接耦合非直接耦合(Nondirect Coupling)(Nondirect Coupling)两个模块之间没有直接关系,它们之间的联系完两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实
10、现的。全是通过主模块的控制和调用来实现的。非直接耦合的模块独立性最强。主模块主模块ABCEFGXYZ数据耦合数据耦合(Data Coupling)(Data Coupling)一个模块访问另一个模块时,彼此之间是通过简一个模块访问另一个模块时,彼此之间是通过简单数据参数单数据参数(不是控制参数、公共数据结构或外不是控制参数、公共数据结构或外部变量部变量)来交换输入、输出信息的。来交换输入、输出信息的。p0(x0,y0)p1(x1,y1)数据耦合数据耦合 LINE(x0,y0,x1,y1)特征耦合特征耦合(Stamp Coupling)(Stamp Coupling)一组模块数据结构信息,就是一
11、组模块数据结构信息,就是特征特征耦合。这个记耦合。这个记录是某一数据结构的子结构,而不是简单变量。录是某一数据结构的子结构,而不是简单变量。p0(x0,y0)p1(x1,y1)标记标记耦合耦合 LINE(p0,p1)控制耦合控制耦合(Control Coupling)(Control Coupling)如果一个模块通过如果一个模块通过传送开关、标志、传送开关、标志、名字等控制参数,名字等控制参数,明显地控制选择另明显地控制选择另一模块的功能,就一模块的功能,就是控制耦合。是控制耦合。FlagFlagf1f2fn外部耦合(外部耦合(External CouplingExternal Coupli
12、ng)一组模块都访问同一全局简单变量而不是同一一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。局变量的信息,则称之为外部耦合。公共耦合(公共耦合(Common CouplingCommon Coupling)若一组模块都访问同一个公共数据环境,则它若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。的公共覆盖区等。公共耦合的复杂程
13、度随耦合模块的个数增加而公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密则公共耦合有两种情况。松散公共耦合和紧密公共耦合。公共耦合。common公共数据区公共数据区ABcommon公共数据区公共数据区AB松散的公共耦合松散的公共耦合紧密的公共耦合紧密的公共耦合如果发生下列情形,模块之间就是内容耦合如果发生下列情形,模块之间就是内容耦合:一个模块直接访问另一个模块的内部数据一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部一个模块不通过正常入口转到另一模块内部
14、;两个模块有一部分程序代码重迭两个模块有一部分程序代码重迭(只可能出只可能出现在汇编语言中现在汇编语言中);一个模块有多个入口。内容耦合内容耦合(Content Coupling)(Content Coupling)c AB进入另一模块内部进入另一模块内部模块代码重叠模块代码重叠ABentry1 entry2 模块多个入口模块多个入口三 结构化设计方法(SD-Structured Design)1.SD概述:概述:结构化设计方法是基于模块化、自顶向模块化、自顶向下细化、结构化程序设计下细化、结构化程序设计等程序设计技术基础发展起来的。它所提供的方法和原则,主要是用来指导软件的概要设计。它还提供
15、了一种“结构图”的描述工具,是专门用来描述软件的总体结构的。三 结构化设计方法(SD-Structured Design)结构化设计属于面向数据流面向数据流 的设计方法。面向数据流的设计要解决的任务,就是在上述需求分析的基础上,将DFD图 映射(Mapping)-软件系统的结构软件系统的结构。换句话说,这类设计方法,允许把用 DFD图表示的系统逻辑模型,很方便地转换成对于软件结构的初始设计描述。结构化设计方法中,软件的结构一律用 SC 图来描述。三 结构化设计方法(SD-Structured Design)2.SD的目的的目的使程序的结构尽可能反映要解决的问题的结构。3.SD的任务的任务完成目标系统的DFD目标系统结构图(SC)目标系统的目标系统的DFD SD目标系统的目标系统的SC三 结构化设计方法(SD-Structured Design)4.SD的设计工具的设计工具 系统结构图(SC Structu
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1