软件工程软件设计.ppt

上传人:李司机 文档编号:4096137 上传时间:2023-04-04 格式:PPT 页数:89 大小:2.08MB
返回 下载 相关 举报
软件工程软件设计.ppt_第1页
第1页 / 共89页
软件工程软件设计.ppt_第2页
第2页 / 共89页
软件工程软件设计.ppt_第3页
第3页 / 共89页
软件工程软件设计.ppt_第4页
第4页 / 共89页
软件工程软件设计.ppt_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《软件工程软件设计.ppt》由会员分享,可在线阅读,更多相关《软件工程软件设计.ppt(89页珍藏版)》请在三一办公上搜索。

1、软件工程,第三章 软件设计,第1页,共89页。,软件设计概述,内容软件设计是一个描述、组织、构造系统部件的过程,是确定软件“怎么做”的过程。这个过程分为两个层次:概要设计和详细设计。软件设计的输入是需求规格说明书,输出是概要设计说明书和详细设计说明书,第2页,共89页。,总体设计(概要设计)从全局的高度,确定系统的总体实现方案和整体框架它要覆盖需求规格说明书的全部内容,同时作为指导详细设计的依据详细设计确定应该怎样具体地实现各个软件元素,得到对目标系统的精确描述要覆盖总体设计的全部内容,同时作为指导程序设计的依据,第3页,共89页。,总体设计的具体任务制定规范系统命名规范,模块命名规范,构件命

2、名规范,变量命名规范,以及数据库中的表名、字段名、索引名、试图名、存储过程名、触发器名等总体结构设计系统体系结构的设计通常采用软件结构图的横向表示功能分解,纵向表示功能的层次调用,第4页,共89页。,处理方式设计数据设计数据结构设计文件设计数据库设计质量设计文档设计,第5页,共89页。,评审总体设计可回溯性接口定义是否清晰检查模块的内聚力风险性实用性质量属性各种选择方案限制其他问题,第6页,共89页。,总体设计的过程设想供选择的方案根据需求分析阶段的数据流程图中处理逻辑关系,归并形成子系统不同的子系统组合产生不同的系统实现方案材料要求:系统流程图、组成系统的元素清单、成本/效益分析、实现这个方

3、案的进度计划推荐最佳方案功能分解将复杂功能分解成简单功能,使之对应成一个模块只完成一个适当功能,便于实现,第7页,共89页。,设计软件结构采用层次图或结构图描述模块之 间调用的关系数据设计包括数据结构设计、文件设计和数据库设计制定测试计划针对软件结构的测试和集成测试书写文档总体设计规格说明书用户手册测试计划详细的实现计划,第8页,共89页。,设计过程的一般模型,第9页,共89页。,设计原则原则一,多样化设计原则二,设计对于分析模型应该是可跟踪的原则三,设计不应该从头做起原则四,软件设计应该尽可能缩短软件和现实世界的距离原则五,设计应该表现出一致性和规范性原则六,设计的易修改性原则七,容错性设计

4、原则八,设计的粒度要适当原则九,在设计时就开始评估软件的质量原则十,要复审设计,减少设计引入的错误,第10页,共89页。,影响软件设计的因素共同设计用户界面文化问题并发性,第11页,共89页。,软件设计的概念,模块一个软件系统根据其功能分解成许多较小的程序单元模块的基本属性功能-模块要完成的任务逻辑 描述模块为了完成任务,模块内部怎么做状态 使用该模块时的环境和条件,第12页,共89页。,模块化定义即把程序划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个系统的功能。模块规模的确定标准模块应该是高内聚的模块应该是松散耦合的,第13页,共89页。,第14页,共89页。,模块独立

5、性“模块独立”是模块化、抽象、逐步求精和信息隐藏等概念的直接结果,也是完成有效的模块设计的基本标准。模块独立性原则的两个定性标准度量耦合-衡量模块之间彼此依赖的紧密程度内聚-衡量一个模块内部各个元素彼此结合的紧密程度,第15页,共89页。,耦合 模块间相互关联的程度关联程度的决定因素一个模块对另一个模块的访问模块间传递的数据量一个模块传递给另一个模块的控制信息模块间接口的复杂程度,第16页,共89页。,耦合的分类内容耦合-一个模块直接参考另一个模块的内容例子结论-坚决避免使用内容耦合,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);con=DriverM

