软件工程第五章结构化设计.ppt

上传人:本田雅阁 文档编号:3302283 上传时间:2019-08-10 格式:PPT 页数:103 大小:1.32MB
返回 下载 相关 举报
软件工程第五章结构化设计.ppt_第1页
第1页 / 共103页
软件工程第五章结构化设计.ppt_第2页
第2页 / 共103页
软件工程第五章结构化设计.ppt_第3页
第3页 / 共103页
软件工程第五章结构化设计.ppt_第4页
第4页 / 共103页
软件工程第五章结构化设计.ppt_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《软件工程第五章结构化设计.ppt》由会员分享,可在线阅读,更多相关《软件工程第五章结构化设计.ppt(103页珍藏版)》请在三一文库上搜索。

1、第三部分软件设计与建模 结构化软件设计 阳王东 回答问题 什么是软件设计?有哪些阶段和任务? 什么是模块化设计?有哪些原理? 什么是软件结构和体系结构?二者有什么区别? 数据流有哪些类型?如何区分? 数据流映射的步骤是什么? 什么是结构化程序设计?有哪些工具? 什么是JSD方法?具体步骤是什么? 第8章 软件设计 软件设计 模块化设计 软件架构设计 软件结构 软件设计概述 软件设计阶段的基本目标是构造系统“怎么做”的模型 描述。 “设计先于编码”,这是软件工程“推迟实现”基本原则 软件系统设计是把软件需求“变换”为用于构造软件的 蓝图。 “输入”是需求分析各种模型元素 “输出”是软件设计模型和

2、表示 软件设计的目标是对将要实现的软件系统的体系结构 、系统的数据、系统模块间的接口,以及所采用的算 法给出详尽的描述。 软件设计三类活动 总体设计,也称为概要设计,软件结构设计,或高层设计 。 分析需求规格说明 模块划分,形成具有预定功能的模块组成结构 表示出模块间的控制关系 给出模块之间的接口 软件详细设计,也称为(模块)过程设计,或低层设计。 设计模块细节 确定模块所需的算法和数据结构等 测试和复审 软件设计质量原则 设计过程要有全局观念 设计对于分析模型应该是可跟踪的 设计不应该从头做起 设计应该是可实现的 设计应该表现出一致性和集成性 设计应该能够适应修改 设计不是编码 应该复审每一

3、步设计,以减少语义性错误 软件模块化设计 模块是一个独立命名的,拥有明确定义的输入、输出 和特性的程序实体。 软件的模块化设计(Modular Design)。系统是有 一个个模块组装而成。 软件模块化设计优点 可以简化软件的设计和实现 提高软件的可理解性和可测试性 软件更容易得到维护。 软件模块化设计缺点 模块划分的数量越多,模块间的联系也越多 模块的接口工作量却随着模块数增加而增大 模块数与开发工作量 开 发 工 作 量 模块数 最小成本区 模块成本 接口成本 总成本 软件模块化设计的指导思想 分解 抽象 逐步求精 信息隐蔽 模块独立性 分解与抽象 分解必然需要抽象的支持。抽象是抓住主要问

4、题,隐 藏细节,这样才能容易分解。 抽象具有不同的级别。 人类解决复杂问题的基本方法之一。只有抓住事物的 本质,才能准确分析和处理问题,找到合理的解决方 案。 逐步求精 逐步求精,或称逐步细化,是一种自顶向下的设计策 略。 逐步求精是人类采用抽象到具体的过程把一个复杂问 题趋于简单化控制和管理的有效策略。 抽象和精化是互补的概念。 信息隐藏 信息隐蔽原则建议模块应该具有的特征是:每个模块 对其他所有模块都隐蔽自己的设计决策。 信息隐蔽意味着通过一系列独立的模块可以得到有效 的模块化。 独立的构件或模块之间的“接口”简单而清晰。 模块的独立性 模块独立性是指开发具有独立功能而和其他模块没有 过多

5、关联的模块。 模块独立性两大优点: 独立的模块由于分解了功能,简化了接口,使得软件比 较容易开发; 独立的模块比较容易测试和维护。 模块独立性由两个定性标准度量: 模块自身的内聚(Cohesion),也称为块内联系或 模块强度, 模块之间的耦合(Coupling),也称为块间联系。 模块独立性愈高,则块内联系越强,块间联系越弱。 模块内聚性 内聚性是从功能的角度对模块内部聚合能力的量度。 高内聚是模块独立性追求的目标。 分类: 偶然性内聚 逻辑性内聚 时间性内聚 过程性内聚 通信性内聚 顺序性内聚 功能性内聚 内聚性分类 偶然性内 聚 弱 逻辑性 内聚 时间性 内聚 过程性 内聚 通信性 内聚

