《结构化软件设计全解ppt课件.ppt》由会员分享,可在线阅读,更多相关《结构化软件设计全解ppt课件.ppt(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、BBOOAOODOOPB技术观点数据设计数据设计系统结构设计系统结构设计过程设计过程设计详细设计详细设计 概要设计概要设计管理观点软件设计任务软件设计任务B软件设计方法分类软件设计方法分类分 类代 表面向数据流的设计或者过程驱动的设计结构化设计方法面向数据结构的设计或者数据驱动设计LCP,JSP,DSSD面向对象设计Coad,Yourdon结构化设计方法(结构化设计方法(Structured Structured Design ,SDDesign ,SD)基于模块化、自顶向下逐层细化、结构化程序设计等程序设计技术上发展起来的。B结构化设计结构化设计 结构化设计(Structured Desig
2、n,简称SD)是一种将结构化分析得到的数据流图映射成软件体系结构的设计方法映射映射DFD( (问题结构问题结构) )软件系统的结构软件系统的结构( (程序结构程序结构) )Sc图图B结构化设计结构化设计 强调模块化、自顶向下逐步求精、信息隐蔽、高内聚低耦合等设计准则 分为概要设计和详细设计两大步骤 概要设计概要设计是对软件系统的总体设计,采用结构化设是对软件系统的总体设计,采用结构化设计方法,其任务是:将系统分解成模块,确定每个计方法,其任务是:将系统分解成模块,确定每个模块的功能、接口模块的功能、接口(模块间传递的数据模块间传递的数据)及其调用关系,及其调用关系,并用模块及其对模块的调用来构
3、建软件的体系结构并用模块及其对模块的调用来构建软件的体系结构 详细设计详细设计是对模块实现细节的设计,采用结构化程是对模块实现细节的设计,采用结构化程序设计序设计(Structured Programming,简称,简称SP)方法方法 SA、SD和SP构成完整的结构化方法体系B结构图(结构图(SC) 用结构图(Structure Chert)来描述软件系统的体系结构 描述一个软件系统由哪些模块组成,以及模块之间的调用关系 结构图的基本成分有:模块模块、调用调用和数据数据B模块模块 模块(module):指具有一定功能的可以用模块名调用的一组程序语句,如函数、子程序等 它们是组成程序的基本单元
4、一个模块具有其外部特征和内部特征 外部特征包括:模块的接口外部特征包括:模块的接口(模块名、输入模块名、输入/输出参数、返输出参数、返回值等回值等)和模块的功能和模块的功能 内部特征包括:模块的内部数据和完成其功能的程序代码内部特征包括:模块的内部数据和完成其功能的程序代码 在SD中,我们只关注模块的外部特征,而忽略其内部特征 B调用和数据调用和数据 调用(call):用从一个模块指向另一个模块的箭头来表示,其含义是前者调用了后者 为了方便,有时常用直线替代箭头,此时,表示位于上为了方便,有时常用直线替代箭头,此时,表示位于上方的模块调用位于下方的模块方的模块调用位于下方的模块 数据(data
5、):模块调用时需传递的参数可通过在调用箭头旁附加一个小箭头和数据名来表示B结构图的几个结构图的几个概念概念深度:程序结构图中控制的层数,例如图中所示的结构图的深度是5宽度:程序结构图中同一层次上模块总数的最大值,例如图中所示的结构图的宽度为7扇出(fan out):该模块直接调用的模块数目。例如,例如图中模块M的扇出是4,模块A的是2,模块B的扇出是1扇入(fan in):能直接调用该模块的模块数目。例如图中模块G的扇入是1,模块I的扇入是2,模块R的扇入是4WBKAEHJDGFILCMNOPQR深度宽度扇入扇出B相关指标的相关指标的含义含义 深度和宽度在一定程序上反映了程序的规模和复杂程度
6、相对而言,如果程序结构图的深度和宽度较大,则说明相对而言,如果程序结构图的深度和宽度较大,则说明程序的规模和复杂程度都较大。程序的规模和复杂程度都较大。 模块的扇入扇出会影响结构图的深度和宽度,例如减少模块的扇入扇出会影响结构图的深度和宽度,例如减少模块的扇出,可能导致宽度变小而深度增加模块的扇出,可能导致宽度变小而深度增加 一个模块的扇出过大通常意味着该模块比较复杂,然而扇出太少,可能导致深度的增加 一般情况,一个模块的扇出以一般情况,一个模块的扇出以39为宜为宜 一个模块的扇入表示有多少模块可直接调用它,它反映了该模块的复用(reuse)程度,因此模块的扇入越大越好B软件设计中的概念软件设
7、计中的概念 模块化 抽象信息局部化 模块独立性 耦合 内聚B模块化模块化是数据说明、可执行语句等程序对象的集合,模块可以单独被命名,可通过名字访问。 例如,过程、函数、子程序、宏等等都可作为模块。就是把程序划分为若干个模块,每个模块具有独立子功能,再把各个模块集成后,实现指定功能,满足问题要求。B抽象化抽象化 抽象就是抽出事务的本质特性而暂不考虑细节抽象就是抽出事务的本质特性而暂不考虑细节问题,是人类在认识复杂现象中使用的最强有问题,是人类在认识复杂现象中使用的最强有力工具。力工具。 软件工程过程的每一步都是对问题的软件解法软件工程过程的每一步都是对问题的软件解法抽象层次的一次精化。抽象层次的
8、一次精化。 逐步求精与抽象是紧密相关的逐步求精与抽象是紧密相关的B模块独立性模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。 模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。 重要概念:、B模块独立性的度量模块独立性的度量 模块独立性取决于模块的内部和外部特征。模块独立性取决于模块的内部和外部特征。 SD方法提出的定性的度量标准:方法提出的定性的度量标准: 模块之间的模块之间的耦合性耦合性 模块自身的模块自身的内聚性内聚性B耦合耦合 耦合是对一个软件结构内各个模块之间互连程耦合是对一个软件结构内各个模块之间互连程度的度量。度的度量。
9、 耦合强弱取决于模块间耦合强弱取决于模块间,以及,以及。 根据模块间耦合程度的强弱的标准,划分耦合根据模块间耦合程度的强弱的标准,划分耦合类型,共有七种。类型,共有七种。 B无耦合没有依赖关系无耦合没有依赖关系松散耦合有松散耦合有少量依赖关系少量依赖关系紧密耦合有紧密耦合有很多依赖关系很多依赖关系图示图示B耦合类型(高耦合类型(高低)低) 内容耦合内容耦合 当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。 公共耦合公共耦合两个以上的模块共同引用一个全局数据项就称为公共耦合。 控制耦合控制耦合一个模块在界面上传递一个
10、信号(如开关值、标志量等)控制另一个模块,接收信号的模块动作根据信号值进行调整,称为控制耦合。B耦合类型耦合类型 标记耦合标记耦合 模块间通过参数传递复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。 数据耦合数据耦合 模块间通过参数传递基本类型的数据,称为数据耦合。 非直接耦合非直接耦合 模块间没有信息传递时,属于非直接耦合。B内容耦合举例内容耦合举例一模块直接访问一模块直接访问另一模块的内部另一模块的内部信息信息 ( (程序代码程序代码或数据)或数据)最不好的耦合形式 !ABAB模块代码重叠模块代码重叠Entry1 Entry1 多入口模块多入口模块B公共耦合举例公
11、共耦合举例公共数据区公共数据区C CB B模块模块A A、B B、C C间存在错综复杂的联系间存在错综复杂的联系B控制耦合举例控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信号控制信号) )成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分计算最高分计算最高分平均平均/ /最高最高? ?B BB数据耦合举例数据耦合举例开发票开发票计算水费计算水费单价单价数量数量金额金额B标记耦合举例标记耦合举例计算水电费计算水费计算电费住户情况水费电费住户情况“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引
12、用了此数据结构产生依赖关系,它们之间也是标记偶合.B耦合强弱排序原则:如果模块间必须存在耦合,尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。 B内聚内聚 内聚标志一个模块内各个元素彼此结合的紧密程度。 它是信息隐蔽和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。 根据各个模块之间的内聚程度不同,分为七个类型的内聚B内聚类型内聚类型 偶然内聚偶然内聚 如果一个模块的各成分之间毫无关系,则称为偶然内聚。 逻辑内聚逻辑内聚 几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的
13、模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。B内聚类型内聚类型 时间内聚时间内聚 如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。 过程内聚过程内聚 如果一个模块内部的处理成分相关,必须以特定的次序执行,则称为过程内聚。 通信内聚通信内聚 如果一个模块的所有成分操作同一数据集或生成同一数据集,则称为通信内聚。B内聚类型内聚类型 顺序内聚顺序内聚 如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。 功能内聚功能内聚 模块的所有成分对
14、于完成单一的功能都是必须的,则称为功能内聚。 B偶然内聚偶然内聚( (巧合内聚巧合内聚) ) 模块内各部分间无联系模块内各部分间无联系ABCMMOVE O TO RREAD FILE FMOVE S TO T模块模块M中的三个语句没有任何联系中的三个语句没有任何联系缺点:可理解性差,缺点:可理解性差, 可修改性差可修改性差例例: :B逻辑内聚模块ABCEFGABCEFGA1B1C1EFGEFG模块内部逻辑模块内部逻辑E E、F F、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFG缺点缺点:增强了耦合程度增强了耦合程度( (控制耦合控制耦合) ) 不易修改,效率低不易修改,效率
15、低公用代码段公用代码段公用代码段公用代码段B过程内聚模块读入读入成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩读入并审查读入并审查成绩单成绩单统计并打印统计并打印成绩单成绩单B通信内聚模块例产生工产生工资报表资报表计算平计算平均工资均工资职工工职工工资记录资记录职工工职工工资报表资报表平均平均工资工资产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块B内聚强弱排序 设计时力争做到高内聚。B耦合和内聚的关系耦合和内聚的关系 聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。 模块设计追求强内聚,
16、弱耦合强内聚,弱耦合。 片面明确耦合程度和内聚程度是没有任何实际意义的,我们重要的是借助耦合和内聚的概念帮助我们设计模块。B设计策略设计策略-1按照模块化设计原则,相应的启发式设计策略如下: 改造程序结构图,降低耦合度,提高内聚度 避免高扇出,并随着深度的增加,力求高扇入 避免如图避免如图a那样的那样的“平铺平铺”形态,较好的结构图形态形态,较好的结构图形态是如图是如图b那样的那样的“椭圆椭圆”型型(a)平铺形态(b)椭圆形态B设计策略设计策略-2 模块的影响范围应限制在该模块的控制范围内,例如下图中 图图a中,模块中,模块B2的影响范围的影响范围(模块模块A)不在其控制范围不在其控制范围(模
17、块模块B2)内内 图图b中,决策控制是在顶层模块,其影响范围中,决策控制是在顶层模块,其影响范围(A、B2)在在控制范围内,但是从决策控制模块到被控模块之间相差控制范围内,但是从决策控制模块到被控模块之间相差多个层次多个层次 图图c和和d较合适,图较合适,图d为最好为最好(c)TopXBB1AYB2TopXYABB2B1(d)XBB1YTopXBB1YAB2(a)(b)ATopB2B设计策略设计策略-3 降低模块接口的复杂程度和冗余程度,提高一致性 模块接口上应尽可能传递简单数据,而且传递的数据应保持与模块模块接口上应尽可能传递简单数据,而且传递的数据应保持与模块的功能相一致,即不传递与模块功
18、能无关的数据的功能相一致,即不传递与模块功能无关的数据 模块的功能应是可预测的,避免对模块施加过多的限制 模块功能可预测是指该模块对相同的输入能产生相同的输出模块功能可预测是指该模块对相同的输入能产生相同的输出 限制一个模块只处理单一的功能,那么,这个模块体现出高内聚限制一个模块只处理单一的功能,那么,这个模块体现出高内聚 尽可能设计单入口和单出口的模块 单入口和单出口的模块能有效地避免内容耦合单入口和单出口的模块能有效地避免内容耦合 B映射映射DFD( (问题结构问题结构) )软件系统的结构软件系统的结构( (程序结构程序结构) )Sc图图概要设计概要设计BSD方法表达工具SC图编辑学生记录
19、编辑学生记录读学生记录读学生记录学生数据学生数据无此学生无此学生学号学号不加区分的数据不加区分的数据数据信息数据信息控制信息控制信息BSC中的四种模块传入模块传入模块(a)(b)AA传出模块传出模块BB变换模块变换模块(c)CD协调模块协调模块E(d)EFFBSC简单调用BDAX,YZZBSC选择调用ACBDA根据内根据内部判断决部判断决定是否调定是否调用用B BA按另一判按另一判定结果选择定结果选择调用调用C或或DBSC循环调用ABCA根据内在的循环重根据内在的循环重复调用复调用B、C等模块等模块B结构图(SC)举例 医院管理系统医院管理系统门诊门诊管理管理药房药房管理管理药库药库管理管理病
20、房病房管理管理财务财务管理管理处处方方挂号挂号处理处理挂挂号号费费总总计计挂挂号号单单挂挂号号费费总总计计出库出库处理处理进药进药管理管理病历病历管理管理处方处方管理管理常规常规处理处理B数据流图类型和数据流图类型和SDSD方法的步骤方法的步骤 在软件设计开始之前,首先要分清DFD图所显示的系统特征.在DFD图所代表的SA模型中,所有系统均可以纳入两种典型的形式:变换型结构事务型结构B变换型结构变换型结构 信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统。 当数据流具有这些特征时,这种信息流称为变换流。外部
21、表示内部表示信息输入流输出流变换流信息流时间B事务型结构事务型结构 数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这种“以事务为中心的”的数据流,成为“事务流”。T事务事务中心处理T称为事务中心,完成以下任务:接收输入数据;分析每个事务以确定它的类型;根据事务类型选取一条活动通路。BSD方法步骤方法步骤1. 复审DFD图,必要时可以再次进行修改和细化.2. 鉴别DFD图所表示的软件系统结构特征,确定它所代表的软件结构是属于变换型还是事务型.3. 按照SD方法规定的一组规则,把DFD图转换为初始的SC图.BSD方法的两种映射过渡方法变换型变换型DFDD
22、FD事务型事务型DFDDFD初始初始SCSC初始初始SCSC变换分析变换分析事务分析事务分析B流类型流类型复查复查事务分析事务分析变换分析变换分析B如何进行变换分析 (1)区分传入、变换中心、传出部分, 在 DFD 上标明分界线 (2)第一级分解(建立初始SC框架) 设计顶层和第一层模块 (3)第二级分解(分解SC各分支) 自顶向下分解,设计出每个分支的中、下层模块B传入传入部分部分BCADEQPRWUVabcedrpuwv变换中心变换中心传出传出部分部分1B第一级分解的方法第一级分解的方法2B第一级分解后的SCc,ec,e u,wu,wB传入分支的分解(1) MACBAbacEDdec,eB
23、传入分支的分解(2)c,eMAGet C CbacRead DdeB to CbcdeabGet E EGet BA to BRead DD to EB传出分支的分解MEWuuw,uvvvPut UU to VMEUWrite Wwwuw,uV(1)(1)(2)(2)Write VB中心加工分支的分解MTPQRec,pru,wprB 任何情况下都可使用变换分析方法设计软任何情况下都可使用变换分析方法设计软件结构。件结构。 但如数据流具有但如数据流具有明显的事务特点明显的事务特点时时 ( (有一有一个明显的事务中心个明显的事务中心),),以采用以采用事务分析方法事务分析方法为宜。为宜。如何进行如
24、何进行事务变换事务变换?B事务分析设计方法步骤事务分析设计方法步骤:(1)(1)在在DFDDFD上上确定事务中心、接收部分和发送部分确定事务中心、接收部分和发送部分。(2)(2)画出画出SCSC框架,把框架,把DFDDFD上的三部分分别映射为事务上的三部分分别映射为事务控制模块、接收模块和动作发送模块。控制模块、接收模块和动作发送模块。(3)(3)分解细化接收分支和发送分支,完成初始分解细化接收分支和发送分支,完成初始SCSC。B事务分析的映射方法B事务流设计举例IMLNABCDFEG事务中心事务中心B事务流设计举例 取 A 总控总控ALMNGDBCFE动作动作1 1动作动作n n.细节模块细
25、节模块1 1细节模块细节模块2 2.(操作模块)(操作模块)(细节模块)(细节模块)B混合结构 一个大型系统常常是变换型和事务型的混合结构。为了导出它们的初始SC图,也必须同时采用变换映射和事务映射两种方法。B3412675810911传传入入传传出出事务型事务型混合流设计举例BABT1变换中心变换中心传入传入传出传出T2T3abb1b2b3c1c2c3degfjm事务流子系统事务流子系统BCCDDEEHHKFJKLLMh混合流设计举例kB混合流设计举例输入输入DXX系统系统变换控制变换控制输出输出K输入输入Cdc输出输出L LCDDE FJEHHKKLcddkkkLL输出输出MLMmmL事务
26、子系统事务子系统B汽车数字仪表板主要完成下述功能:1.通过模-数转换实现传感器和微处理机接口;2.在发光二极管面板上显示数据3.指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;4.指示加速或减速;5.超速警告:如果车速超过55英里/小时,则发出超速警告铃声。例如例如B显示读旋转信号收集和求平均发出铃声计算里程转换成转/分(rpm)确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值读和校核产生mpg显示计算燃料消耗计算gph产生mph显示旋转信号 _ SPS 上箭头指 示 箭头 下箭头 SPS 水平线 信号/秒燃料流(SPS)燃料流传感器信号gphmphm
27、phmph显示mpgMpg显示rpmrpm英里超速值铃声mph图图8 8 数字仪表板系统的数据流图数字仪表板系统的数据流图设计步骤:设计步骤:复查基本系统模型复查并精化数据流图确定数据流图具有变换特性还是事务特性确定输入流和输出流的边界,从而孤立出变换中心B读旋转信号收集和求平均发出铃声计算里程转换成转/分(rpm)确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值读和校核产生mpg显示计算燃料消耗计算gph产生mph显示旋转信号 _ SPS 上箭头指 示 箭头 下箭头 SPS 水平线 信号/秒燃料流(SPS)燃料流传感器信号gphmphmphmph显示mpgMpg显示rpmrpm
28、英里超速值铃声mph图图8 8 数字仪表板系统的数据流图数字仪表板系统的数据流图确定输入流和输出流的边界,从而孤立出变换中心B读旋转信号收集和求平均发出铃声计算里程转换成转/分(rpm)确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值读和校核产生mpg显示计算燃料消耗计算gph产生mph显示旋转信号 _ SPS 上箭头指 示 箭头 下箭头 SPS 水平线 信号/秒燃料流(SPS)燃料流传感器信号gphmphmphmph显示mpgmpg显示rpmrpm英里超速值铃声mph图图8 8 数字仪表板系统的数据流图数字仪表板系统的数据流图设计步骤:完成第一级分解B数字仪表板控制接收传感器信
29、号数据转换控制驱动仪表板输入控制变换控制输出控制输入信息处理模块协调对所有输入数据的接收变换中心控制模块,管理对内部形式的数据的所有操作输出信息处理控制模块,协调输出信息的产生过程图 9 数字仪表板的第一级分解B读旋转信号收集和求平均发出铃声计算里程转换成转/分(rpm)确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值读和校核产生mpg显示计算燃料消耗计算gph产生mph显示旋转信号 _ SPS 上箭头指 示 箭头 下箭头 SPS 水平线 信号/秒燃料流(SPS)燃料流传感器信号gphmphmphmph显示mpgmpg显示rpmrpm英里超速值铃声mph图图8 8 数字仪表板系统
30、的数据流图数字仪表板系统的数据流图设计步骤:设计步骤:完成完成“第二级分解第二级分解”接收传感器信号转换成rpm收集sps读旋转信号读燃料流计算gph图10 未经精化的输入结构B读旋转信号收集和求平均发出铃声计算里程转换成转/分(rpm)确定加速/减速产生加速/减速显示产生里程显示计算mph和超速值读和校核产生mpg显示计算燃料消耗计算gph产生mph显示旋转信号 _ SPS 上箭头指 示 箭头 下箭头 SPS 水平线 信号/秒燃料流(SPS)燃料流传感器信号gphmphmphmph显示mpgMpg显示rpmrpm英里超速值铃声mph图图8 8 数字仪表板系统的数据流图数字仪表板系统的数据流图
31、驱动仪表板发光二极管显示显示里程显示mph显示mpg加速/减速显示发出铃声 图11 未经精化的变换结构数据转换控制确定加速/减速计算mph计算mpg计算里程图 12 未经精化的变换结构 设计步骤:使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化B修改:q输入结构中的模块“转换成rpm”和“收集sps”可以合并;q模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合;q模块“加速/减速显示”可以相应地放在模块“显示mph”的下面。数字仪表板控制接收传感器信号数据转换控制驱动仪表板转换成rpm计算gph读旋转信号计算mpg计算mph计算里程显示mph显示mpg显示里程发出铃声读燃料流确定加速/减速加速/减速显示发光二极管显示图 13 精化后的数字仪表板系统的软件结构