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

下载本文档

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

文档简介

软件工程,第三章 软件设计,软件设计概述,内容 软件设计是一个描述、组织、构造系统部件的过程,是确定软件“怎么做”的过程。这个过程分为两个层次:概要设计和详细设计。 软件设计的输入是需求规格说明书,输出是概要设计说明书和详细设计说明书,总体设计(概要设计) 从全局的高度,确定系统的总体实现方案和整体框架 它要覆盖需求规格说明书的全部内容,同时作为指导详细设计的依据 详细设计 确定应该怎样具体地实现各个软件元素,得到对目标系统的精确描述 要覆盖总体设计的全部内容,同时作为指导程序设计的依据,总体设计的具体任务 制定规范 系统命名规范,模块命名规范,构件命名规范,变量命名规范,以及数据库中的表名、字段名、索引名、试图名、存储过程名、触发器名等 总体结构设计 系统体系结构的设计 通常采用软件结构图的横向表示功能分解 ,纵向表示功能的层次调用,处理方式设计 数据设计 数据结构设计 文件设计 数据库设计 质量设计 文档设计,评审总体设计 可回溯性 接口定义是否清晰 检查模块的内聚力 风险性 实用性 质量属性 各种选择方案 限制 其他问题,总体设计的过程 设想供选择的方案 根据需求分析阶段的数据流程图中处理逻辑关系,归并形成子系统 不同的子系统组合产生不同的系统实现方案 材料要求:系统流程图、组成系统的元素清单、成本/效益分析、实现这个方案的进度计划 推荐最佳方案 功能分解 将复杂功能分解成简单功能,使之对应成一个模块只完成一个适当功能,便于实现,设计软件结构 采用层次图或结构图描述模块之 间调用的关系 数据设计 包括数据结构设计、文件设计和数据库设计 制定测试计划 针对软件结构的测试和集成测试 书写文档 总体设计规格说明书 用户手册 测试计划 详细的实现计划,设计过程的一般模型,设计原则 原则一,多样化设计 原则二,设计对于分析模型应该是可跟踪的 原则三,设计不应该从头做起 原则四,软件设计应该尽可能缩短软件和现实世界的距离 原则五,设计应该表现出一致性和规范性 原则六,设计的易修改性 原则七,容错性设计 原则八,设计的粒度要适当 原则九,在设计时就开始评估软件的质量 原则十,要复审设计,减少设计引入的错误,影响软件设计的因素 共同设计 用户界面 文化问题 并发性,软件设计的概念,模块 一个软件系统根据其功能分解成许多较小的程序单元 模块的基本属性 功能 - 模块要完成的任务 逻辑 描述模块为了完成任务,模块内部怎么做 状态 使用该模块时的环境和条件,模块化 定义 即把程序划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个系统的功能。 模块规模的确定标准 模块应该是高内聚的 模块应该是松散耦合的,模块独立性 “模块独立”是模块化、抽象、逐步求精和信息隐藏等概念的直接结果,也是完成有效的模块设计的基本标准。 模块独立性原则的两个定性标准度量 耦合 - 衡量模块之间彼此依赖的紧密程度 内聚 - 衡量一个模块内部各个元素彼此结合的紧密程度,耦合 模块间相互关联的程度 关联程度的决定因素 一个模块对另一个模块的访问 模块间传递的数据量 一个模块传递给另一个模块的控制信息 模块间接口的复杂程度,耦合的分类 内容耦合 - 一个模块直接参考另一个模块的内容 例子 结论 - 坚决避免使用内容耦合, 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.next() ,公共耦合 - 多个模块都访问同一个公共数据环境 分类 松散公共耦合 :一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据 紧密公共耦合:两个模块都向公共数据环境中送数据,同时也都从公共数据环境中取数据 例子 动态并发程序的执行 结论 - 限制使用公共耦合,外部耦合 两个模块都访问同一个全局简单公共变量,而不是同一全局数据结构,且不是通过参数表传递该全局变量的信息 例子 结论:限制使用外部耦合,while (gloable T=0) if x25 then ModuleA(); else ModuleB(); ,控制耦合 模块A向模块B传递一个控制信息 例子 把一个数组名作为参数传递给另一个模块时,就形成了参数以传址的形式进行传递,降低模块的独立性。 结论:少用控制耦合,数据结构耦合 一个模块调用另一个模块时传递了整个数据结构 数据耦合 两个模块之间传递的是数据项 结论:尽量使用数据耦合。,非直接耦合 两个模块之间没有直接关系,它们之间的联系完全通过主模块的控制和调用来实现 例子 If (x) then modelA else modelB 结论:独立性最强的耦合,内容耦合,公共耦合,外部耦合,控制耦合,数据结构耦合,数据耦合,非直接耦合,高,低,弱,强,模块耦合性,模块独立性,耦合的类型,如何降低模块间的耦合 根据系统的特点,选择恰当的耦合类型 降低模块接口的复杂性 把模块之间的通信信息放在缓冲区中 软件设计的目标是降低模块间的耦合程度,设计时遵循的原则:尽量使用数据耦合,少用控制耦合,限制使用公共耦合,坚决不用内容耦合。,内聚 巧合内聚 一个模块执行多个完全互不相关的动作 例子 为了节省空间,将多个模块中重复出现的语句提取出来,组成一个新的模块 程度:低内聚,逻辑内聚 一个模块执行一系列相关动作 例子 程序执行的逻辑类似,并共用一部分代码,接口参数为了区分执行过程而显得非常复杂。 程度:低内聚,时间内聚 一个模块内部的多个任务是与时间有关 例子 :程序的初始化过程 程度:低内聚,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“); ,过程内聚 模块执行的若干动作之间有顺序关系 例子 验证用户登录信息 If 合法 提取用户个性化信息 Else 拒绝登录 程度:中等程度内聚,通信内聚 模块执行的若干动作之间有顺序关系,并且所有动作是在相同的数据上执行。 例子 读取文件记录 重新计算文件记录 将文件记录进行输出 程度:中等程度内聚,信息内聚 一个模块中执行一系列动作,每个动作都有自己的入口点和处理代码,所有的动作都作用在相同的数据结构上。 例子 程度:高内聚,功能内聚 一个模块中各个部分都是完成某一具体功能必不可少的组成部分。 例子 成功标志 用户身份验证(用户名,用户密码) 验证过程; return 成功标志; 程度:高内聚,巧合内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,信息内聚,功能内聚,低,高,弱,强,模块内聚性,模块独立性,练习 1 软件设计中划分模块的一个准则是 A 。两个模块之间的耦合方式中,B 耦合的耦合程度最高, C 耦合的耦合度最低。一个模块内部的内聚种类中 D 内聚的内聚程度最高, E 内聚的内聚度最低。 A:低内聚低耦合 低内聚高耦合 高内聚低耦合 高内聚高耦合 B:数据 非直接 控制 内容 C:数据 非直接 控制 内容 D:偶然 逻辑 功能 过程 E:偶然 逻辑 功能 过程,练习2 软件设计中划分程序模块通常遵循的原则是要使各模块间的耦合性尽可能 A 。三种可能的模块耦合是 B 。例如,一个模块直接引用另一模块中的数据。 C 。例如,一个模块把开关量作为参数传递给另一模块。 D 。例如,一个模块把一个数值量作为参数传递给另一模块。其中 E 的耦合性最强。 A: 强 适中 弱 BE:公共耦合 数据耦合 逻辑耦合 外部耦合 内容耦合 控制耦合,练习3 模块内聚度用于衡量模块内部各成分之间彼此结合的紧密程度 1、一组语句在程序的多处出现,为了节省内存空间把这些语句放在一个模块中,该模块的内聚度是 A 的。 2、将几个逻辑上相似的成分放在一个模块中,该模块的内聚度是 B 的。 3、模块中所有成分引用共同的数据,该模块的内聚度是 C 的。 4、模块中所有成分结合起来完成一项任务,该模块的内聚度是 D 的。 AE:功能性 逻辑性 通信性 过程性 偶然性 瞬时性,抽象 定义 抽出事务的本质特性而暂时不考虑它们的细节。 Wasserman提出的几种抽象方法 功能分解法 面向数据的分解法 面向事件的分解法 由外向内的设计 面向对象的设计,信息隐藏 含义 一个模块中所包含的信息,不允许其他不需要这些信息的模块使用 局部化 把一些关系密切的软件元素物理地彼此靠近放置在一个局部的环境当中。,软件体系结构风格(模式) 管道和过滤器(数据流模型) 该体系结构被用于当输入数据被通过一系列计算或操纵构件变换为输出数据的情形。,例子 一个机构给其客户开出帐单。每星期将付款与帐单核对一次,若账单已经支付,则开出收据,若在一个规定的时间内尚未支付,则给出一个催款单。,面向对象 需求可以通过对象以及它们的抽象类型组织起来。 隐式请求 隐式请求设计模型是事件驱动的。 面向数据流的设计 将系统按层次划分,每一层都为上一层提供服务。 过程控制 将过程输出维持在某个指定值的范围之内。 客户机/服务器,程序结构 程序结构反映软件结构中的模块划分情况,它通常是树状结构或网状结构,其中蕴含了程序控制上的层次关系。,程序结构分类 树状结构 整个树状结构只有一个根模块 任何一个非根模块,只有一个调用模块,而且同一层模块之间不发生联系,网状结构 任意两个模块之间都可以有双向的关系,不存在上级模块和下属模块的关系,表示软件结构的图形 软件层次图,软件结构图,数据设计 数据设计的原则 用于软件的系统化方法也适用于数据 要确定所有数据结构,以及在每种数据结构上实施的操作 应该建立一个数据字典,用它来定义数据和软件的设计 底层数据设计的决策应该推迟到设计过程的后期进行,在数据设计中也可以使用自顶向下、逐步细化的方法 数据设计时应遵从信息隐藏原则 应当创建一个存放数据结构和相关操作的库 软件设计和程序设计语言应当支持抽象数据类型的定义和实现,数据结构设计 原则 尽量使用简单的数据结构 在设计数据结构时要注意数据之间的关系 为了加强数据设计的可复用性,应该针对常用的数据结构和复杂的数据结构设计抽象类型 尽量使用经典数据结构 在确定数据结构时一般先考虑静态结构 对于复杂数据结构,应给出图形和文字描述,以便于理解,文件设计 定义:指对数据存储文件的设计。 文件的逻辑设计 整理必需的数据元素 分析数据间的关系 确定文件记录的内容 文件的物理设计 理解文件的特性 确定文件物理组织结构 确定文件的存储介质 确定文件的记录格式估计记录的存取时间 估计文件的存储量,数据库设计 数据库设计的基本步骤 逻辑设计 创建E-R图 物理设计 按照第三范式设计表结构 安全性设计 用户只能通过账号登录应用软件,通过应用软件访问数据库 用户账号的密码进行加密处理。确保在任何地方不出现密码的铭文表示 确定每个角色对数据库访问的权限。 性能优化 优化表结构本身 优化数据库的环境参数,第一范式(1NF) 在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系。 第二范式(2NF) 如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。 第三范式(3NF) 如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。,PowerDesign 9 使用方法 安装 认识环境 练习 建立逻辑模型(CDM) 建立物理模型(PDM) 生成SQL文件,同时生成数据库,练习,步骤 建立实体图(Entity) 填写属性(Attributes) 建立联系(Relationship) 定义概念模型属性 Model-Model Properties 创建概念模型的域 Model-Domains 检查CDM Tools-Check Model 由CDM生成PDM Tools-Generate new Physical Data Model,观察标识符与联系的转换 利用PDM创建数据库 创建一个Access空数据库(test.mdb) 配置数据源 创建数据库,同时生成SQL文件 Database-Generate Database 选择 ODBC generation 选项 检查Access数据库(test.mdb),结构化设计方法,数据流的类型 交换流:可划分为明显的3个部分:逻辑输入、中心变换、输出数据。 整个的数据流动以一种顺序的方式并沿一条或很少的几条“直线”路径进行。如果一部分数据流图体现了这些特征,这就是变换流。,事务流 一个数据数据流经过某个加工后,有若干个平行的数据流 流出,将这种变换称为事物流。 事务流的特征是数据沿某输入路径流动,该路径将外部信息转换成事务,事务被估值,根据其值,启动沿很多动作路径之一的流。其中发射出多条动作路径的信息流中心被称为事务中心。,设计过程,流程图类型,区分事物中心和数据接受路径,区分输入和输出分支,”事物“,”变换“,映射成事物结构,映射成变换结构,用启发式设计规则精化软件结构,导出接口描述和全程数据结构,详细设计,数据流程图,复查,变换分析 变换分方法的步骤 重画数据流图 在数据流程图上区分系统的逻辑输入、逻辑输出和中心变换部分 设计软件结构的顶层和第一层 设计软件结构的第二层,变换型数据流程图转化为软件结构图,例子,步骤1:评审和精化软件的数据流图。,步骤2:确定DFD含有变换流还是事务流,步骤3:刻画输入和输出流的边界,隔离变换中心。 输入流被描述成信息从外部形式变换为内部信 息的路径。 输出流是信息从内部形式变换为外部形式的路径。,步骤4:完成软件结构的顶层模块和第一层结构图,步骤5:完成软件结构的第二层结构转化,完成软件结构的第一次迭代,步骤6:用提高软件质量的启发信息,精化第一次迭 代得到的程序结构,事务分析 事务分析方法的具体步骤 重画数据流图 确定事务流和变换流 标识事务中心、事务接收路径和事务处理路径 设计软件结构的顶层和第一层 设计软件结构的第二层,具有边界的用户交互子系统的第2层DFD,步骤1:评审和精化软件的数据流图 步骤2:确定DFD含有变换流还是事务流特征。 步骤3:标识事务中心和每条动作路径上的流特征。,软件结构第一层图,软件结构第二层图,事务映射过程,步骤4:将DFD映射到一个适合于进行事务处理的程序结构上,用户交互子系统的第一层软件结构图,用户交互子系统的第一次迭代软件结构图,步骤5:完成第2层结构

温馨提示

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

评论

0/150

提交评论