软件工程3软件设计PPT课件_第1页
软件工程3软件设计PPT课件_第2页
软件工程3软件设计PPT课件_第3页
软件工程3软件设计PPT课件_第4页
软件工程3软件设计PPT课件_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、进度计划 推荐最佳方案 功能分解 将复杂功能分解成简单功能,使之对应成一个模块只完成一个适当功能,便于实现第6页/共89页 设计软件结构 采用层次图或结构图描述模块之 间调用的关系 数据设计 包括数据结构设计、文件设计和数据库设计 制定测试计划 针对软件结构的测试和集成测试 书写文档 总体设计规格说明书 用户手册 测试计划 详细的实现计划第7页/共89页系统体系结构需求描述软件描述体系结构设计系统体系结构抽象描述接口设计组件设计数据结构设计算法设计组件描述数据结构描述算法描述设计活动设计产品设计过程的一般模型第8页/共89页 设计原则 原则一,多样化设计 原则二,设计对于分析模型应该是可跟踪的

4、 原则三,设计不应该从头做起 原则四,软件设计应该尽可能缩短软件和现实世界的距离 原则五,设计应该表现出一致性和规范性 原则六,设计的易修改性 原则七,容错性设计 原则八,设计的粒度要适当 原则九,在设计时就开始评估软件的质量 原则十,要复审设计,减少设计引入的错误第9页/共89页 影响软件设计的因素 共同设计 用户界面 文化问题 并发性第10页/共89页软件设计的概念 模块 一个软件系统根据其功能分解成许多较小的程序单元 模块的基本属性 功能 - 模块要完成的任务 逻辑 描述模块为了完成任务,模块内部怎么做 状态 使用该模块时的环境和条件第11页/共89页 模块化 定义 即把程序划分成若干个

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

6、制信息 模块间接口的复杂程度第15页/共89页 耦合的分类 内容耦合 - 一个模块直接参考另一个模块的内容 例子 结论 - 坚决避免使用内容耦合 第16页/共89页 公共耦合 - 多个模块都访问同一个公共数据环境 分类 松散公共耦合 :一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据 紧密公共耦合:两个模块都向公共数据环境中送数据,同时也都从公共数据环境中取数据 例子 动态并发程序的执行 结论 - 限制使用公共耦合第17页/共89页 外部耦合 两个模块都访问同一个全局简单公共变量,而不是同一全局数据结构,且不是通过参数表传递该全局变量的信息 例子 结论:限制使用外部

7、耦合while (gloable T=0) if x25 then ModuleA(); else ModuleB();第18页/共89页 控制耦合 模块A向模块B传递一个控制信息 例子 把一个数组名作为参数传递给另一个模块时,就形成了参数以传址的形式进行传递,降低模块的独立性。 结论:少用控制耦合第19页/共89页 数据结构耦合 一个模块调用另一个模块时传递了整个数据结构 数据耦合 两个模块之间传递的是数据项 结论:尽量使用数据耦合。第20页/共89页 非直接耦合 两个模块之间没有直接关系,它们之间的联系完全通过主模块的控制和调用来实现 例子 If (x) then modelA else

8、modelB 结论:独立性最强的耦合第21页/共89页内容耦合公共耦合外部耦合控制耦合 数据结构耦合数据耦合非直接耦合高低弱强模块耦合性模块独立性第22页/共89页adbcefghijk全局数据区无直接耦合数据结构数据(变量)控制标志耦合的类型第23页/共89页 如何降低模块间的耦合 根据系统的特点,选择恰当的耦合类型 降低模块接口的复杂性 把模块之间的通信信息放在缓冲区中 软件设计的目标是降低模块间的耦合程度,设计时遵循的原则:尽量使用数据耦合,少用控制耦合,限制使用公共耦合,坚决不用内容耦合。第24页/共89页 内聚 巧合内聚 一个模块执行多个完全互不相关的动作 例子 为了节省空间,将多个

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

