四章概要设计总体设计

合集下载

第4章 软件概要设计

第4章 软件概要设计


内容耦合度 一个模块不经调用直接使用另一模块的内容

4.1.6 高内聚和低耦合

内聚和耦合是密切相关的,模块内的高内聚往往
意味着模块间的低耦合 内聚度和耦合度要说明的是同一内容,即模块的 独立性,它们是衡量这种独立性的两个不同的方 面

4.1.6 高内聚和低耦合

在软件设计中,应该追求高内聚、低耦合 (即块




逐次运用“黑盒”的工程定义将问题进行功能分解 即按数据变换的阶段划分模块,其中每个模块都看成 是一个“黑盒” 对这个“黑盒”进行输入、输出以及输入、输出间的 变换的考察 考察的结果又划分成若干更小的模块,然后将这些模 块作为新的“黑盒”,再进行考察 最后细分到每个“黑盒”都能用简单程序实现为止
而模块间的外部联系尽可能地弱,即尽可能地提高模块 的相对独立性 评价模块结构质量的具体标准是


模块的内聚度(模块强度)——指一个模块内部各成分之间的联系。 内聚度高,则模块的相对独立性高。内聚度可划分为七级 模块的耦合度(模块结合度)——是模块结构中各模块之间相互联 系的一种度量。耦合度越弱,意味着模块独立性越高,模块间相 互影响就越小。耦合度分四个方面
第4章 软件概要设计

模块的划分
结构化设计方法 (SD) Parnas方法 Jackson方法 程序的逻辑构造(LCP)方法 概要设计文件与复审
第4章 软件概要设计

需求分析阶段解决了让软件“做什么”的问题,
并且在软件需求说明书中得到了充分的表达 进入设计阶段,开始软件需求的实施工作,也就 是解决“怎么做”的问题 概要设计 (总体设计或结构设计) 工作由设计员完 成,设计员应该是经验丰富的软件人员

系统设计-第4章软件概要设计

系统设计-第4章软件概要设计
27
标记耦合举例
住户情况
计算水电费 水费
电费
住户情况
计算水费
计算电费
“住户情况”是一个数据结构,图中模块都与此数 据结构有关. “计算水费”和“计算电费”本无关,由于引用了 此数据结构产生依赖关系,它们之间也是标记偶合.
28
将标记耦合修改为数据 耦合举例
计算水电费
本月 用水量
水费 电费
本月 用电量
内聚是模块功能强度的度量,它标志一个模块内 部各个元素彼此结合的紧密程度。
46
2.耦合性(coupling) 耦合性是软件结构内不同模块之间相互关联程
度的度量。耦合的强弱取决于模块之间接口的复 杂程度、模块的调用方式以及通过接口的数据。
47
试判断下列叙述是哪一种内聚?
1)一组语句在程序中多处出现,为了节
50
4.3 软件模块化的优化原则
1.改进软件的结构,提高模块独立性 2.模块大小应该适中 3.软件的层次结构要合理 4.模块的作用领域应该在控制领域之内 5.力争降低模块接口的复杂程度 6.设计单入单出的模块 7.模块的内部功能应该可以预测
返回51 节目录
设计出软件的初步结构以后,应该审查分 析这个结构,通过对模块的分解或合并,力求 降低耦合提高内聚。
一组模块引用同一个公用数据区(也 称全局数据区、公共数据环境)。 公共数据区指:
全局数据结构 共享通讯区 内存公共覆盖区等
35
公共耦合举例

B
C
公共数据区 模块A、B、C间存在错综复杂的联系
36
公共耦合存在的问题
(1)软件可理解性降低 (2)诊断错误困难 (3)软件可维护性差, (4)软件可靠性差 (公共数据区及全程变量无保护措施) 慎用公共数据区和全程变量!!!

软件工程-总体设计

软件工程-总体设计

设 构约束。

(2)子模式设计
子模式是用户使用的数据视图。
过 (3)完整性(Integrality)和安全性(Security)设计
程 (4)优化(Optimize)
主要目的是改进模式和子模式以优化数据的存取。
前一页


制定测试计划

在软件开发的早期阶段考虑测试
设 计
(Testing)问题,能促使软件设计人员 在设计时注意提高软件的可测试性 。
程 设计过程的下一个重要阶段——结构设计。
前一页
功能分解

体 为了最终实现目标系统,必须设计出组成 这个系统的所有程序和文件(或数据库)。对
的 程序(特别是复杂的大型程序)的设计,通常
设 分为两个阶段完成:

结构设计(Structure Design) :是总体设
计阶段的任务,确定程序由那些模块组
模块彼此间互相依赖(连接)的紧密程度。
前一页
耦合度
耦合度可以分为七级:
软件设计时应尽量使用数据 藕合,减少控制藕合,限制 外部环境藕合和公共数据藕 合,杜绝内容藕合。
非直接藕合 低
数据藕合
控制藕合

