第4章软件设计

合集下载

第4章 软件概要设计

第4章 软件概要设计


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

4.1.6 高内聚和低耦合

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

4.1.6 高内聚和低耦合

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




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


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

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

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

软件工程第4章 软件设计

软件工程第4章  软件设计

5. 设计软件结构 通常程序中的一个模块完成一个适当的子功能。应 该把模块组织成良好的层次系统,顶层模块调用它 的下层模块以实现程序的完整功能,每个下层模块 再调用更下层的模块,从而完成程序的一个子功能, 最下层的模块完成最具体的功能。
6. 设计数据库 对于需要使用数据库的那些应用系统,软件工程师 应该在需求分析阶段所确定的系统数据需求的基础 上,进一步设计数据库。
高内聚也有两类:如果一个模块内的处理元素和同 一个功能密切相关,而且这些处理必须顺序执行 (通常一个处理元素的输出数据作为下一个处理元 素的输入数据),则称为顺序内聚。根据数据流图 划分模块时,通常得到顺序内聚的模块,这种模块 彼此间的连接往往比较简单。如果模块内所有处理 元素属于一个整体,完成一个单一的功能,则称为 功能内聚。功能内聚是最高程度的内聚。
(2) 用户手册根据总体设计阶段的结果,修改更正 在需求分析阶段产生的初步的用户手册。
(3) 测试计划包括测试策略,测试方案,预期的测 试结果,测试进度计划等等。 (4) 详细的实现计划 (5) 数据库设计结果
9. 审查和复审 最后应该对总体设计的结果进行严格的技术审查, 在技术审查通过之后再由使用部门的负责人从管理 角度进行复审。
为什么模块的独立性很重要呢?主要有两条理由: 第一,有效的模块化(即具有独立的模块)的软件比 较容易开发出来。这是由于能够分割功能而且接口 可以简化,便于多人分工合作开发同一个软件。
第二,独立的模块比较容易测试和维护。这是因为 相对说来,修改设计和程序需要的工作量比较小, 错误传播范围小,需要扩充功能时能够“插入”模块。
(2)详细设计。详细设计阶段的根本目标是确定 应该怎样具体地实现所要求的系统,也就是说,经 过这个阶段的设计工作,应该得出对目标系统的精 确描述,从而在编码阶段可以把这个描述直接翻译 成用某种程序设计语言书写的程序。 详细设计阶段的任务还不是具体地编写程序,而是 要设计出程序的“蓝图”,结果基本上决定了最终 的程序代码的质量。

软件设计与体系结构 第四章 面向对象的软件设计方法

软件设计与体系结构 第四章 面向对象的软件设计方法

用户界面设计
用户界面是对于用户的直接表现,直接影响到用
户对软件易用性、友好性的感觉。用户界面包含 两方面内容:
首先要完整地包括用户在使用软件过程中所需的各种 元素,例如窗口、菜单、按钮、输入文本框、选择列 表、提示信息等,缺乏这些元素中的某些将会导致软 件功能无法被用户正常完成; 其次要求具有良好的外观和布局,例如背景颜色、按 钮等元素的位置、选择列表中条目的顺序等,这些因 素的不足可能不会影响软件功能的正确使用,但会给 用户带来不便、迷惑甚至反感。
ATM系统在提供以上服务的过程中,必须满足以下要求 一个顾客可以在最终确认前放弃一项交易 ATM在执行交易过程中将与银行系统进行通信,对是否 允许交易进行验证 ATM为每次成功的交易提供一个打印回执
ATM需要维护一个内部日志,对每次交易进行记录
用例的分析与设计
确定用例—确定场景
从业务需求出发获取参与者(Actor)和场景,对场景进行汇总、分 类、抽象,形成用例 场景是用户与系统之间进行交互的一组具体的动作 获取场景 目标软件有哪些参与者
用例的分析与设计
Startup用例的顺序图描述
用例的分析与设计
Session用例的顺序图描述
用例的分析与设计
Transaction用例的顺序图描述
用例的分析与设计
Withdrawal用例的顺序图描述
概念模型和顶层架构设计
概念模型的设计 标识领域概念模型 分析类:直接服务于用户功能性需求的概念层面的类, 与具体技术没有关系 顶层架构的设计
件进行交互的功能与特性进行封装,使目标软件系统的其余部分
尽右能独立于环境软件。
概念模型和顶层架构设计
ATM系统的概念模型——分析模型图

软件工程 第四章 概要设计

软件工程 第四章 概要设计
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法软件构造。
面对数据流旳设计措施根据数据流图旳特征 定义变换流和事务流两种“映射”,这两种 映射能机械地将数据流图转换为程序构造。

软件设计与体系结构-第四章-面向对象的软件设计方法课件

