概要设计与详细设计.ppt
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
过程内聚(Procedural Cohesion)
使用流程图做为工具设计程序时,把流 程图中的某一部分划出组成模块,就得 到过程内聚模块。例如,把流程图中的 循环部分、判定部分、计算部分分成三 个模块,这三个模块都是过程内聚模块。
时间内聚(Classical Cohesion)
时间内聚又称为经典内聚。这种模块大 多为多功能模块,但模块的各个功能的 执行与时间有关,通常要求所有功能必 须在同一时间段内执行。例如初始化模 块和终止模块。
3.命令语言
l 限制命令数量 l 选择有意义的独特的命令名 l 使用缩写要一致 l 命令语法的结构应该一致 l 采用提示帮助临时用户 l 考虑用命令菜单帮助临时用户
软件工程
4. 直接操纵
l 使用易于理解的图标:图标的意义应该尽可 能明确,一个不恰当的图标不能很好地表示 它的信息。
l 避免令人迷惑的类比:图标应以预期的方式 工作。
……
A
B
例1:A访问C的内部 数据或不通过 正常入口而转
入C的内部。
A: ………… ………… goto C1 ………… …………
C
D
C: ………… ………… C1:
…… ……
A
例2:部分代码重叠(常出现在汇
编程序中)
B
例3:一个模块有多个入口 (功能)
A: ……………… ……………… entry 1: ……………… ……………… entry 2: ……………… ………………
启发式规划
1. 争取低耦合、高内聚(增加内聚 > 减 少耦合)
2. 模块规模适中:过大不易理解;太小 则接口开销过大。注意分解后不应降 低模块的独立性。
3. 适当控制 • 深度 = 分层的层数。过大表示分工过
细。
• 宽度 = 同一层上模块数的最大值。过 大表示系统复杂度大。
在面向对象的方法学中内聚是指同一对 象内各个元素彼此结合紧密程度。而类是对具 有相同属性和行为的一个或多个对象的描述。 所以在面向对象的设计中主要是解决类的内聚 性问题。通常在面向对象设计中存在服务内聚、 类内聚和泛化内聚3种。
功能内聚(Functional Cohesion)
一个Байду номын сангаас块中各个部分都是完成某一具体 功能必不可少的组成部分,或者说该模块中 所有部分都是为了完成一项具体功能而协同 工作,紧密联系,不可分割的。则称该模块 为功能内聚模块。
信息内聚(Informational Cohesion)
这种模块完成多个功能,各个功能都在 同一数据结构上操作,每一项功能有一个唯 一的入口点。这个模块将根据不同的要求, 确定该执行哪一个功能。由于这个模块的所 有功能都是基于同一个数据结构(符号表), 因此,它是一个信息内聚的模块。
一组模块通过参数表传递记录信息,就是 标记耦合。这个记录是某一数据结构的子结构, 而不是简单变量。
控制耦合 (Control Coupling)
如果一个模 块通过传送开 关、标志、名 字等控制信息, 明显地控制选 择另一模块的 功能,就是控 制耦合。
外部耦合(External Coupling)
内聚是衡量一个模块内部各个元素彼此结合
的紧密程度。 软件工程
一个模块内部各个元素之间的联系越 紧密,它的内聚性就越高,对应地它与其 他模块之间的耦合性就会减低,模块独立 性就越强。相反,模块内聚性越低,模块 间耦合性就越强,模块的独立性也就越弱。
在软件设计中我们要追求高内聚低耦 合的模块,尽量提高模块的独立性 。
• 公共耦合的复杂程度随耦合模块的个数增 加而显著增加。若只是两模块间有公共数
据环境,则公共耦合有两种情况。松散公 共耦合和紧密公共耦合。
公共耦合 (Common coupling)
Global : V1 V2
Global : V1 V2
A:
B:
A:
B:
………… ………… …………
…………
………… ………… …………
2 详细设计的基本任务
• 详细设计是概要设计的进一步的具体化, 主要确定每个模块的具体执行过程,故也 称为过程设计。其基本任务有:
1.为每个模块进行详细的算法设计。 2.为模块内的数据结构进行设计。 3.对数据库进行物理设计 。 4.界面设计。 5.其它设计。 6.编写文档。 7.评审。
3 详细设计流程
软件工程
5 用户界面设计
用户界面又称人机界面或人机接口 。用户界面设计 是软件设计的重要组成部分。
1 用户界面设计的一般原则
①用户熟悉原则 ②一致性原则 ③可恢复性原则 ④用户指南原则 ⑤用户差异性原则
用户界面设计过程图
2 用户界面设计过程
用户界面设计是以用户为中心,反复迭代的过程。
分析和理解 用户活动
模块设计基础
信 息 内 聚 示 例 图
• 信息内聚模块可以看成是多个功能内 聚模块的组合,并且达到信息的隐蔽。 即把某个数据结构、资源或设备隐蔽 在一个模块内,不为别的模块所知晓。
通信内聚 (Communication Cohesion)
如果一个模块内各功能部分都使用了 相同的输入数据,或产生了相同的输出 数据,则称之为通信内聚模块。通常, 通信内聚模块是通过数据流图来定义的。
c
内容耦合图
模块设计基础
实际上,模块之间是混合式的耦合
原则:尽量使用数据耦合,少用 控制耦合,限制公共耦合的 范围,完全不用内容耦合。
在面向对象的方法学中,对象是最基本的
模块,因此耦合主要指不同对象之间相互关
联的紧密程度。一般说来,对象之间的耦合 可分为交互耦合和继承耦合两大类。
⑵.内聚
内聚是程序结构中模块内各个元素彼此结合紧密程度的度 量。根据模块内部构成情况,可以用高、中、低把内聚分成三 类。其中高内聚有功能内聚和顺序内聚;中内聚有通信内聚、 过程内聚;低内聚有时间内聚、逻辑内聚和偶然内聚。在设计 时力争做到高内聚,并辨别出低内聚的模块,然后对其修改, 提高模块的内聚程度,从而得到高内聚独立性强的模块。
软件工程
(1).耦合
耦合是程序结构中各个模块之间相互关联 的度量。耦合强弱取决于模块间接口的复杂程 度、调用模块的方式以及通过接口的信息。 Myers从耦合的机制上将耦合分为非直接耦合、 数据耦合、标记耦合、控制耦合、外部耦合、 公共耦合、内容耦合七种类型。
七种耦合类型关系图
非直接耦合(Nondirect Coupling)
一组模块都访问同一全局简单变量而 不是同一全局数据结构,而且不是通过参 数表传递该全局变量的信息,则称之为外 部耦合。
公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环 境,则它们之间的耦合就称为公共耦合。 公共的数据环境可以是全局数据结构、共 享的通信区、内存的公共覆盖区等。
两个模块之间没有直接关系,它们之间的联系 完全是通过主模块的控制和调用来实现的。
非直接耦合的 模块独立性最 强。
数据耦合 (Data Coupling)
一个模块访问另一个模块时,彼此之间 是通过简单数据参数(不是控制参数、公共数 据结构或外部变量)来交换输入、输出信息的。
标记耦合 (Stamp Coupling)
逻辑内聚(Logical Cohesion)
这种模块把几种 相关的功能组合 在一起,每次被 调用时,由传送 给模块的判定参 数来确定该模块 应执行哪一种功 能。
巧合内聚(Coincidental Cohesion)
巧合内聚 (偶然内聚)。当模块内各部分 之间没有联系,或者即使有联系,这种 联 系也很松散, 则称这种模 块为巧合内 聚模块,它 是内聚程度 最低的模块。
模块化是软件设计的一个基本准则
高层模块
分解
从整体上把握 问题,隐蔽细节
复杂问题
较小问题
分解
可减小解题所需的总的工作
在软件设计阶段通常首先要确定模块的 外部特性,这就是软件总体设计需要解决的 问题。然后再确定模块的内部特性,这就是 软件详细设计需要解决的问题。
模块化就是把程序划分成若干个模块, 每个模块具有一个子功能,把这些模块集成 起来构成一个整体,可以完成指定的功能, 实现问题的求解。
• 在详细设计前需要确认用例文档是否是最 终的文档。
• 保证概念的准确性的前提下,以界面为中 心。
4 软件设计的概念和原则
4.1 模块化 • 软件系统的模块化是指整个软件被划分成若
干单独命名和可编址的部分,称之为模块。 这些模块可以被组装起来以满足整个问题的 需求。
• 把问题/子问题的分解与软件开发中的系统 /子系统或系统/模块对应起来,就能够把 一个大而复杂的软件系统划分成易于理解的 比较单纯的模块结构。
…………
A1=V1+V V1=B1 V1++
V2=B1+V1
2
………… …………
…………
………… ………… …………
…………
问题…:………公共部分的改动将影响所有调用它的模块; 公共部分的数据存取无法控制;
复杂程度随耦合模块的个数增加而增加。
内容耦合 (Content Coupling)
如果发生下列情形,两个模块之间就发生了内容 耦合: (1) 一个模块直接访问另一个模块的内部数据; (2) 一个模块不通过正常入口转到另一模块内部; (3) 两个模块有一部分程序代码重迭(只可能出 现在汇编语言中); (4) 一个模块有多个入口。
l 不违反大众习惯:不同的用户群体可能对一 个图标如何工作有不同的习惯。
l 为特有的目的使用图标。 l 仔细设计图标的交互。
软件工程
纸上设计原型
与最终用户 一起评价
设计原型
产生动态 设计原型
可执行原型
与最终用户 一起评价
实现最终的 用户界面
3 用户界面设计经验
人机界面主要有5种交互方式,即菜单选 择、表单填写、命令语言、直接操纵和自然语 言。 1. 菜单选择
l 一致性:选择用户熟悉的术语、以一致 的方式使用这些术语。
l 简明性: l 把关键词置于菜单条名称的首位: l 建立逻辑上相似的条目组:同一菜单下 面每个菜单条目应和其他条目有相似之处。
目前,模块化方法已被广泛接受和应用, 特别是在面向对象的软件开发模式中很自然
4 软件设计的概念和原则
4.2 模块的独立性 模块独立性是软件系统中每个模块只涉
及软件要求的具体子功能.而和软件系统中 其他的模块接口是简单的。
模块的独立程度可以由模块间的耦合和
模块的内聚两个定性标准度量。耦合是衡量
不同模块彼此间互相依赖(连接)的紧密程度;
2. 表单填写
l 使用有意义的标题 l 给出简短的可以理解的说明 l 在表单上使用逻辑序列对字段进行逻辑排序和分组 l 以视觉上有感染力的方式设计表单 l 使用熟悉的字段标签 l 使用一致的术语和缩写 l 在数据输入字段周围定立分界 l 允许光标方便地移动 l 允许简单的错误更正 l 尽可能防止错误 l 当输入无效值后能提供出错信息 l 清楚标出任何一个可选字段。 l 给出单个字段的解释 l 清楚地用信号告知数据输入完成
1 概述
• 软件详细设计是软件工程的重要阶段, 软 件详细设计细化了高层的体系结构设计, 将软件结构中的主要部件划分为能独立编 码、编译和测试的软件单元,并进行软件 单元的设计,并最终将影响软件实现的成 败。优秀的详细设计在提高编码质量、保 证开发周期、节约开发成本等各方面都起 着非常重要的作用,是一个软件项目成功 的关键保证。