特征藕合
合 度
外部藕合
公共藕合 内容藕合 高
数据耦合 (Data Coupling):如果两
个模块彼此间通过参数交换信息, 而且交换的信息仅仅是数据,那么 这种耦合称为数据耦合。
设 计
设函数C(x)定义问题x的复杂程度, 函数E(x)确定解决问题x需要的工作量

(时间),对于两个问题p1和p2,如果
概 念
C(p1)> C(p2)

E(p1)> E(p2)

软件工程第四章

软件工程第四章

4.3.2、面向数据结构的设计方法 、
2、Jackson方法 (1) 分析并确定输入数据和输出数据的逻辑结构, 并用Jackson 图描绘这些数据结构。 (2) 找出输入数据结构和输出数据结构中有对应关 系的数据单元。
4.3.2、面向数据结构的设计方法 、
2、Jackson方法 (3) 用下述三条规则导出描绘程序结构的Jackson 图: ① 为每对有对应关系的数据单元,按照它们在数据结构图 中的层次在程序结构图的相应层次画一个处理框; ② 根据输入数据结构中剩余的每个数据单元所处的层次, 在程序结构图的相应层次分别为它们画上对应的处理框; ③ 根据输出数据结构中剩余的每个数据单元所处的层次, 在程序结构图的相应层次分别为它们画上对应的处理框。
4.2.2、模块独立性 、
1、耦合性 (4)内容耦合:出现下列情况之一就认为是 内容耦合:一个模块访问另一个模块的内 部数据;一个模块不通过正常入口而转到 另一个模块内部;两个模块有一部分程序 代码重叠;一个模块有多个入口。
4.2.2、模块独立性 、
1、耦合性 对于模块设计,尽量使用数据耦合,少用 控制耦合,限制公共环境耦合的范围,完 全不用内容耦合
4.3.2、面向数据结构的设计方法 、
面向数据结构的设计方法就是用数据结构作为程序 设计的基础。这种方法的最终目标是得出对程序处 理过程的描述,即在完成了软件结构设计之后,可 以使用面向数据结构的方法来设计每个模块的处理 过程。
4.3.2、面向数据结构的设计方法 、
1、Jackson图 (1) 逻辑数据结构 (2) Jackson图的优点 (3) Jackson图与层次方框图的比较
4.2.3、软件结构设计 、
软件结构图,是Yourdon 提出的进行软件 结构设计的有力工具。 主要的模块:传入模块、传出模块、变换 模块和协调模块。

总体设计概要设计

总体设计概要设计

功能设计
根据总体结构规划,设计产品或 系统的功能模块,明确各模块的 功能需求和接口。
需求分析
对产品或系统的需求进行收集、 整理、分析和评估,明确需求内 容和优先级。
概要设计的工具与技术
文档编写
使用文档编写工具,如 Microsoft Office系列 软件,编写概要设计文 档,记录设计思路、方
法和结果。
联系
相互依赖
总体设计是概要设计的前提和基 础,概要设计需要在总体设计的 指导下进行。总体设计的成果可 以作为概要设计的输入和参考。
共同目标
总体设计和概要设计都是为了实 现产品或系统的功能和性能,两 者的工作成果都是为了满足用户 需求和提高产品质量。
相互影响
总体设计的调整和改变可能会影 响到概要设计的实现和具体细节。 同样,概要设计的成果也需要与 总体设计保持一致和协调。
原型设计
使用原型设计工具,如 Axure RP、Sketch等 ,制作产品或系统的原 型,以便更好地理解设 计意图和展示设计方案

思维导图
使用思维导图工具,如 XMind、
MindManager等,绘 制概要设计的思维导图 ,帮助梳理设计思路和
模块关系。
03
总体设计与概要设计的区别 与联系
区别
定义
总体设计通常是指对整个产品或系统的全面规划,包括功能、结构、外观等方面的设计。而概要 设计则是对产品或系统的高级设计,主要关注系统的总体结构、模块划分、接口设计等。
关注点
总体设计更注重整体性,强调对产品或系统的全面把握和整体规划。而概要设计更注重结构性和 模块化,强调对系统的高级设计和划分。
层次
总体设计通常是在更宏观的层面上进行,涉及到产品的整体特性和功能。而概要设计是在相对微 观的层面上进行,涉及到系统的具体实现和组成。

软件工程 第四章 概要设计