10、servletConfig); transportType =rBundle.getString(TRANSPORT_TYPE); 第27页/共89页 过程内聚 模块执行的若干动作之间有顺序关系 例子验证用户登录信息If 合法 提取用户个性化信息Else 拒绝登录 程度:中等程度内聚第28页/共89页 通信内聚 模块执行的若干动作之间有顺序关系,并且所有动作是在相同的数据上执行。 例子读取文件记录重新计算文件记录将文件记录进行输出 程度:中等程度内聚第29页/共89页 信息内聚 一个模块中执行一系列动作,每个动作都有自己的入口点和处理代码,所有的动作都作用在相同的数据结构上。 例子 程度:高内

11、聚模块入口参数表判断参数查找删除修改文件记录第30页/共89页 功能内聚 一个模块中各个部分都是完成某一具体功能必不可少的组成部分。 例子成功标志 用户身份验证(用户名,用户密码) 验证过程; return 成功标志; 程度:高内聚第31页/共89页巧合内聚逻辑内聚时间内聚过程内聚通信内聚信息内聚功能内聚低高弱强模块内聚性模块独立性第32页/共89页 练习 1软件设计中划分模块的一个准则是 A 。两个模块之间的耦合方式中,B 耦合的耦合程度最高, C 耦合的耦合度最低。一个模块内部的内聚种类中 D 内聚的内聚程度最高, E 内聚的内聚度最低。A:低内聚低耦合 低内聚高耦合 高内聚低耦合 高内聚

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

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

14、信息的模块使用 局部化 把一些关系密切的软件元素物理地彼此靠近放置在一个局部的环境当中。第37页/共89页 软件体系结构风格(模式) 管道和过滤器(数据流模型) 该体系结构被用于当输入数据被通过一系列计算或操纵构件变换为输出数据的情形。第38页/共89页发票处理系统的管道/过滤器模型读取发放的发票识别支付签发收据找出到期应付的款项收据发催款通知催款通知发票支付例子一个机构给其客户开出帐单。每星期将付款与帐单核对一次,若账单已经支付,则开出收据,若在一个规定的时间内尚未支付,则给出一个催款单。第39页/共89页 面向对象 需求可以通过对象以及它们的抽象类型组织起来。 隐式请求 隐式请求设计模型是

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

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

17、构时一般先考虑静态结构 对于复杂数据结构,应给出图形和文字描述,以便于理解第47页/共89页 文件设计 定义:指对数据存储文件的设计。 文件的逻辑设计 整理必需的数据元素 分析数据间的关系 确定文件记录的内容 文件的物理设计 理解文件的特性 确定文件物理组织结构 确定文件的存储介质 确定文件的记录格式估计记录的存取时间 估计文件的存储量第48页/共89页 数据库设计 数据库设计的基本步骤 逻辑设计 创建E-R图 物理设计 按照第三范式设计表结构 安全性设计 用户只能通过账号登录应用软件,通过应用软件访问数据库 用户账号的密码进行加密处理。确保在任何地方不出现密码的铭文表示 确定每个角色对数据库

18、访问的权限。 性能优化 优化表结构本身 优化数据库的环境参数第49页/共89页 第一范式(1NF) 在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系。 第二范式(2NF) 如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。 第三范式(3NF) 如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。 第50页/共89页 PowerDesign 9 使用方法 安装 认识环境 练习 建立逻辑模型(CDM) 建立物理模型(PDM) 生成SQL文件,同

19、时生成数据库第51页/共89页Relationship_1Relationship_2Relationship_3Relationship_4图书图书号书名单价作者出版社出版日期接触标记A10TXT64000N6,2VA60VA40DA1Identifier_1借还书借还日期借还标志 DA1Identifier_1读者读者号姓名证件号电话Email A8VA8VA20VA18VA20Identifier_1书库架位号架位地址 A20VA38Identifier_1单位单位号单位地址单位电话 VA10VA50VA18Identifier_1第52页/共89页FK_RETURN_RELATIONS

20、_BOOKFK_READER_RELATIONS_RETURNFK_READER_RELATIONS_UNITFK_BOOK_RELATIONS_LIBERARY图书图书号书名架位号单价作者出版社出版日期接触标记char(10)varchar(20)char(20)numeric(6,2)varchar(60)varchar(40)datetimechar(1)借还书图书号书名借还日期借还标志char(10)varchar(20)datetimechar(1)读者读者号单位号姓名证件号电话Emailchar(8)varchar(10)varchar(8)varchar(20)varchar(1

21、8)varchar(20)书库架位号架位地址char(20)varchar(38)单位单位号单位地址单位电话varchar(10)varchar(50)varchar(18)第53页/共89页练习教师课程教授学习学生成绩mnnm班级有员工号姓名性别课程号课程名学分住址学号姓名性别出生日期班号人数n1第54页/共89页 步骤 建立实体图(Entity) 填写属性(Attributes) 建立联系(Relationship) 定义概念模型属性 Model-Model Properties 创建概念模型的域 Model-Domains 检查CDM Tools-Check Model 由CDM生成PD