软件设计与体系结构-第四章-面向对象的软件设计方法课件

l 概念模型与顶层架构设计:
l 在用户需求和相关的业务领域中,概念及概念关系的抽取
l 用户界面设计:
l 设计每个界面中的所有界面元素,确定初步的界面布局,定义用户界面动作对软件系统中设计元
素的要求
l 数据模型的设计:
l 确定设计模型中需要持久保存的类的对象及其属性,定义持久持久存储数据之间的组织方式,并
.
26
概念模型和顶层架构设计
l 边界类: 其职责包括: l 边界控制: l 包括定义数据的格式及内容转换,输出结果的呈现,软件运行过程中界
面的变化与切换等。 l 外部接口: l 实现目标软件系统与外部系统或外部设备之间的信息交流和互操作,主
要关注跨越目标软件系统边界的通信协议 l 环境隔离: l 对目标软件系统与操作系统、数据库管理系统、中间件等环境软件进行
事件流中步骤(1)
l (3)如果账户余额小于取款金额,则显示信息“账户余额不足,请重新输入”,并返回主事件流
中步骤(1)
l (4)顾客在确认取款金额前右以选择取消交易。
l 后置条件: 如果取款成功,系统从账户余额中减去相应数额,并返回等待状态;如果顾客取消交易,
则返回等待状态
.
19
用例的分析与设计
体技术没有关系 l 顶层架构的设计 l 目的: 为后续的分析和设计活动建立一种结构和划分
.
24
概念模型和顶层架构设计
l 关键概念来源: l 为建立以UML类图表示的领域概念模型,首先必须标识关键概念。关键
概念的来源包括: l (1)业务需求描述、用例说明; l (2)业务领域中的相关规范、标准、术语定义。 l (3)反映业务领域知识的既往经验。 l 业务需求描述 l 业务领域中的相关规范、标准、述评呼定义 l 反映业务领域知识的既往经验

软件工程教案_4(第四章)

软件工程教案_4(第四章)

耦合强度依赖的因素: 耦合强度依赖的因素:
•一模块对另一模块的引用 •一模块向另一模块传递的数据量 •一模块施加到另一模块的控制的数量 •模块间接口的复杂程度
模块间耦合的类型
低 耦 合 性 无直接耦合
(低耦合) 数据耦合 低耦合)
强 模 块 独 立 性 弱
标记耦合
(中耦合) 控制耦合 中耦合)
外部耦合
§4.3 模块的独立性
4.3.1 模块独立性的概念 模块独立的含义: 模块独立的含义:
模块完成独立的功能 符合信息隐蔽和信息局部化原则 模块间关连和依赖程度尽量小
4.3.2 模块独立性的度量
模块独立性取决于模块的 内部和外部特征。 内部和外部特征。 SD方法提出的定性的度量标准: 方法提出的定性的度量标准: • 模块之间的耦合性 • 模块自身的内聚性
数据耦合举例
开发票 单价 数量 计算水费 金额
(3) 标记耦合(特征耦合) 3) 标记耦合(特征耦合)
如两个模块通过传递数据结构 如两个模块通过传递数据结构
(不是简单数据,而是记录、数组 不是简单数据,而是记录、 等)加以联系,或都与一个数据 加以联系,或都与一个数据
结构有关系, 结构有关系, 则称这两个模块 有关系 间存在标记偶合。 间存在标记偶合。
第四章 软件设计
主要内容: 主要内容: ▲ 软件设计的目标和任务 ▲ 软件设计基础 ▲ 模块的独立性 ▲ 结构化设计方法 ▲ 数据设计及文件设计 ▲ 过程设计
讨论要点
(1)如何将分析模型转换为软件 (1)如何将分析模型转换为软件 设计? 设计? (2)作为软件工程师在软件设计 (2)作为软件工程师在软件设计 方面应使用哪些基本原则和 概念? 概念?
将标记耦合修改为数据耦合举例

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

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

模式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)关系模型 关系模型给出子系统间的数据流的关系。

软件工程考核知识点-第4章-软件概要设计

软件工程考核知识点-第4章-软件概要设计

软件工程考核知识点-第4章-软件概要设计4.1 软件概要设计的基本任务在软件需求分析阶段,已经搞清楚了软件“做什么”的问题,并把这些需求通过规格说明书描述了出来,这也是目标系统的逻辑模型。

进入了设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件概要设计或结构设计。

