软件设计概述PPT课件
合集下载
软件设计概要讲义PPT(83张)

自顶向下,逐步细化 软件结构(搭出一个大框架) 程序结构 结构图 模块化(模块化思想,把软件分成多个模块) 抽象(通过抽象完成模块之间对外的一个黑盒装置) 信息屏蔽和局部化 模块独立
三、软件设计的概念和原理
自顶向下,逐步细化将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。 软件结构 ①软件结构包括两部分。程序的模块结构和数据的结构。 ②软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了。
项目经理
负责分配设计任务,追踪设计阶段进度,在项目组内协调设计过程中所需资源,参与设计文档的同行评审
系统分析员
完成相关的设计任务,编写设计文档,修改设计评审中发现的问题
项目组开发人员代表
参与设计文档的同行评审
其他项目经理
参与设计文档的同行评审
其他项目系统分析员
参与设计文档的同行评审
质量保证员
检查设计过程及设计阶段产生的文档,跟踪发现的问题的解决情况
一、软件设计的目标和任务
1、目标 系统结构设计定义软件系统各主要成份之间的关系。 过程设计。把结构成份转换成软件的过程性描述。
开发阶段的信息流
把需求翻译成文档
2、软件设计的任务 概要设计(系统设计),将软件需求转化为数据结构和软件的系统结构。概要设计由技术总监,部门经理和项目经理来做的,有可能会加一两个核心程序员。
二维画图又分为以下CASE,案例,任务的集合
(2)数据抽象 在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。 例如,在CAD软件中,定义一个叫做drawing绘图的数据对象。可将drawing规定为一个抽象数据类型,定义它的内部细节为:
三、软件设计的概念和原理
自顶向下,逐步细化将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构。 软件结构 ①软件结构包括两部分。程序的模块结构和数据的结构。 ②软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统的模型出发,对整个问题进行分割,使其每个部分用一个或几个软件成份加以解决,整个问题就解决了。
项目经理
负责分配设计任务,追踪设计阶段进度,在项目组内协调设计过程中所需资源,参与设计文档的同行评审
系统分析员
完成相关的设计任务,编写设计文档,修改设计评审中发现的问题
项目组开发人员代表
参与设计文档的同行评审
其他项目经理
参与设计文档的同行评审
其他项目系统分析员
参与设计文档的同行评审
质量保证员
检查设计过程及设计阶段产生的文档,跟踪发现的问题的解决情况
一、软件设计的目标和任务
1、目标 系统结构设计定义软件系统各主要成份之间的关系。 过程设计。把结构成份转换成软件的过程性描述。
开发阶段的信息流
把需求翻译成文档
2、软件设计的任务 概要设计(系统设计),将软件需求转化为数据结构和软件的系统结构。概要设计由技术总监,部门经理和项目经理来做的,有可能会加一两个核心程序员。
二维画图又分为以下CASE,案例,任务的集合
(2)数据抽象 在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。 例如,在CAD软件中,定义一个叫做drawing绘图的数据对象。可将drawing规定为一个抽象数据类型,定义它的内部细节为:
软件设计概要设计

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

软件测试的目标
确保软件质量
通过测试发现软件中存在的缺陷和错误,提 高软件的质量和稳定性。
验证软件功能
验证软件是否符合需求规格,是否能够完成 预定的功能和任务。
提高软件可靠性
通过不断测试和修复,提高软件的可靠性和 可用性,降低故障率。
优化性能
通过测试发现软件的性能瓶颈,优化软件性 能,提高运行效率。
社交网络设计案例,以微信为例,介 绍其功能、特点、技术实现和用户体 验等方面的设计。
用户体验
微信注重用户体验,通过不断优化界 面设计和交互细节,提升了用户的使 用感受。
01
02
功能设计
微信作为一款社交应用,其功能设计 主要包括聊天、朋友圈、公众号等, 满足了用户社交需求。
03
特点
微信具有简洁、易用、安全等特点, 用户可以快速上手并享受优质的社交 体验。
页面布局
淘宝采用清晰的页面布局,将商品信 息、搜索框、导航栏等元素合理排布, 方便用户浏览和查找。
购物流程
淘宝的购物流程设计简洁明了,用户 可以轻松完成注册、登录、浏览、购 买等操作。
案例三:移动应用的设计
抖音的界面设计简洁大方,色彩搭配 合理,图标和按钮符合用户习惯,提 升了用户体验。
抖音在性能优化方面做得很好,无论 是启动速度还是运行流畅度都得到了 保障。
提高数据完整性
保证数据的准确性和可靠性,确保 数据的正确性和一致性。
04
数据库设计的基本步骤
概念设计
根据需求分析结果,设计出符 合业务需求的数据库概念模型。
物理设计
根据逻辑模型,设计出数据库 的物理结构,包括存储结构、 索引、分区等。
需求分析
了解用户需求,收集相关数据, 分析业务流程和数据流程。
软件设计(详细设计)PPT课件