22、M Tools-Generate new Physical Data Model第55页/共89页 观察标识符与联系的转换 利用PDM创建数据库 创建一个Access空数据库(test.mdb) 配置数据源 创建数据库,同时生成SQL文件 Database-Generate Database 选择 ODBC generation 选项 检查Access数据库(test.mdb)第56页/共89页结构化设计方法数据流的类型交换流:可划分为明显的3个部分:逻辑输入、中心变换、输出数据。整个的数据流动以一种顺序的方式并沿一条或很少的几条“直线”路径进行。如果一部分数据流图体现了这些特征,这就是变换流

23、。编辑检查计算格式1格式2格式3初始数据已编辑数据有效数据计算值2计算值1已格式化1已格式化2已格式化3逻辑输入逻辑输出第57页/共89页事务流一个数据数据流经过某个加工后,有若干个平行的数据流 流出,将这种变换称为事物流。事务流的特征是数据沿某输入路径流动,该路径将外部信息转换成事务,事务被估值,根据其值,启动沿很多动作路径之一的流。其中发射出多条动作路径的信息流中心被称为事务中心。 事务中心TT1T2T3T4数据流事务流数据路径第58页/共89页设计过程 流程图类型区分事物中心和数据接受路径区分输入和输出分支”事物“”变换“映射成事物结构映射成变换结构用启发式设计规则精化软件结构导出接口描

24、述和全程数据结构详细设计数据流程图复查第59页/共89页 变换分析 变换分方法的步骤 重画数据流图 在数据流程图上区分系统的逻辑输入、逻辑输出和中心变换部分 设计软件结构的顶层和第一层 设计软件结构的第二层第60页/共89页A变换BB变换C计算D变换E取得ABCD输出E变换型数据流程图转化为软件结构图第61页/共89页例子步骤1:评审和精化软件的数据流图。住宅安全系统顶层图(第0层图)控制面板传感器控制面板显示器报警器电话线用户命令和数据传感器状态显示信息警报类型电话号码音住宅安全系统第62页/共89页控制面板传感器用户命令和数据监控传感器用户操作配置系统处理密码启动/停止系统显示信息和状态控

25、制面板显示器报警器电话线配置信息密码配置请求启动/停止有效的ID 信息。配置数据配置数据配置数据A/D信息传感器信息传感器状态警报类型电话号码音住宅安全系统的第1层DFD图第63页/共89页第64页/共89页步骤2:确定DFD含有变换流还是事务流步骤3:刻画输入和输出流的边界,隔离变换中心。 输入流被描述成信息从外部形式变换为内部信 息的路径。 输出流是信息从内部形式变换为外部形式的路径。第65页/共89页读取传感器获取反馈信息建立报警环境选择电话号码与电话线路建立联系生成脉冲格式化显示内容生成显示内容生成报警信号配置信息配置数据传感器ID类型,位置格式化的ID,类型,位置传感器信息警报类型警

26、报数据传感器状态传感器ID,设置警报状况代码,传感器ID,时间信息数字列表电话号码电话号码音就绪电话号码音具有边界的监视传感器加工的第3层DFD图第66页/共89页步骤4:完成软件结构的顶层模块和第一层结构图第67页/共89页步骤5:完成软件结构的第二层结构转化第68页/共89页完成软件结构的第一次迭代第69页/共89页监视传感器主控模块警报输出控制模块产生显示信息生成报警信号与电话线路建立联系生成脉冲获取反馈信息读取传感器建立报警环境步骤6:用提高软件质量的启发信息,精化第一次迭 代得到的程序结构第70页/共89页 事务分析 事务分析方法的具体步骤 重画数据流图 确定事务流和变换流 标识事务

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论