《软件工程导论》PPT课件.ppt_第1页
《软件工程导论》PPT课件.ppt_第2页
《软件工程导论》PPT课件.ppt_第3页
《软件工程导论》PPT课件.ppt_第4页
《软件工程导论》PPT课件.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

主讲教师: 丁月华 Email:ding_ 5 总体设计 5-2 WHPU 5.1 设计过程 5.2 设计原理 5.3 启发规则 5.4 描绘软件结构的图形工具 5.5 面向数据流的设计方法 5.6 小结 习题 5-3 WHPU 5.1 设计过程 n设想供选择的方案 n选取合理的方案 n推荐最佳方案 n功能分解 n设计软件结构 n设计数据库 n制定测试计划 n书写文档 5-4 WHPU 个人成果,妥善保存, 请勿传播 分析模型和设计模型的转换 n将分析模型转换为软件设计 5-5 WHPU 个人成果,妥善保存, 请勿传播 软件设计是后续开发步骤及软件维护工作基础 如果没有设计,只能建立一个不稳定的系统结构 5-6 WHPU 个人成果,妥善保存, 请勿传播 软件设计的任务 n从工程管理的角度来看,软件设计分两步完成 l总体设计(概要设计),将软件需求转化为数据结构 和软件的系统结构。 l详细设计,即过程设计。通过对结构表示进行细化, 得到软件详细的数据结构和算法。 5-7 WHPU 5.1 设计过程 n设想供选择的方案 l提出各种可能的实现方案 l以需求分析阶段的数据流图为出发点,画自动化边界 ,形成不同的实现系统方案 l设想把数据流图中的处理分组的各种可能方法,抛弃 在技术上行不通的分组方法 l余下的分组方法代表可能的实现策略,并且可以启示 供选择的物理系统 5-8 WHPU 5.1 设计过程 n 选取合理的方案 l从前一步得到的一系列供选择的方案中选取若干个合 理的方案 通常至少选取低成本、中等成本和高成本的三种方案 l在此基础上分析员对每种方案准备四份文档: 系统流程图 组成系统的物理元素清单 成本/效益分析 实现这个系统的进度计划 5-9 WHPU 5.1 设计过程 n 推荐最佳方案 l综合分析对比各种合理方案的利弊,从中选出一种自 己认为是最理想的方案推荐 l用户和技术专家应认真审查所推荐的最佳系统 l如果该系统确实符合用户的需要,并且是在现有条件 下完全能够实现的,则应该提请使用部门负责人进一 步审批 l在使用部门的负责人也接受了分析员所推荐的方案之 后,将进入总体设计过程的下一个重要阶段结构设计 5-10 WHPU n 功能分解 l首先是进行结构设计,确定系统是由哪些模块组成的 ,以及这些模块之间的关系 确定软件体系结构、数据结构 l其次是过程设计,确定每个模块的处理过程 确定详细的数据结构、算法 l为确定软件结构 首先需要从实现角度把复杂的功能进一步分解 用算法描述仔细分析数据流图中的每个处理,如果一个处理 的功能过分复杂,必须把它的功能适当地分解成一系列比较 简单的功能 应该使每个功能对大多数程序员而言都是明显易懂的 工具: 系统层次图System Design Hierarchy及(输入/输出图 )HIPO 5-11 WHPU n设计软件结构 l任务: 确定模块组织成良好的层次系统,顶层模块调用 它的下层模块以实现程序的完整功能,每个下层模块 再调用更下层的模块,从而完成程序的一个子功能, 最下层的模块完成最具体的功能: l方法: 层次图 结构图 面向数据流的设计方法 5-12 WHPU n设计数据库 l任务:在需求分析阶段所确定的系统数据需求的基础 上,进一步设计数据库 模式设计:确定数据库的逻辑结构,常见的数据库形式有关 系、层次或网状等 子模式设计:为系统中各用户设计出各自的数据视图 存储模式设计:确定数据库的空间需求、存储格式、索引组 成等 5-13 WHPU n制定测试计划 l优点:早期阶段考虑测试问题 l促使软件设计人员在设计时注意提高软件的可测试性 5-14 WHPU n书写文档 l系统说明主要内容 系统流程图:描绘系统构成方案、组成系统的物理元素 成本/效益分析 对最佳方案的概括描述、精化的数据流图 用层次图或结构图描绘的软件结构 用IPO图或其它工具简要描述各个模块的算法 模块间接口关系、建立需求、功能和模块三者之间的交叉参照关 系 l用户手册根据总体设计阶段的结果,修改更正在需求分 析阶段产生的初步的用户手册。 l测试计划包括测试策略,测试方案,预期的测试结果, 测试进度计划等等。 l详细的实现计划 l数据库设计结果 5-15 WHPU n审查和复审 l技术审查 l管理复审: 部门的负责人从事 5-16 WHPU 5.2 设计原理 5.2.1 模块化 5.2.2 抽象 5.2.3 逐步求精 5.2.4 信息隐藏和局部化 5.2.5 模块独立 5-17 WHPU 5.2.1 模块化 n模块:由边界元素限定的相邻程序元素(例如, 数据说明,可执行的语句)的序列,而且有一个 总体标识符代表它 n模块化: 把程序划分成独立命名且可独立访问的 模块,每个模块完成一个子功能,把这些模块集 成起来构成一个整体,可以完成指定的功能满足 用户的需求。 5-18 WHPU n 模块化依据: 设函数C(x)定义问题x的复杂程度,函 数E(x)确定 解决问题x需要的工作量(时间)。对于两 个问题P1和P2 l如果C(P1)C(P2), 显然E(P1)E(P2) lC(P1+P2)C(P1)+C(P2) E(P1+P2)E(P1)+E(P2) l结论: 如果一个问题由P1和P2两个问题组合而成,那么 它的复杂程度大于分别考虑每个问题时的复杂程度之和, 即把复杂的问题分解成许多容易解决的小问题,原来的 问题也就容易解决了 5-19 WHPU n模块化和软件成本关系说明 l当模块数目增加时每个模块的规模将减小,开发单个模块 需要的成本(工作量)确实减少了 l但是,随着模块数目增加,设计模块间接口所需要的工作 量也将增加 5-20 WHPU n模块化优点 l软件结构清晰 l使软件容易测试和调试,提高软件的可靠性 l模块化能够提高软件的可修改性 5-21 WHPU 5.2.2 抽象 n定义: 抽出事物的本质特性而暂时不考虑它们的细 节, 忽略细节,分层理解问题,自顶向下层层加细 。 n例:开发一个CAD软件,实现一个二维绘图系统的 全部功能,供低级计算机辅助设计使用。 5-22 WHPU n抽象层次I:用问题所处环境的术语来描述这个 软件。 l该软件包括一个计算机绘图界面,向绘图员显示图形 ,以及一个数字化仪界面,用以代替绘图板和丁字尺 。所有直线、折线、矩形、圆及曲线的描画、所有的 几何计算、所有的剖面图和辅助视图都可以用这个 CAD软件实现。 5-23 WHPU n抽象层次II:任务需求的描述。列出“What”而不 是“How”。 nCAD SOFTWARE TASKS: l user interaction task; l 2-D drawing creation task; l graphics display task; l drawing file management task; END 5-24 WHPU 抽象层次III:程序过程表示。以2-D绘图生成任务为例: PROCEDURE 2-D drawing creation REPEAT UNTILE (drawing creation task terminates) DO WHILE (digitizer interaction occurs) Digitizer interface task; DETERMINE drawing request CASE Line: line drawing task; Rectangle: rectangle drawing task; Circle: circle drawing task; END; DO WHILE (keyboard interaction occurs) keyboard interaction task; PROCESS analysis/computation CASE View: auxiliary view task; Section: cross sectioning task; END; END REPETITION; END PROCEDURE. 5-25 WHPU 5.2.3 逐步求精 n定义:为了能集中精力解决主要问题而尽量推迟对问 题细节的考虑。 n依据: Miller法则-一个人在任何时候都只能把注 意力集中在(72)个知识块上 n原则 : 把精力集中在与当前开发阶段最相关的那些 方面上,而忽略那些对整体解决方案来说虽然是必 要的,然而目前还不需要考虑的细节,这些细节将 留到以后再考虑 5-26 WHPU 5.2.3 逐步求精 n实质:把一个时期内必须解决的种种问题按优先级排 序的技术, 确保每个问题都将被解决,而且每个问 题都将在适当的时候被解决, 一个细化的过程 n抽象与求精是互补的过程 l抽象过程,数据, 忽略底层细节 l求精设计中揭示出低层细节 5-27 WHPU 5.2.4 信息隐藏和局部化 n信息隐藏原理:应该这样设计和确定模块,使得一 个模块内包含的信息(过程和数据)对于不需要这些 信息的模块来说,是不能访问的 l隐藏模块的实现细节, “细节隐藏” l独立的模块彼此间仅仅交换那些为了完成系统功能而必 须交换的信息 n局部化: 把一些关系密切的软件元素物理地放得彼 此靠近 n优点: 易于软件的修改, 错误传播大大减少 5-28 WHPU 5.2.5 模块独立 n独立性的重要性 l有效的模块化的软件比较容易开发出来 l独立的模块比较容易测试和维护 n定性标准度量 l内聚 Cohesion :衡量一个模块内部各个元素彼此结合的 紧密程度 l耦合Coupling : 衡量不同模块彼此间互相依赖(连接)的紧 密程度 Great deal of dependenceIndependent Highly coupled Loosely coupled Uncoupled 5-29 WHPU 5.2.5 模块独立 n耦合 l数据耦合Data coupling :两个模块彼此间通过参数交换 信息,而且交换的信息仅仅是数据 l控制耦合Control coupling : 传递的信息中有控制信息( 尽管有时这种控制信息以数据的形式出现) l特征耦合: 当把整个数据结构作为参数传递而被调用的模 块只需要使用其中一部分数据元素 l公共环境耦合Common coupling :当两个或多个模块通 过一个公共数据环境相互作用时,公共环境可以是全程变 量、共享的通信区、内存的公共覆盖区、任何存储介质上 的文件、物理设备等等 l内容耦合Content coupling: 5-30 WHPU 5.2.5 模块独立 n耦合 l控制耦合Control coupling : 传递的信息中有控制信息( 尽管有时这种控制信息以数据的形式出现) 5-31 WHPU A B Flag F2 F1 Fn Flag 接口单一,但仍然影响被控模块的内部逻辑。 5-32 WHPU n耦合 l公共环境耦合Common coupling :当两个或多个模块 通过一个公共数据环境相互作用时,公共环境可以是全 程变量、共享的通信区、内存的公共覆盖区、任何存 储介质上的文件、物理设备等等 5-33 WHPU Global : V1 V2 A: A1=V1+V2 B: V1=B1 Global : V1 V2 A: V1+ B: V2=B1+V1 一个模块往公共环境送数据, 另一个模块从公共环境取数据 。这是数据耦合的一种形式, 是比较松散的耦合。 两个模块都既往公共环境送 数据又从里面取数据,这种 耦合比较紧密,介于数据耦 合和控制耦合之间。 5-34 WHPU 5.2.5 模块独立 n耦合 l内容耦合Content Coupling 一个模块访问另一个模块的内部数据; 一个模块不通过正常入口而转到另一个模块的内部; 两个模块有一部分程序代码重叠(只可能出现在汇编程序中); 一个模块有多个入口(这意味着一个模块有几种功能)。 5-35 WHPU 例1:A访问C的内部数据 或不通过正常入口 而转入C的内部。 AB CD A: goto C1 C: C1: 例2:部分代码重叠 (常出现在汇编程 序中) B A 例3:一个模块有 多个入口(功能) A: entry 1: entry 2: 5-36 WHPU n原则: 尽量使用数据耦合,少用控制耦合,限制 公共耦合的范围,完全不用内容耦合。 5-37 WHPU 5.2 设计原理 n内聚 l低内聚 偶然内聚 逻辑内聚 时间内聚 l中内聚 过程内聚 通信内聚 l高内聚 顺序内聚 功能内聚 5-38 WHPU n低内聚 l偶然内聚Coincidental cohesion :如果一个模块完成一 组任务,这些任务彼此间即使有关系,关系也是很松散 的 l逻辑内聚Logical cohesion :如果一个模块完成的任务在 逻辑上属于相同或相似的一类 l时间内聚 Temporal cohesion :如果一个模块包含的任 务必须在同一段时间内执行, 例如:系统的初始化 A: Read inputs from disk from tape from 5-39 WHPU n中内聚 l过程内聚Procedural cohesion :如果一个模块内的处 理元素是相关的,而且必须以特定次序执行 l通信内聚Communicational cohesion :如果模块中所 有元素都使用同一个输入数据和(或)产生同一个输出数 据,例如:从同一磁带上读取不相干的数据 可能破坏独立性。 enter data check data manipulate data 5-40 WHPU n高内聚 l顺序内聚Sequential cohesion :如果一个模块内的处 理元素和同一个功能密切相关,而且这些处理必须顺 序执行(通常一个处理元素的输出数据作为下一个处理 元素的输入数据) l功能内聚Functional cohesion :如果模块内所有处理 元素属于一个整体,完成一个单一的功能 5-41 WHPU 5.3 启发规则 n改进软件结构提高模块独立性 n模块规模应该适中 n深度、宽度、扇出和扇入都应适当 n模块的作用域应该在控制域之内 n力争降低模块接口的复杂程度 n设计单入口单出口的模块 n模块功能应该可以预测 5-42 WHPU 5.3 启发规则 n改进软件结构提高模块独立性 l设计出软件的初步结构以后,应该审查分析这个结构 ,通过模块分解或合并,力求降低耦合提高内聚 5-43 WHPU 5.3 启发规则 n模块规模应该适中 l过大不易理解(60行) l太小则接口开销过大 l注意分解后不应降低模块的独立性 5-44 WHPU 5.3 启发规则 n深度、宽度、扇出和扇入都应适当 l深度: 软件结构中控制的层数,它往往能粗略地标志 一个系统的大小和复杂程度 l宽度: 软件结构内同一个层次上的模块总数的最大值 l扇出: 一个模块直接控制(调用)的模块数目 扇出过大意味着模块过分复杂,需要控制和协调过多的下级 模块 扇出过小(例如总是1)也不好 3或4(扇出的上限通常是59) l扇入:直接调用它的上级模块个数 不能违背模块独立原理单纯追求高扇入 5-45 WHPU 5.3 启发规则 n深度、宽度、扇出和扇入都应适当 l原则: 顶层扇出比较高,中层扇出较少,底层扇入到 公共的实用模块中去(底层模块有高扇入。 A A的扇出 A A的扇入 CB 5-46 WHPU 5.3 启发规则 n模块的作用域应该在控制域之内 l模块的作用域定义为受该模块内一个判定影响的所有 模块的集合。模块的控制域是这个模块本身以及所有 直接或间接从属于它的模块的集合 l例:在图5.2中模块A的控制域 是A、B、C、D、E、F等模块的集合 5-47 WHPU 5.3 启发规则 n力争降低模块接口的复杂程度 l应该仔细设计模块接口,使得信息传递简单并且和模 块的功能一致 n设计单入口单出口的模块 l不要使模块间出现内容耦合 l容易理解,维护 n模块功能应该可以预测 l只要输入的数据相同就产生同样的输出 5-48 WHPU 5.4 描绘软件结构的图形工具 5.4.1 层次图和HIPO图 5.4.2 结构图 5-49 WHPU 5.4.1层次图和HIPO图 n层次图功能: 用来描绘软件的层次结构 n层次图符号说明: l矩形框代表模块 l方框间的连线表示调用关系(而不像层次方框图那样表 示组成关系) n适用范围: l自顶向下设计 5-50 WHPU 5.4 描绘软件结构的图形工具 图5.3 正文加工系统的层次图 5-51 WHPU 5.4 描绘软件结构的图形工具 nHIPO(层次图加输入/处理/输出)图功能:用来描绘 软件的层次结构 n符号描述: l矩形框代表模块 l方框间的连线表示调用关系(而不像层次方框图那样表 示组成关系) l在H图(层次图)里除了最顶层的方框之外,每个方框都 加了编号 l和H图中每个方框相对应,应该有一张IPO图描绘这 个方框代表的模块的处理过程。HIPO图中的每张IPO 图内都应该明显地标出它所描绘的模块在H图中的编 号,以便追踪了解这个模块在软件结构中的位置 5-52 WHPU 图5.3 正文加工系统的层次图 5-53 WHPU 5.4.2 结构图 n功能:描绘软件结构的图形工具 n符号描述: l方框代表模块,框内注明模块的名字或主要功能 l箭头(或直线)表示模块的调用关系 带注释的箭头表示模块调用过程中来回传递的信息 尾部是空心圆表示传递的是数据 尾部是实心圆表示传递的是控制信息 5-54 WHPU 图5.5 结构图的例子产生最佳解的一般结构 5-55 WHPU n附加符号 图5.7 模块M循环调用模块A、B、C 图5.6 判定为真时调用A,为假时调用B 5-56 WHPU n小结 l层次图和结构图并不严格表示模块的调用次序 l层次图和结构图并不指明什么时候调用下层模块 l层次图作为描绘软件结构的文档,结构图并不合适 5-57 WHPU 5.5面向数据流的设计方法 n基本思路:数据流图变换成软件结构 5-58 WHPU 5.5.1 概念 n变换流 l信息沿输入通路进入系统,同时由外部形式变换成内 部形式,进入系统的信息通过变换中心,经加工处理 以后再沿输出通路变换成外部形式离开软件系统。当 数据流图具有这些特征时,这种信息流称为信息流 l变换流:取得数据、变换数据、给出数据; 相应于取 得数据、变换数据、给出数据,变换型系统结构图由 输入、中心变换和输出等三部分组成 5-59 WHPU 5.5.1 概念 n事务流 l数据沿输入通路到达一个处理T,这个处理根据输入 数据的类型在若干个动作序列中选出一个来执行。这 类数据流应该划为一类特殊的数据流,称为事务流 l事务中心的任务 接收输入数据(输入数据又称为事务); 分析每个事务以确定它的类型; 根据事务类型选取一条活动通路。 5-60 WHPU 5.5.1 概念 事务 n事务流 5-61 WHPU 5.5.1 概念 n设计过程 “变换”“事物” 精化数据流图 流类型 区分事物中心和 数据接收通路 区分输入和 输出分支 映射成事务结构映射成变换结构 用启发式设计规 则精化软件结构 导出接口描述和 全程数据结构 复 查 详细设计 变换分析事物分析 5-62 WHPU 5.5.2 变换分析 n实例汽车仪表板, 假设功能如下所示: l通过模数转换实现传感器和微处理机接口; l在发光二极管面板上显示数据; l指示每小时英里数(mph),行驶的里程,每加仑油行 驶的英里数(mpg)等等; l指示加速或减速; l超速警告:如果车速超过55英里/小时,则发出超速警 告铃声。 5-63 WHPU 5.5.2 变换分析 n设计步骤 l第1步 复查基本系统模型 l第2步 复查并精化数据流图 l第3步 确定数据流图具有变换特性还是事务特性 l第4步 确定输入流和输出流的边界,从而孤立出变换 中心 l第5步 完成“第一级分解” l第6步 完成“第二级分解” l第7步 使用设计度量和启发式规则对第一次分割得到 的软件结构进一步精化 5-64 WHPU 5.面向数据流的设计方法 第一步:DFD的分界,先分出I、P、O三块 燃料流 传感器信号 SPS 旋转信号 读 旋转 信号 收集 和求 平均 确定 加/减 速 转换 成 转/分 计算 里程 计算 mph,超 速值 产生 加/减 速显示 计算 燃料 消耗 计算 gph 读和 校核 产生 mpg 显示 产生 mph 显示 发出 铃声 产生 里程 显示 SPS SPS 箭头指示 燃烧流 上箭头 水平线 下箭头 rpm rpm gph mph mpg mph 超速值 英里 显示 铃声 mph显示 mpg显示 第14步 5-65 WHPU 5.面向数据流的设计方法 一般位于软件结构最顶层的控制 模块Cm协调下述从属的控制功能 o 输入信息处理控制模块Ca,协调 对所有输入数据的接收; o变换中心控制模块Ct,管理对内 部形式的数据的所有操作; o输出信息处理控制模块Ce,协调 输出信息的产生过程。 数字仪表板 控制 数据转换 控制 驱动仪表板 接收传感器 信号 Cm CtCaCe 第5步 5-66 WHPU 第6步 A D C B Cm Ca CB D A 每个处理直接对应一 个下层模块。 Ct 由边界向回溯,将每个 遇到的处理器映成相应 的层模块。 Ca 由边界向外推,方法 与 类似 Ce Ca 模块简要说明: 进出该模块的信息(接口描述); 模块内部的信息; 过程陈述,包括主要判定点及任务等; 对约束和特殊特点的简短讨论。 5-67 WHPU 5.面向数据流的设计方法 例: (与P.70 图4.12 对照) 数字仪表板 控制 数据转换 控制 驱动仪表板 接收传感器 信号 计算 gph 读燃料流 转换成 rpm 收集sps 读旋转信号 确定 加/ 减速 计算 mph 计算 mpg 计算 里程 加/ 减速 显示 显示 mpg 显示 mph 显

温馨提示

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

评论

0/150

提交评论