Case条件
Case1 Case2 … Casen
AB
N
c.多分支结构
循环条件 Do-While
部分
d.当型循环结构
Do-Until 部分
循环条件
e.直到型循环结构
A f.调用子程序A
图3.4 盒图的基本符号
F A
盒图例子
T B C D
A:
Case 1234 E FGH
(3) PAD图
PAD(Problem Analysis Diagram)是问题分析图。 日立公司发明和推广(1973)。
实用软件工程
第三章 软件设计 (详细设计)
第3章 软 件 设 计 软件设计通常分为两个阶段:总体设计阶段和详
细设计阶段。 总体设计
详细设计
详细3设.1计软的件基设本计任的务基本任务
详细设计是总体设计的进一步的具体化,主 要确定每个模块的具体执行过程,故也称为过程 设计。其基本任务有: (1).为每个模块进行详细的算法设计。 (2).为模块内的数据结构进行设计。 (3).对数据库进行物理设计 。 (4).界面设计。 (5).编写文档 (6).评审
打开数据库 SQL查询语句赋值 通过记录集对象打开SQL语句设定的记录
Y 记录集末端?
N 记数变量加1,输出记录字段值及图像
转跳下一记录 关闭数据库链接对象、记录集对象,并释放资源
输出记录数和提示 结束
程序流程图的缺点: 1)程序流程图本质上不是逐步求精的好工具,它诱
使程序员过早地考虑程序的控制流程,而不去考 虑程序的全局结构。
5)可用于表示程序逻辑,也可用于描绘数据结构; 6)PAD图的符号支持自顶向下、逐步求精的方法。
2)程序流程图中用箭头代表控制流,因此程序员不 受任何约束,可以完全不顾结构程序设计的精神, 随பைடு நூலகம்转移控制。
软件设计模式ppt课件

*
* @author Administrator
*
*/
精选ppt
42
创建型模式之一(工厂方法模式)
package com.demo.factory;
import com.demo.factory.itf.ISwordFactory; import com.demo.factory.model.AbstractSword; import com.demo.factory.model.object.QixingSword;
实例二(多文档)
精选ppt
25
接口的作用
接口的定义方面来说,接口其实就是类和类之间的一种 协定,一种约束(安全性).
方便统一管理.另一个是方便调用
提高模块内的内聚性,降低模块间的耦合性.
扩展性
使用方便,可读性强,结构清晰的特点。
interface IBark { void Bark(); }
够有静态的不能被修改的数据成员(也就是必须 是static final的,不过在 interface中一般不定义 数据成员),所有的成员方法都是abstract的。
abstract class和interface所反映出的设计理念不
同。其实abstract class表示的是"is-a"关系,
精选ppt
精选ppt
3
设计模式的基本概念-软件危 机
软件危机的产生原因
✓ 与软件本身的特点有关。软件不同于硬件,它是计算机 系统中的逻辑部件而不是物理部件;软件不会因使用时 间过长而“老化”或“用坏”;在写出程序代码并在计 算机上试运行之前,软件开发过程的进展情况较难衡量, 软件质量也较难评价,因此管理和控制软件开发过程十 分困难;软件质量不是根据大量制造的相同实体的质量 来度量,而是与每一个组成部分的不同实体的质量紧密 相关,因此,在运行时所出现的软件错误几乎都是在开 发时期就存在而一直未被发现的,改正这类错误通常意 味着改正或修改原来的设计,这就在客观上使得软件维 护远比硬件维护困难;软件是一种信息产品,具有可延 展性,属于精柔选p性pt 生产,与通用性强的硬件相比,软件更 4
《软件工程》课件第3章 软件设计

