软件工程_002.ppt
《软件工程_002.ppt》由会员分享,可在线阅读,更多相关《软件工程_002.ppt(64页珍藏版)》请在冰豆网上搜索。
![软件工程_002.ppt](https://file1.bdocx.com/fileroot1/2022-10/9/fdd378b1-8c4d-4612-b8c7-9542f58e16dc/fdd378b1-8c4d-4612-b8c7-9542f58e16dc1.gif)
第四章概要设计一软件设计1.软件设计的任务就是把需求分析阶段产生的分析模型转换为用适当手段表示的软件设计模型。
分析模型设计模型设计文档一软件设计2.软件设计的方法结构化设计方法面向对象设计方法一软件设计3.软件设计的内容数据设计:
将实体关系图中描述的对象和关系,将实体关系图中描述的对象和关系,以及数据字典中描述的详细数据内容转化为数据以及数据字典中描述的详细数据内容转化为数据结构的定义。
结构的定义。
体系结构设计:
定义软件系统各主要成份之间的定义软件系统各主要成份之间的关系。
关系。
接口设计:
根据数据流图定义软件内部各成份之根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间间、软件与其它协同系统之间及软件与用户之间的交互机制。
的交互机制。
过程设计:
则是把结构成份转换成软件的过程性则是把结构成份转换成软件的过程性描述。
描述。
将分析模型转换为设计将分析模型转换为设计数据字典数据字典数数据据流流图图实实体体关关系系图图状态转换图状态转换图加加工工规规格格说说明明控控制制规规格格说说明明数数据据对对象象描描述述过程设计过程设计接口设计接口设计体系结构设计体系结构设计数据设计数据设计一软件设计4.软件设计的阶段概要设计/总体设计详细设计二模块化设计1.模块(module)一个大而复杂的软件系统,根据其功能,划分许多较小的单元,或较小的程序,那么我们把这些较小的单元就称为-模块。
二模块化设计2.模块化设计(moduledesign)就是按适当的原则把软件划分为一个个较小的,相关而又相对独立的模块。
二模块化设计3.模块化设计的思想1)分解:
将问题化大为小,无论其复杂度或求解的工作量都会随之减小。
C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)软件工程基本定理软件工程基本定理设:
设:
C(x)为复杂程度函数为复杂程度函数E(x)为决定解决问题为决定解决问题xx所需的工作量所需的工作量(时间时间)函数函数二模块化设计3.模块化设计的思想1)分解:
最小成本区最小成本区M模块成本模块成本接口成本接口成本总成本总成本软件软件开发开发工作工作量量模块数模块数二模块化设计3.模块化设计的思想2)模块独立性:
是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。
衡量模块的独立性的标准:
模块间的耦合和模块的内聚。
2)模块独立性内聚:
模块内部各成分之间的联系。
低低功能功能内聚内聚顺序顺序内聚内聚通信通信内聚内聚过程过程内聚内聚时间时间内聚内聚逻辑逻辑内聚内聚偶然性偶然性内聚内聚高高强强弱弱内聚内聚性性模块独立性模块独立性模块内聚性越强,功能独立性越好,对于形成的模块内聚性越强,功能独立性越好,对于形成的模块结构有比较好的作用。
模块结构有比较好的作用。
一个模块中各个部分都是完成某一具体功能必一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。
则称该模块为功能内聚模联系,不可分割的。
则称该模块为功能内聚模块。
块。
功能内聚模块的功能独立性最强。
功能内聚模块的功能独立性最强。
功能内聚功能内聚(FunctionalCohesion)(FunctionalCohesion)模块中各组成部分是顺序执行的。
模块中各组成部分是顺序执行的。
通常情况下,上一个处理框的输出就是下通常情况下,上一个处理框的输出就是下一个处理框的输入。
一个处理框的输入。
顺序内聚顺序内聚(SequentialCohesion)(SequentialCohesion)如果一个模块内各功能部分都使用了相同的输如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为入数据,或产生了相同的输出数据,则称之为通信内聚模块。
通常,通信内聚模块是通过数通信内聚模块。
通常,通信内聚模块是通过数据流图来定义的。
据流图来定义的。
模块内各个功能是紧密相连的。
模块内各个功能是紧密相连的。
通信内聚通信内聚(CommunicationCohesion)(CommunicationCohesion)打印打印检验结检验结果果读文件读文件文件文件计算计算A计算计算B合并合并修改修改文件文件新文件新文件A结果结果B结果结果加工记录加工记录加工记录加工记录使用流程图做为工具设计程序时,如果流程图使用流程图做为工具设计程序时,如果流程图太大,可以把流程图中的某一部分划出组成模太大,可以把流程图中的某一部分划出组成模块,就得到过程内聚模块。
块,就得到过程内聚模块。
例如,把流程图中的循环部分、判定部分、计例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内算部分分成三个模块,这三个模块都是过程内聚模块。
聚模块。
过程内聚(过程内聚(ProceduralCohesionProceduralCohesion)时间内聚又称为经典内聚。
这种模块大多为多时间内聚又称为经典内聚。
这种模块大多为多功能模块,但模块的各个功能的执行与时间有功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执关,通常要求所有功能必须在同一时间段内执行。
行。
例如,初始化模块和终止模块就是时间内聚模例如,初始化模块和终止模块就是时间内聚模块。
块。
时间内聚(时间内聚(ClassicalCohesionClassicalCohesion)这种模块把几种相关的功能组合在一起,每次这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。
模块应执行哪一种功能。
写一个记录写一个记录读一个记录读一个记录判定判定调用模块调用模块被调用被调用模块模块逻辑内聚(逻辑内聚(LogicalCohesionLogicalCohesion)当几个模块内正好有一段代码是相同的,将它们当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。
这抽取出来形成单独的模块,即巧合内聚模块。
这种模块没有独立功能,各部分之间没有联系,或种模块没有独立功能,各部分之间没有联系,或联系很松散。
联系很松散。
偶然性内聚(偶然性内聚(CoincidentalCoincidentalCohesionCohesion)ABCMSTOREREC()TONREADMASTERFILEADD1TOx2)模块独立性耦合:
是程序结构中一个模块与其它模块相互关联的度量。
低低非直接非直接耦合耦合数据数据耦合耦合特征特征耦合耦合控制控制耦合耦合外部外部耦合耦合公共公共耦合耦合内容内容耦合耦合高高弱弱强强耦合性耦合性模块独立性模块独立性模块之间耦合性越强,功能独立性越差,这样形模块之间耦合性越强,功能独立性越差,这样形成的模块结构界面不好。
成的模块结构界面不好。
要求模块结构达到要求模块结构达到高内聚,低耦合高内聚,低耦合。
非直接耦合非直接耦合(NondirectCoupling)(NondirectCoupling)两个模块之间没有直接关系,它们之间的联系完两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
全是通过主模块的控制和调用来实现的。
非直接耦合的模块独立性最强。
非直接耦合的模块独立性最强。
主模块主模块ABCEFGXYZ数据耦合数据耦合(DataCoupling)(DataCoupling)一个模块访问另一个模块时,彼此之间是通过简一个模块访问另一个模块时,彼此之间是通过简单数据参数单数据参数(不是控制参数、公共数据结构或外不是控制参数、公共数据结构或外部变量部变量)来交换输入、输出信息的。
来交换输入、输出信息的。
p0(x0,y0)p1(x1,y1)数据耦合数据耦合LINE(x0,y0,x1,y1)特征耦合特征耦合(StampCoupling)(StampCoupling)一组模块数据结构信息,就是一组模块数据结构信息,就是特征特征耦合。
这个记耦合。
这个记录是某一数据结构的子结构,而不是简单变量。
录是某一数据结构的子结构,而不是简单变量。
p0(x0,y0)p1(x1,y1)标记标记耦合耦合LINE(p0,p1)控制耦合控制耦合(ControlCoupling)(ControlCoupling)如果一个模块通过如果一个模块通过传送开关、标志、传送开关、标志、名字等控制参数,名字等控制参数,明显地控制选择另明显地控制选择另一模块的功能,就一模块的功能,就是控制耦合。
是控制耦合。
FlagFlagf1f2fn外部耦合(外部耦合(ExternalCouplingExternalCoupling)一组模块都访问同一全局简单变量而不是同一一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
局变量的信息,则称之为外部耦合。
公共耦合(公共耦合(CommonCouplingCommonCoupling)若一组模块都访问同一个公共数据环境,则它若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。
公共的数据环们之间的耦合就称为公共耦合。
公共的数据环境可以是全局数据结构、共享的通信区、内存境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
的公共覆盖区等。
公共耦合的复杂程度随耦合模块的个数增加而公共耦合的复杂程度随耦合模块的个数增加而显著增加。
若只是两模块间有公共数据环境,显著增加。
若只是两模块间有公共数据环境,则公共耦合有两种情况。
松散公共耦合和紧密则公共耦合有两种情况。
松散公共耦合和紧密公共耦合。
公共耦合。
common公共数据区公共数据区ABcommon公共数据区公共数据区AB松散的公共耦合松散的公共耦合紧密的公共耦合紧密的公共耦合如果发生下列情形,模块之间就是内容耦合如果发生下列情形,模块之间就是内容耦合:
一个模块直接访问另一个模块的内部数据一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重迭两个模块有一部分程序代码重迭(只可能出只可能出现在汇编语言中现在汇编语言中);一个模块有多个入口。
一个模块有多个入口。
内容耦合内容耦合(ContentCoupling)(ContentCoupling)cAB进入另一模块内部进入另一模块内部模块代码重叠模块代码重叠ABentry1entry2模块多个入口模块多个入口三结构化设计方法(SD-StructuredDesign)1.SD概述:
概述:
结构化设计方法是基于模块化、自顶向模块化、自顶向下细化、结构化程序设计下细化、结构化程序设计等程序设计技术基础发展起来的。
它所提供的方法和原则,主要是用来指导软件的概要设计。
它还提供了一种“结构图”的描述工具,是专门用来描述软件的总体结构的。
三结构化设计方法(SD-StructuredDesign)结构化设计属于面向数据流面向数据流的设计方法。
面向数据流的设计要解决的任务,就是在上述需求分析的基础上,将DFD图映射(Mapping)-软件系统的结构软件系统的结构。
换句话说,这类设计方法,允许把用DFD图表示的系统逻辑模型,很方便地转换成对于软件结构的初始设计描述。
结构化设计方法中,软件的结构一律用SC图来描述。
三结构化设计方法(SD-StructuredDesign)2.SD的目的的目的使程序的结构尽可能反映要解决的问题的结构。
3.SD的任务的任务完成目标系统的DFD目标系统结构图(SC)目标系统的目标系统的DFDSD目标系统的目标系统的SC三结构化设计方法(SD-StructuredDesign)4.SD的设计工具的设计工具系统结构图(SCStructu