4.1.1 基本任务1. 设计软件系统结构(简称软件结构)为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据库(文件),对于程序,则首先进行结构设计,具体为:(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。

(2)确定每个模块的功能。

(3)确定模块之间的调用关系。

(4)确定模块之间的接口,即模块之间传递的信息。

(5)评价模块结构的质量。

根据以上内容,软件结构的设计是以模块为基础的,在需求分析阶段,已经把系统分成层次结构。

设计阶段,以需求分析的结果为依据,从实现的角度进一步划分为模块,并组成模块的层次结构。

软件结构的设计是概要设计关键的一步,直接影响到下一阶段详细设计与编码的工作软件系统的质量及一些整体特性都在软件结构的设计中决定。

2.数据结构及数据库设计对于大型数据处理的软件系统,除了控制结构的模块设计外,数据结构与数据库设计也是很重要的。

(1)数据结构的设计逐步细化的方法也适用于数据结构的设计。

在需求分析阶段,已通过数据字典对数据的组成、操作约束、数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。

在概要设计阶段,宜使用抽象的数据类型。

(2)数据库的设计数据库的设计指数据存储文件的设计,主要进行以下几方面设计:①概念设计。

在数据分析的基础上,采用自底向上的方法从用户角度进行视图设计,一般用ER模型来表示数据模型,这是一个概念模型。

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

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


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

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


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

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

软件工程第4章概要设计

软件工程第4章概要设计
函数A 函数B 函数C 数据集
通常,通信内聚模块是通过数据流图来定义的。
5.通信内聚(2)
6.功能内聚
一个模块中各个部分都是完成某一具体功能 必不可少的组成部分 或者说该模块中所有部分都是为了完成一项 具体功能而协同工作,紧密联系,不可分割 的 软件结构中应多使用功能内聚类型的模块
内聚类型汇总
5.标记耦合
如果一组模块通过参数表传递信息 这个参数是: 数据结构 字符串 记录 不是简单变量
标记耦合举例 计算水电费
住户情况
计算水费
水费
住户情况
电费
计算电费
“住户情况”是一个数据结构,图中模块都 与此数据结构有关. “计算水费”和“计算电费”本无关,由于 引用了此数据结构产生依赖关系,它们之间 也是标记偶合.
4.2.2 软件结构风格与策略
1.软件结构风格取决于 程序的模块结构表明了程序各个模块的 组织情况,是软件的过程表示 数据的结构表明各个数据之间的关系和 各个数据元素的约束,是软件的信息表 示
2.软件结构的独立性风格
(1).独立性 软件系统中每个模块只涉及软件要求的 具体的子功能, 而和软件系统中其它的 模块的接口是简单的 一个模块和其它模块的独立程度是评价 一个模块设计好坏的重要度量尺度。
例如初始化模块和终止模块。
4.过程内聚
一个模块内部的处理成分是相关的,而且这些处 理必须以特定的次序执行
函数A 函数B 函数C
例如,把流程结构中的循环部分、判定部分、计 算部分分成一个模块,这三个任务组成的模块是 过程内聚模块。
5.通信内聚
如果一个模块内各功能部分都使用了相同的输入数 据,或产生了相同的输出数据,则称之为通信内聚 模块。

《软件工程实用教程》第4章_结构化软件设计

《软件工程实用教程》第4章_结构化软件设计

第4 章 結構化軟體設計
3.虛擬機風格 例:解釋器,通過虛擬機特定模組的解釋步驟 如下: 解釋引擎從被解釋的模組中選擇一條指令; 基於這條指令,引擎更新虛擬機內部的狀 態; 上述過程反復執行。
第4 章 結構化軟體設計
特點: 在虛擬機環境中運行的代碼不必須瞭解虛擬 機的具體細節。 一旦運行環境發生變化,只需要重寫虛擬機 本身,而不是整個系統。 通常虛擬機會限制在其中運行的軟體的行為, 特別是那些以實現跨平臺為目的的虛擬機, 如Java虛擬機和.NET CLR。 能夠使系統的結構更具層次性,使用虛擬機 提供的設施編寫的代碼,可以不考慮虛擬機 以外的實際環境,而在正確地實現了這種虛 擬機的環境中執行。
第4 章結構化軟體設計
本章學習內容: 1.瞭解概要設計的任務與過程 2.掌握結構化設計技術的基本原理與準則 3.掌握面向數據流分析的設計方法 4.瞭解面向數據的設計方法 5.掌握資料庫設計原則和步驟 6.瞭解常用的詳細設計工具 7.瞭解概要設計說明書的基本內容
第4 章 結構化軟體設計
4.1 概要設計的任務與過程 概要設計的目標是概要地說明軟體 應該怎樣實現,即解決軟體系統總 體結構設計的問題,包括軟體系統 的結構、模組劃分、模組功能和模 組間的聯繫等。
第4 章 結構化軟體設計
4.2.1 現代體系結構模型的基本概念
1.模式:是針對特定問題的成功解決方案,是指形成 了一種趨於固定的結構形式。 結構模式表達了軟體系統的基本結構組織形式或結 構方案,包含了一組預定義的子系統,規定了這些 子系統的責任,同時還提供了用於組織和管理這些 子系統的規則和嚮導。 設計模式為軟體系統的子系統、構件或者構件之間 的關係提供一個精練後的解決方案,描述了特定環 境下,用於解決通用軟體設計問題的構件以及這些 構件相互通信時的可重現結構。

软件概要设计

软件概要设计

第4章软件概要设计学习本章,我们要考虑以下几个问题:软件概要设计指的是什么软件概要设计要做的事情是什么用什么来评价软件设计的技术质量软件结构优化的准则是什么如何进行软件概要设计以上问题就是本章所要讨论的内容;一、软件概要设计指的是什么我们知道,软件设计是把一个软件需求转换为软件表示的过程,而概要设计又称结构设计就是软件设计最初形成的一个表示这里的表示是一个名词,它描述了软件的总的体系结构;简单地说软件概要设计就是设计出软件的总体结构框架;而后对结构的进一步细化的设计就是软件的详细设计或过程设计;本章所学内容主要就是软件的概要设计内容;二、软件概要设计的基本任务软件概要设计阶段要做的事情是什么呢总的来看有四个方面:它们是1、设计软件系统结构软件结构2、数据结构及数据库设计3、编写概要设计文档4、评审在需求分析阶段,已经把系统分解成层次结构,而在概要设计阶段,需要进一步分解,划分为模块以及模块的层次结构;划分的具体过程是:1采用某种设计方法,将一个复杂的系统按功能划分成模块;2确定每个模块的功能;3确定模块之间的调用关系;4确定模块之间的接口,即模块之间传递的信息;5评价模块结构的质量;对于大型数据处理的软件系统,还要对数据结构及数据库进行设计;在概要设计阶段,还要编写概要设计文档,我们初学者有一个不是很好的做法,就是在编程序时,往往不注意文档的编写,导致以后软件修改和升级很不方便,用户使用时也得不到帮助;所以应该在软件设计的每个阶段编写相应文档,在概要设计阶段,主要有以下文档需要编写:1概要设计说明书;2数据库设计说明书;3用户手册,4修订测试计划;最后一个任务就是评审,在概要设计中,对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等都要进行评审,以免在以后的设计中发现大的问题而返工;以上就是软件概要设计的四个基本任务,总结一下用八个字表示:两类结构文档评审;两类结构就是指软件结构和数据结构及数据库设计在了解了软件概要设计的基本任务之后,我们来看看软件设计的基本原理,也就是用于衡量软件设计的技术质量的一些标准;三、软件设计的基本原理1、模块化模块就是指在程序中的数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素;如高级语言中的过程,函数、子程序等;每个模块可以完成一个特定的子功能,各个模块可以按一定方法组装起来成为一个整体;从而实现整个系统的功能;模块化就是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程;为了解决复杂的问题,在软件设计中就必须把整个问题进行分解来降低复杂性,这样就可以减少开发工作量并降低开发成本和提高软件生产率;但是划分模块并不是越多越好,因为这会增加模块之间接口的工作量;所以划分模块的层次和数量应该避免过多或过少;2、抽象抽象这个词本身也比较抽象,老师要小明用抽象和具体造一个句子,可是他不懂,就问妈妈,什么是抽象,什么是具体妈妈告诉他:抽象就是看不见摸不着的,具体就是看得见摸得着的;小明懂了,很快造好了一个句子,是这样的:今天我很早起床,看见具体的妈妈在炒具体的菜,我打开窗户,抽象的新鲜空气呼地一下跑进来,真舒服啊;呵呵,事实上,抽象并不是这么简单的意思,它是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节,比如说我们可以把把男人女人老人小孩的共同本质特性抽出来之后形成一个概念"人",这个概念就是抽象的结果;在软件工程中就是这样,在每个阶段中,抽象的层次逐步降低,在软件结构设计中的模块分层也是由抽象到具体的分析和构造出来的;比如上一层的模块所进行的加工是一个抽象的操作"销售统计",分解到最后一层,就可能是具体"打印报表"的操作了;3、信息隐蔽信息隐蔽的意思就是指,在设计和确定模块时,使得一个模块内包含的信息过程或数据,对于不需要这些信息的其他模块来说是不能访问的;举个例子吧,假设我是程序中的一个模块,机是另一个模块,我在使用机时,对机的控制是通过几个按键来确定的,输入的数据是我的语音,输出的数据是对方的语音,而这些输入、输出的数据变换以及控制在机内部是怎么实现的我不需要知道,同时也不能加以直接控制,这样,如果机坏了,修复或更换后对我的使用是没有任何影响的;所以说,机这个模块的信息隐蔽是十分完善的;在软件设计中,模块的划分也要采取措施使它实现信息隐蔽;4、模块独立性模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单;这个概念就是上面说的三个基本原理的直接产物,在概要设计过程中,就是要求设计出具有良好模块独立性的软件结构;那么如何来衡量软件的模块独立性呢这里有两个定性的度量标准;1耦合性:就是指模块之间的联系紧密程度;模块之间联系越紧密,其耦合性越强,独立性就越差;模块的耦合性从低到高可分为以下几种类型:假设某人为一模块无直接耦合比如陌生人之间的联系数据耦合比如去售货员与顾客之间的联系标记耦合比如两个人下棋控制耦合领导和下属之间的联系公共耦合比如图书馆的所有借书者之间的联系内容耦合比如小两口之间的联系在软件设计中,提高模块的独立性,建立模块间尽可能松散的系统,是模块化设计的目标;为了降低模块间的耦合度,可以采取以下措施:1在耦合方式上降低模块间接口的复杂性;2在传递信息类型上尽量采用数据耦合,避免使用控制耦合,慎用或有控制地使用公共耦合;在实践中要根据实际情况综合考虑;2、内聚性内聚性是指模块内部各个元素彼此结合的紧密程度;根据内聚性的从低到高可分为以下六种类型:偶然内聚:指一个模块内的各处理元素之间没有任何联系;公共汽车内的人群逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能;警察局里的警察时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块;交响乐团的演奏员通信内聚:指模块内所有处理元素都在同一个数据结构上的操作;或者指各处理使用相同的输入数据或者产生相同的输出数据;建筑工地上的工人顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能的元素的输出就是下一功能元素的输入;我们可以想像纺织厂中从纺纱到织布的各个操作形成的一个模块,就是一种顺序内聚功能内聚:这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可,模块已不可再分;就如两个人演狮子舞,要完成狮子形象的再现,两个人缺一不可.耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚,低耦合,提高模块的独立性;在内聚性与耦合性发生矛盾的时候,最好优先考虑耦合性,也就是先保证耦合性低一些;四、软件结构的优化准则首先应学会用图形表示软件结构,软件结构图反映了整个系统的功能实现,即将来编好程序中的控制层次体系;软件结构往往用树状或网状结构的图形来表示;请大家对照课本的解释来看软件结构图包括哪些内容;我们已经知道了软件概要设计的主要任务就是软件结构的设计,为了提高设计的质量,可以根据下面的设计优化准则进行优化:在这些准则中,都是针对模块及模块间关系来提出的;1、模块的划分:要做到高内聚,低耦合,保持相对独立性;2、模块的控制:模块的作用范围要在他的控制范围内,判定所在的模块应与受其影响的模块在层次上尽量靠近3、形成的结构;软件结构的深度、宽度、扇出、扇入要适当4、模块的大小:要适中;5、模块的接口:模块的接口要简单、清晰、含义明确,便于理解、易于实现、测试与维护;五、概要设计的设计方法;一面向数据流的设计方法这是需要我们熟练掌握的方法面向数据流的设计方法是以需求阶段产生的数据流图为基础,按一定的步骤映射成软件结构,因此又称为结构化设计StructuredDesignSD;这是目前使用最广泛的软件设计方法之一,应该熟练掌握它;1、首先要研究数据流图DFD的类型,无论何种软件系统,DFD一般都可分为变换型和事务型两类;课本第51页先来看变换型数据流图,顾名思义,变换就是把输入的数据处理后变成另外的数据输出,所以变换型数据的工作过程就是三步:取得数据、变换数据和输出数据;在图4-6中,可以看到两股数据流经过交换中心变成一股数据流进行输出;虚线为标出的流界;再来看事务型数据流图,所谓事务也是一个处理,但不是数据变换,而是将输入数据流分离成许多发散的数据流,形成许多加工路径,并根据值选择其中一个路径来执行;举个例子,好比有一个邮件分发中心,把收进的邮件根据其发送地址进行分流,有的用飞机邮送,有的用汽车来运输等等;在大型软件系统中的DFD数据流图中,这两种类型特征都有可能存在;2、SD方法设计过程1精化DFD;2确定DFD类型并进行相应的映射;3分解上层模块,设计中下层模块结构4根据优化准则对软件结构求精;5描述模块功能、接口及全局数据结构6复查,如果有错则转向2修改完善,否则进入详细设计;下面我们通过例子来说明变换分析设计和事务分析设计方法;3、变换分析设计以课本53页图4-8为例说明变换分析设计;根据面向数据流的设计方法,第一步是精化DFD,也就是研究分析这个数据流图,我们可以看到图中从A到H的数据流向和加工,图形比较简单;第二步是确定DFD类型并确定加工中心,在这里已经说明为本图为变换型,在实际分析中应该根据每个相关操作来确定其类型;在图中,我们可以直观地看到中间几股数据流的汇合处是系统的变换中心;也可以通过双向寻找法来确定,左边是物理输入端,从f1沿着单向路径一直到f3,后面的f4是从C流出的,同时C还有f5流出,则可见f4,f5不能再看作是系统的输入,因此可确定f4,f5前一个数据流f3就是系统的逻辑输入,同样,我们从右边的物理输出端往左边沿数据流的反向寻找,可以发现f4,f6不能看作是整个系统的输出,因此可以确定f7,f8是逻辑输出端,然后在这两个分界处添上虚线,这样,DFD 的三部份就确定了;第三步设计软件结构的顶层和第一层,根据变换中心可以对应得到主模块的位置,就可以画出顶层模块即主模块,在实际应用中,这个模块的名字就是系统的名字,如销售管理系统等;然后在这个模块下方根据划分好的三个部分画出三个功能模块,即输入、变换和输出模块,就是图中的getf3,将f3变换成f7和f8模块,putf7及putf8模块,注意,这里应当为每个输入和输出设计一个模块;然后将这些模块与顶层模块用连线连上表示所属控制;画上相应的数据传送箭头;第四步分解上层模块,设计中下层模块;根据上面的方法,分解输入模块,图中的getf3模块的功能是向主模块提供数据,而在DFD中可以看到f3是数据流f2经过B操作后流出的,因此这里有两个部分,就是接收f2数据,再通过B转换流出;所以在getf3模块下画出两个子模块getf2和B操作模块;就这样一一分解,可以画出所有的输入和输出子模块,直到物理输入和输出为止;对于变换中心的下属模块,根据数据流和变换操作,以每个基本加工建立一个功能模块,可以画出CDE三个子模块;整个过程并不复杂,画好后根据实际情况对软件结构进行优化,也就是进行必要的合并或分解;以求设计出高内聚低耦合的模块组成的、具有良好特性的软件结构;4、事务分析设计,可以参见图4-9为例;其设计方法大同小异,首先确定DFD类型,这里已指明是事务型,然后找出DFD中的事务中心和加式路径;当DFD中时不要弄错,然后在分解子模块时在调度模块上加一个菱形符号表示判断处理;5、综合型数据流图与分层数据流图映射成软件结构的设计有了上面的基础,对综合型的数据流图也可以一一分开来进行设计了;6、设计后的处理,在软件结构形成之后,我们知道,概要设计的基本任务还有文档的编写,在这个阶段就是要编写一些文档,包括:1为每个模块写一份处理说明2为每个模块提供一份接口说明3数据结构说明4给出设计约束或限制5进行概要评审6设计优化;本节介绍的设计方法是本章的重点,要求熟练掌握;二基于IDEF0图的设计方法三表示软件结构图的另一种图形工具--HIPO图;HIPO图清晰易读,主要用于编写概要设计文档中的说明;本章小结:根据上面的学习,我们可以知道,软件概要设计的四个主要任务,知道评价软件结构设计质量的原理和两个标准即软件模块的耦合性及内聚性,根据这些原理提出了软件结构设计的优化准则,并且详细学习了软件结构的面向数据流图的设计方法;。

软件工程_总体设计

软件工程_总体设计
前一页
模块内聚
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)