第3章 软件设计
第3章 软件设计
3.1 软件概要设计概述 3.2 软件设计的基本原理 3.3 软件结构准则 3.4 基于IDEF0图的设计方法 3.5 软件详细设计 3.6 软件详细设计表示法 3.7 小结 习题
第3章 软件设计
3.1 软件概要设计概述
3.1.1 概要设计基本任务 1.设计软件系统结构(简称软件结构) 为了实现目标系统,最终必须设计出组成这个系
4.评审 在该阶段,对设计部分是否完整地实现了需求中 规定的功能、性能等要求,设计方案的可行性、关键 的处理和内外部接口定义正确性、有效性以及各部分 之间的一致性等,都一一进行评审。
第3章 软件设计
3.1.2 软件概要设计文档 概要设计说明书是概要设计阶段结束时提交的技
术文档。按国标GB8576—88的《计算机软件产品开发文 件编制指南》规定,软件设计文档可分为“概要设计 说明书”、“详细设计说明书”和“数据库设计说明 书”。
在大多数情况下,模块间的控制耦合并不是必需的, 可以将被调模块内的判定上移到调用模块中去,同时将 被调模块按其功能分解为若干单一功能的模块,将控制 耦合改变为数据耦合。
第3章 软件设计
(5) 公共耦合:指通过一个公共数据环境相互作 用的那些模块间的耦合。公共数据环境可以是全程变 量或数据结构、共享的通信区、内存的公共覆盖区及 任何存储介质上的文件和物理设备等(也有将共享外部 设备分类为外部耦合的)。
概要设计说明书的主要内容如下: (1) 引言:编写目的,背景,定义,参考资料。 (2) 总体设计:需求规定,运行环境,基本设计 概念和处理流程,结构。
第3章 软件设计
(3) 接口设计:用户接口,外部接口,内部接口。 (4) 运行设计:运行模块组合,运行控制,运行时 间。 (5) 系统数据结构设计:逻辑结构设计,物理结构 设计,数据结构与程序的关系。 (6) 系统出错处理设计:出错信息,补救措施,系 统恢复设计。
第3章 软件设计
3.1 软件概要设计概述 3.2 软件设计的基本原理 3.3 软件结构准则 3.4 基于IDEF0图的设计方法 3.5 软件详细设计 3.6 软件详细设计表示法 3.7 小结 习题
第3章 软件设计
3.1 软件概要设计概述
3.1.1 概要设计基本任务 1.设计软件系统结构(简称软件结构) 为了实现目标系统,最终必须设计出组成这个系
4.评审 在该阶段,对设计部分是否完整地实现了需求中 规定的功能、性能等要求,设计方案的可行性、关键 的处理和内外部接口定义正确性、有效性以及各部分 之间的一致性等,都一一进行评审。
第3章 软件设计
3.1.2 软件概要设计文档 概要设计说明书是概要设计阶段结束时提交的技
术文档。按国标GB8576—88的《计算机软件产品开发文 件编制指南》规定,软件设计文档可分为“概要设计 说明书”、“详细设计说明书”和“数据库设计说明 书”。
在大多数情况下,模块间的控制耦合并不是必需的, 可以将被调模块内的判定上移到调用模块中去,同时将 被调模块按其功能分解为若干单一功能的模块,将控制 耦合改变为数据耦合。
第3章 软件设计
(5) 公共耦合:指通过一个公共数据环境相互作 用的那些模块间的耦合。公共数据环境可以是全程变 量或数据结构、共享的通信区、内存的公共覆盖区及 任何存储介质上的文件和物理设备等(也有将共享外部 设备分类为外部耦合的)。
概要设计说明书的主要内容如下: (1) 引言:编写目的,背景,定义,参考资料。 (2) 总体设计:需求规定,运行环境,基本设计 概念和处理流程,结构。
第3章 软件设计
(3) 接口设计:用户接口,外部接口,内部接口。 (4) 运行设计:运行模块组合,运行控制,运行时 间。 (5) 系统数据结构设计:逻辑结构设计,物理结构 设计,数据结构与程序的关系。 (6) 系统出错处理设计:出错信息,补救措施,系 统恢复设计。
软件架构设计 PPT

