【精品】软件工程复习材料_第1页
【精品】软件工程复习材料_第2页
【精品】软件工程复习材料_第3页
【精品】软件工程复习材料_第4页
【精品】软件工程复习材料_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

精品精品 软件工程复习材料软件工程复习材料 软件工程的复习要点什么是软件 软件是计算机系统中与硬件相 互依存的另一部分 它是包括程序 数据及其相关文档的完整集合 软件生存周期 定义软件从提出开发要求开始直到该软件报废为止 的整个时期 1 可行性分析和项目开发计划a 技术可行性b 经济可行性 c 社会可行性 2 需求分析 1 问题识别a 功能需求b 性能需求c 环境需求d 用户界面需求 2 分析与综合 导出软件的逻辑模型 3 编写文档3 概要设计 1 设计软件系统结构 简称软件结构 a 采用某种设计方法 将一 个复杂的系统按功能划分成模块 划分 b 确定模块的功能 功能 c 确定模块之间的调用关系 调用 d 确定模块之间的接口 即模块之间传递的信息 接口 e 评价模块结构的质量 质量 2 数据结构及数据库设计a 数据结构设计b 数据库设计 概念设计 逻辑设计 物理设计 3 编写概要设计文档 文档主要有概要设计说明书 数据库设计说 明书 用户手册 修订测试计划 4 评审4 详细设计 1 为每个模块内进行详细的算法设计 2 为每个模块内的数据结构进行设计 3 对数据库进行设计 即确定数据库的物理结构 4 其他设计a 代码设计 b 输入 输出格式设计 c 人机对话设计 5 编写详细设计说明书 描述方法 三种 a 程序流程图b PAD图c 过程设计语言 6 评审 5 编码把软件设计转换成计算机可以接受的程序代码 6 测试软件测试经过步骤 单元测试对应详细设计和编码 集成测试 对应概要设计 确认测试对应需求分析 7 维护等 略 不考 软件工程三要素方法 工具和过程 1 软件工程方 法为软件开发提供了 如何做 的技术2 软件工具为软件工程方法 提供了自动的或半自动的软件支撑环境3 软件工程过程定义了 1 方法使用的顺序 2 要求交付的文档资料 3 为保证质量和适应变化所需要的管理 4 软件开发各个阶段完成的里程碑面向对象的基本概念 a 对 象是面向对象开发模式的基本成份 每个对象可用它本身的一组属性和它可以执行的一组操作来定义 b 属性一般只能通过执行对象的操作来改变 c 操作又称为方法或服务 它描述了对象执行的功能 若通过消息 传递 还可以为其它对象使用 d 类是一组具有相同数据结构和相同操作的对象的集合 e 继承是使用已存在的定义做为基础建立新定义的技术 新类的定义可以是既存类所声明的数据和新类所增加的声明的组合 新类复用既存的定义 而不要求修改既存类 既存类可当做基类来引用 则新类相应地可当做派生类来引用 f 消息是一个对象与另一个对象的通信单元 是要求某个对象执行 类中定义的某个操作的规格说明 发送给一个对象的消息定义了一个方法名和一个参数表 可能是空 的 并指定某一个对象 一个对象接收的消息则调用消息中指定的方法 并将形式参数与参 数表中相应的值结合起来 软件需求分析需求分析的任务就是借助于当前系统的逻辑模型导出 目标系统的逻辑模型 解决目标系统的 做什么 的问题 需求分析的过程需求分析阶段的工作 可以分成以下四个方面 1 问题识别 2 分析与综合 3 编制需求分析阶段的文档 4 需求分析评审主要有两个任务 1 建立分析模型 数据 功能和行为模型 2 编写需求说明书 一 结构化分析模型 数据对象说明E R图 数据模型 加工说明DFD图 功能模型 控制说明CFD STD图 行为模型 二 面向对象分析模型 类 对象模型 用例图 类对象图对象 关系模型 对象 行为模型 A 结构化分析方法 对象 关系图对象 行为图数据建模数据模型包括三种互相关联的信息数据对象 描述 对象的属性 描述对象间相互连接的关系 实体 关系图 实体 关系图是表示实体及其关系的图形语言机制 数据对象用长方形表示 实体的属性用椭圆形表示 而联系用菱形 框表示 并用无向边把实体与其属性连接起来 联系可分为三类1 一对一联系 11 2 一对多联系 1N 3 多对多联系 M N 这种实例的关联称为 基数 基数表明了 重复性 如1位教师带学生班的30位同学 就是1 m的关系 但也有1位教师带0位同学的情形 所以实例关联有是 可选 还是 必须 之分 用 表示关系是可选的 用 表示关系必须出现1次 如图所示 这表明了关系的 参与性 基数1位教师基数多位学生参与性必须的参与性可选的功能建模 一 是面向数据流进行需求分析的方法 数据流图描绘系统的逻辑模型 图中没有任何具体的物理元素 只 是描绘信息在系统中流动和处理的情况 二 描述工具 a 数据流图b 数据字典c 描述加工逻辑的结构化 语言 判定表 判定树 职称教师职务性别姓名教工号学生学号姓名性别系年级教课程学1MM N学分学时课程名课程号成绩教师学生管带 数据流图DFD 组 成符号圆框代表加工箭头代表数据流向方框代表源点和终点双杠表 示数据文件或数据库 图办理取款手续的数据流图在数据流图中 如果有两个以上数据流指向一个加工 或是从一个加工中引出两 个以上的数据流 这些数据流之间往往存在一定的关系 为表达这些关系 在这些数据流的加工可以标上不同的标记符号 所用符号及其含意在图中给出 图表明多个数据流与加工之间关系的符号可以看出 数据流图是由 以下四个基本成分组成的 1 数据流 用箭头表示 是沿箭头方向传送数据的通道 2 加工 用圆圈表示 是以数据结构或数据内容作为加工对象的 3 文件 用单线或双线表示 起保存数据的作用 所以有时也称 数据存储 4 数据源点和终点 用方框表示 它是图中要处理数据的输入或 处理结果的去向 数据词典数据词典精确地 严格地定义了每一个与系统相关 的数据元素 并以字典式顺序将它们组织起来 使得用户和分析员 对所有的输入 输出 存储成分和中间计算有共同的理解 词条描述在数据词典的每一个词条中应包含以下信息 名称数据 对象或控制项 数据存储或外部实体的名字 别名或编号 分类数据对象 加工 数据流 数据文件 外部实体 控制项 事件 状态 描述描述内容或数据结构等 何处使用使用该词条 数据或控制项 的加工 内容描述在数据词典的编制中 分析员最常用的描述内容或数据 结构的符号如表所示 表数据词典定义式中的符号符号含义解释 m n 被定义为与或或重复重复可选基本数据 元素连结符例如 x a b 表示x由a和b组成 例如 x a b x a b 表示x由a或由b组成 例如 x a 表示x由0个或多个a组成 例如 x 3 a 8 表示x中至少出现3次a 至多出现8次a 例如 x a 表示a可在x中出现 也可不出现 例如 x a 表示x为取值为a的数据元素 例如 x 1 9 表示x可取1到9之中的任一值 图存折格式在上面图表示的取款数据流图中 数据文件 存折 的 格式如上图所示 它在数据词典中的定义格式为存折 户名 所号 帐号 开户日 性质 印密 1 存取行 50户名 2 字母 24 所号 001 999 注储蓄所编码 规定三位数字帐号 000 00001 99999999 注帐号规定由八位数字组成开户日 年 月 日性质 1 6 注 1 表示普通户 5 表示工资户等 印密 0 注印密在存折上不显示存取行 日期 摘要 支出 存入 余额 操作 复核日期 年 月 日 字母 a z A Z 数据词典明确地定义了各种信息项 加工说明 1 结构化英语 Structured English 2 判定表 在某些数据处理问题中 某数据流图的加工需要依赖于 多个逻辑条件的取值 就是说完成这一加工的一组动作是由某一组 条件取值的组合引发的 这时使用判定表来描述比较合适 1234条件发货单金额赊欠情况操作不发出批准书发出批准书发出发 货单 500 500 500 500 60天 60天 60天 60天 发出赊欠报告上面以 检查发货单 为例 说明判定表的构 成 判定表由四个部分组成 虚线分割开的四部分是条件茬 Condition Stub 左上部分列出了各种可能的条件 条件项 Condition Entry 右上部分给出各个条件的条件取值的组合 动作茬 Action Stub 左下部分列出了可能采取的动作 动作项 Action Entry 右下部分是和条件项紧密相关的 它指出了在条件项的各种取值的 组合情况下应采取什么动作 这里将任一条件取值组合及其相应要执行的动作称为规则 它在判 定表中是纵贯条件项和动作项的一列 在实际使用判定表时 常常先把它化简 如果表中有两条或更多的规则具有相同的动作 并且其条件项之间 存在着某种关系 就可设法将它们合并 例如上图我们可以先把条件项用判断的形式转化一下发货单 500Y 赊欠 60天YNNYNYN不发出批准书发出批准书发出发货单 发出赊欠报告 然后合并发货单 500Y赊欠 60天 NNYY不发出批准书发出批准书发出发货单 发出赊欠报告 3 判定树 检查发货单金额 500金额 500欠款 60天 不发出批准书欠款 60天 发出批准书 发货单欠款 60天 发出批准书 发货单及赊欠报告欠款 60天 发出批准书 发货单行为建模行为建模给出需求分析方法的所有操 作原则 但只有结构化分析方法的扩充版本才提供这种建模的符号 利用如图所示的状态 迁移图 STD 或状态 迁移表来描述系统或对象的状态 以及导致系统或对象的状态改变 的事件 从而描述系统的行为 图状态 迁移图与其等价的状态 迁移表例每一个状态代表系统或对象的一种行为模式 状态 迁移图指明系统的状态如何相应外部的信号 事件 进行推移 在状态 迁移图中 用圆圈 表示可得到的系统状态 用箭头 表 示从一种状态向另一种状态的迁移 在箭头上要写上导致迁移的信号或事件的名字 如图 a 所示 系统中可取得的状态 S1 S2 S3 事件 t1 t2 t3 t4 事件t1将引起系统状态S1向状态S3迁移 事件t2将引起系统状态S3 向状态S2迁移 等等 图 b 就是与图 a 等价的状态 迁移表 另外 状态 迁移图指明了作为特定事件的结果 状态 在状态中包含可能执行的行为 活动或加工 如果系统比较复杂 可以把状态 迁移图分层表示 例如 在确定了如下图所示那样的大状态S1 S2 S3之后 接下来 就可把状态S1 S2 S3细化 在该图中对状态S1进行了细化 此外 在状态 迁移图中 由一个状态和一个事件所决定的下一状态可能会有多个 实际会迁移到哪一个是由更详细的内部状态和更详细的事件信息来 决定的 此时 可采用状态迁移图的一种变形 如下右图那样 使用加进判 断框和处理框的记法 图状态迁移图的网图状态迁移图的变形例考务处理系统的分层数据 流图如下图所示 该考务处理系统有如下功能 对考生送来的报名表进行检查 对 合格的报名表编好准考证号码后将准考证送给考生 并将汇总后的 考生名单送给阅卷站 对阅卷站送来的成绩表进行检查 并根据 考试中心指定的合格标准审定合格者 填写考生通知单 内容包 含考试成绩及合格 不合格标志 送给考生 按地区 年龄 文化程度 职业 考试级别等进行成绩分类统计及试题难度分析 产生统计分析表 应注意的问题 适当地为数据流 加工 文件 数据的源 汇点命 名 名字应反映该元素的实际含义 避免空洞的名字 如数据 信息处理 计算等名字都不好 画数据流时不要夹带控制流 数据流图中各种数据的加工没有考虑时序关系 引入控制流后 加 工之间就有了时序关系 这与画数据流图不考虑实现细节的初衷相 违背 一个加工的输出数据流不要与该加工的输入数据流重名 即使它 们的组成成分相同 例如图 c 中加工1 1的输入数据流 报名表 与输出数据流 合格 报名表 允许一个加工有多个数据流流向另一个加工 也允许一个加工有 两个相同的输出数据流流向两个不同的加工 保持父图与子图的平衡 就是说 父图与它的子图的输入数据流与输出数据流应当在数量与 名字上都相同 特别的是 如果父图的一个输入 或输出 数据流对应于子图中几 个输入 或输出 数据流 但子图中这几个数据流中的数据项合起 来正好是父图中的那个数据流 这时它们还算是平衡的 例如 图 b 中加工2的输出数据流 统计分析表 是由 难度分析 表 和 分类统计表 组成 那么图 b 与图 d 仍满足父图与子图 平衡的条件 在自顶向下的分解过程中 若一个文件首次出现时只与一个加工 有关 那么这个文件应作为这个加工的内部文件而不必画出 例如 图 d 中的文件 试题得分表 就是图 b 中加工的内部文件 所以在图 b 中没有画出 保持数据守恒 就是说 一个加工的所有输出数据流中的数据必须能从该加工的输 入数据流中直接获得 或者是通过该加工产生的数据 1 图 c 中 加工1 1的输入数据流是 A 输出数据流是 B 图 b 中 加工2的输出数据流是 C 它是由 D 和 E 组成 供选择的答案A E 统计分析表 报名表 合格报名表 难度分析 表 错误成绩表 分类统计表 准考证 考生通知单 2 图 d 中的文件 试题得分表 是否在图 b 中漏掉了 回答是 F 供选择的答案F 试题得分表 没有在图 b 中画出 是错误的 试题得分表 是图 b 中加工的内部文件 不必在图 b 中画出 试题得分表 是多余的 考生考试中心阅卷站考务处理系统不合格报名表报名表准考证考生 通知单统计分析表合格标准成绩表错误成绩表考生名单统计成绩登 记报名表12不合格报名表报名表准考证考生名单考生通知单统计分 析表错误成绩表成绩表合格标准考生名册 a 顶层数据流图 b 第1层 数据流图检查报名表编准考证号码报名表1 1不合格报名表合格报名 表1 2分析试题难度分类统计成绩填写通知单检查成绩表审定合格者 1 3登记考生考生名册考生名单准考证2 2成绩表2 1正确成绩表合格 标准成绩表经审定的2 3试题得分表2 4考生名册2 5错误成绩表统计 表分类分析表难度通知单考生 d 加工2的子图 c 加工1的子图 B 面向对象分析方法 主要的工作 定义系统的用例 功能模型 领域分析 建立类对象模型建立对象 关系模型建立对象 行为模型 动态模型 软件设计概述 1 从工程管理的角度看 软件设计可分为概要 preliminary 设计 总体设计和详细 detail 设计两大步骤 概要设计是根据需求确定软件和数据的总体框架 详细设计是将 其进一步精化成软件的算法表示和数据结构 2 从技术角度来看 软件设计可分为数据设计 系统结构设计 接口设计 过程设计 数据设计把分析阶段建立的信息描述转换为实现软件所要求的数 据结构 侧重于数据结构的定义 系统结构设计定义软件系统各主 要部件 成分之间的关系 接口设计定义了软件内部 外部及与人 之间的通信 过程设计则是把结构成分转换成软件的过程性描述即 完成每一部件的过程化描述模块独立 一个模块在不需要另一个模 块的情况下 能够完整地执行其功能 我们就称这两个模块是完全 独立的 模块独立性是通过开发具有单一功能和与其他模块没有过多交互作 用的模块来达到的 但通常 模块之间总是相互关联的 很少是相互独立的 因为完全独立的模块是无所谓构成系统的 模块独立性可用两个定量准则来度量耦合 coupling 和内聚 coh esion 耦合 模块之间相对独立性的量度 耦合可分为七级 非直接耦合数据耦合特征耦合控制耦合外部耦合公共耦合内容耦合 耦合性低高模块独立性强弱 内容耦合如果一个模块直接访问另一个 模块的内部数据 或者一个模块不通过正常入口转到另一模块内部 或者两个模块有一部分程序代码重迭 或者一个模块有多个入口 则两个模块之间就发生了内容耦合 在内容耦合的情形 被访问模块的任何变更 或者用不同的编译器 对它再编译 都会造成程序出错 这种耦合是模块独立性最弱的耦合 公共耦合若一组模块都访问同一个公共数据环境 则它们之间的耦 合就称为公共耦合 公共的数据环境可以是全局数据结构 共享的通信区 内存的公共 覆盖区等 外部耦合一组模块都访问同一全局简单变量而不是同一全局数据结 构 而且不是通过参数表传递该全局变量的信息 则称之为外部耦 合 对象模型 静态模型图控制耦合图公共耦合 控制耦合如果一个模 块通过传送开关 标志 名字等控制信息 明显地控制选择另一模 块的功能 就是控制耦合 如右图所示 这种耦合的实质是在单一接口上选择多功能模块中的某项功能 因此 对被控制模块的任何修改 都会影响控制模块 另外 控制耦合也意味着控制模块必须知道被控制模块内部的一些 逻辑关系 这些都会降低模块的独立性 标记耦合如果一组模块通过参数表传递记录信息 就是标记耦合 事实上 这组模块共享了某一数据结构的子结构 而不是简单变量 这要求这些模块都必须清楚该记录的结构 并按结构要求对记录进 行操作 数据耦合如果一个模块访问另一个模块时 彼此之间是通过数据参 数 不是控制参数 公共数据结构或外部变量 来交换输入 输出 信息的 则称这种耦合为数据耦合 数据耦合是松散的耦合 模块之间的独立性比较强 非直接耦合如果两个模块之间没有直接关系 它们之间的联系完全 是通过主模块的控制和调用来实现的 这就是非直接耦合 这种耦合的模块独立性最强 内聚 模块功能相对强度的量度 内聚按其程度高低可分为7级 内聚度越高越好 功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚偶然内聚内 聚性高低模块独立性强 功能单一弱 功能分散 巧合内聚 偶然内 聚 当几个模块内凑巧有一些程序段代码相同 又没有明确表现出 独立的功能 把这些代码独立出来建立的模块即为巧合内聚模块 它是内聚程度最低的模块 缺点是模块的内容不易理解 不易修改和维护 逻辑内聚这种模块把几种相关的功能组合在一起 每次被调用时 由传送给模块的控制型参数来确定该模块应执行哪一种功能 逻辑内聚模块比巧合内聚模块的内聚程度要高 因为它表明了各部分之间在功能上的相关关系 时间内聚 经典内聚 这种模块大多为多功能模块 但要求模块的 各个功能必须在同一时间段内执行 例如初始化模块和终止模块 时间内聚模块比逻辑内聚模块的内聚程度又稍高一些 过程内聚使用流程图做为工具设计程序的时侯 常常通过流程图来 确定模块划分 图信息内聚模块把流程图中的某一部分划出组成模块 就得到过程 内聚模块 这类模块的内聚程度比时间内聚模块的内聚程度更强一些 通信内聚如果一个模块内各功能部分都使用了相同的输入数据 或 产生了相同的输出数据 则称之为通信内聚模块 通常 通信内聚模块是通过数据流图来定义的 如右图所示 信息内聚 顺序内聚 这种模块完成多个功能 各个功能都在同一 数据结构上操作 每一项功能有一个唯一的入口点 例如 右图所示的模块具有4个功能 由于模块的所有功能都是基于 同一个数据结构 符号表 因此 它是一个信息内聚的模块 信息内聚模块把某个数据结构 资源或设备隐蔽在一个模块内 不 为别的模块所知晓 当把程序某些方面细节隐藏在一个模块中时 就增加了模块的独立 性 功能内聚一个模块中各个部分都是为完成一项具体功能而协同工作 紧密联系 不可分割的 则称该模块为功能内聚模块 功能内聚模块时内聚性最强的模块 传统的设计方法面向数据流设计SD方法软件结构的描述 结构图 SD 它通常用带注释的箭头来表示软件模块调用过程中 来回传递的信息数据流的类型 它决定了映射的方法 数据流有下述两种类型 a 变换流 根据基本系统模型 信息通常以 外部世界 的形式 进入软件系统 经过处理以后再以 外部世界 的形式离开系统 特点从同一数据源进入系统的数据 它在数据流图中流动的逻辑路 径是相同的 变换流的DFD是一个线性结构 由输入 变换和输出三部分组成 变换是系统的变换中心 变换输入端的数据流为系统的逻辑输入 输出端为逻辑输出 而系统输入端的DF为物理输入 输出端为物理输出 取得数据C变换数据C为D给出数据D变换型数据流图图通信内聚模块 b 事务流 数据沿输入通路到达一个处理T 这个处理根据输入数据 的类型在若干个动作序列中选出一个来执行 这类数据流应该划为一类特殊的数据流 称为事务流 事务T事务中心动作路径上图中的处理T称为事务中心 它完成下述 任务1 接收输入数据 输入数据又称为事务 2 分析每个事务以 确定它的类型3 根据事务类型选取一条活动通路 映射的基本步骤 一般先得到系统的DFD 再建立程序结构图 可分为五个基本步骤 1 分析DFD 即进行系统的结构化分析 把设计表示为整个系统对数据流的处理 问题 用一组分层的DFD来表示系统划分的功能 数据流和对数据流 所做的处理 2 确定DFD的特点及边界 区分事务流 变换流 3 映射为软件结构 得到两层结构图 标明接口控制信息及主要DF 有两个设计映射策略 变换分析和事务分析可供采用 这两种策略提供了两个不同的两层结构图 它们可以单独使用 或结合在一起相互补充 用来为每种策略开发 一个分层设计和转换过程 4 细化后 得到初始结构图 在作进一步分解细化时 一般原则为顶层模块负责控制处理服务 实际工作较少 每个下层模块较少执行控制功能而较多作具体处理 工作 底层模块应有高度聚合 较少有外部控制的特性 下层模块可以是DFD种的一个或多个加工 也可以把加工再进行分解 灵活性较高 其重要性也不及上层模块 关键是满足设计的质量 标准 5 获得最终的软件结构图 按照软件设计的质量标准来改进结构 得到最终的软件结构图 这一步使用设计的质量度量为标准进行优化 结构化设计主要提供两种设计度量技术耦合性度量和内聚性度量 高质量的程序设计要求模块之间的耦合尽可能松散 以提高程序的 可扩展性和可维护性 减少错误的发生 与耦合性相反 程序设计要求模块内部的关联程度高 因此 内聚性较强 设计质量就越好 必要时还可考虑结构的形态问题等因素 变换分析变换分析是一系列设计步骤的总结 经过这些步骤把具 有变换流特点的数据流图按预先确定的模式映射成软件结构 举例说明变换分析方法由以下四步组成重画数据流图 区分有效 逻辑 输入 有效 逻辑 输出和中心变换部分 进行一级分解 设计上层模块 进行二级分解 设计中 下层模块 1 重新分析数据流图在需求分析阶段得到的数据流图侧重于描述系 统如何加工数据 而分析数据流图的出发点是描述系统中的数据是 如何流动的 确定其具有变换流特征 2 在数据流图上区分系统的逻辑输入 逻辑输出和中心变换部分若 设计人员经验丰富 对要设计系统的软件规格说明又很熟悉 那么 决定哪些加工是系统的中心变换是比较容易的 例如 几股数据流汇集的地方往往是系统的中心变换部分 如下图 框 计算 就是中心变换 它有一个输入和两个输出 是数据流图内所有加工中数据流比较集 中的一个框 初始数据有效数据计算已数据检验格式化1已格式化1计算值1中心变 换格式化2预格式化计算值2逻辑输入逻辑输出格式化3已格式化2另 外 可以用以下的试探方法来确定系统的逻辑输入和逻辑输出在那 里 可以从数据流图的物理输入端开始 一步一步向系统的中间移动 一直到遇到的数据流不再被看作是系统的输入为止 则其前一个数 据流就是系统的逻辑输入 也就是说 逻辑输入就是离物理输入端最远的 但仍被看作是系统 输入的数据流 类似地 从物理输出端开始 一步一步地向系统的中间移动 就可 以找到离物理输出端最远的 但仍可被看作是系统输出的数据流 它就是系统的逻辑输出 从物理输入端到逻辑输入 构成系统的输入部分 从物理输出端到 逻辑输出 构成输出部分 夹在输入部分和输出部分之间的就是中 心变换部分 中心变换部分是系统的中心加工部分 从输入设备获得的物理输入一般要经过 数制转换 格式变换 合 法性检查等一系列预处理 最后才变成逻辑输入传送给中心变换部 分 同样 从中心变换部分产生的是逻辑输出 它要经过格式转换 组 成物理块等一系列后处理 才称为物理输出 3 进行一级分解 设计系统模块结构的顶层和第一层首先设计一个 主模块 并用系统的名字为它命名 然后将它画在与中心变换相对 应的位置上 作为系统的顶层 它的功能是调用下一层模块 完成系统所要做的 各项工作 主模块设计好之后 下面的程序结构就可按输入 中心变换和输出 等分支来处理 程序结构的第一层可以这样设计为每一个逻辑输入设计一个输入模 块 它的功能是为主模块提供数据 为每一个逻辑输出设计一个输 出模块 它的功能是将主模块提供的数据输出 为中心变换设计一 个变换模块 它的功能是将逻辑输入转换成逻辑输出 第一层模块与主模块之间传送的数据应与数据流图相对应 参看下 图 在图中 主模块控制 协调第一层的输入模块 变换模块和输出模 块的工作 有效数据主模块有效数据取得有效数据已数据取得数据初始数据读 入数据检验已数据有效数据计算计算值 1 2给出结果1计算值1计算值1格式化1已格式化1输出结果已格式化 1给出结果2计算值2格式化2给出结果预格式化预格式化预格式化格 式化3已格式化2输出结果已格式化2计算值2初始数据已数据4 进行 二级分解 设计输入 中心变换 输出部分的中 下层模块自顶向 下 逐层细化 为第一层的每一个输入模块 输出模块 变换模块 设计它们的从属模块 设计下层模块的顺序是任意的 但一般是先设计输入模块的下层模块 输入模块的功能是向调用它的上级模块提供数据 所以它必须要有 一个数据 因而它必须有两个下属模块一个是接收数据 另一个是把这些数据 变换成它的上级模块所需的数据 而接收数据模块又是输入模块 又要重复上述工作 如果输入模块已经是原子模块 即物理输入端 则细化工作停止 因此 对于每一个逻辑输入 在数据流图上向物理输入端方向逆向 移动 只要还有加工 就在相应输入模块下面建立一个子输入模块 和一个子变换模块 同样 输出模块是从调用它的上级模块接收数据 用以输出 因而 也应当有两个下属模块一个是将上级模块提供的数据变换成输出的 形式 另一个是将它们输出 因此 对于每一个逻辑输出 在数据流图上向物理输出端方向正向 移动 只要还有加工框 就在相应输出模块下面建立一个子变换模 块和一个子输出模块 设计中心变换模块的下层模块没有通用的方法 一般应参照数据流 图的中心变换部分和功能分解的原则来考虑如何对中心变换模块进 行分解 上图是进行设计的例子 其中的 计算 是系统的核心数据处理部分 即中心变换 中心变换左边的 和 检验 是为 计算 做准备的预变换 预变换以后 送入主模块的数据流就是系统的逻辑输入 中心变换送出的数据流就是系统的逻辑输出 中心变换右边的 格式化1 和 格式化2 都是对计算值做格式化 处理的后变换 运用变换分析方法建立系统的结构图时应当注意以下几点a 在选择 模块设计的次序时 必须对一个模块的全部直接下属模块都设计完 成之后 才能转向另一个模块的下层模块的设计 b 在设计下层模块时 应考虑模块的低耦合和高内聚问题 提高初 始结构图的质量 c 注意黑箱技术的使用 在设计当前模块时 先把这个模块的所有下属模块定义成只知道功 能和调用方式的 黑箱 并在系统设计中利用它们 暂时不考虑 它们的内部结构和实现方法 在这一步定义好的 黑箱 由于已确定了它的功能和输入 输出 在下一步就可以对它们进行设计和加工 这样 又会导致更多的 黑箱 最后 全部 黑箱 的内容和结构应完全被确定 这就是我们所说的自顶向下 逐步求精的过程 d 如果出现了以下情况 就停止模块的功能分解 当模块不能再细分 为明显的子任务时 当分解成用户提供的模块或程序库的子程序时 当模块的界面是输入 输出设备传送的信息时 当模块不宜再分 解得过小时 事务分析与变换分析一样 事务分析也是从分析数据 流图开始 自顶向下 逐步分解 建立系统的结构图 这里取下图所示的数据流图为例 说明事务分析设计方法的步骤 A ILMONBCDEFGH在上图所示的数据流图中 首先确定了它是具有事务 型特征的数据流图 也就是说 数据流A是一个带有 请求 性质的信息 即为事务源 而加工I则具有 事务中心 的功能 它后继的三个加工L M N是 并列的 在加工A的选择控制下完成不同功能的处理 最后 经过加工O将某一加工处理的结果输出 为此 首先建立一个主模块用以代表整个加工 它位于P 层 主层 然后考虑被称为下一层 事务层 的第二层模块 第二层模块只能是三类取得事务 处理事务和给出结果 在上图中 依据并列的三个加工 在主模块之下建立了三个事务模 块 分别完成L M和N的工作 并在主模块的下沿以菱形引出这三个事务模块的选择 而在这些事 务模块的左右两边则是对应于加工I和O的 取得A 模块和 给出H 模块 主模块取得A ALLLBECFDG给出H各个事务模块下层的操作模块 即A 层 活动层 和细节模块 即D 层 细节层 在图中未画出 可以继续分解扩展 直至完成整个 结构图 示例 一 高考录取统分子系统有如下功能 1 计算标准分根据考生原始分计算 得到标准分 存入考生分数文 件 2 计算录取线分根据标准分 招生计划文件中的招生人数 计算录 取线 存入录取线文件 试根据要求画出该系统的数据流程图 并将其转换为软件结构图 答 1 数据流图 2 软件结构图 过程设计 详细设计 目的确定模块采用的算 法和块内数据结构 任务1 编写软件的 过程设计说明书 2 为 每个模块确定采用的算法3 确定每一模块使用的数据结构4 确定模 块接口的细节 a 结构化程序设计 结构化程序设计技术是详细设计 的逻辑基础 结构化程序设计目前一个比较流行的定义是结构化程序设计是一种 设计程序的技术 它采用自顶向下逐步求精的设计方法和单入口单 出口的控制结构 只用三种基本的控制结构就能实现任何单入口单出口的程序 这个 结论奠定了结构程序设计的理论基础 这三种基本的控制结构是 顺序 选择 循环 它们的流程图分别如下图所示 原始分 标准分 招生计划 录取 线A Ba 顺序exp BA b if then else选择expAc do while循环或exp ATFF T b 详细设计的工具描述程序处理过程的工具称为详细设计的工具 它们可以分为图形 表格和语言三类 包括程序流程图 NS图 PAD图 PDL 判定表 判定树等 盒图 N S图 每个处理步骤都用一个盒子来表示 这些处理步骤可以是语 句或语句序列 在需要时 盒子中还可以嵌套另一个盒子 嵌套深 度一般没有限制 只要整张图可以在一张纸上容纳下就行 A Ba 顺序F PTB Ab IF THEN ELSE选择F PT ADo whilep Sc do while循环S Dountil pd do until循环P 1 2 nA1A2Ane 多分支选择盒图没有箭头 因此不允许 随意转移控制 坚持使用盒图作为详细设计的工具 可以使程序员逐步养成用结构 化的方式思考问题和解决问题的习惯 如一个较复杂的N S图表示如下a bT x1F fx2T x4F 1 2 3i gdo while do until x5h x3c dedountilx6j 面向数据结构设计Jackson方法 Jackson方法 是一种典型的面向数据结构的分析与设计方法 它是按输入 输出和内部信息的数据结构进行软件设计的 即把数 据结构的描述映射成程序结构描述 若数据结构有重复性 则对应程序一定有循环控制结构 若数据结 构具有选择性 则对应程序一定需要有判定控制结构 以此揭示数 据结构和程序结构之间的内在关系 设计出反映数据结构的程序结 构 Jackson方法的的三步曲是信息 数据结构 程序结构 Jackson程序设计方法数据结构表示Jackson提出的数据结构表示有 三种基本的构造类型 如图所示 图 a 是顺序结构 即数据结构A由B C D三个成分组成且按B C D顺序排列 图 b 是选择结构 即数据结构A或者由B组成 或者由C组成 二者 必具其一 可选择的数据 子结构或数据项 加 表示 在图 c 中表示的是重复结构 即数据结构A由多个B子结构组成 子 结构用 加以标记 图Jackson数据结构图程序结构表示最后 利用Jackson给出的三种 图解来表示程序或进程的执行逻辑 这种图解类似于程序设计语言 实际上它是一种伪码表示 图Jackson软件结构图面向对象设计方法消息 message 消息就是 用来请求对象执行某个处理或回答某些信息的要求 是连接对象的 纽带 或者说 一个对象为实现其责任而与其它对象的通信称为消息 消息通常由三个部分组成接收消息的对象 消息选择符 也称为消 息名 零个或多个变元 UML建模语言图 UML语言定义了五种类型 9种不同的图 把它们有 机的结合起来就可以描述系统的所有视图 用例图 从用户角度描述系统功能 并指出各功能的操作者 静态图 表示系统的静态结构 包括类图 对象图 包图 行为图 描述系统的动态模型和组成对象间的交互关系 包括状态图 活动图 交互图 描述对象间的交互关系 包括顺序图 合作图 实现图 用于描述系统的物理实现 包括构件图 部件图 类图与对象图 对象类简称类 是面向对象模型的最基本的模 型元素 用类图来描述 类图 Class diagram 由系统中使用的类以及它们之间的关系组成 UML中的类图 Class Diagram 与对象图 Object Diagram 表达了对象模型的静态结构 对象是对象类的实例 instance 用对象图来描述 1 属性属性用来描述类的特征 表示需要处理的数据 格式可见性属性名类型 缺省值 约束特性 其中可见性 visibility 表示该属性对类外的元素是否可见 分为public 公有的 即模型中的任何类都可以访问该属性 private 私有的 表示不能被别的类访问 protected 受保护的 表示该属性只能被该类及其子类访问 如果可见性未申明 表示其可见性不确定 2 操作对数据的具体处理方法的描述则放在操作部分 操作说明了 该类能做些什么工作 操作通常称为函数 它是类的一个组成部分 只能作用于该类的对 象上 格式可见性操作名 参数表 返回类型 约束特性 包图 UML中的分 组机制叫包 Package 引入包是为了降低系统的复杂性 包是一种组合机制 把各种各样的模型元素通过内在的语义连在一 起成为一个整体就叫包 构成包的模型元素称为包的内容 包通常 用于对模型的组织管理 因此有时又将包称为子系统 subsystem 属性类型类名操作类类名名对象名 类名属性操作对对象象名名类类 图图与与对对象象图图包包的包之间关系有依赖和泛化 继承 依依赖赖关关系系两个包中的任意两个类存在依赖关系 则包之间 存在依赖关系 表示为泛化化关关系系使用继承中通用和特例的概念来说明通用包 和专用包之间的关系 例如 专用包必须符合通用包的界面 与类继承关系类似 表示为的内内容容可以是类的列表 也可以是另一个包图 还可以是 一个类图 泛包内容包名包名包A包B Oracle界面Sybase界面 a 包的表示 b 包的依赖关系 c 包的泛化 关系包包图图数据库界面构件图 构件定义系统中遵从一组接口且 提供其实现的物理的 可替换的部分 对系统的物理方面建模时 它是一个重要的构造块 构件对外提供的可见操作和属性称为构件的界面 界面的图符是一个小圆圈 用一条连线将构件与圆圈连起来 构件可以看作包与类对应的物理代码模块 逻辑上与包 类

温馨提示

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

评论

0/150

提交评论