软件概要设计

软件概要设计
方法和测试步骤的明确要求。 5)详细设计的实现计划:给出系统各个模块实现的
详细的设计思路。
返回节目录
5
第4章 软件概要设计
4.2 概要设计的基本原理
4.2.1 模块与模块独立性 4.2.2 抽象、信息隐蔽与局部化
返回节目录
6
第4章 软件概要设计
4.2.1 模块与模块独立性
所谓模块是指可以单独命名且可以通过名字来访问的 数据说明、可执行语句等程序对象的集合。 将这些模块组 装起来以满足整个问题的需求。
为什么模块要具有独立性呢?一般有以下两个主 要原因:
1)一个相对独立的模块的功能较为单一,接口 简单,易于开发。
2)一个相对独立的模块比较容易测试和维护。 模块的独立程度可以用两个定性的 标准 来度量, 即模块的 内聚性 和 耦合性 。
9
第4章 软件概要设计
1.内聚性 (cohesion) 内聚是模块功能强度的度量, 它标志一个模块内 部各个元素彼此结合的紧密程度 。一个理想的内聚 程度高的模块应该只完成一种功能。一般模块的内 聚性分为 7种类型,它们的关系如下图所示。
19
第4章 软件概要设计
信息内聚模块
查找 登录 删除
修改
符号表
几个加工同时引用一个共同的数据
20
第4章 软件概要设计
功能内聚
模块仅包括为完成某个功能所必须 的所有成分。 模块所有成分共同完成一个功 能,缺一不可 内聚性最强
21
第4章 软件概要设计
在软件的设计过程中,我们应该尽量使模块 的内聚性强一些。
例如:初始化系统模块、 系统结束模块、 紧急故障处理模块等均是时间性聚合 模块.
14
第4章 软件概要设计
过程内聚(顺序性组合)