6、anager.getConnection(jdbc:odbc:test);stmt=con.createStatement();rs=stmt.executeQuery(select areano,areafangxiang,areasell,endtime from landInformation);while(rs.next(),第17页,共89页。,公共耦合-多个模块都访问同一个公共数据环境分类松散公共耦合:一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据紧密公共耦合:两个模块都向公共数据环境中送数据,同时也都从公共数据环境中取数据例子动态并发程序的执行结论-

7、限制使用公共耦合,第18页,共89页。,外部耦合 两个模块都访问同一个全局简单公共变量,而不是同一全局数据结构,且不是通过参数表传递该全局变量的信息例子结论:限制使用外部耦合,while(gloable T=0)if x25 then ModuleA();else ModuleB();,第19页,共89页。,控制耦合 模块A向模块B传递一个控制信息例子把一个数组名作为参数传递给另一个模块时,就形成了参数以传址的形式进行传递,降低模块的独立性。结论:少用控制耦合,第20页,共89页。,数据结构耦合 一个模块调用另一个模块时传递了整个数据结构数据耦合 两个模块之间传递的是数据项结论:尽量使用数据耦

8、合。,第21页,共89页。,非直接耦合 两个模块之间没有直接关系,它们之间的联系完全通过主模块的控制和调用来实现例子If(x)then modelAelse modelB结论:独立性最强的耦合,第22页,共89页。,内容耦合,公共耦合,外部耦合,控制耦合,数据结构耦合,数据耦合,非直接耦合,高,低,弱,强,模块耦合性,模块独立性,第23页,共89页。,耦合的类型,第24页,共89页。,如何降低模块间的耦合根据系统的特点,选择恰当的耦合类型降低模块接口的复杂性把模块之间的通信信息放在缓冲区中软件设计的目标是降低模块间的耦合程度,设计时遵循的原则:尽量使用数据耦合,少用控制耦合,限制使用公共耦合,

9、坚决不用内容耦合。,第25页,共89页。,内聚巧合内聚 一个模块执行多个完全互不相关的动作例子为了节省空间,将多个模块中重复出现的语句提取出来,组成一个新的模块程度:低内聚,第26页,共89页。,逻辑内聚 一个模块执行一系列相关动作例子程序执行的逻辑类似,并共用一部分代码,接口参数为了区分执行过程而显得非常复杂。程度:低内聚,第27页,共89页。,时间内聚 一个模块内部的多个任务是与时间有关例子:程序的初始化过程程度:低内聚,public void init(ServletConfig config)throws ServletException moni_num_in=0;moni_num_

10、end=0;rBundle=ResourceBundle.getBundle(immserver.servletConfig);transportType=rBundle.getString(TRANSPORT_TYPE);,第28页,共89页。,过程内聚 模块执行的若干动作之间有顺序关系例子验证用户登录信息If 合法 提取用户个性化信息Else 拒绝登录程度:中等程度内聚,第29页,共89页。,通信内聚 模块执行的若干动作之间有顺序关系,并且所有动作是在相同的数据上执行。例子读取文件记录重新计算文件记录将文件记录进行输出程度:中等程度内聚,第30页,共89页。,信息内聚 一个模块中执行一系列

11、动作,每个动作都有自己的入口点和处理代码,所有的动作都作用在相同的数据结构上。例子程度:高内聚,第31页,共89页。,功能内聚 一个模块中各个部分都是完成某一具体功能必不可少的组成部分。例子成功标志 用户身份验证(用户名,用户密码)验证过程;return 成功标志;程度:高内聚,第32页,共89页。,巧合内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,信息内聚,功能内聚,低,高,弱,强,模块内聚性,模块独立性,第33页,共89页。,练习 1软件设计中划分模块的一个准则是 A。两个模块之间的耦合方式中,B 耦合的耦合程度最高,C 耦合的耦合度最低。一个模块内部的内聚种类中 D 内聚的内聚程度最高,

12、E 内聚的内聚度最低。A:低内聚低耦合 低内聚高耦合 高内聚低耦合 高内聚高耦合B:数据 非直接 控制 内容C:数据 非直接 控制 内容D:偶然 逻辑 功能 过程E:偶然 逻辑 功能 过程,第34页,共89页。,练习2软件设计中划分程序模块通常遵循的原则是要使各模块间的耦合性尽可能 A。三种可能的模块耦合是 B。例如,一个模块直接引用另一模块中的数据。C。例如,一个模块把开关量作为参数传递给另一模块。D。例如,一个模块把一个数值量作为参数传递给另一模块。其中 E 的耦合性最强。A:强 适中 弱 BE:公共耦合 数据耦合 逻辑耦合 外部耦合 内容耦合 控制耦合,第35页,共89页。,练习3模块内

13、聚度用于衡量模块内部各成分之间彼此结合的紧密程度1、一组语句在程序的多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚度是 A 的。2、将几个逻辑上相似的成分放在一个模块中,该模块的内聚度是 B 的。3、模块中所有成分引用共同的数据,该模块的内聚度是 C 的。4、模块中所有成分结合起来完成一项任务,该模块的内聚度是 D 的。AE:功能性 逻辑性 通信性 过程性 偶然性 瞬时性,第36页,共89页。,抽象定义抽出事务的本质特性而暂时不考虑它们的细节。Wasserman提出的几种抽象方法功能分解法面向数据的分解法面向事件的分解法由外向内的设计面向对象的设计,第37页,共89页。,信息

14、隐藏含义一个模块中所包含的信息,不允许其他不需要这些信息的模块使用局部化把一些关系密切的软件元素物理地彼此靠近放置在一个局部的环境当中。,第38页,共89页。,软件体系结构风格(模式)管道和过滤器(数据流模型)该体系结构被用于当输入数据被通过一系列计算或操纵构件变换为输出数据的情形。,第39页,共89页。,例子一个机构给其客户开出帐单。每星期将付款与帐单核对一次,若账单已经支付,则开出收据,若在一个规定的时间内尚未支付,则给出一个催款单。,第40页,共89页。,面向对象需求可以通过对象以及它们的抽象类型组织起来。隐式请求隐式请求设计模型是事件驱动的。面向数据流的设计将系统按层次划分,每一层都为

15、上一层提供服务。过程控制将过程输出维持在某个指定值的范围之内。客户机/服务器,第41页,共89页。,程序结构程序结构反映软件结构中的模块划分情况,它通常是树状结构或网状结构,其中蕴含了程序控制上的层次关系。,第42页,共89页。,程序结构分类树状结构整个树状结构只有一个根模块任何一个非根模块,只有一个调用模块,而且同一层模块之间不发生联系,第43页,共89页。,网状结构任意两个模块之间都可以有双向的关系,不存在上级模块和下属模块的关系,第44页,共89页。,表示软件结构的图形软件层次图,第45页,共89页。,软件结构图,第46页,共89页。,数据设计数据设计的原则用于软件的系统化方法也适用于数

16、据要确定所有数据结构,以及在每种数据结构上实施的操作应该建立一个数据字典,用它来定义数据和软件的设计底层数据设计的决策应该推迟到设计过程的后期进行,在数据设计中也可以使用自顶向下、逐步细化的方法数据设计时应遵从信息隐藏原则应当创建一个存放数据结构和相关操作的库软件设计和程序设计语言应当支持抽象数据类型的定义和实现,第47页,共89页。,数据结构设计原则尽量使用简单的数据结构在设计数据结构时要注意数据之间的关系为了加强数据设计的可复用性,应该针对常用的数据结构和复杂的数据结构设计抽象类型尽量使用经典数据结构在确定数据结构时一般先考虑静态结构对于复杂数据结构,应给出图形和文字描述,以便于理解,第4

17、8页,共89页。,文件设计定义:指对数据存储文件的设计。文件的逻辑设计整理必需的数据元素分析数据间的关系确定文件记录的内容文件的物理设计理解文件的特性确定文件物理组织结构确定文件的存储介质确定文件的记录格式估计记录的存取时间估计文件的存储量,第49页,共89页。,数据库设计数据库设计的基本步骤逻辑设计 创建E-R图物理设计 按照第三范式设计表结构安全性设计 用户只能通过账号登录应用软件,通过应用软件访问数据库用户账号的密码进行加密处理。确保在任何地方不出现密码的铭文表示确定每个角色对数据库访问的权限。性能优化 优化表结构本身优化数据库的环境参数,第50页,共89页。,第一范式(1NF)在关系模

18、式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系。第二范式(2NF)如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。第三范式(3NF)如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。,第51页,共89页。,PowerDesign 9 使用方法安装认识环境练习建立逻辑模型(CDM)建立物理模型(PDM)生成SQL文件,同时生成数据库,第52页,共89页。,第53页,共89页。,第54页,共89页。,练习,第55页,共89页。,步骤建立实体图(E

19、ntity)填写属性(Attributes)建立联系(Relationship)定义概念模型属性Model-Model Properties创建概念模型的域Model-Domains检查CDMTools-Check Model由CDM生成PDMTools-Generate new Physical Data Model,第56页,共89页。,观察标识符与联系的转换利用PDM创建数据库创建一个Access空数据库(test.mdb)配置数据源创建数据库,同时生成SQL文件Database-Generate Database选择 ODBC generation 选项检查Access数据库(test

20、.mdb),第57页,共89页。,结构化设计方法,数据流的类型交换流:可划分为明显的3个部分:逻辑输入、中心变换、输出数据。整个的数据流动以一种顺序的方式并沿一条或很少的几条“直线”路径进行。如果一部分数据流图体现了这些特征,这就是变换流。,第58页,共89页。,事务流一个数据数据流经过某个加工后,有若干个平行的数据流 流出,将这种变换称为事物流。事务流的特征是数据沿某输入路径流动,该路径将外部信息转换成事务,事务被估值,根据其值,启动沿很多动作路径之一的流。其中发射出多条动作路径的信息流中心被称为事务中心。,第59页,共89页。,设计过程,流程图类型,区分事物中心和数据接受路径,区分输入和输

21、出分支,”事物“,”变换“,映射成事物结构,映射成变换结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,详细设计,数据流程图,复查,第60页,共89页。,变换分析变换分方法的步骤重画数据流图在数据流程图上区分系统的逻辑输入、逻辑输出和中心变换部分设计软件结构的顶层和第一层设计软件结构的第二层,第61页,共89页。,变换型数据流程图转化为软件结构图,第62页,共89页。,例子,步骤1:评审和精化软件的数据流图。,第63页,共89页。,第64页,共89页。,第65页,共89页。,步骤2:确定DFD含有变换流还是事务流,步骤3:刻画输入和输出流的边界,隔离变换中心。输入流被描述成信息从

22、外部形式变换为内部信 息的路径。输出流是信息从内部形式变换为外部形式的路径。,第66页,共89页。,第67页,共89页。,步骤4:完成软件结构的顶层模块和第一层结构图,第68页,共89页。,步骤5:完成软件结构的第二层结构转化,第69页,共89页。,完成软件结构的第一次迭代,第70页,共89页。,步骤6:用提高软件质量的启发信息,精化第一次迭 代得到的程序结构,第71页,共89页。,事务分析事务分析方法的具体步骤重画数据流图确定事务流和变换流标识事务中心、事务接收路径和事务处理路径设计软件结构的顶层和第一层设计软件结构的第二层,第72页,共89页。,具有边界的用户交互子系统的第2层DFD,步骤

23、1:评审和精化软件的数据流图步骤2:确定DFD含有变换流还是事务流特征。步骤3:标识事务中心和每条动作路径上的流特征。,软件结构第一层图,软件结构第二层图,第73页,共89页。,事务映射过程,步骤4:将DFD映射到一个适合于进行事务处理的程序结构上,第74页,共89页。,用户交互子系统的第一层软件结构图,第75页,共89页。,用户交互子系统的第一次迭代软件结构图,步骤5:完成第2层结构化并精化每条动作路径结构,第76页,共89页。,练习,已知某系统的需求分析给出的系统数据流图如下,请用SD方法划出对应的SC(软件结构图),第77页,共89页。,第78页,共89页。,第79页,共89页。,优化软

24、件设计软件结构的优化规则规则一:模块功能完善化规则二:设计功能单一和结果可预测的模块规则三:消除重复功能,改善软件结构,第80页,共89页。,消除模块重复功能的方案,第81页,共89页。,规则四:模块的作用范围应在控制范围之内规则五:模块的大小要适中规则六:尽可能减少高扇出和高扇入的结构规则七:将模块中变化相对较大的部分剥离出去,第82页,共89页。,例子模块E的控制范围是I、H、J,模块J的一个判定传递给E,然后再传递给I和H,此时模块J的作用范围是模块E、I、H。,第83页,共89页。,练习已知A作用域为B,C,G,D,而B的作用域D,E,F,H,请将下图修改合理,并写出修改后M的作用域,

25、B的作用域,A的作用域,M,A,B的控制域是什么?,修改后,图示,第84页,共89页。,深度表示软件结构中控制的层次,它往往能 粗略的标志一个系统的大小和复杂程度,深度和程序的长度有着粗略的对应关系。宽度是软件结构内同一层次上模块总数最大的,一般的是宽度越大系统越复杂。对宽度影响最大的是模块的扇出扇出是一个模块直接控制调用的模块模块数目,扇出大意味着模块过分复杂需要控制和协调过多的下级模块。扇出过小,也不好。一个设计好的典型系统的平均扇出通常数是3或者4上限为5-9扇入表明有多少个上级模块直接调用他,扇入越大则共享改模块的上级模块数目越多,第85页,共89页。,深度,宽度,扇出,扇入,第86页,共89页。,软件优化优化有时间要求的软件走查软件结构图用快速原型法修正设计,第87页,共89页。,设计复查概要设计复查关键设计复查设计复查的问题,第88页,共89页。,接口设计模块间的接口设计模块的外部接口设计,第89页,共89页。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号