欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPTX文档下载  

    软件结构设计课件.pptx

    • 资源ID:3867026       资源大小:1.52MB        全文页数:223页
    • 资源格式: PPTX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件结构设计课件.pptx

    1,软件工程,贵州大学软 件 学 院2019年5月,主讲人:xx,感谢你的观看,2019年5月20日,2,第三章 软件结构设计,感谢你的观看,2019年5月20日,3,承上启下,需求工程需求建模方法,感谢你的观看,2019年5月20日,4,RoadMap,感谢你的观看,2019年5月20日,5,本章要点,一、软件设计基础 二、概要设计方法三、设计模型四、体系结构五、概要设计过程六、案例分析,感谢你的观看,2019年5月20日,6,设计的定义,软件设计解决的是“怎么做”的问题。软件设计是将需求描述的“做什么”问题变为一个实施方案的创造性的过程。,感谢你的观看,2019年5月20日,7,设计的分解过程,感谢你的观看,2019年5月20日,8,4.1 软件设计的目标和目的,软件需求:解决“做什么”软件设计:解决“怎么做”4.1.1 软件设计的任务 问题结构(软件需求)软件结构 从软件需求规格说明书出发,形成软件的具体设计方案。,映射,感谢你的观看,2019年5月20日,将分析模型转换为软件设计,数据字典,数据流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描 述,象,数 据 设 计,体系结构设计,接口设计,过程设计,分析模型,设计模型,9,感谢你的观看,2019年5月20日,10,1.软件的总体结构主要回答的问题,软件的组成部分软件的层次关系模块的内部处理逻辑模块之间的界面,感谢你的观看,2019年5月20日,11,2.软件设计的问题,工具 如何描述软件的总体结构方法 用什么方法有问题结构导出 软件结构评估准则 什么样的软件结构是“最优的”,感谢你的观看,2019年5月20日,12,3.软件设计方法,结构化设计方法(SD)面向数据结构的设计方法(JSD方法)面向对象的设计方法(OOD),感谢你的观看,2019年5月20日,13,4.软件设计分为两个阶段:,(1)概要设计(总体设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计 确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。,感谢你的观看,2019年5月20日,14,总体设计的两项任务:,划分出组成系统的物理元素-程序、文件、数据库、人工过程和文档 设计软件的结构-确定每个程序的模块组成及模块之间的相互关系。,总体设计的过程(两个主要阶段):,系统设计:确定系统的具体实现方案。结构设计:确定软件结构。,设想供选择的方案,选 取 合理的方案,推荐最佳方案,功能分解,设计软件结构,数据库设 计,制订测试计划,书写文档,数据流图,系统流程图 组成系统的物理元素清单 成本/效益分析 实现系统的进度计划,系统说明 用户手册 测试计划 详细的实现计划 数据库设计结果,审查和复 审,感谢你的观看,2019年5月20日,15,4.1 软件设计的原则,Davis提出的软件设计原则:The design process should not suffer from“tunnel vision.”The design should be traceable to the analysis model.The design should not reinvent the wheel.The design should“minimize the intellectual distance”between the software and the problem at it exists in the real world.The design should exhibit uniformity and integration.,感谢你的观看,2019年5月20日,16,The design should be structured to accommodate change.The design should be structured to degrade gentle,even when aberrant data,evens,or operating conditions are encountered.Design is not coding,coding is not design.The design should be assessed for quality as it is being created,not after the fact.The design should be reviewed to minimize conceptual(semantic)errors.,感谢你的观看,2019年5月20日,17,4.2 软件设计基础原理,1.软件结构 2.软件过程 3.模块化 4.抽象 5.信息隐蔽 6.信息局部化,感谢你的观看,2019年5月20日,18,软件设计的概念和原理,模块是数据说明、可执行语句等程序对象的说明。,模块化:把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集 总起来组成一个整体,可以完成指定的功能,满足问题的功能。,C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2),成本,模块数目,成本/模块,接口成本,最小成本区,抽象 信息隐蔽和局部化 模块独立-每个模块完成一个相对独立的子 功能,并且和其他模块之间的关 系很简单。,耦合:一个软件结构内不同模块之间互连程度的度量。数据耦合:模块之间通过参数交换数据信息。控制耦合:模块之间传递的参数含有控制信息。公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。内容耦合:。,设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。,模块化和软件成本,数据耦合,控制耦合,公共环境耦合,内容耦合,低,高,感谢你的观看,2019年5月20日,19,软件设计的概念和原理-耦合,非直接耦合数据耦合特征耦合控制耦合外部耦合公共耦合内容耦合,弱耦合,中耦合,较强耦合,强耦合,模块1,模块2,模块3,模块4,数据耦合通过简单变量交换数据,特征耦合通过数据结构交换数据,非直接耦合模块之间没有信息传递,模块A,模块B,模块C,模块D,模块L,模块N,全局性数据结构公共耦合,Flag=1?,S1,S2,模块1,控制耦合模块之间传递的是控制信息,T,F,全 局 性简单变量外部耦合,模块A,模块B,内容耦合 访问其它模块的内部数据 直接跳到其他模块内部执行,感谢你的观看,2019年5月20日,20,软件设计的概念和原理,内聚:一个模块内各个元素彼此结合的紧密程度。偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。逻辑内聚:若干个逻辑功能类似的任务组成一个模块。时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。,低内聚,中内聚,高内聚,过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。通信内聚:模块中所有元素都使用同一个输入数据,和/或产生同一个 输出数据。,顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必 须顺序执行。功能内聚:所有处理元素属于一个整体,完成一个单一的功能。,模块A,模块B,模块C,S1;S2;,模块A,模块B,模块C,模块A,模块B,模块C,模块D,感谢你的观看,2019年5月20日,4.2.1 软件体系结构,软件体系结构包括两部分:(1)过程构件(模块)的层次结构(2)数据构件,21,感谢你的观看,2019年5月20日,控制结构(程序结构),控制结构是软件模块间关系的表示,22,感谢你的观看,2019年5月20日,控制结构图示:,23,感谢你的观看,2019年5月20日,1.控制结构的层次规则,只有一个顶层(0层)模块 0层外任一模块都会在它 的邻层存在一模块与它有关 同层模块间不发生联系,24,感谢你的观看,2019年5月20日,25,2.软件结构度量术语,深度,宽度,扇出,扇入,(模块的 层数),(同一层最大模块数),(一个模块 直接调用 的模块数),(调用一个给定模 块的模块个数),感谢你的观看,2019年5月20日,26,4.2.2 软件过程,软件过程用以描述各模块的处理细节(算法的详细描述),包括对下层模块控制的操作细节。,感谢你的观看,2019年5月20日,27,4.2.3 模块化(Modularity),模块化是好的软件设计的一个基本准则 高层模块 从整体上把握 问题,隐蔽细节 复杂问题 较小问题 分解 可减小解题所需的总的工作,分解,感谢你的观看,2019年5月20日,28,例:将问题(P1+P2)分解为P1,P2设函数C(x)定义问题 x 的复杂程度函数E(x)确定解决问题 x 需要的工作量对问题P1和P2,如:C(P1)C(P2)显然:E(P1)E(P2)有规律:C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)各个击破理论,感谢你的观看,2019年5月20日,29,模块化和软件成本,成本或工作量,模块数量,软件总成本,集成成本,成本/模块,M,最小成本区域,感谢你的观看,2019年5月20日,30,4.2.4 抽象(Abstraction),软件系统进行模块设计时,可有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。在较低的抽象层次上,则采用过程化的方法,感谢你的观看,2019年5月20日,31,4.2.4 抽象(Abstraction),(1)过程的抽象在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。在软件需求分析阶段,用“问题所处环境的为大家所熟悉的术语”来描述软件的解决方法。在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到达最低抽象层次。,感谢你的观看,2019年5月20日,32,4.2.4 抽象(Abstraction),(2)数据抽象在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。,感谢你的观看,2019年5月20日,33,4.2.5 信息隐蔽(Information Hiding),由 parnas 方法提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。,感谢你的观看,2019年5月20日,34,4.2.5 信息隐蔽(Information Hiding),即模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。,感谢你的观看,2019年5月20日,35,软件质量因素:,可维护性 可靠性 可理解性 效率信息隐蔽的目的:提高模块的独立性,减少修改或维护时的影响面。,感谢你的观看,2019年5月20日,36,4.2.6 信息局部化,把关系密切的软件元素物理地放得彼此靠近。优点:可维护性好 可靠性好 可理解性好,感谢你的观看,2019年5月20日,37,4.3 模块的独立性,4.3.1 模块独立性的概念模块独立的含义:模块完成独立的功能符合信息隐蔽和信息局部化原则模块间关连和依赖程度尽量小,感谢你的观看,2019年5月20日,38,4.3.2 模块独立性的度量,模块独立性取决于模块的 内部和外部特征。SD方法提出的定性的度量标准:模块之间的耦合性 模块自身的内聚性,感谢你的观看,2019年5月20日,39,用三个封装级别表示的软件结构,原始代码行,0级,程序模型(子程序或过程),1级,2级,类/对象结构,感谢你的观看,2019年5月20日,40,结构设计(或1级)标准,用以管理每一对封装级别的元素之间的相互关系,内聚,结构化设计,0级结构体(代码行),1级结构体(程序),TO:,FROM:,0级结构体(代码行),1级结构体(程序),输出端,耦合性,内聚是指度量一个给定的程序内的多行代码的单一功能性,以确定是否达到该程序所要实现的目的。耦合性用来度量程序之间联系的次数和强度,感谢你的观看,2019年5月20日,41,上表的扩展:包括2级封装(所有的类),内聚,结构化设计,0级结构体(代码行),1级结构体(程序),TO:,FROM:,0级结构体(代码行),1级结构体(程序),输出端,耦合性,2级结构体(类),类的耦合,2级结构体(类),类的内聚,类的内聚是模仿了一个程序的内聚。类的耦合性是一种度量类之间联系的次数和强度的方法。,感谢你的观看,2019年5月20日,42,1.模块独立性的度量之一:耦合性,模块间相对独立性(相互依赖程度)的度量 耦合性越高,模块独立性越弱,感谢你的观看,2019年5月20日,43,无耦合没有依赖关系,松散耦合有少量依赖关系,紧密耦合有很多依赖关系,感谢你的观看,2019年5月20日,44,耦合强度依赖的因素:一模块对另一模块的引用一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量模块间接口的复杂程度,感谢你的观看,2019年5月20日,45,模块间耦合的类型,低 无直接耦合耦 数据耦合合 标记耦合性 控制耦合 外部耦合 公共耦合 高 内容耦合,模块独立性,弱,(低耦合),强,(中耦合),(较强耦合),(强耦合),感谢你的观看,2019年5月20日,46,(1)无直接耦合,两个模块没有直接关系(模块1和模块2),模块独立性最强。,模块1,模块2,模块3,模块4,感谢你的观看,2019年5月20日,(2)数据耦合,一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。属松散耦合。,47,感谢你的观看,2019年5月20日,数据耦合举例,开发票,计算水费,单价数量,金额,48,感谢你的观看,2019年5月20日,(3)标记耦合(特征耦合),如两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记偶合。,49,感谢你的观看,2019年5月20日,标记耦合举例,计算水电费,计算水费,计算电费,住户情况,水费,电费,住户情况,“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合.,50,感谢你的观看,2019年5月20日,将标记耦合修改为数据耦合举例,计算水电费,计算水费,计算电费,本月用水量,本月用电量,水费,电费,51,感谢你的观看,2019年5月20日,(4)控制耦合,一模块向下属模块传递的信息(开关量、标志等控制被调用模块决策的变量)控制了被调用模块的内部逻辑。,52,感谢你的观看,2019年5月20日,控制耦合举例,A,计算平均分或最高分,B,平均/最高(控制信号),成绩,读入分数,输出结果,计算平均分,计算最高分,平均/最高?,B,53,感谢你的观看,2019年5月20日,控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:(1)将被调用模块内的判定上移到调 用模块中进行(2)被调用模块分解成若干单一功 能模块,54,感谢你的观看,2019年5月20日,改控制耦合为数据耦合举例,A,计算平均分,B1,平均成绩,最高成绩,计算最高分,B2,55,感谢你的观看,2019年5月20日,(5)外部耦合,一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部偶合必不可少,但这种模块数目应尽量少。,56,感谢你的观看,2019年5月20日,(6)公共耦合(公共数据区耦合),一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构 共享通讯区 内存公共覆盖区等,57,感谢你的观看,2019年5月20日,公共耦合举例,公共数据区,C,B,模块A、B、C间存在错综复杂的联系,58,感谢你的观看,2019年5月20日,(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,公共耦合存在的问题:,59,感谢你的观看,2019年5月20日,(7)内容耦合,一模块直接访问另一模块的内部信息(程序代码或数据),最不好的耦合形式!,A,B,A,B,模块代码重叠,Entry1 Entry1,多入口模块,60,感谢你的观看,2019年5月20日,模块化设计的原则和目标,耦合是影响软件复杂程度和设计质量的重要因素目标:建立模块间耦合度尽可能松散的系统,61,感谢你的观看,2019年5月20日,如何降低模块间耦合度:,(1)尽量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内容耦合(2)降低接口的复杂性,62,感谢你的观看,2019年5月20日,2.模块独立性的度量之二:内聚性,一个模块内部元素在功能上相互 关联的强度 设计目标:高内聚(模块在软件过程中 完成单一的任务),63,感谢你的观看,2019年5月20日,模块的内聚性类型,低 偶然内聚 0分 逻辑内聚 1分 内 时间内聚 3分 聚 过程内聚 5分 性 通信内聚 7分 信息内聚 9分 高 功能内聚10分,模块独立性,弱(功能分散),强(功能单一),64,感谢你的观看,2019年5月20日,低内聚模块举例,为工程分析包执行错误处理的模块,当计算的数据超出预定义的边界时调用该模块,它完成下列任务:(1)根据初始计算的数据计算补充数据;(2)在用户的工作站上生成错误报告;(3)执行用户要求的跟踪计算;(4)更新数据库;(5)使选择后续处理的菜单有效。虽然上述任务是松散相关的,但每一项都是独立的功能实体,最好作为独立的模块完成。,65,感谢你的观看,2019年5月20日,(1)偶然内聚(巧合内聚),模块内各部分间无联系,A,B,C,M,MOVE O TO RREAD FILE FMOVE S TO T,模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差,例:,66,感谢你的观看,2019年5月20日,(2)逻辑内聚,把几种相关功能(逻辑上相似 的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。,67,感谢你的观看,2019年5月20日,逻辑内聚模块,A,B,C,E,F,G,A,B,C,EFG,A1,B1,C1,EFG模块内部逻辑,E、F、G逻辑功能相似,组成新模块EFG,缺点:增强了耦合程度(控制耦合)不易修改,效率低,公用代码段,公用代码段,68,感谢你的观看,2019年5月20日,(3)时间内聚(经典内聚),模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合 模块.,69,感谢你的观看,2019年5月20日,(4)过程内聚(顺序性组合),模块内各处理成分相关,且必须以特定次序执行,70,感谢你的观看,2019年5月20日,过程内聚模块,读入成绩单,审查成绩单,统计成绩,打印成绩,读入并审查成绩单,统计并打印成绩单,71,感谢你的观看,2019年5月20日,(5)通信内聚,模块内各部分使用相同的输入数据,或产生相同的输出结果,72,感谢你的观看,2019年5月20日,通信内聚模块例,产生工资报表,计算平均工资,职工工资记录,职工工资报表,平均工资,产生职工工资报表并计算平均工资模块,73,感谢你的观看,2019年5月20日,(6)信息内聚,模块完成多个功能,各功能都在同一数据结构上操作,每一功能有唯一入口。,74,感谢你的观看,2019年5月20日,信息内聚模块,符 号 表,查找,登录,删除,修改,几个加工同时引用一个共同的数据,75,感谢你的观看,2019年5月20日,(7)功能内聚,模块仅包括为完成某个功能所必须的所有成分。(模块所有成分共同完成一个功 能,缺一不可)内聚性最强,76,感谢你的观看,2019年5月20日,内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合.设计目标:力争强内聚、弱耦合,77,感谢你的观看,2019年5月20日,78,3.耦合、内聚与模块独立性关系,耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。,感谢你的观看,2019年5月20日,79,本章要点,一、软件设计基础 二、概要设计方法三、设计模型四、体系结构五、概要设计过程六、案例分析,感谢你的观看,2019年5月20日,80,设计方法,结构化的设计方法面向对象的设计方法,感谢你的观看,2019年5月20日,81,结构化的设计方法,功能模块划分设计面向数据流设计面向事务设计输入/输出设计,感谢你的观看,2019年5月20日,82,功能模块划分设计,这个设计方法是根据功能进行分解,分解出一些模块,设计者从高层到低层一层一层进行分解,每层都有一定的关联关系,每个模块具有特定、明确的功能,每个模块的功能是相对独立的,同时是可以集成的,感谢你的观看,2019年5月20日,83,功能模块划分设计例子,感谢你的观看,2019年5月20日,84,面向数据流设计,面向数据流的设计是基于外部的数据结构进行设计的一种方法。,感谢你的观看,2019年5月20日,85,3.2 概要设计(总体设计),概要设计确定:软件系统的结构各模块功能及模块间联系(接口)表示软件结构的图形工具结构图层次图和HIPO图,感谢你的观看,2019年5月20日,86,概要设计的任务与步骤,概要设计的过程:(1)设想可能的方案(2)选取合理的方案(3)推荐最佳方案(4)功能分解(5)设计软件结构(6)数据库设计(7)制定测试计划(8)编写文档(9)审查与复审,感谢你的观看,2019年5月20日,87,3.2.1 结构图(SC Structure Chart),SD方法在概要设计中的主要表达工具约定:,编辑学生记录,读学生记录,学生数据,无此学生,学号,不加区分的数据,数据信息,控制信息,感谢你的观看,2019年5月20日,88,SC中的四种模块,传入模块,(a),(b),A,A,传出模块,B,B,变换模块,(c),C,D,协调模块,E,(d),E,F,F,感谢你的观看,2019年5月20日,89,SC中的选择调用,A,C,B,D,A根据内部判断决定是否调用B,A按另一判定结果选择调用C或D,感谢你的观看,2019年5月20日,90,SC中的循环调用,A,B,C,A根据内在的循环重复调用B、C等模块,感谢你的观看,2019年5月20日,91,结构图(SC)举例,医院管理系统,门诊管理,药房管理,药库管理,病房管理,财务管理,处,方,挂号处理,挂,号,费,总,计,挂号单,挂号费总计,出库处理,进药管理,病历管理,处方管理,常规处理,感谢你的观看,2019年5月20日,酒店管理信息系统功能结构图,H M I S,收银管理子系统,收银管理子系统,收银管理子系统,客人登记,预定登记,客房处理,历史记录,客房查询,预定查询,餐桌安排,菜单作业,营业结帐,汇总打印,各类查询,初始设置,客帐处理,退房处理,夜审处理,客帐查询,报表打印,92,感谢你的观看,2019年5月20日,大型零售商场管理信息系统功能结构图,TM M I S,系统维护,POS系统,零售实时系统,商品进货管理,商品批发管理,商品库存管理,商品及商品帐管理,顾客管理,连锁店管理,财务管理,人事工资管理,计划统计管理,经理查询,93,感谢你的观看,2019年5月20日,94,3.3.2 面向数据流的设计方法(结构化设计方法SD),1.面向数据流设计方法的基本概念 SD以数据流图为基础,它定义了把DFD变换成软件结构的不同映射方法,映射,DFD(问题结构),软件系统的结构(程序结构),感谢你的观看,2019年5月20日,95,系统结构特征可归纳为两种典型形式:,变换型结构事务型结构数据流图可分为两种类型:变换型数据流事务型数据流,感谢你的观看,2019年5月20日,96,变换中心,输入,输出,变换型结构,事务中心,接受路径,动作路径,基本模型 特征,事务型 结构,由输入、变换中心和输出三部分组成,具有在多种事务中选择执行某类事物的能力,感谢你的观看,2019年5月20日,97,变换型数据流 结构,事务型数据流 结构,传入,变换,传出,变换中心,传入部分,传出部分,事务分析,事务中心,动作 1,动作 2,动作 3,接受,接受部分,感谢你的观看,2019年5月20日,98,变换型数据流举例,输入信息,物理输入,格式检查,处理,显示,正确信息,结果,物理输出,数据,变换中心,逻辑输入,逻辑输出,传入部分,传出部分,特点:具有明确的传入、变换(或称主加 工)和传出界面的DFD,感谢你的观看,2019年5月20日,99,变换流示意图,信息,时间,信息流,输入流,输出流,交换流,外部表示,内部表示,感谢你的观看,2019年5月20日,100,事务型数据流图举例,I,M,L,N,O,A,B,C,D,F,E,G,H,感谢你的观看,2019年5月20日,101,大型系统DFD中,变换型和事务型结构往往共存:,T,事务中心,传入,变换,传出,感谢你的观看,2019年5月20日,102,2.面向数据流设计方法的设计步骤,(1)精化DFD(2)确定DFD类型(3)把DFD映射到系统模块结构设计 出模块结构的上层(4)基于DFD逐步分解高层模块设计 出下层模块(5)根据模块独立性原理,精化模 块结构(6)模块接口描述,感谢你的观看,2019年5月20日,103,面向数据流方法的设计过程,精化数据流图,区分事务中心和数据接收路径,映射成变换结构,流类型,区分输入和输出分支,映射成事务结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,复查,详细设计,“事务”,“变换”,事务分析,变换分析,感谢你的观看,2019年5月20日,104,SD方法的两种映射过渡方法,变换型DFD,事务型DFD,初始SC,初始SC,变换分析,事务分析,感谢你的观看,2019年5月20日,105,初始的SC,主模块,输入模块,主加工模块,输入模块,事务控制模块,接受模块,动作发送模块,动作1模块,动作2模块,动作3模块,由变换分析产生,由事务分析产生,感谢你的观看,2019年5月20日,106,(1)变换分析设计方法,步骤:(1)区分传入、变换中心、传出部分,在 DFD 上 标明分界线,感谢你的观看,2019年5月20日,107,B,C,A,D,E,Q,P,R,W,U,V,a,b,c,e,d,r,p,u,w,v,变换中心,传入部分,传出部分,感谢你的观看,2019年5月20日,108,变换分析设计方法步骤,(2)第一级分解(建立初始SC框架)设计顶层和第一层模块,感谢你的观看,2019年5月20日,109,第一级分解的方法,MC,MT,MA,ME,感谢你的观看,2019年5月20日,110,第一级分解后的SC,MC,MT,MA,ME,第一层,顶层,c,e,c,e,u,w,u,w,传入模块,传出模块,中心变换模块,感谢你的观看,2019年5月20日,111,第一级分解后的SC(另一种画法),MC,MA1,c,e,u,w,c,p,Q,P,R,e,p,r,r,w,u,w,传入分支模块,中心加工分支模块,传出分支模块,MA2,ME1,ME2,感谢你的观看,2019年5月20日,112,变换分析设计方法步骤,(3)第二级分解(分解SC各分支)自顶向下分解,设计出每个分支的中、下层模块,感谢你的观看,2019年5月20日,113,传入分支的分解(1),MA,C,B,A,b,a,c,E,D,d,e,c,e,感谢你的观看,2019年5月20日,114,传入分支的分解(2),MA,Get C,b,a,c,Read D,d,e,c,e,B to C,b,c,d,e,a,b,Get E,Get B,D to E,A to B,Read D,感谢你的观看,2019年5月20日,115,传出分支的分解,ME,W,Write V,u,u,w,u,v,v,v,Put U,U to V,ME,U,Write W,w,w,u,w,u,V,(1),(2),感谢你的观看,2019年5月20日,116,中心加工分支的分解,MT,P,Q,R,e,c,p,r,u,w,p,r,感谢你的观看,2019年5月20日,117,任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。,(2)事务分析设计方法,感谢你的观看,2019年5月20日,118,事务分析设计方法步骤:,(1)在DFD上确定事务中心、接收部 分和发送部分。(2)画出SC框架,把DFD上的三部分 分别映射为事务控制模块、接收 模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。,感谢你的观看,2019年5月20日,用户命令交互子系统,密码命令,密码,显示信息,系统参数数据,用户命令,读系统数据,配置信息,显示信息和状态,命令分析处理,命令类型,开/关命令,建立配置文件,原配置数据,格式化配置数据,配置命令,重试信息,四位数字,检验信息,检验信息,A/D信息,格式化配置数据,格式化配置数据,119,感谢你的观看,2019年5月20日,120,初始的SC,主模块,输入模块,主加工模块,输入模块,事务控制模块,接受模块,动作发送模块,动作1模块,动作2模块,动作3模块,由变换分析产生,由事务分析产生,感谢你的观看,2019年5月20日,121,事务分析的映射方法,总控,调度,B路径,C路径,接收路径,感谢你的观看,2019年5月20日,122,用户命令交互子系统初始的SC,用户执行模块,读用户命令,命令处理,感谢你的观看,2019年5月20日,123,事务流设计举例,I,M,L,N,A,B,C,D,F,E,G,事务中心,感谢你的观看,2019年5月20日,124,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,(主模块),事务加工模块,感谢你的观看,2019年5月20日,125,动作分支的典型结构,P,T 2,T 1,T i,A 2,D 2,A 1,D 1,A 3,A j,D k,事务层,操作层,细节层,处理层,主模块,事务加工模块,操作模块,细节模块,感谢你的观看,2019年5月20日,126,事务流设计举例,取 A,总控,A,L,M,N,G,D,B,C,F,E,动作1,动作n,.,细节模块1,细节模块2,.,(操作模块),(细节模块),感谢你的观看,2019年5月20日,127,事务型数据流图举例,I,M,L,N,O,A,B,C,D,F,E,G,H,感谢你的观看,2019年5月20日,128,事务流设计举例(另一种画法),输入 A,XX系统,变换控制,A,L,M,A,G,D,B,C,F,E,输出 E、F、G,E、F、G,E、F、G,输出H,O,E、F、G,H,H,N,感谢你的观看,2019年5月20日,要求类型处理,有效图书管理要求,当前日期,2.1,新书入库,2.2,借,入库单,罚款单,一层数据流图(a),借书,2.3,注销图书,2.5,借书,2.4,目录文件,借书单,书,单,注销单,129,感谢你的观看,2019年5月20日,130,3,4,1,2,6,7,5,8,10,9,11,变换中心,传入,传出,事务型,(3)混合流设计举例,感谢你的观看,2019年5月20日,131,混合流设计,T,事务中心,传入,变换,传出,接收部分,发送部分,感谢你的观看,2019年5月20日,132,AB,T1,变换中心,传入,传出,T2,T3,a,b,b1,b2,b3,c1,c2,c3,d,e,g,f,j,m,事务流子系统,BC,CD,DE,EH,HK,FJ,KL,LM,h,混合流设计,k,感谢你的观看,2019年5月20日,133,混合流设计,输入D,XX系统,变换控制,输出K,输入C,d,c,输出L,CD,DE,FJ,EH,HK,KL,c,d,d,k,k,k,L,L,输出M,LM,m,m,L,事务子系统,感谢你的观看,2019年5月20日,134,数据流图需求分析实例,建立学生管理系统学管科体检科学籍科学生处,感谢你的观看,2019年5月20日,135,数据流图-顶层,学管科,体检科,学籍科,学生管理信息系统,学生处领导,学生基本信息,学生健康信息,学生成绩,学生健康情况表,学生成绩单,查询要求,不及格人数,人数统计表,感谢你的观看,2019年5月20日,136,数据流图-0层,感谢你的观看,2019年5月20日,137,数据流图-1层,感谢你的观看,2019年5月20日,138,数据流图-1层,感谢你的观看,2019年5月20日,139,面向事务设计,这个设计方法是根据系统处理的事务和这个事务导致系统发生状态变换使用的信息。首先确定主要的状态分类,然后逐层详细描述各个状态的转化过程。,感谢你的观看,2019年5月20日,140,输入/输出设计,它是基于用户的输入进行设计。高层描述出用户的所有可能输入,低层描述针对这些输入的系统完成什么功能。,感谢你的观看,2019年5月20日,141,输入/输出设计例子,感谢你的观看,2019年5月20日,142,3.体系结构设计优化,将初始SC根据模块独立性原则进行精化,对模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终SC。,感谢你的观看,2019年5月20日,143,改进软件结构设计的指导原则(软件结构设计的启发式规则),(1)模块功能的完善化(2)消除重复功能(3)将模块的影响限制在模块的控制范围内(4)深度、宽度、扇出和扇入适中(5)模块大小适中(6)降低模块接口的复杂性(7)模块功能可预测(8)避免模块的病态连接(9)根据设计约束和可移植性要对软件打包,感谢你的观看,2019年5月20日,144,(1)模块功能的完善化,完整的模块应包括三部分:(1)执行规定功能部分(2)出错处理部分(3)需返回给调用者数据时,返回是否正确结束标志。,感谢你的观看,2019年5月20日,145,(2)消除重复功能,Q1,C,Q2,C,Q1,Q2,C,改进前Q1、Q2功能相似,X,Y,Q,X,Y,X,Y,重复部分,改进方法1:将Q1、Q2合并为Q不可取,改进方法2:将Q1、Q2的公共部分分离出来,感谢你的观看,2019年5月20日,146,C,H,D,E,G,X,F,(3)将模块的影响限制 在模块的控制范围内,A,I,L,J,K,B,模块C的控制范围:C、D、E、F、G、H,如果模块C 作出的决策影响了模块L,L超出了C 的控制范围,感谢你的观看,2019年5月20日,147,(4)减少高扇出争取高扇入,高扇出的模块结构举例:,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资,避免平铺结构,感谢你的观看,2019年5月20日,148,增加中间层降低扇出,编外人员工资,取得工资数据,计时制工资额,薪金制工资额,编外人员税款,编外人员扣款,常规扣款,税收扣款,计算实发工资,计时工人实发工资,计薪工人实发工资,编外人员实发工资,感谢你的观看,2019年5月20日,149,(5)模块大小适中,模块过大:可理解程度下降模块过小:开销大于有效操作 系统接口复杂(6)降低模块接口的复杂性 接口传递信息应简单且和模块功能一致。,感谢你的观看,2019年5月20日,150,(7)模块功能可预测,模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测的。难理解、难测试、难维护。,感谢你的观看,2019年5月20日,151,防止模块功能过分局限,功能单一的模块具有高内聚。但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。,感谢你的观看,2019年5月20日,152,(8)避免模块的病态连接,防止指向模块中间的分支或引用(针对内容耦合)(9)根据设计约束

    注意事项

    本文(软件结构设计课件.pptx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开