第4章 软件设计

第4章 软件设计
详细设计阶段的主要任务包括: (1)模块的算法设计。 (2)模块内的数据结构设计。 (3)模块接口设计。 (4)其他设计。 (5)模块测试用例设计。 (6)编写详细设计说明书。 (7)详细设计评审。 2. 详细设计的原则 在详细设计过程中,主要根据以下3个原则: (1)详细设计是为后续具体编程实现做准备。 (2)处理过程应简明易懂。 (3)选择恰当的描述工具表述模块算法。
1. 模块化
模块是构成程序的基本构件,一般软件都由其模块和子模块构成。模 块化(Modular)是将复杂软件划分为功能相对独立且易于处理的模块的 过程。
4.1 软件总体设计
2. 抽象和逐步求精 抽象是指抓住事物的本质特性而暂时不考虑其细节的方法。 逐步求精是指为了集中精力解决主要问题而尽量推迟并逐步考虑细节问题 的方法,是人类解决复杂问题时采用的一种基本策略,也是软件工程技术 的基础。 3. 信息隐藏 信息隐蔽原理认为:模块所包含的“过程及数据”信息对于其他模块 应是隐蔽的。
图4-1 软件设计工作流程
4.1 软件总体设计
图4-2描绘了软件设计过程中的信息流。
图4-2 软件设计过程中的信息流
4.1 软件总体设计
总体设计的任务和内容主要包括: 1)软件的总体结构和模块外部设计。 2)软件处理流程设计。 3)确定软件的功能并分配。 4)数据结构设计。 5)网络及接口设计。 6)运行设计。 7)出错处理设计。 8)性能可靠性及安全保密设计。 9)维护设计。
4.1 软件总体设计
(2)详细设计。详细设计阶段的任务是:对模块图中每个模块 的过 程进行描述。常用的描述的方式有:流程图、N-S图、PAD图等。 2)面向数据流方法的设计过程 面向数据流的设计方法的目标是确定设计软件结构的一个系 统化的 途径。面向数据流方法设计过程,如图4-7所示。 SD法的总体设计过程需要从DFD 图导出初始的模块结构图, 首先要 分析DFD 图的类型,对不同类型的DFD图,采用不同的技术将其 转换为初始的模块结构图(SC 图)。一般将 DFD 图分为两种典型类 型:中心变换型和事务处理型
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章 软件设计
软件设计概述 软件体系结构 优秀设计的概念 传统的结构化设计 用户界面设计 构件级设计
西安交通大学 刘海岩
1
4.1 软件设计概述
1、软件设计中的主要活动
软件设计是将软件需求转换为软件表示的过程,是构 造和验证软件所需的三项技术活动(设计、编码、测试) 之一。设计过程主要有以下活动:
• 过程模型:注重系统系统必须适应业务和技术的 过程。
• 功能模型:一组功能构件按层次组成,下层向上 层提供服务,是一种特殊的框架模型。
西安交通大学 刘海岩
6
这些模型可用语言(ADL)描述,也可用图形(UML) 描述。
Bass等人对软件体系结构的定义强调了软件构件 的角 色。构件(component): 具有明确功能并可以分离出来的软 件或硬件。在体系结构设计的语境内,一个软件构件可以 是简单的程序模块,如:源程序文件、可执行文件,也可 以扩展到包括数据库以及网络配置中的“中间件”。构件 间的关系可以简单地从一个模块到另一个模块的过程调用, 也可以是复杂的数据库访问协议。
• 每个模块(或构件)的过程性设计 括各级抽象。
• 集成测试策略• 设计约束• 需来自交叉引用表• 参考文献
• 附录
文档中还可以包含描述系统如何运行的操作手册,以及出错
后系统的重新配置或特定的安全措施。
西安交通大学 刘海岩
4
4.2 软件体系结构
1、什么是软件体系结构
随着软件系统越来越大、越来越复杂,软件设计的核 心已经转移到新的计算模式,非传统的“程序=算法+数 据结构”,新的模式就是系统总体结的设计和规范。
西安交通大学 刘海岩
2
(2)体系结构设计:定义软件系统的整体组织结构,
有时称为软件系统设计。指系统中有哪些主要结构性元 素,以什么样的模式连接,互相之间如何交互以及它们 的接口。设计体系结构的作用:
• 便于理解和沟通
• 便于组织开发
• 便于扩展
• 便于重用
(3)接口设计:描述软件内部、软件与协作系统之 间以及软件与人之间如何通信。一个接口意味着信息流 (如数据、事件)和特定的行为类型。
(2)管道-过滤器风格
把系统看作是对相继输入数据的一系列变换。一批 数据进入系统,流经一个个构件最后到达终点(输出或 数据仓库)。构件称为过滤器,能够对数据进行渐进式 的转换(一种流变换为另一种流)。数据流的通路称为 管道。(见下图)
西安交通大学 刘海岩
11
西安交通大学 刘海岩
12
该风格中的过滤器是独立的,不与其他过滤器共享数据, 不知道其他过滤器的存在或功能。系统输出的正确性不取决 于所用过滤器的顺序。
软件体系结构(Architecture)为软件系统提供了一个结 构、行为和属性的高级抽象。由构成系统的元素(构件) 的描述、这些元素的相互作用、指导元素集成的模式以及 模式的约束组成。
软件体系结构不仅指出了系统的组织结构和拓扑结构, 并显示了系统需求和构成系统元素之间的对应关系,提供 了一些设计决策的基本原理。
西安交通大学 刘海岩
9
数据为中心的体系结构
仓库系统中有两类构件:中心数据存储构件及对中
心数据进行各种操作的一组构件集。中心数据存储与外 部构件集之间的信息交互是该模式的至关重要的问题, 系统承担的功能不同,信息交互的方式也不同。
西安交通大学 刘海岩
10
传统数据库系统中,中心数据存储是被动的数据库, 系统由输入流的事务指令触发相应进程执行。在黑板系 统中,中心数据存储的状态控制了进程的触发,即控制 完全由黑板的状态驱动,当有特别的数据可用时,会主 动通报外部构件(人工智能技术)。黑板系统的典型应 用是信号处理和模式识别系统。许多其他系统也组织成 仓库模式,如CASE工具集、可复用构件库、大型数据库 和搜索引擎等。
西安交通大学 刘海岩
8
• 数据流风格:批处理序列;管道/过滤器 • 调用/返回风格:主程序/子程序;面向对象风格;层次 结构 • 仓库风格:数据库系统;超文本系统;黑板系统 • 虚拟机风格:解释器 • 独立构件风格:进程通信;基于事件系统
介绍几种主要的体系结构风格:
(1)仓库风格 基于一个共享数据库的系统模型。(见下图)
西安交通大学 刘海岩
5
软件体系结构的模型有下列几种:
• 结构模型:是构件、连接件(定义构件之间交互 规则、消息协议的构造模块)有组织的集合。反映系 统的重要语义内容,包括系统的配置、约束等。
• 框架模型:与结构模型类似,不侧重细节,侧重 于系 统的整体结构(模式)。
• 动态模型:补充模型,强调系统的行为性质。
(4)构件级设计:对体系结构中的结构性元素进行 过程性描述(包括算法)并设计构件的接口。
西安交通大学 刘海岩
3
2、软件设计文档
设计阶段的一个重要产品就是描述所构建的系统的文档。
主要内容:
• 前言:系统目标;主要需求
• 数据设计
用一系列图形和符
• 体系结构设计
号描述系统、界面
• 接口设计(人机交互、外部接口) 和构件的结构,包
(1) 数据设计:将分析时创建的信息域模型(ERD、 DD)转换成软件构件级的数据结构和应用级的数据库体系 结构。
为满足当今企业对大中型规模的业务信息的需求,遍 历现存的数据库以试图抽取合适的业务级信息而产生了数 据挖掘技术。由于多个数据库结构不同、库中信息命名格 式及详细程度不同以及许多其他因素造成了数据挖掘的困 难,需建立不同于一般数据库的大的数据仓库,存放以主 要业务主题进行组织的、展示统一定义标准的并在较长时 间内保持稳定的数据。
西安交通大学 刘海岩
7
2、体系结构的风格
体系结构风格也是构造的一种模式(Pattern),类似于 建筑行业中的建筑风格,是描述某一特定应用域中系统组 织方式的惯用模式,反映了领域中众多系统所共有的结构 和语义特性。
研究体系结构风格的意义: • 有利于发现不同系统在较高级别上的共同特性。 • 对体系结构的了解,使得在设计软件结构时选择合适 的模式,进行正确地设计。 • 使用常用的、规范的模式来组织结构,使别的设计者 易于理解、便于交流。 • 有利于较高级别上的软件复用。判断能否在不同的软 件系统中使用同一体系结构。 Garlan和Shaw(1996)对体系结构的分类如下:
相关文档
最新文档