6、 顺序性 内聚 功能性 内聚 强 低内聚 中内聚 高内聚 模块耦合性 耦合性是对一个软件结构内不同模块之间互连程度的度量 。 耦合性的强弱取决于模块间接口的复杂程度,以及通过接 口的数据类型和数目。 分类: 非直接耦合 数据耦合 控制耦合 外部耦合 公共耦合 内容耦合 耦合性分类 非直接耦 合 弱 数据耦合 特征耦合 控制耦合 外部耦合 公共耦合 内容耦合 强 弱耦合 中耦合 强耦合 较强耦合 模块化设计的优化 改进软件结构提高模块独立性 在满足模块化要求的前提下尽量减少模块数量,在满 足信息需求的前提下尽可能减少复杂的数据结构 模块规模应适中 软件结构的深度、宽度、 扇入数和扇出数都要适当

7、模块的作用域应该在控制域之内 力求降低模块接口的复杂程度,设计单入口、单出口 的模块 概要设计 概要设计主要包括三个方面的设计。首先是系统 构架设计,然后是软件结构设计与数据结构设计 。 软件架构设计(体系结构) 软件体系结构是一种总体表达。 大型软件系统总是被分解成一系列子系统,由子系统提供 一些相关的服务。 软件架构设计过程就是识别出这些子系统,并建立子系统 控制和通信的框架,最后给出软件体系结构的一个描述。 系统构架设计可以按照以下步骤进行 定义子系统 定义子外部接口 定义系统构成模型 定义系统控制模型 系统架构设计主要内容 子系统划分方法 前台业务办理和后台数据管理 数据采集、数据处理

8、和数据管理 界面、控制和实体 外部接口 通信协议 SDK 消息 分布式访问 系统构成模型 以数据为中心的结构模型 客户机/服务器结构模型 抽象机结构模型 以数据为中心的结构模型 由一组子系统构成,子系统交换信息,协调工作 有两种基本方法: 全部共享数据放在一个中央数据库中,所有子 系统都能从中存取数据。 每个子系统用各自的数据库与其他子系统进行 数据交互,通过消息传递来实现。 共享数据模型的优点是能够高效地共享大量的数 据; 缺点是子系统一定要与以数据为中心的体系结构 模型一致,系统变更或进化比较困难。 数据流体系结构模型 当输入数据经过一系列的计算和操作构件或模块的变 换形成输出数据时,可以

9、应用数据流体系结构。 管道和过滤器结构通过一组由管道连接的过滤器来变 换数据,并向下传递。 管道和过滤器结构 过滤器过滤器 过滤器 过滤器 过滤器 过滤器 过滤器过滤器 多媒体服务系统结构 网 络 目录服务器 目录 视频服务器 电影文件 图片服务器 图片文件 web服务器 超文本文件 客户1客户2客户n 两层C/S架构 允许用户界面和应用程序代码直接访问数据库和网络存储 的API。应用程序使用数据库中存储的数据模型,但是不 需要在该模型之上建立逻辑模型。当开发中的系统是一个 原型系统或者已经知道其生命周期较短,期间API不会发 生变化的时候,两层应用程序是理想的。典型情形下,这 种方式用于小型

10、的应用程序,它们的开发成本和时间都很 少。 三层C/S架构 相当频繁的重复使用是一个主要的设计考虑因素,在这种 情形下需要建立应用程序模型以允许它的一部分被多个用 户界面查看组件重复使用。它有一个指导方针是,在应用 程序需要相同数据的多个视图的任何时候,开发者应该考 虑使用三层方式代替两层方式。 从两层模型迁移到三层模型需要考虑的主要问题包括适当 的网络资源的可用性和管理并发数据访问的加锁方案。 抽象机模型 抽象机模型也称为分层模型,是建立子系统的接口模 型。它把子系统组织成一系列的层次,每一层提供一 组服务,每一层定义为一个抽象机。 例如:网络协议OSI参考模型 通 信 介 质 应用层 表示

11、层 会话层 传输层 网络层 数据链路层 物理层 用户B 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 用户A 系统控制模型 集中式控制模型 调用返回模型:这是一个自上而下的子过程模型。控 制始于系统(程序)的顶层,在子系统(程序)调用过 程中,控制逐步传递到更低的层次中。该模型适用于顺 序执行的系统。 管理者模型:这是一种适用于并发系统的模型。一个系 统组件被指定为系统管理者,控制其他系统过程的启动 、终止和协调。一个过程就是一个能和其他过程并发执 行的子系统或模块。 SOA架构 服务提供者: 一个可通过网络寻址的实体,它 接受和执行来自使用者的请求。 它将自己的服务和接口契约发

