结构化软件设计.ppt_第1页
结构化软件设计.ppt_第2页
结构化软件设计.ppt_第3页
结构化软件设计.ppt_第4页
结构化软件设计.ppt_第5页
免费预览已结束,剩余69页可下载查看

下载本文档

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

文档简介

第4章结构化软件设计 本章学习内容 1 了解概要设计的任务与过程2 掌握结构化设计技术的基本原理与准则3 掌握面向数据流分析的设计方法4 了解面向数据的设计方法5 掌握数据库设计原则和步骤6 了解常用的详细设计工具7 了解概要设计说明书的基本内容 第4章结构化软件设计 4 1概要设计的任务与过程概要设计的目标是概要地说明软件应该怎样实现 即解决软件系统总体结构设计的问题 包括软件系统的结构 模块划分 模块功能和模块间的联系等 第4章结构化软件设计 4 1概要设计的任务与过程4 1 1概要设计的任务 1 建立目标系统的总体结构 2 给出每个功能模块的功能描述 数据接口描述和调用关系 规定设计限制 外部文件及全局数据定义 3 设计数据库及数据结构 4 编写文档 第4章结构化软件设计 4 1 2概要设计的过程1 制定规范2 系统架构设计3 软件结构设计4 公共数据结构设计5 安全性设计6 故障处理设计7 编写文档8 概要设计评审 第4章结构化软件设计 4 2系统架构设计4 2 1系统架构设计与风格系统架构设计可按以下步骤进行 定义子系统 根据需求分析中有关系统的业务划分情况 将系统分解成多个具有独立功能的子系统 定义子系统外部接口 定义系统物理架构 包括硬件设备 软件环境 网络结构 数据库结构等 并将子系统按照子系统所选的物理架构进行合理部署与优化 第4章结构化软件设计 4 2 2常见的软件体系架构风格1 数据流风格管道 过滤器风格的软件体系结构 第4章结构化软件设计 管道 过滤器风格的软件体系架构的优点使得软构件具有良好的隐蔽性和高内聚性 低耦合度的特点 允许设计者将整个系统的输入 输出行为看成是多个过滤器的行为的简单合成 支持软件复用 如果任何两个过滤器达成了在它们之间交流的数据格式 这两个过滤器就可被连接起来 维护这种系统和增强系统其功能很简单 新的过滤器可以添加到现有系统中来 旧的过滤器可以被改进的过滤器替换掉 第4章结构化软件设计 允许对一些如吞吐量 死锁等属性的分析 支持并行执行 每个过滤器是作为一个单独的任务实现 因此可与其他任务并行执行 缺点 通常导致进程成为批处理的结构 不适合处理交互的应用 因为在数据传输上没有通用的标准 每个过滤器都增加了解析和合成数据的工作 这样就导致了系统性能下降 并增加了编写过滤器的复杂性 第4章结构化软件设计 2 层次系统风格 第4章结构化软件设计 层次系统的优点 支持基于抽象程度递增的系统设计 使设计者可以把一个复杂系统按递增的步骤进行分解 支持功能增强 因为每一层至多和相邻的上下层交互 因此功能的改变最多影响相邻的上下层 支持复用 只要提供的服务接口定义不变 同一层的不同实现可以交换使用 不足之处 并不是每个系统都可以很容易地划分为分层的模式 很难找到一个合适的 正确的层次抽象方法 第4章结构化软件设计 3 虚拟机风格例 解释器 通过虚拟机特定模块的解释步骤如下 解释引擎从被解释的模块中选择一条指令 基于这条指令 引擎更新虚拟机内部的状态 上述过程反复执行 第4章结构化软件设计 特点 在虚拟机环境中运行的代码不必须了解虚拟机的具体细节 一旦运行环境发生变化 只需要重写虚拟机本身 而不是整个系统 通常虚拟机会限制在其中运行的软件的行为 特别是那些以实现跨平台为目的的虚拟机 如Java虚拟机和 NETCLR 能够使系统的结构更具层次性 使用虚拟机提供的设施编写的代码 可以不考虑虚拟机以外的实际环境 而在正确地实现了这种虚拟机的环境中执行 第4章结构化软件设计 4 独立构件风格独立构件风格的体系结构由很多独立的 通过消息交互的过程或者对象组成 这种软件体系结构通过对各自部分计算的解耦操作来达到易更改的目的 第4章结构化软件设计 特点 系统由松耦合的一些独立运行的计算单元构成 这些单元之间通过消息传递信息 一般情况下 这些独立的计算单元能够自主地完成一些计算任务 消息的发出者通常并不知道谁会接收并处理这些消息 更不了解这些消息是如何被处理的 由于系统基于消息 因此有较好的并发性能 容错性和可伸缩性 独立构件系统中通常不存在比较明显的主 从结构 第4章结构化软件设计 5 仓库风格 第4章结构化软件设计 5 仓库风格 1 知识源 知识源中包含独立的 与应用程序相关的知识 知识源之间不直接进行通讯 它们之间的交互只通过黑板来完成 2 黑板数据结构 黑板数据是按照与应用程序相关的层次来组织的解决问题的数据 知识源通过不断地改变黑板数据来解决问题 3 控制 控制完全由黑板的状态驱动 黑板状态的改变决定使用的特定知识 第4章结构化软件设计 4 3软件结构设计4 3 1模块化概念1 模块化模块是一个独立命名的 拥有明确定义的输入 输出和特性的程序实体 模块化设计可以简化软件的设计和实现 提高软件的可理解性和可测试性 并使软件更容易得到维护 第4章结构化软件设计 2 抽象化在解决复杂的具体问题时 人们往往先忽略其细节和非本质的方面 而集中注意力去分析问题的本质和主要方面 搞清所要解决的问题的本质所在 同时人们在总结认识和实验规律时 也往往突出各类问题的共性 找出各种客观事物 状态和过程间的联系和相似性 加以概括和提取 即抽象 第4章结构化软件设计 3 信息隐蔽信息隐藏是指在设计和确定模块时 应使一个模块内包含的信息 过程和数据 对于不需要这些信息的模块来说是不可访问的 信息局部化是指将一些关系密切的成份 设计时放得彼此靠近 第4章结构化软件设计 4 3 2模块的独立性1 耦合度 模块同模块的联系称为块间的联系 模块的耦合度 2 内聚度 一个模块内部各成份的联系称为块内的联系 模块的内聚度 第4章结构化软件设计 耦合度按从强到弱的顺序可分为几种类型 1 内容耦合 当一个模块直接修改或操作另一个模块的数据或者直接转入另一个模块时 就发生了内容耦合 2 公共耦合 两个以上的模块共同引用一个全局数据项 3 控制耦合 一个模块在界面上传递一个信号 如开关值 标志量等 控制另一个模块 接收信号的模块的动作根据信号值进行调整 称为控制耦合 第4章结构化软件设计 4 数据耦合 指两个模块彼此交换数据 5 独立耦合 模块间没有信息传递时 属于非直接耦合耦合性与模块属性的关系 第4章结构化软件设计 内聚度按强度从低到高有以下几种类型 1 偶然内聚 模块内的各个任务没有什么有意义的联系 它们之所以能构成一个模块完全是偶然的原因 2 逻辑内聚 几个逻辑上相关的功能被放在同一模块中 则称为逻辑内聚 3 时间内聚 如果一个模块完成的功能必须在同一时间内执行 如系统初始化 但这些功能只是因为时间因素关联在一起 则称为时间内聚 第4章结构化软件设计 4 过程内聚 如果一个模块内部的处理成份是相关的 而且这些处理必须以特定的次序执行 则称为过程内聚 5 通信内聚 如果一个模块的所有成份都操作同一数据集或生成同一数据集 则称为通信内聚 6 顺序内聚 如果一个模块的各个成份和同一个功能密切相关 而且一个成份的输出作为另一个成份的输入 则称为顺序内聚 7 功能内聚 模块的所有成份对于完成单一的功能都是必须的 则称为功能内聚 第4章结构化软件设计 内聚与模块属性的关系 表4 2内聚与模块属性的关系 第4章结构化软件设计 4 3 3结构化设计建模1 软件结构图 1 软件结构图的基本图形符号 模块 调用 模块间通讯 数据信息 控制信息 第4章结构化软件设计 选择调用 循环调用 第4章结构化软件设计 2 举例 第4章结构化软件设计 2 HIPO图 1 H图也叫层次图 用于描述软件结构上的分层调用关系 作用类似于软件结构图 但不涉及调用时的数据流 控制流等附加信息 2 IPO图 输入 输出 处理图的简称 第4章结构化软件设计 大学教务管理系统H图 第4章结构化软件设计 3 IPO图 第4章结构化软件设计 IPO图描述 系统名称 教务管理系统模块名称 选课处理模块编号 3输入数据 有效申请单数据输出数据 选课表处理步骤 1 根据选课课程号与选课学期 检索课程2 确定所选的课程号3 根据课程号输出打印选课表 第4章结构化软件设计 4 3 4软件设计准则1 模块规模应该适中2 改进软件结构提高模块独立性 第4章结构化软件设计 4 3 4软件设计准则3 深度 宽度 扇入和扇出都应适当 第4章结构化软件设计 4 3 4软件设计准则4 模块的作用域应该在控制域之内5 力争降低模块接口的复杂程度6 设计单入口单出口的模块7 模块功能应该可以预测 第4章结构化软件设计 4 4面向数据流图的设计方法4 4 1基本概念1 变换流 第4章结构化软件设计 2 事务流 第4章结构化软件设计 4 4 2变换流分析与设计步骤 1 确定变换流 输入流和输出流部分 2 设计模块结构的顶层和第一层 3 设计中下各层 第4章结构化软件设计 举例 第4章结构化软件设计 举例 第4章结构化软件设计 4 4 3事物流分析与设计步骤 1 根据事务功能设计一个顶层总控模块 2 将事务中心的输入数据流对应为一个第一层的接收模块及该模块的下层模块 3 将事务中心对应为一个第一层的调度模块 4 对每一种类型的事务处理 在调度模块下设计一个事务处理模块 然后为每个事务处理模块设计下面的操作模块及操作模块的细节模块 每一处理的对应设计可用变换分析方法 第4章结构化软件设计 举例 第4章结构化软件设计 举例 第4章结构化软件设计 4 4 4混合流分析与设计基本思路 1 首先利用变换分析方法把软件系统分为输入 变换和输出三部分 由此设计出软件系统的上层构架 例如 顶层和第一层模块 2 然后根据数据流程图各个部分的结构特点 适当地选择变换分析或事务分析 由此设计出软件系统的下层结构 第4章结构化软件设计 混合数据流 第4章结构化软件设计 混合型数据流程图映射的软件结构图 第4章结构化软件设计 4 5面向数据结构的设计方法4 5 1Jackson JSD 方法1 Jackson图 第4章结构化软件设计 2 JSD方法设计步骤 1 分析并确定输入数据和输出数据的逻辑结构 并用Jackson结构图表示这些数据结构 2 找出输入数据结构和输出数据结构中有对应关系的数据单元 对应关系 指这些数据单元在数据内容上 数量上和顺序上有直接的因果关系 对于重复的数据单元 重复的次序和次数都相同才有对应关系 3 按一定的规则由输入 输出的数据结构导出程序结构 第4章结构化软件设计 2 JSD方法设计步骤 4 列出基本操作与条件 并把它们分配到程序结构图的适当位置 5 用伪码写出程序 第4章结构化软件设计 举例 1 绘制Jackson数据结构图 第4章结构化软件设计 2 找出对应关系 3 导出程序结构 第4章结构化软件设计 4 列出基本操作与条件 第4章结构化软件设计 5 写出伪码 第4章结构化软件设计 4 5 2Warnier LCP 方法1 Warnier图例 第4章结构化软件设计 3 Warnier LCP 方法设计步骤 1 分析和确定输入数据和输出数据的逻辑结构 用Warnier图描绘这些数据结构 2 依据输入数据结构导出程序结构 并用Warnier图描绘程序的处理层次 3 将程序结构图改成程序流程图 并自上而下依次给流程图的每个处理框编序号 4 列出每个处理框的操作细节 分类写出伪代码 5 得到的程序伪代码序列 即为所设计程序的过程性描述 第4章结构化软件设计 举例 第4章结构化软件设计 4 6数据库结构设计4 6 1概念结构设计E R图 第4章结构化软件设计 E R图的基本概念1 实体 是指客观存在并相互区别的事物 实体可以是具体的 也可以是抽象的 2 联系 实体之间可能会有各种关系 3 属性 实体一般具有若干个特征 这些特征就称为实体的属性 第4章结构化软件设计 4 6 2逻辑结构设计1 设计数据表 1 数据关系模型中的每一个实体应该映射为数据库逻辑结构中的一个数据表 另外 实体的属性对应于数据表的字段 实体的主关键字作为数据表的主键 2 数据关系模型中的每一个n m关系也应映射为数据库逻辑结构中的一个数据表 另外 与该关系相连的各实体的关键字以及关系本身的属性 应该映射为数据表的字段 而与该关系相连的各个实体的主关键字 则需要组合起来作为关系数据表的主键 第4章结构化软件设计 3 数据关系模型中的每一个1 n关系也可映射为一个独立的数据表 但在更多的情况下 这1 n关系则是与它的n端对应的实体组合起来映射为一个数据表 当1 n关系是与n端对应的实体合并组成一个数据表时 组合数据表的字段中需要含有1端实体的主关键字 4 数据关系模型中的每一个1 1关系可映射为一个独立的数据表 也可以与跟它相连的任意一端或两端的实体合并组成数据表 实际上 两个依靠1 1关系联系的数据表可以设置相同的主键 为了减少数据库中数据表的个数 可合并为一个数据表 合并方法是将其中的一个数据表的全部字段加入到另一个数据表中 然后去掉其中意义相同的字段 第4章结构化软件设计 2 规范数据表 1 第一范式 每个属性值都必须是原子值 即仅仅是一个简单值而不含内部结构 2 第二范式 满足第一范式条件 而且每个非关键字属性都由整个关键字决定 3 第三范式 符合第二范式的条件 每个非关键字属性的进一步描述 即一个非关键字属性值不依赖于另一个非关键字属性值 第4章结构化软件设计 3 关联数据表将数据关系模型中数据实体之间的关系 在数据库逻辑结构中明确体现出来 它们将作为建立数据表之间参照完整性规则的依据 4 设计数据视图 第4章结构化软件设计 4 6 3物理结构设计1 数据存储结构2 数据索引与聚集3 数据完整性 第4章结构化软件设计 4 7软件详细设计4 7 1结构化程序设计基本原则 采用自顶向下 逐步求精的设计方法 用顺序 选择和循环3种基本控制结构实现单入口和单出口的程序 第4章结构化软件设计 4 7 1详细设计工具1 程序流程图方框 表示一个处理 处理内容写于框内 菱形框 表示一个判断 判断条件写于框内 椭圆框 表示开始或结束 箭头 表示程序流程 第4章结构化软件设计 2 PAD图 第4章结构化软件设计 PAD图具有以下特点 具有强烈的结构化特征 支持

温馨提示

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

评论

0/150

提交评论