软件工程 第四章 概要设计
4.控制耦合 模块之间传递的不是数据信息,而是控制信息如标志、开关量,一个模块控制了另一模块 的功能。
第4章
4.4 模块的独立性
15
4.4.1 耦合性(Coupling)
5.外部耦合 一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为 外部耦合。 6.公共耦合
若一组模块都访问同一全局数据结构,则称之为公共耦合。公共数据环境可以是全局数据
4
4.2.1 概要设计的任务
概要设计的基本任务是: (1)设计软件系统结构; (2)数据结构及数据库设计; (3)编写概要设计文档;
(4)评审概要设计文档。
第4章
4.2 概要设计的任务与步骤
5
4.2.2 概要设计的步骤
概要设计的一般步骤如下: 1.选定体系结构 2.确定设计方案 3.设计软件结构
4.数据结构及数据库设计
(2)一个模块不通过正常入口而直接转入到另一个模块的内部;
(3)两个模块有一部分代码重叠(该部分代码具有一定的独立功能); (4)一个模块有多个入口。
第4章
4.4 模块的独立性
17
4.4.2 内聚性(Cohesion)
一个模块内各个元素彼此结合的紧密程度用内聚(或称聚合)来度量。一个理想的模块只
完成一个功能,模块设计的目标之一是尽可能高内聚。
第4章
4.4 模块的独立性
21
4.4.2 内聚性(Cohesion)
5.通信内聚
指模块内所有处理功能都通过公用数据而发生关系。即模块内各个组成部分都使用相同的 输入数据或产生相同的输出结果。
第4章
4.4 模块的独立性
22
4.4.2 内聚性(Cohesion)

软件设计概要设计

软件设计概要设计

顾客交互子系统旳程序构造雏形
(环节六)启发式设计策略优化初始SC图
▪ 使用启发式设计策略,精化所得程序构造
雏形——初始SC图,改良软件质量。
▪ 这一环节与变换分析法相同。
2.4混合构造
▪ 一种大型系统经常是变换型构造和事务型旳混合构造,为
了导出初始SC图,必须同步使用变换映射和事务映射
▪ 下例中,总体是一种变换构造,但是输入途径输入是事务
1.概要设计工具
▪ 层次图和HIPO图 ▪ 构造图
层次图
▪ 层次图用来描绘软件旳层次构造旳图
形工具。 正文加工系统
输入 输出 编辑 加标题 存储 检索 编目录 格式化
添加 删除 插入 修改 合并 列表
IPO图
▪ 层次图中旳每一种模块,均可用一张IPO图来描述。
IPO 图由输入、处理和输出三个框构成,需要时 还能够增长一种数据文件框。IPO图在需求分析阶 段主要用来描述系统旳主要算法。
▪ 在上例中,可能旳修改有:
▪ 输入构造中旳模块"转换成rpm"和"搜集sps"能
够合并;
▪ 模块"拟定加速/减速"能够放在模块"计算mph"
下面,以降低耦合;
▪ 模块"显示加速/减速"能够放在模块"显示mph"
下面。
精化后旳软件构造
模块阐明
▪程序构造旳模块名隐含模块功能,必须为每
个模块写一种简要旳处理阐明,
2.面对数据流旳设计——SD法
▪ 需求阶段对数据流进行分析,生成DFD和
DD
▪ 以此为基础,将DFD经过SD法软件构造。
面对数据流旳设计措施根据数据流图旳特征 定义变换流和事务流两种“映射”,这两种 映射能机械地将数据流图转换为程序构造。

软件工程导论第四章 概要设计

软件工程导论第四章 概要设计

模式4:共享数据模式
共享数据系统以一个或多个数据库 / 数据仓库为中心进行 组织,其它部件可以从中读写存储的数据。共享数据系统还 提供并发访问、容错处理、访问权限控制等功能。 典型的共享数据系统包括: a. 数据库 b. 知识库 c. 源代码控制程序
模式5:信息系统模式
现代信息系统平台模式,主要考虑B/S模式。 B/S模式的三层:表示层(presentation),业务 层(business),和数据存储层(data access) 。 B/S模式的优点: a. 架构简化了客户端。它无需象C/S模式那样在 不同的客户机上安装不同的客户应用程序,而只需安 装通用的浏览器软件。 b. 简化了系统的开发和维护。 c. 使用户的操作变得更简单。 d. 特别适用于网上信息发布 。
第四章 概要设计
•4.1软件体系结构 •4.2概要设计任务与步骤 •4.3软件设计的基本概念 •4.4面向数据流的设计方法 •4.5面向数据结构的分析设计方法 •4.6概要设计文档评审
概要设计
一是要覆盖《需求规格说明书》的全部内容, 二是要作为指导详细设计的依据。
概要设计注重于宏观上和框架上的设计,它是软 件系统的总体结构设计、全局数据库(包括数据结 构)设计、外部接口设计、功能部件分配设计、部 件之间的接口设计。 概要设计又称为架构设计。 • 用于描述系统最顶的结构和组织形式,标识出软 件的各个组成部分。
2.子系统和模块的区别 (1)一个子系统独立一个构成系统,不依赖 于其他子系统提供的服务。 (2)一个模块通常是一个能提供一个或多个 服务的系统组件。 3.体系结构设计的结果 体系结构设计过程的结果是一个体系结构 的设计文档。
4.1软件体系结构 4.1.1概述
4.体系结构模型 (1)静态结构模型 将子系统或组件作为一个个独立的单元来开发 (2)动态过程模型 给出系统在运行时的过程组成。它与静态模型不 同。 (3)接口模型 定义每个子系统从他们的公共接口能得到的服务。 (4)关系模型 关系模型给出子系统间的数据流的关系。

总体设计

总体设计

