软件工程软件设计.ppt

上传人:王** 文档编号:168484 上传时间:2023-03-10 格式: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_第6页
第6页 / 共89页
软件工程软件设计.ppt_第7页
第7页 / 共89页
软件工程软件设计.ppt_第8页
第8页 / 共89页
软件工程软件设计.ppt_第9页
第9页 / 共89页
软件工程软件设计.ppt_第10页
第10页 / 共89页
亲,该文档总共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页。 模块化定义

5、即把程序划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个系统的功能。模块规模的确定标准 模块应该是高内聚的 模块应该是松散耦合的第13页,共89页。模块数量成本或工作量M总成本联接成本模块开发成本第14页,共89页。 模块独立性“模块独立”是模块化、抽象、逐步求精和信息隐藏等概念的直接结果,也是完成有效的模块设计的基本标准。模块独立性原则的两个定性标准度量 耦合 - 衡量模块之间彼此依赖的紧密程度 内聚 - 衡量一个模块内部各个元素彼此结合的紧密程度第15页,共89页。耦合 模块间相互关联的程度关联程度的决定因素 一个模块对另一个模块的访问 模块间传递的数据量 一个模块传递

6、给另一个模块的控制信息 模块间接口的复杂程度第16页,共89页。耦合的分类 内容耦合 - 一个模块直接参考另一个模块的内容 例子 结论 - 坚决避免使用内容耦合 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);con=DriverManager.getConnection(jdbc:odbc:test);stmt=con.createStatement();rs=stmt.executeQuery(select areano, areafangxiang,areasell ,endtime from landInformation); while(rs.

7、next() 第17页,共89页。 公共耦合 - 多个模块都访问同一个公共数据环境 分类 松散公共耦合 :一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据 紧密公共耦合:两个模块都向公共数据环境中送数据,同时也都从公共数据环境中取数据 例子 动态并发程序的执行 结论 - 限制使用公共耦合第18页,共89页。 外部耦合 两个模块都访问同一个全局简单公共变量,而不是同一全局数据结构,且不是通过参数表传递该全局变量的信息 例子 结论:限制使用外部耦合while (gloable T=0) if x25 then ModuleA(); else ModuleB();第19页

8、,共89页。 控制耦合 模块A向模块B传递一个控制信息 例子 把一个数组名作为参数传递给另一个模块时,就形成了参数以传址的形式进行传递,降低模块的独立性。 结论:少用控制耦合第20页,共89页。 数据结构耦合 一个模块调用另一个模块时传递了整个数据结构 数据耦合 两个模块之间传递的是数据项 结论:尽量使用数据耦合。第21页,共89页。 非直接耦合 两个模块之间没有直接关系,它们之间的联系完全通过主模块的控制和调用来实现 例子 If (x) then modelA else modelB 结论:独立性最强的耦合第22页,共89页。内容耦合公共耦合外部耦合控制耦合数据结构耦合数据耦合非直接耦合高低

9、弱强模块耦合性模块独立性第23页,共89页。adbcefghijk全局数据区无直接耦合数据结构数据(变量)控制标志耦合的类型第24页,共89页。如何降低模块间的耦合 根据系统的特点,选择恰当的耦合类型 降低模块接口的复杂性 把模块之间的通信信息放在缓冲区中软件设计的目标是降低模块间的耦合程度,设计时遵循的原则:尽量使用数据耦合,少用控制耦合,限制使用公共耦合,坚决不用内容耦合。第25页,共89页。 内聚巧合内聚 一个模块执行多个完全互不相关的动作例子为了节省空间,将多个模块中重复出现的语句提取出来,组成一个新的模块程度:低内聚第26页,共89页。逻辑内聚 一个模块执行一系列相关动作例子程序执行

10、的逻辑类似,并共用一部分代码,接口参数为了区分执行过程而显得非常复杂。程度:低内聚第27页,共89页。时间内聚 一个模块内部的多个任务是与时间有关例子 :程序的初始化过程程度:低内聚 public void init(ServletConfig config) throws ServletException moni_num_in=0; moni_num_end=0; rBundle = ResourceBundle.getBundle(immserver.servletConfig); transportType =rBundle.getString(TRANSPORT_TYPE); 第28

11、页,共89页。过程内聚 模块执行的若干动作之间有顺序关系例子验证用户登录信息If 合法 提取用户个性化信息Else 拒绝登录程度:中等程度内聚第29页,共89页。通信内聚 模块执行的若干动作之间有顺序关系,并且所有动作是在相同的数据上执行。例子读取文件记录重新计算文件记录将文件记录进行输出程度:中等程度内聚第30页,共89页。信息内聚 一个模块中执行一系列动作,每个动作都有自己的入口点和处理代码,所有的动作都作用在相同的数据结构上。例子程度:高内聚模块入口参数表判断参数查找删除修改文件记录第31页,共89页。功能内聚 一个模块中各个部分都是完成某一具体功能必不可少的组成部分。例子成功标志 用户

12、身份验证(用户名,用户密码) 验证过程; return 成功标志;程度:高内聚第32页,共89页。巧合内聚逻辑内聚时间内聚过程内聚通信内聚信息内聚功能内聚低高弱强模块内聚性模块独立性第33页,共89页。 练习 1软件设计中划分模块的一个准则是 A 。两个模块之间的耦合方式中,B 耦合的耦合程度最高, C 耦合的耦合度最低。一个模块内部的内聚种类中 D 内聚的内聚程度最高, E 内聚的内聚度最低。A:低内聚低耦合 低内聚高耦合 高内聚低耦合 高内聚高耦合B:数据 非直接 控制 内容C:数据 非直接 控制 内容D:偶然 逻辑 功能 过程E:偶然 逻辑 功能 过程 第34页,共89页。 练习2软件设

13、计中划分程序模块通常遵循的原则是要使各模块间的耦合性尽可能 A 。三种可能的模块耦合是 B 。例如,一个模块直接引用另一模块中的数据。 C 。例如,一个模块把开关量作为参数传递给另一模块。 D 。例如,一个模块把一个数值量作为参数传递给另一模块。其中 E 的耦合性最强。A: 强 适中 弱 BE:公共耦合 数据耦合 逻辑耦合 外部耦合 内容耦合 控制耦合 第35页,共89页。 练习3模块内聚度用于衡量模块内部各成分之间彼此结合的紧密程度1、一组语句在程序的多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚度是 A 的。2、将几个逻辑上相似的成分放在一个模块中,该模块的内聚度是 B

14、的。3、模块中所有成分引用共同的数据,该模块的内聚度是 C 的。4、模块中所有成分结合起来完成一项任务,该模块的内聚度是 D 的。AE:功能性 逻辑性 通信性 过程性 偶然性 瞬时性第36页,共89页。 抽象定义 抽出事务的本质特性而暂时不考虑它们的细节。Wasserman提出的几种抽象方法 功能分解法 面向数据的分解法 面向事件的分解法 由外向内的设计 面向对象的设计第37页,共89页。 信息隐藏含义 一个模块中所包含的信息,不允许其他不需要这些信息的模块使用局部化 把一些关系密切的软件元素物理地彼此靠近放置在一个局部的环境当中。第38页,共89页。 软件体系结构风格(模式)管道和过滤器(数

15、据流模型) 该体系结构被用于当输入数据被通过一系列计算或操纵构件变换为输出数据的情形。第39页,共89页。发票处理系统的管道/过滤器模型读取发放的发票识别支付签发收据找出到期应付的款项收据发催款通知催款通知发票支付例子一个机构给其客户开出帐单。每星期将付款与帐单核对一次,若账单已经支付,则开出收据,若在一个规定的时间内尚未支付,则给出一个催款单。第40页,共89页。面向对象 需求可以通过对象以及它们的抽象类型组织起来。隐式请求 隐式请求设计模型是事件驱动的。面向数据流的设计 将系统按层次划分,每一层都为上一层提供服务。过程控制 将过程输出维持在某个指定值的范围之内。客户机/服务器第41页,共8

16、9页。 程序结构程序结构反映软件结构中的模块划分情况,它通常是树状结构或网状结构,其中蕴含了程序控制上的层次关系。第42页,共89页。 程序结构分类树状结构 整个树状结构只有一个根模块 任何一个非根模块,只有一个调用模块,而且同一层模块之间不发生联系第43页,共89页。 网状结构任意两个模块之间都可以有双向的关系,不存在上级模块和下属模块的关系第44页,共89页。 表示软件结构的图形软件层次图第45页,共89页。软件结构图第46页,共89页。 数据设计数据设计的原则 用于软件的系统化方法也适用于数据 要确定所有数据结构,以及在每种数据结构上实施的操作 应该建立一个数据字典,用它来定义数据和软件的设计 底层数据设计的决策应该推迟到设计过程的后期进行,在数据设计中也可以使用自顶向下、逐步细化的方法 数据设计时应遵从信息隐藏原则 应当创建一个存放数据结构和相关操作的库 软件设计和程序设计语言应当支持抽象数据类型的定义和实现第47页,共89页。 数据结构设计原则 尽量使用简单的数据结构 在设计数据结构时要注意数据之间的关系 为了加强数据设计的可复用性,应该针对常用的数据结构和复杂的数据结构设计

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

当前位置:首页 > IT计算机 > 软件测试

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!