资源预览内容
第1页 / 共55页
第2页 / 共55页
第3页 / 共55页
第4页 / 共55页
第5页 / 共55页
第6页 / 共55页
第7页 / 共55页
第8页 / 共55页
第9页 / 共55页
第10页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第 三三 章章 软件设计是软件开发的关键步骤,直接影响软 件质量。软件设计阶段要解决“如何做”的问题。 一、一、软件设计阶段的任务软件设计阶段的任务 将分析阶段获得的需求说明转换为计算机中可 实现的系统。包括: 3.1 3.1 软件设计概述软件设计概述 软件体系结构的设计 用户界面的设计 数据结构的设计 算法的设计 即软件设计的任务是通过多项设计,构造一个 高内聚低耦合的软件模型。 过程设计 系统结构设计数据设计 界面设计 软件设计 从工程管理的角度来看,软件设计分两步完成,分 为总体设计(概要设计)和详细设计两个阶段。 概要设计。将软件需求转化为数据结构和软件的系 统结构。 详细设计。通过对结构表示进行细化,得到软件详 细的数据结构和算法。 软件设计工作流程 需求 说明书 复 审 软件结构可接受 模块描述 复 审 修 改修 改 总体 设计 详细 设计 二、软件设计的工作流程二、软件设计的工作流程 三、软件设计的目标三、软件设计的目标 软件设计的目标就是构造一个高内聚低耦合的 软件模型。 软件 设计设计 高可靠 性 高可维 护性 高可理 解性 高效率 软件设计的目标 衡量软件设计的目标的准则: 软件实体有明显的层次结构,利于软件元素间控制; 软件实体应该是模块化的,模块具有独立功能; 设计规格说明清晰、简洁、完整和无二义性。 软件实体与环境的界面清晰; 3.1.1 软件体系结构设计 软件体系结构确定了系统的组织结构和拓扑结构 ,显示了系统需求和构成系统的元素之间的对应关系 ,提供了一些设计决策的基本原理。 体系结构的设计过程的主要活动: 1.系统分解将系统分解为若干相互作用的子系统。 2.控制建模建立系统各部分间控制关系的一般模型。 3.模块分解 将子系统进一步划分为模块。 注意:往往子系统与模块之间没有明显界限. 体系结构设计是软件设计的第一个阶段,该阶段侧 重于系统宏观结构的设计,而不关心模块的内部算法。 分为集中式的仓库模型、分布式结构等 一、仓库模型(The repository model) 也称“容器模型 ”,是一种集中式的模型。中央数 据仓库存储各个子系统共享的数据,其它的子系统可 以直接访问这些共享数据。子系统之间紧密耦合。 中央数据仓库(Repository) 子系统1子系统2子系统n 仓库结构 一、仓库模型(The repository model) 设计编辑器代码生成器 设计分析器报告生成器 设计转换器 项 目 存 储 程序编辑器 集成CASE工具集的体系结构 各子系统共享中央数据库中的数据共享容器模型 各子系统有自己的数据库,子系统之间通过消息传 递实现数据交换。 适宜命令控制系统、CAD系统 仓库模型的主要优缺点: 优点: 1.共享大数据量的有效方法。 2.子系统不必关心其它的子系统如何使用它所产生的数 据。 3.易于将新子系统集成,若新子系统也采用相同规范 。 缺陷: 1.为了共享数据 ,各子系统必须有一致的数据视图 ,不 可避免地会影响了整个系统的性能。 2.子系统的改变,使产生的数据结构也可能发生改变。 3.统一的数据库 结构(备份、安全、访问控制和恢复的 策 ),将影响子系统的效率 。 二、 客户机/服务器模型(Client/Server Architectural Model) C/S结构是一种分布式模型,采用发请求、得结 果的模式: 客户机 向服务器发出请求(数据请求、网页请求、 文件传输请求等等), 服务器 响应请求,进行相应的操作,将结果回传给 客户机,客户机再将格式化后的结果呈现给用户。 C/S结构的应用都由三个相对独立的逻辑部分组成: 用户界面 应用逻辑 数据访问 三种逻辑之间的关系 1. 两层客户机/服务器模型 2. Two Tier Client/Server Architectural Model 服务器1 网络 服务器2服务器M 客户1客户2客户N 两层Client/Server结构 请求 结果 请求 C/S的工作模式是一种远程过程调用(RPC,Remote Procedure Call)模式,允许客户端和服务器端有不同 的软硬平台。 电影图片库的系统的体系结构 client1client2client4client3 Wide-bandwidth netwok Catalogue server catalogue video server Film clip files picture server digitised photographs hypertext server hypertext web 例:Two Tier Client/Server Architectural Model 完整的应用包含三个相对独立的逻辑部分,而两层的 C/S结构只有两个端应用。应用逻辑应该映射到哪一端上 呢? 三种情况: 网 络 用户界面 客户端逻 辑应用 服务端逻辑 应用 客户端用户界面 逻辑应用 数据访问 用户界面 逻辑应用 数据访问 服务器 应用逻辑层的映射情况 数据访问 C/S应用3C/S应用1C/S应用2 两层C/S架构将数据表示和处理逻辑分开 ,但应用逻 辑和两端之一是紧耦合的 ,不适宜多用户、多数据库、 非安全的网络环境。 2.三层/多层应用模型(Three/Multi Tier Model) 第一级是数据库管理结点(database management node)。 第二级或中间级是“商业逻辑结点” (business logic node),是指 具体应用中实施的 程序逻辑和法则。 第三级是用户界面级,强调高效、方便易用的用户界面。 Database management node (数据库管理结点) business logic node(商业逻辑结点) Security (安全) Event (事件) Search (搜索) ClientA ClientDClientB ClientC 服 务 器 客 户 机第一级 第二级 第三级 客户端 用户界面 服务器 数据访问 多层应用模型 网 络 应用服务器1 应用逻辑 应用服务器n 应用逻辑 在多层模型中,中间层会用到应用服务,包括事务服 务、消息服务等等。常见的事务服务器有Microsoft Transaction Server,消息服务器有Microsoft Message Queue。 三、分布式对象结构(Distributed Objects Architecture) 在C/S模型中,客户和服务器在服务/请求上的差别 ,在一定程度上限制了系统的灵活性和可扩展性。 采用分布式对象结构 : “对象(Object)”提供服务的系统组件(System Component)。 每个对象在逻辑上是平等的,它们可以互相为对 方提供所需的服务。 提供服务的对象就是服务器,而提出服务请求的 对象就是客户。 “软件总线(Software Bus)”的中间件(Middleware) 即对象请求代理(Object Request Broker,简称ORB) 分布式对象结构具有很好的开放性和透明性,用 户可以非常方便地在总线上添加、更新或删除组件对 象。 软件总线(ORB) O1 S(O1) O2 S(O2) On S(On) 分布式对象结构 流行的ORB技术标准有: 1.CORBA(Common Object Request Broker Architecture) 2. 公共对象请求代理体系结构。由对象管理组织OMG (Object Management Group)提出的应用软件体系结构 和对象技术规范。 3.2.COM(Distributed Component Object Model) 4. 组件对象模型。为组件之间、组件与应用程序之间 的通信和互操作提供了统一的标准和技术规范,使不同语 言开发的组件可进行基于组件的软件开发。 3. EJB(Enterprise Java Bean) 由Sun公司定义的规范,EJB构件是实现EJB规范的 Java构件,完成企业级应用中的业务逻辑。EJB构件驻留在 EJB容器中。 四、 抽象机模型 又称为分层模型,通常用于建立子系统的接口模型。每 层提供一组服务,每层定义一个抽象机。典型的例子: 应用层协议 表示层协议 会晤层协议 传输层协议 物 理 介 质 应用层 表示层 会晤层 传输层 网络层 数据链路层 物理层 应用层 表示层 会晤层 传输层 网络层 数据链路层 物理层 网络层 数据链路层 物理层 网络层 数据链路层 物理层 中继系统 中继系统 主机系统主机系统 ISO/OSI ISO/OSI 开放系统互连参考模型开放系统互连参考模型 优点:支持增量式开发。 缺点:系统构成,性能保证较困难。 五、控制摸型 考虑子系统之间的控制流。控制方式分为: 1.集中式控制 主程序 程序1程序2程序3 程序11程序12程序31程序32 控制的调用返回模型 2.事件驱动系统 由外部产生的事件来驱动系统 分为: 广播模型 中断驱动的模型 系统控制器 计算进程用户界面故障处理器 传感器进程传动装置进程 实时系统的集中式模型 1.软件结构的准则 2. 模块化准则 3.软件独立性准则 3.2 3.2 软件设计准则软件设计准则 软件设计是软件开发过程的重要阶段,对保证 软件系统的质量起着关键作用。但是如何保证软件 设计的质量呢?有以下经过长期考验的设计准则: 这些设计准则直接影响到体系结构的设计过程 的主要活动系统分解和模块分解。 软件结构表示软件的系统结构,它是软件模块 间关系的表示,均表示为层次关系。 软 件 结 构 示 意 图 顶层 1层 2层 A BCD EFGH IJKLM N 深度 宽度 扇入为2 扇出为3 扇入为3 宽度 深度 宽度 3层 4层 一、软件结构的准则 深度:表示软件结构中从顶层模块到最底层模块 的层数; 宽度:表示控制的总分布; 扇出数:指一个模块直接控制下属的模块个数; 扇入数:指一个模块的直接上属模块个数。 一个好的软件结构的形态准则是:顶部宽度小, 中部宽度最大,底部宽度次之;在结构顶部有较高的 扇出数, 在底部有较高的扇入数。 有 关 指 标 所谓模块化就是将系统划分成若干模块,每个模 块完成一个子功能,把这些模块集中起来组成一个整 体,以满足所要求的整个系统的功能。 我们利用模块化来降低软件复杂度。注意选择分 解的最佳模块数。 二、模块化准则 三、软件独立性准则 软件独立性的含义是指开发具有功能专一,模 块之间无过多相互作用的模块。又称为模块独立性准 则。 这种类型的模块可以并行开发,开发容易,能减 少错误的影响,使模块容易组合、修改及测试。 耦合性 用于描述模块之间联系的紧密程度。 内聚性 用于描述模块内部联系的紧密程度。 软件独立性的度量标准是两个定性指标: 耦合性的几种类型耦合性的几种类型 内容耦合 公共耦合 控制耦合 复合耦合 数据耦合 高高耦合性耦合性 低低 偶然型 逻辑型 瞬时型 通讯型 顺序型 弱弱内聚性 内聚性 强强 功能型 内聚性的几种类型内聚性的几种类型 3.3 结构化设计方法 SD(Structured Design)法与SA、SP法前后衔接 ,是结构化开发方法的核心。 一、SD 法的基本概念 1、SD 法的两个阶段 总体设计 任务: 解决系统的模块结构,即分解模块,确定 模块功能及系统模块的层次结构。 文档:模块结构图及其模块功能说明。 详细设计 对模块图中每个模块的过程进行描述,常用的 描述的方式有:伪代码,流程图,N-S图,PAD图 等。 2、SD 法的设计步骤 从DFD图导出初始的模块结构图(SC)。 按照SD法设计总则,改进模块结构图。 注意:模块结构图不同于“框图”。 软件 层次性 : 反映软件整体的性质 (结构图) 过程性 : 反映局部的性质 (框图) 3、DFD图的分类 中心变换型(transform center) _ 变换分析 事务处理型(transaction) _ 事务分析 3.3 结构化设计方法(续) 这
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号