公共环境耦合是一种不良的连接关系,它给模块的维护和修改 带来困难。如公共数据要作修改,很难判定有多少模块应用了该 公共数据,故在模块设计时,一般不允许有公共连接关系的模块 存在。
软件工程
26
5.模块的耦合
(5) 内容耦合 如果一个模块和另一个模块的内部属性(即运行程序和内部数据)
有关,则称为内部耦合。 两个模块间发生内容耦的情况:
循环体
事务记录
累积销售额
累积订货量
计算累积
图4-8 过程内聚
软件工程
32
6.模块的内聚
(5) 通信内聚 如果模块中所有元素都使用同一个输入数据和(或)产生同一
个输出数据,则称为通信内聚. 图4-9所示的是通信内聚模块的示意图。例如要完成两个工
作,这两个处理动作都使用相同的输入数据:
享了这个纪录,这就是标记耦合。在设计中应尽量避免这种耦合。
(7) 外部耦合 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且
不是通过参数表传递该变量的信息,则称之为外部耦合。
软件工程
28
5.模块的耦合
一般模块之间的连接有七种,构成的耦合也有七种类型,如图45所示。
低←
耦合性
→高
非直接耦合 数据耦合 标记耦合 控制耦合 外部耦合 公共耦合 内容耦合
最小成本区
软件总成本
接口成本

M





成本/模块
模块接口
图4-1 模块化和软件成本的关系
软件工程
17
1.模块化
采用模块化原理的好处:
♦ 可以使软件结构清晰,不仅容易实现设计,也使设计出的软件的可
阅读性和可理解性大大增强。

第4章软件的系统设计--总体设计

第4章软件的系统设计--总体设计


模块化和软件成本的关系
软件总成本 最小成本区 M
成本或工作量
接口成本
模块数目
(二)、抽象

抽象是人类在解决复杂问题过程中使用的思维工具,即抽出 事物本质的共同的特性而暂不考虑它的细节. 软件系统进行模块设计时,可有不同的抽象层次。 在最高的抽象层次上,可以使用问题所处环境的语言概括地 描述问题的解法。 在较低的抽象层次上,则采用过程化的方法。


系统分析与需求分析的区别

需求分析是一个项目的开端,也是项目建设的基石。是对用户需求的定义, 对软件系统的描述。在以往建设失败的项目中,80%是由于需求分析的不 明确而造成的。因此一个项目成功的关键因素之一,就是对需求分析的把 握程度。而项目的整体风险往往表现在需求分析不明确、业务流程不合理, 用户不习惯或不愿意去用承建方的软件。作为第三方的监理公司,必须提 醒承建方、客户方重视需求分析的重要性。 系统分析的任务:将用户的业务逻辑转化为程序逻辑,计算时间和成本。 根据开发人员的理论知识和实际的经验,人们会采用各种满足实际情况的 系统分析、开发方法、步骤以及文档等等。一般情况下,在系统分析书中 应该有以下内容(视项目而定): 1、系统需求说明 说明系统是一个什么样的系统,用市场上现有的 系统来类比, 用客户(或是我们自己)需要一个什么样的系统进行说明, 力求完整。
现在汇编语言中);
(4) 一个模块有多个入口。
c
总结:数据耦合的程度最低,其次是控制耦合, 再其次是公共耦合,程度最高的是内容耦合。
模块内聚
模块独立性
内聚性 偶然 逻辑 时间 过程 通信 顺序 功能 内聚 内聚 内聚 内聚 内聚 内聚 内聚
内聚性是对一个模块内部各个组成元素之间相互结合的紧密程度的度 量指标。模块中组成元素结合的越紧密,模块的内聚性就越高,模块 的独立性也就越高。理想的内聚性要求模块的功能应明确、单一,即 一个模块只做一件事情。 在进行模块化设计时,耦合性和内聚性都是必须考虑的重要指标。但 经实践证明,保证模块的高内聚性比低耦合性更为重要,在软件设计 时应将更多的注意力集中在提高模块的内聚性上。模块的内聚性主要 可划分为如上几种不同的类型。

第4讲 概要设计

第4讲 概要设计
43
活动
活动起点
分支
分叉
汇合
合并 活动图 活动终点
44
活动图包含的基本元素





动作状态(Action State) 活动状态(Activity State) 分支(Branch)与合并(Merge) 分叉(Fork)与汇合(Join) 泳道(Swimlane) 对象流(Object Flow)
公共数据环境指: 数据文件 数据表集 公共变量
34
(7)内容耦合
35
5.2 内聚
内聚是对模块内部各个元素彼此 结合的紧密程度的度量。
36
(1)偶然内聚(巧合内聚)
37
(2)逻辑内聚
把几组相关的功能组合成一个模块, 模块执行时通过传送给模块的参数来确定 执行模块中的哪种功能。
(3)时间内聚
模块一般是多功能模块,各项功能的执行 与时间有关。这是一种中等程度的内聚, 其内部逻辑比较简单。
25
4. 信息隐藏
信息隐藏是指每个模块的内部实现细节对 于其他模块来说是隐蔽的。即模块中所包 含的信息不被其他不需要这些的信息的模 块使用。 在面向对象当中,封装是一种信息隐蔽技 术,用户只能见到对象封装界面上的信息, 对象内部对用户是隐蔽的。