12、布 到服务注册中心,以便服务使用 者可以发现和访问该服务。 服务使用者: 一个应用程序、一个软件模块或 需要一个服务的另一个服务。 它发起对注册中心中的服务的查 询,通过传输绑定服务,并且执 行服务功能。 服务使用者根据接口契约来执行 服务。 服务注册中心: 服务发现的支持者; 它包含一个可用服务的存储库, 并允许感兴趣的服务使用者查找 服务提供者接口。 服务注册中心 服务消费者服务提供者 注册发现 调用 并发系统的集中式控制模型 系 统 控 制 器 故障处理器用户界面 传感器进程传动装置进程 计算进程 系统控制模型 事件驱动系统 广播模型:发生的事件广播到所有子系统,任何能处理 该事件的子系

13、统都会响应。该模型适用于基于网络的分 布式系统。 广播模型中的子系统注册其感兴趣的特别事件 广播模型的优点是进化比较简单 缺点是子系统都知道是否和什么时候处理事件,这可能会引 起冲突。 中断驱动模型:由中断处理器对来自外部的中断进行检 测,然后在其他组件中处理这些中断。该模型适用于对 定时有严格要求的实时系统。 只用在硬件实时系统中,要求对一些事件能做出及时响应 总线架构 像水管一样随意接入 像PCI总线一样即插即用 Business Intelligence Services Service Registry B2B Interactions Collaboration Tools Port

14、al Service Applications if-then-else; do-While 扩展的结构程序设计 增加case; do-until 修正的结构程序设计 允许continue; break 过程设计 过程设计在概要设计完成之后进行,它是详细设计阶 段应该完成的主要任务 过程设计方法 流程图 N-S图 PAD图 判定表 HIPO图 流程图结构 (a)顺序结构 (b)IF-THEN-ELSE型选择 (c)DO-WHILE型循环结构 (d)DO-UNTIL型循环结构 (e)多分支结构 程序结构(续) (d) (e) 程序流程图的标准符号 试错限制 流程图的实例-系统登录 口 令 验 证

15、 用 户 名 验 证 开始 输入 用户名 查询用户名 是否存在 该用户名 输入 口令 根据用户 名比对口令 口令是 否相符 清空输 入口令 登录系统 试错次 数加1 关闭登 录界面 试错次 数等于3 结束 N Y Y N Y N 试错次 数置0 流程图分析 程序结构 用户名验证 口令验证 试错限制 需要补充完善之处 用户名不存在,增加到注册连接 验证码验证 口令验证算法描述 N-S图 (a) 顺序 (b) IF-THEN- ELSE型分支 (c) CASE型多 分支 (d) 循环 (e) 调用子程 序A N-S图实例 计算100以内偶数之和,并输出 i=1,T=0 i%2=0 T F T=T+

16、i i+ i100 输出T PAD图 (a) 顺序(先执行 P1后执行P2); (b) 选择(IF C THEN P1 ELSE P2); (c) CASE型多分 支; (d) WHILE型循 环(WHILE C DO P); (e) UNTIL型循 环(REPEAT P UNTIL C);(f) 语句标号;(g) 定义 PAD图实例 计算100以内偶数之和,并输出 i=0 T=0 While i100P 输出T P T=T+i i+ i%2=0 def 求11000内所有素数 用PAD图描述求素数的程序结构 算法 蛮力遍历 折半遍历 筛选法 HIPO图 HIPO(Hiberarchy Plu

17、s Input-Process-Output,层 次加输入-处理-输出)图是根据IBM公司研制的软件 设计与文件编制技术发展而来的。 HIPO图采用功能框图和PDL来描述程序逻辑,它由 两部分组成: 可视目录表给出程序的层次关系 体系框图:又称层次图(H图),是可视目录表的主体,用 它表明各个功能的隶属关系 图例:图形符号说明 描述说明:每一框的补充说明 IPO图则为程序各部分提供具体的工作细节 盘存销售系统工作流程图 层次图 说明 IPO图 详细的IPO图 小结 概要设计就是确定系统的模块以及模块之间的结构和关系,将软件的 功能需求分配给所划分的最小单元模块。 详细设计要确定数据结构、文件结构、数据库模式以及确定测试方法 与策略。 在概要设计阶段主要树立一个模块化的思想。按照数据流到软件结构 图的映射步骤将数据流图转化为系统的软件结构图。再对结构图进行 分析、细化得到合理的软件模块结构。 在软件模块确定后,就需要考虑为软件结构图中的每一个模块确定相 应的算法和块内的数据结构,用结构化程序设计工具来描述。 结构化程序设计工具通常以图形语言来描述,然后用PDL语言来加工 。使得操作的步骤尽可能详细和清晰。在详细设计工具中主要有程序 流程图、盒图、PAD图和HIPO图等。 作业 使用结构化设计方法对ATM系统进行设计。

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1