– 架构要涵盖的内容和决策太多了,超过了人脑“一蹴而就”的 能力范围,因此采用“分而治之”的办法从不同视角分别设计 ;同时,也为软件架构的理解、交流和归档提供了方便。
– 多视图方法是软件架构归档的方法,更是指导我们进行架构 设计的思维方法。
• 逻辑架构 – 逻辑架构关注功能。其设计着重考虑功能需求。
– 提高质量。
• 软件产品线:指具有一组可管理的、公共特性的、软件密集性 系统的集合,这些系统满足特定的市场需求或任务需求,并且 按照预定义方式从一个公共的核心资产集开发得到。
• 软件产品线架构:针对一个公司或组织内的一系列产品而设计 的通用架构。
• 软件架构对软件产品线开发的作用: – 固化核心知识; – 提供可重用资产; – 缩短推出产品的周期; – 降低开发和维护成本; – 提高产品质量; – 支持批量定制;
– 胶着Viscosity——以与原有设计保持一致的方式来对实施变 更已经非常困难,诱使开发人员绕过它选择容易但有害的途 径,其结果却使系统死的更快。
• 什么是软件架构 – 软件架构的概念很混乱。如果你问五个不同的人,可能会得 到五种不同的答案。
– 软件架构概念主要分为两大流派: • 组成派:软件架构 = 组件 + 交互。 • 决策派:软件架构 = 重要决策集。
软件架构设计模式与实践
康凯
1
目录
• 软件架构视图 • 软件生命周期与软件架构介绍 • 架构设计的GRASP模式 • 质量属性驱动架构设计策略 • 软件架构模式分析及其实际运用 • 架构设计原则 • 面向对象的设计原则 • 架构设计验证 • 数据访问层设计(持久层设计) • 借鉴RUP中的设计流程 • 领域模型及业务逻辑层在架构设计中的实现 • 设计模式本质 • SOA的设计思想 • 软件架构实践 • 软件系统架构实践与剖析
– 多视图方法是软件架构归档的方法,更是指导我们进行架构 设计的思维方法。
• 逻辑架构 – 逻辑架构关注功能。其设计着重考虑功能需求。
– 提高质量。
• 软件产品线:指具有一组可管理的、公共特性的、软件密集性 系统的集合,这些系统满足特定的市场需求或任务需求,并且 按照预定义方式从一个公共的核心资产集开发得到。
• 软件产品线架构:针对一个公司或组织内的一系列产品而设计 的通用架构。
• 软件架构对软件产品线开发的作用: – 固化核心知识; – 提供可重用资产; – 缩短推出产品的周期; – 降低开发和维护成本; – 提高产品质量; – 支持批量定制;
– 胶着Viscosity——以与原有设计保持一致的方式来对实施变 更已经非常困难,诱使开发人员绕过它选择容易但有害的途 径,其结果却使系统死的更快。
• 什么是软件架构 – 软件架构的概念很混乱。如果你问五个不同的人,可能会得 到五种不同的答案。
– 软件架构概念主要分为两大流派: • 组成派:软件架构 = 组件 + 交互。 • 决策派:软件架构 = 重要决策集。
软件架构设计模式与实践
康凯
1
目录
• 软件架构视图 • 软件生命周期与软件架构介绍 • 架构设计的GRASP模式 • 质量属性驱动架构设计策略 • 软件架构模式分析及其实际运用 • 架构设计原则 • 面向对象的设计原则 • 架构设计验证 • 数据访问层设计(持久层设计) • 借鉴RUP中的设计流程 • 领域模型及业务逻辑层在架构设计中的实现 • 设计模式本质 • SOA的设计思想 • 软件架构实践 • 软件系统架构实践与剖析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
E(P1+P2) >E(P1)+E(P2)
P1,P2 问题 C 问题复杂度 E 工作量
最小本成区
模块化
软件系统的模块化是指整个软件 被划分成若干单独命名和可编址 的部分,称之为模块。这些模块 可以被组装起来以满足整个问题 的需求。 把问题/子问题的分解与软件开 发中的系统/子系统或系统/模 块对应起来,就能够把一个大而 复杂的软件系统划分成易于理解 的比较单纯的模块结构。
信息内聚 (Informational Cohesion)
这种模块完成多个功能,各个功 能都在同一数据结构上操作,每 一项功能有一个唯一的入口点。 这个模块将根据不同的要求,确 定该执行哪一个功能。由于这个 模块的所有功能都是基于同一个 数据结构(符号表),因此,它 是一个信息内聚的模块。
信息内聚模块可以看成是多 个功能内聚模块的组合,并 且达到信息的隐蔽。即把某 个数据结构、资源或设备隐 蔽在一个模块内,不为别的 模块所知晓。
软件设计过程
概要设计 详细设计
软件设计
概要设计:
软件的组成 各组成成分的关系
详细设计
算法 数据结构
概要设计
基于功能层次结构建立系统。
采用某种设计方法,将系统按功能划 分成模块的层次结构
确定每个模块的功能 建立与已确定的软件需求的对应关系 确定模块间的调用关系 确定模块间的接口 评估模块划分的质量
巧合内聚(Coincidental Cohesion)
巧合内聚又称为偶然内聚。当模块内各部 分之间没有联系,或者即使有联系,这种 联 系也很松散,
则称这种模 块为巧合内
聚模块,它
是内聚程度
最低的模块。
模块间的耦合
非直接耦合(Nondirect Coupling)
如果两个模块之间没有直接关系, 它们之间的联系完全是通过主模块 的控制和调用来 实现的,这就是 非直接耦合。这 种耦合的模块独 立性最强。
详细设计
在详细设计过程中,需要完成的 工作是:
1.确定软件各个组成部分内的 算法以及各部分的内部数据组织
2.选定某种过程的表达形式来 描述各种算法。
3.进行详细设计的评审
模块化设计
分解: 最小成本区 信息隐藏, 模块独立性:
内聚, 耦合(数据耦合与特征耦合)
C(P1+P2) >C(P1)+C(P2)
模块的独立性
模块(Module)
“模块”,又称“组件”。它一般 具有如下三个基本属性:
功能:描述该模块实现什么功能 逻辑:描述模块内部怎么做 状态:该模块使用时的环境和条 件
在描述一个模块时,还必须按模块 的外部特性与内部特性分别描述
模块的外部特性
模块的模块名、参数表、其中的 输入参数和输出参数,以及给程序 以至整个系统造成的影响
通信内聚 (Communication Cohesion) 如果一个模块内各功能部分都使用 了相同的输入数据,或产生了相同 的输出数据,则称之为通信内聚模 块。通常,通信内聚模块是通过数 据流图来定义的。
过程内聚(Procedural Cohesion) 使用流程图做为工具设计程序时, 把流程图中的某一部分划出组成 模块,就得到过程内聚模块。例 如,把流程图中的循环部分、判 定部分、计算部分分成三个模块, 这三个模块都是过程内聚模块。
模块的内部特性
完成其功能的程序代码和仅供该 模块内部使用的数据
模块独立性
模块独立性, 是指软件系统中每个模块 只涉及软件要求的具体的子功能, 而和 软件系统中其它的模块的接口是简单的
例如, 若一个模块只具有单一的功能且 与其它模块没有太多的联系, 则称此模 块具有模块独立性
一般采用两个准则度量模块独立性。即 模块间耦合和模块本身内聚
耦合是模块之间的互相连接的紧 密程度的度量。
内聚是模块功能强度(一个模块内 部各个元素彼此结合的紧密程度) 的度量。
模块独立性比较强的模块应是高 内聚低耦合的模块。
模块内 聚
功能内聚 (Functional Cohesion) 一个模块中各个部分都是完成 某一具体功能必不可少的组成 部分,或者说该模块中所有部 分都是为了完成一项具体功能 而协同工作,紧密联系,不可 分割的。则称该模块为功能内 聚模块。
第四章 软件设计概述
软件设计的任务和 模块化设计 自顶向下逐步细化 设计文档及其复审
软件设计的任务和步骤
软件设计的任务,就是把需求阶段产 生的软件需求说明转换为软件设计 文档 软件设计的步骤
概要设计 (复审) 详细设计 (复审)
开发阶段的信息流
软件设计是后续开发步骤及软件维 护工作的基础。如果没有设计,只 能建立一个不稳定的系统结构
时间内聚(Classical Cohesion) 时间内聚又称为经典内聚。这种 模块大多为多功能模块,但模块 的各个功能的执行与时间有关, 通常要求所有功能必须在同一时 间段内执行。例如初始化模块和 终止模块。
逻辑内聚(Logical Cohesion)
这种模块把几种 相关的功能组合 在一起,每次被 调用时,由传送 给模块的判定参 数来确定该模块 应执行哪一种功 能。
软件设计任务
从工程管理的角度来看,软件 设计分两步完成。
概要设计,将软件需求转化 为数据结构和软件的系统结构。 详细设计,即过程设计。通 过对结构表示进行细化,得到 软件的详细的数据结构和算法。
数据设计侧重于数据结构的定义。
系统结构设计定义软件系统各主 要成份之间的关系。
过程设计则是把结构成份转换成 软件的过程性描述。在编码步骤, 根据这种过程性描述,生成源程 序代码,然后通过测试最终得到 完整有效的软件。
抽象化
软件系统进行模块设计时,可 有不同的抽象层次。
在最高的的解法。
在较低的抽象层次上,则采用 过程化的方法。
信息隐蔽
由 parnas 方法提倡的信息隐蔽 是指,每个模块的实现细节对 于其它模块来说是隐蔽的。也 就是说,模块中所包含的信息 (包括数据和过程)不允许其 它不需要这些信息的模块使用。
数据耦合 (Data Coupling)
如果一个模块访问另一个模块时,彼此之 间是通过简单数据参数 (不是控制参数、 公共数据结构或外部变量) 来交换输入、 输出信息的,则称这种耦合为数据耦合。
P1,P2 问题 C 问题复杂度 E 工作量
最小本成区
模块化
软件系统的模块化是指整个软件 被划分成若干单独命名和可编址 的部分,称之为模块。这些模块 可以被组装起来以满足整个问题 的需求。 把问题/子问题的分解与软件开 发中的系统/子系统或系统/模 块对应起来,就能够把一个大而 复杂的软件系统划分成易于理解 的比较单纯的模块结构。
信息内聚 (Informational Cohesion)
这种模块完成多个功能,各个功 能都在同一数据结构上操作,每 一项功能有一个唯一的入口点。 这个模块将根据不同的要求,确 定该执行哪一个功能。由于这个 模块的所有功能都是基于同一个 数据结构(符号表),因此,它 是一个信息内聚的模块。
信息内聚模块可以看成是多 个功能内聚模块的组合,并 且达到信息的隐蔽。即把某 个数据结构、资源或设备隐 蔽在一个模块内,不为别的 模块所知晓。
软件设计过程
概要设计 详细设计
软件设计
概要设计:
软件的组成 各组成成分的关系
详细设计
算法 数据结构
概要设计
基于功能层次结构建立系统。
采用某种设计方法,将系统按功能划 分成模块的层次结构
确定每个模块的功能 建立与已确定的软件需求的对应关系 确定模块间的调用关系 确定模块间的接口 评估模块划分的质量
巧合内聚(Coincidental Cohesion)
巧合内聚又称为偶然内聚。当模块内各部 分之间没有联系,或者即使有联系,这种 联 系也很松散,
则称这种模 块为巧合内
聚模块,它
是内聚程度
最低的模块。
模块间的耦合
非直接耦合(Nondirect Coupling)
如果两个模块之间没有直接关系, 它们之间的联系完全是通过主模块 的控制和调用来 实现的,这就是 非直接耦合。这 种耦合的模块独 立性最强。
详细设计
在详细设计过程中,需要完成的 工作是:
1.确定软件各个组成部分内的 算法以及各部分的内部数据组织
2.选定某种过程的表达形式来 描述各种算法。
3.进行详细设计的评审
模块化设计
分解: 最小成本区 信息隐藏, 模块独立性:
内聚, 耦合(数据耦合与特征耦合)
C(P1+P2) >C(P1)+C(P2)
模块的独立性
模块(Module)
“模块”,又称“组件”。它一般 具有如下三个基本属性:
功能:描述该模块实现什么功能 逻辑:描述模块内部怎么做 状态:该模块使用时的环境和条 件
在描述一个模块时,还必须按模块 的外部特性与内部特性分别描述
模块的外部特性
模块的模块名、参数表、其中的 输入参数和输出参数,以及给程序 以至整个系统造成的影响
通信内聚 (Communication Cohesion) 如果一个模块内各功能部分都使用 了相同的输入数据,或产生了相同 的输出数据,则称之为通信内聚模 块。通常,通信内聚模块是通过数 据流图来定义的。
过程内聚(Procedural Cohesion) 使用流程图做为工具设计程序时, 把流程图中的某一部分划出组成 模块,就得到过程内聚模块。例 如,把流程图中的循环部分、判 定部分、计算部分分成三个模块, 这三个模块都是过程内聚模块。
模块的内部特性
完成其功能的程序代码和仅供该 模块内部使用的数据
模块独立性
模块独立性, 是指软件系统中每个模块 只涉及软件要求的具体的子功能, 而和 软件系统中其它的模块的接口是简单的
例如, 若一个模块只具有单一的功能且 与其它模块没有太多的联系, 则称此模 块具有模块独立性
一般采用两个准则度量模块独立性。即 模块间耦合和模块本身内聚
耦合是模块之间的互相连接的紧 密程度的度量。
内聚是模块功能强度(一个模块内 部各个元素彼此结合的紧密程度) 的度量。
模块独立性比较强的模块应是高 内聚低耦合的模块。
模块内 聚
功能内聚 (Functional Cohesion) 一个模块中各个部分都是完成 某一具体功能必不可少的组成 部分,或者说该模块中所有部 分都是为了完成一项具体功能 而协同工作,紧密联系,不可 分割的。则称该模块为功能内 聚模块。
第四章 软件设计概述
软件设计的任务和 模块化设计 自顶向下逐步细化 设计文档及其复审
软件设计的任务和步骤
软件设计的任务,就是把需求阶段产 生的软件需求说明转换为软件设计 文档 软件设计的步骤
概要设计 (复审) 详细设计 (复审)
开发阶段的信息流
软件设计是后续开发步骤及软件维 护工作的基础。如果没有设计,只 能建立一个不稳定的系统结构
时间内聚(Classical Cohesion) 时间内聚又称为经典内聚。这种 模块大多为多功能模块,但模块 的各个功能的执行与时间有关, 通常要求所有功能必须在同一时 间段内执行。例如初始化模块和 终止模块。
逻辑内聚(Logical Cohesion)
这种模块把几种 相关的功能组合 在一起,每次被 调用时,由传送 给模块的判定参 数来确定该模块 应执行哪一种功 能。
软件设计任务
从工程管理的角度来看,软件 设计分两步完成。
概要设计,将软件需求转化 为数据结构和软件的系统结构。 详细设计,即过程设计。通 过对结构表示进行细化,得到 软件的详细的数据结构和算法。
数据设计侧重于数据结构的定义。
系统结构设计定义软件系统各主 要成份之间的关系。
过程设计则是把结构成份转换成 软件的过程性描述。在编码步骤, 根据这种过程性描述,生成源程 序代码,然后通过测试最终得到 完整有效的软件。
抽象化
软件系统进行模块设计时,可 有不同的抽象层次。
在最高的的解法。
在较低的抽象层次上,则采用 过程化的方法。
信息隐蔽
由 parnas 方法提倡的信息隐蔽 是指,每个模块的实现细节对 于其它模块来说是隐蔽的。也 就是说,模块中所包含的信息 (包括数据和过程)不允许其 它不需要这些信息的模块使用。
数据耦合 (Data Coupling)
如果一个模块访问另一个模块时,彼此之 间是通过简单数据参数 (不是控制参数、 公共数据结构或外部变量) 来交换输入、 输出信息的,则称这种耦合为数据耦合。