26
5. 模块独立性
模块的独立性是指软件系统中的每个模块都 只涉及自己特定的子功能,并且模块接口简 单,与系统中其他模块没有过多的联系。 模块的独立性是衡量软件中模块质量的最重 要的指标。
17
18
部署图组成元素
(1) 结点(node)
结点是运行时代表计算资源的物理元素, 结点通常有 内存及处理能力. 它可以是物理设备及运行在该设备 上的软件系统. 结点有2种类型:

概要设计

概要设计

未加工的设计材料,如构件、解决方案和知 识; 收敛(convergence):设计者从设计材料中选择 和组合合适元素,以满足设计目标。这是一 个不断删除的过程。
过程 设计
接口设计
数据 字典
体系结构设计
状态转换图
数据设计
控制规格说明
分析模型转变成软件设计示意图
4.1.2系统构成 体系结构的三个标准模型 : 1.容器模型:适合于数据是由一个子系统产生而 由其他子系统使用的情形。 2.客户机/服务器模型:是一个分布式系统模型, 数据和处理过程可分配在多个处理器之中。 3.抽象机模型:有时叫做分层模型,是用来建立 子系统的接口模型。
3.信息隐藏(Information Hiding)原理:软件开发 过程中设计和确定模块时,应使模块内所包含的 信息(数据和过程)对于不需要这些信息的模块来 说,是不能访问的(隐蔽模块的实现细节)。 4.局部化原理:把模块内关系密切的软件元素物 理地放得彼此靠近些。 作用: a.提高系统安全性; b.软件结构更清晰。
3.深度、宽度、扇出和扇入都应适当 深度:表示软件结构中控制的层数,能大体上反 映一个系统的大小和复杂程度。 宽度 : 软件结构内同一个层次上模块总数的最 大值。一般地说,宽度越大,系统越复杂。 扇出:模块直接控制的模块数目.扇出过大, 需 要控制和协调过多的下级模块. 扇入 : 直接调用某个模块的模块个数。在提高 模块共享性的同时,不能违背独立性原则。 结论:顶层扇出高,中间扇出小,底层扇入高。
模块化 抽象 逐步求精 信息隐藏和局部化 模块独立(耦合和类聚)
4.3.1.模块化与模块独立 1)模块(Module)是由边界元素限定的相邻的程序 元素的序列,且有一个总体标识符来代表它(如过 程、函数、子程序名等),是构成程序的基本构件. 2)模块化(Modularity)即把程序划分成若干个相 对独立的模块,每个模块完成一定功能,集成起来 形成一个整体,完成系统的功能。软件体系结构 (Software Architecture, SA)体现了模块化。SA 包括构件(模块)的层次结构、构件间的交互方式 和构件的数据结构等。

第4章 总体设计

第4章 总体设计

04 总体设计一、选择题(1)模块的内聚性最高的是( D )A.逻辑内聚B.时间内聚C.偶然内聚D.功能内聚(2)总体设计的目的是确定整个系统的( B )。

A.规模 B.功能及模块结构C.费用 D.测试方案(3)一个模块内部各程序都在同一数据结构上操作,这个模块的内聚性称为( C )。

A.时间内聚 B.功能内聚C.通信内聚 C.过程内聚(4)软件总体设计是指软件总体结构设计和数据设计,该阶段的主要任务不包括( C )。

A. 设计软件的模块结构B. 定义接口并建立数据结构C. 模块设计D. 生成概要设计规格说明(5)如果某种内聚要求一个模块中包含的任务必须在同一段时间内执行,则这种内聚为( A )。

A.时间内聚 B.逻辑内聚 C.通信内聚 D.信息内聚(6)为了提高模块的独立性,模块之间最好使用( D )。

A. 控制耦合B. 公共耦合C. 内容耦合D. 数据耦合(7)结构化程序设计的一种基本方法是( D )。

A.筛选法 B.递归法 C.归纳法 D.逐步求精法(8)对软件进行分解,是为了( B )。

A.降低模块间接口的复杂程度B.降低模块的复杂程度C.降低模块的复杂程度,并降低模块间接口的复杂程度D.降低模块的复杂程度,并提高模块间接口的复杂程度(9)在软件工程中,描绘软件结构的图形工具不包括( C )。

A. 层次图B. HIPO图C.PAD图D.H图(10)两个模块彼此传递的信息中有控制信息,这种耦合称为( D )。

A.数据耦合 B.公共环境耦合 C.内容耦合 D.控制耦合(11)耦合是对软件不同模块之间互连程度的度量。

各种耦合按从强到弱排列如下:( C )A. 内容耦合,控制耦合,数据耦合,公共环境耦合。

B. 内容耦合,控制耦合,公共环境耦合,数据耦合。

C. 内容耦合,公共环境耦合,控制耦合,数据耦合。

D. 控制耦合,内容耦合,数据耦合,公共环境耦合。

(12)结构化设计又称为( B )。

A. 概要设计B. 面向数据流设计C. 面向对象设计D. 详细设计(13)按照总体设计中的启发式规则,模块的作用域和模块的控制域之间的关系应为( A )。

软件工程_总体设计

软件工程_总体设计
前一页
模块内聚
c
启发式规则
主 要 内 容
• • • • • • •
改进软件结构提高模块独立性 模块规模应该适中 深度、宽度、扇出和扇入应适当 模块的作用域应在控制域之内 尽量降低模块接口的复杂程度 设计单入口出口的模块 模块功能应该可以预测
前一页
软件结构形态
“形态”指的是系统结构所表现出来的形状。系统 结构的形状用如下特征来定义: (1)深度:指结构图控制的层次。 (2)宽度:指一层中最大的模块个数。 (3)扇出:指一个模块直接下属模块的个数。 (4)扇入:指一个模块直接上属模块的个数。 系统的深度能够粗略地描述系统的规模和复杂度。 系统宽度的一个主要影响是扇出。一般认为,扇出 的域值大约为6或7。
图形工具主 ຫໍສະໝຸດ 内 容• 层次图和HIPO图 • 结构图
前一页
层次图和HIPO图
图 形 工 具
层次图 用来描绘软件的层次结构,层
次图适合于在自顶向下设计软件的过程中 使用。
HIPO图 是美国IBM公司发明的层次 图加“输入/处理/输出图”的英文缩写 为了能使HIPO图具有可追踪性,在H图 (层次图)里除了最顶层的方框之外,每 个方框都加了编号。
数据库设计
总 体 的 设 计 过 程
前一页
数据库设计通常包括下述四个步骤: (1)模式设计(Pattern Design)
模式设计的目的是确定物理数据库结构。第三范 式的实体及关系数据模型是模式设计过程的输入,模 式设计的主要问题是处理具体的数据库管理系统的结 构约束。
(2)子模式设计
子模式是用户使用的数据视图。
软 件 设 计 的 概 念 和 原 理
前一页
模块化
设函数 C ( x )定义问题 x 的复杂程度, 函数 E ( x )确定解决问题 x 需要的工作量 (时间),对于两个问题p1和p2,如果 C(p1)> C(p2)

总体设计(概要设计)

总体设计(概要设计)

1 . 非直接耦合(No Direct Coupling)
如果两模块中任一个都不依赖对方能独 立工作,则称这两模块为非直接耦合, 这类耦合度最低。 2 . 数据耦合(Data Coupling)
如果两模块间通过参数交换信息,而信 息仅限于数据,则称这两模块为数据耦 合。 3 . 特征耦合(Stamp Coupling)
§ 4 . 1 总体设计的过程
总体设计过程通常由两个主要阶段组成: 1.系统设计,确定系统的具体实现方案; 2.结构设计,确定软件结构。
总体设计的过程:
一、设想供选择的方案
确定方案二、选择合理的方案
三、推荐最佳方案 四、功能分解
确定结构五、设计软件结构
六、数据库设计 七、制定测试计划 八、书写文档
如果一个模块完成的任务逻辑上相关(例如,一 个产生所有与类型无关的输出),则称为逻辑性 内聚。 3. 时间性内聚(Temporal Cohesion)
如果一个模块内包含的任务必须在一个时间段内 执行(例如一个初始化模块),则称之为时间性 内聚。 4. 过程性内聚(Procedural Cohesion)
的,即每一步分解仅较其前一步增加“少量” 的细节。这样在相连两步之间只有微小的变 化,不难验证它们的内容是否等效。
•例:求五边形的面积,边长由L1~L7由键盘读入 解:一级抽象(求精)
1. 输入长度L1~L7; 2. 由L1、L5、L6求三角形面积S1; 3. 由L2、L6、L7求三角形面积S2; 4. 由L3、L4、L6求三角形面积S3; 5. S=S1+S2+S3; 6. 输出S; 二级求精:已知三边a、b、c,
1). 模块的表示符号
2 ) . 简单调用
3 ) . 选择调用

《概要设计总体设计》课件

《概要设计总体设计》课件

05
案例分析
案例一:某电商网站的概要设计与总体设计
总结词
该案例介绍了某电商网站的概要设计和总体设计,包括需求分析、功能模块划分、数据库设计、界面设计等方面 的内容。
详细描述
该电商网站主要包括商品展示、购物车、用户登录注册、订单管理等功能模块。在概要设计阶段,主要进行了需 求分析和功能模块的划分,确定了各个功能模块之间的关系和数据流。在总体设计阶段,重点进行了数据库设计 和界面设计,确保了网站的整体结构和功能能够满足用户需求。
案例二:某移动应用的概要设计与总体设计
总结词
该案例探讨了某移动应用的概要设计和总体 设计,涉及用户需求分析、应用架构设计、 界面设计和交互设计等方面的内容。
详细描述
该移动应用主要服务于餐饮行业,提供在线 点餐、支付、外卖配送等功能。在概要设计 阶段,重点进行了用户需求分析和功能模块 的划分,明确了应用的核心功能和业务流程 。在总体设计阶段,主要进行了应用架构设 计、界面设计和交互设计,确保应用具有清 晰的结构、友好的界面和流畅的交互体验。
制定系统实现方案和技术路线
评估和优化设计方案
设计关注点比较
概要设计关注点 系统整体架构和模块划分 设计规范和标准的制定
设计关注点比较
01
确保设计方案的可行性和可扩展性
02
总体设计关注点
系统功能和接口设计
03
设计关注点比较
系统实现方案和技术路线的制定 确保设计方案的可实现性和性能优化
设计工具比较

适应性原则
总体设计应根据项目的实际需求和技 术条件进行适应性设计,确保设计的 可行性和实用性。
04
概要设计与总体设计的 比较
设计流程比较
概要设计流程 确定设计目标
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章、概要设计(总体设计)
▪ 总体设计的过程 ▪ 软件设计的概念与原理 ▪ 启发式规则 ▪ 图形工具 ▪ 面向数据流的设计方法
2020/5/7
概要设计:
基本目标是回答“概括地讲,系 统应该如何实现?”。
概要设计的两项设计任务:
系统设计 结构设计
确定系统的具体实现方案 确定软件结构
2020/5/7
2020/5/7
2020/5/7
模块的独立性:
过程内聚(Procedural Cohesion)
使用流程图做为工具设计程序时,把流程 图中的某一部分划出组成模块,就得到过程 内聚模块。例如,把流程图中的循环部分、 判定部分、计算部分分成三个模块,这三个 模块都是过程内聚模块。
2020/5/7
模块的独立性:
2020/5/7
理论一:各个击破 设函数C(x)是问题x的复杂程度,函数E(x)
是解决问题x所需要的工作量。对于问题P1和P2:
如果C(P1)>C(P2) 显然 E(P1)>E(P2)是成立的
根据人类解决问题的经验有: C(P1+P2)>C(P1)+C(P2)
显然 E(P1+P2)>E(P1)+E(P2) 把复杂的问题分解成若干小问题,是模块 化理论之一 2020/5/7
• 规则3深度、宽度、扇出和扇入要适当 (1).深度不宜过多 (2).宽度越大系统越复杂 (3).扇出通常为3或4(上限在5-9) (4).扇入越多上级调用就越多,这是一件好
事,但不能违背模块独立性原则单纯追 求高扇入。
2020/5/7
模块设计中的启发式规则
• 规则4模块的作用域应该在控制域之内
作用域:受该模块内一
的需求规格说明中弄清数据流加工的过程, 对于发现的问题及时解决。
然后根据数据流图决定问题的类型。数据
处理问题典型的类型有两种:变换型和事务 型。针对两种不同的类型分别进行分析处理。
2020/5/7
结构化设计方法
由数据流图推导出系统的初始结构图。 利用一些启发式原则来改进系统的初始结
构图,直到得到符合要求的结构图为止。
修改和补充数据词典。 制定测试计划。
2020/5/7
变换型系统结构图:
变换型数据处理问题的工作过程大致分为
三步,即取得数据,变换数据和给出数据。
相应于取得数据、变换数据、给出数据,
变换型系统结构图由输入、中心变换和输出 等三部分组成。
2020/5/7
信息
外部数据
个判定影响的
M
所有模块集合
控制域:模块本身和直 接间接从属于
A
G
该模块的模块 集合
B
C
A的控制域:
A, B,C,D,E,F
D
E
F
A的作用域不能A的控制域
2020/5/7
模块设计中的启发式规则
• 规则5力求降低模块接口的复杂程度 QUAD_ROOT(TBL, X)
TBL为方程系数,X为方程返回的根 QUAD_ROOT(A,B,C, Root1,Ro独立性:
外部耦合(External Coupling)
一组模块都访问同一全局简单变量而不是 同一全局数据结构,而且不是通过参数表传 递该全局变量的信息,则称之为外部耦合。
公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环境, 则它们之间的耦合就称为公共耦合。公共的 数据环境可以是全局数据结构、共享的通信 区、内存的公共覆盖区等。
详细实现计划
用户与技术 专家审查
部门负责人审批
进入结构设计
2020/5/7
总体设计的过程:
(4) 功能分解 把复杂的功能进一步分解为一系列比较简
单的功能。以确定软件结构。
(5) 设计软件结构 软件结构是由模块组成的层次系统,通常
用层次图或结构图来描述。
2020/5/7
总体设计的过程:
(6) 数据库设计 通常的四个步骤:
总体设计的过程:
(1) 设想供选择的方案
需求分析阶段
数据 流图
规划不同 的自动化
边界
方案1 方案2
方案n
2020/5/7
总体设计的过程:
(2) 选取合理的方案
方案1
征求用户意见
方案2 方案n
工程规模与目标
低成本 中成本 高成本
选择的方案
2020/5/7
总体设计的过程:
(3) 推荐最佳方案
推荐最 佳方案
2020/5/7
模块的独立性:
公共耦合的复杂程度随耦合模块的个数增
加而显著增加。若只是两模块间有公共数据 环境,则公共耦合有两种情况。松散公共耦 合和紧密公共耦合。
2020/5/7
模块的独立性:
内容耦合 (Content Coupling)
如果发生下列情形,两个模块之间就发生 了内容耦合
(1) 一个模块直接访问另一个模块的内 部数据;
模式设计 子模式设计 完整性与安全性 优化
(7) 指定测试计划 在软件开发早期考虑测试问题,能使软件
设计人员在软件设计时注意提高软件的可测 试性。
2020/5/7
总体设计的过程:
(8) 书写文档 系统说明 用户手册 测试计划
详细的实现计划 数据库设计结果
(9) 审查与复审 技术审查 管理复审
(2) 一个模块不通过正常入口转到另一 模块内部;
(3) 两个模块有一部分程序代码重迭(只 可能出现在汇编语言中);
(4) 一个模块有多个入口。
2020/5/7
模块内聚
2020/5/7
模块的独立性:
功能内聚 (Functional Cohesion)
一个模块中各个部分都是完成某一具体功 能必不可少的组成部分,或者说该模块中所 有部分都是为了完成一项具体功能而协同工 作,紧密联系,不可分割的。则称该模块为 功能内聚模块。
理论一:成本最小 成本
最小成本区 接口成本
开发成本
2020/5/7
模块数目
软件设计的概念与原理 抽象化:
软件系统进行模块设计时,可有不同的抽
象层次。
在最高的抽象层次上,可以使用问题所处
环境的语言概括地描述问题的解法。
在较低的抽象层次上,则采用过程化的方
法。
2020/5/7
模块的独立性:
模块(Module)
2020/5/7
模块的独立性:
信息内聚 (Informational Cohesion)
这种模块完成多个功能,各个功能都在同 一数据结构上操作,每一项功能有一个唯一 的入口点。这个模块将根据不同的要求,确 定该执行哪一个功能。由于这个模块的所有 功能都是基于同一个数据结构(符号表), 因此,它是一个信息内聚的模块。
2020/5/7
模块的独立性:
巧合内聚(Coincidental Cohesion)
巧合内聚又称为偶然内聚。当模块内各部 分之间没有联系,或者即使有联系,这种联 系也很松散, 则称这种模 块为巧合内 聚模块,它 是内聚程度 最低的模块。
2020/5/7
图形工具:
层次图
层次图用来描述软件层次结构。 层次图中的一个矩形框代表一个模块,方框间的连 线表示调用关系。
“模块”,又称“组件”。它一般具有 如下三个基本属性:
功能:描述该模块实现什么功能 逻辑:描述模块内部怎么做 状态:该模块使用时的环境和条件
2020/5/7
模块的独立性:
在描述一个模块时,还必须按模块的外部
特性与内部特性分别描述
模块的外部特性
模块的模块名、参数表、其中的输入参 数和输出参数,以及给程序以至整个系统 造成的影响
2020/5/7
软件设计的概念与原理 模块化:
软件系统的模块化是指整个软件被划分成
若干单独命名和可编址的部分,称之为模块。 这些模块可以被组装起来以满足整个问题的 需求。
把问题/子问题的分解与软件开发中的系
统/子系统或系统/模块对应起来,就能够 把一个大而复杂的软件系统划分成易于理解 的比较单纯的模块结构。
非直接耦合(Nondirect Coupling)
如果两个模块之间没有直接关系, 它们之间的联系完全是通过主模块 的控制和调用来 实现的,这就是 非直接耦合。这 种耦合的模块独 立性最强。
2020/5/7
模块的独立性:
数据耦合 (Data Coupling)
如果一个模块访问另一个模块时,彼此之 间是通过简单数据参数 (不是控制参数、公 共数据结构或外部变量) 来交换输入、输出 信息的,则称这种耦合为数据耦合。
时间内聚(Classical Cohesion)
时间内聚又称为经典内聚。这种模块大多 为多功能模块,但模块的各个功能的执行与 时间有关,通常要求所有功能必须在同一时 间段内执行。例如初始化模块和终止模块。
2020/5/7
模块的独立性:
逻辑内聚(Logical Cohesion)
这种模块把几种 相关的功能组合 在一起,每次被 调用时,由传送 给模块的判定参 数来确定该模块 应执行哪一种功 能。
模块的内部特性
完成其功能的程序代码和仅供该模块内 部使用的数据
2020/5/7
模块的独立性:
模块独立性
模块独立性, 是指软件系统中每个模块 只涉及软件要求的具体的子功能, 而和软 件系统中其它的模块的接口是简单的
例如, 若一个模块只具有单一的功能且 与其它模块没有太多的联系, 则称此模块 具有模块独立性
在结构图中,通常用带注释的箭头表示模块调用过程中来
回传递的信息。一般空心圆表示传递数据;实心圆表示传递
控制信息。
产生最佳解
好输入


输 入

得到好输入
相关文档
最新文档