软件工程全部课件-第3章软件设计

合集下载

软件工程课本讲解第3章软件设计理论(第3章+第8章

软件工程课本讲解第3章软件设计理论(第3章+第8章

• 公共耦合的复杂程度随耦合模块的个 数增加而显著增加。若只是两模块间 有公共数据环境,则公共耦合有两种 情况。松散公共耦合和紧密公共耦合 。
27
公共耦合存在的问题:
(1)软件可理解性降低 (2)诊断错误困难 (3)软件可维护性差, (4)软件可靠性差
(公共数据区无保护措施)
慎用公共数据区和全程变量!!!
将初始SC根据模块独立性原 则进行精化,对模块进行合并、分 解修改、调整,得到高内聚、低 耦合模块,得到易于实现、易于 测试和易于维护的软件结构,产 生设计文档的最终SC。
47
改进软件结构设计的指导原则
(软件结构设计的启发式规则)
(1)模块功能的完善化 (2)消除重复功能 (3)将模块的影响限制在模块的控制范围内 (4)深度、宽度、扇出和扇入适中 (5)模块大小适中 (6)降低模块接口的复杂性 (7)模块功能可预测 (8)避免模块的病态连接 (9)根据设计约束和可移植性要对软件打包48
•局部化:是把一些关系密切的软件元素物 理地放得彼此靠近。显然, 局部化有助于 实现信息隐藏。
•“隐藏”意味着有效的模块化可以通过定 义一组独立的模块而实现,这些独立的模 块彼此间仅仅交换那些为了完成系统功能 而必须交换的信息。
46
如何分解一个软件才能得到最佳的模块组合呢?
模块优化原则
3.4.4 软件模块结构的改进
(Informational Cohesion)
这种模块完成多个功能,各个功能
都在同一数据结构上操作,每一项
功能有一个唯一的入口点。这个模
块将根据不同的要求,确定该执行
哪一个功能。由于这个模块的所有
功能都是基于同一个数据结构(符
号表),因此,它是一个信息内聚

软件工程课件 第三 软件设计共56页PPT

软件工程课件 第三 软件设计共56页PPT

谢谢
11、越是没有本领的就越加自命不凡。——邓拓 12、越是无能的人,越喜欢挑剔别人的错儿。——爱尔兰 13、知人者智,自知者明。胜人者有力,自胜者强。——老子 14、意志坚强的人能把世界放在手中像泥块一样任意揉捏。——歌德 15、最具挑战性的挑战莫过于提升自我。——迈克尔·F·斯特在使用得当时很 少遇到 抵抗。 ——塞 ·约翰 逊 2、权力会使人渐渐失去温厚善良的美 德。— —伯克
3、最大限度地行使权力总是令人反感 ;权力 不易确 定之处 始终存 在着危 险。— —塞·约翰逊 4、权力会奴化一切。——塔西佗
5、虽然权力是一头固执的熊,可是金 子可以 拉着它 的鼻子 走。— —莎士 比

软件工程课件 第三章

软件工程课件 第三章

软件工程课件第三章在软件工程的领域中,第三章通常聚焦于软件设计的核心概念与方法。

软件设计是软件开发过程中的关键环节,它将需求分析阶段所确定的功能和性能要求转化为具体的软件架构和模块结构,为后续的编码和测试工作奠定坚实的基础。

软件设计的目标是创建一个高效、可靠、可维护且易于理解的软件系统。

这需要综合考虑诸多因素,如系统的功能需求、性能要求、安全性要求、用户体验等。

同时,还要考虑软件的可扩展性,以适应未来可能的变化和升级。

在软件设计中,架构设计是至关重要的一环。

架构设计就像是为一座大楼绘制蓝图,它决定了软件系统的整体结构和组织方式。

一个良好的软件架构应该具有清晰的层次结构,各个模块之间的职责明确,并且能够有效地支持系统的功能和性能需求。

例如,常见的分层架构将软件系统分为表示层、业务逻辑层和数据访问层。

表示层负责与用户进行交互,业务逻辑层处理核心的业务逻辑,数据访问层则负责与数据库进行交互。

这种分层架构使得各个层次之间的职责清晰,便于开发和维护。

模块设计也是软件设计的重要组成部分。

模块是软件系统中的基本单元,具有相对独立的功能。

在进行模块设计时,需要遵循高内聚、低耦合的原则。

高内聚意味着模块内部的各个元素紧密相关,共同完成一个特定的功能;低耦合则表示模块之间的依赖关系尽量少,使得一个模块的修改对其他模块的影响最小化。

例如,一个负责用户登录的模块,应该只专注于处理登录相关的功能,而不涉及其他诸如用户信息管理等功能。

接口设计在软件设计中也不容忽视。

接口是模块之间进行交互的桥梁,定义了模块之间的通信方式和数据格式。

良好的接口设计能够提高模块之间的协作效率,降低系统的复杂性。

例如,在设计一个数据存储接口时,需要明确规定数据的读写方法、参数类型和返回值类型等。

数据结构的选择也是软件设计中的一个关键决策。

不同的数据结构适用于不同的场景,选择合适的数据结构能够提高软件的性能和效率。

例如,对于频繁插入和删除操作的场景,链表可能是一个更好的选择;而对于快速查找操作,二叉搜索树或者哈希表可能更为合适。

软件工程课件第3章 软件设计基础

软件工程课件第3章  软件设计基础
例:将问题(P1+P2)分解为P1,P2 设函数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)
客户N 请求
服务器M
两层Client/Server结构
C/S的工作模式是一种远程过程调用(RPC,Remote Procedure
Call)模式,允许客户端和服务器端有不同的软硬平台。
第3章 软件设计
第 13 页13
软件体系结构设计
层次模型——又称为分层模型,通常用于建立子系统的接口 模型。每层提供一组服务,每层定义一个抽象机。
第3章 软件设计
第 3 页3
软件设计概述
开发阶段信息流描述了软件设计从软件需求到软件编码,起 到承上启下的作用。
信息描述
功能 描述
行为描述
设计
数据设计
总体结构设计
其它需求
过程设计
编码
程序模块
测试
开发阶段的信息流 第3章 软件设计
集成并确认软件
第 4 页4
软件设计概述
软件设计的任务
设计任务:将需求阶段获得的需求说明(模型)转换为计算 机中可实现的系统。
……
a 数据集
第3章 软件设计
……
集中式数据仓库
b
数据集
N 数据集
c
数据集
第 9 页9
软件体系结构设计
仓库模型的主要优缺点: 优点: ➢ 数据统一存储和管理,确保了数据的实时性。

《软件工程》课件第3章 软件设计

《软件工程》课件第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) 系统出错处理设计:出错信息,补救措施,系 统恢复设计。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.子系统设计
❖ 在定义和设计子系统时,应该遵循以下一些常用的 设计准则。
①子系统应该具有良好定义的接口,通过这些接口可 以与系统的其他部分通信。
②除了极少数的“通信类”外,子系统的所有其他类 都只能与子系统内部的类通信。
③子系统的数目应该尽可能少。 ④子系统内部仍然可以进一步分解成更小的子系统以
2、抽象(Abstraction):
忽略细节,分层理解问题,自顶向下层层加细。
例:开发一个CAD软件,实现一个二维绘图系统的全 部功能,供低级计算机辅助设计使用。
抽象层次I:用问题所处环境的术语来描述这个软件。 该软件包括一个计算机绘图界面,向绘图 员显示图形,以及一个数字化仪界面,用 以代替绘图板和丁字尺。所有直线、折线、 矩形、圆及曲线的描画、所有的几何计算、 所有的剖面图和辅助视图都可以用这个 CAD软件实现……。
2.事务分析
事务T1
确定 事务 类型
事务T2 ...
事务Tn
编辑 事务T1
编辑好的 事务T1
更新 文件F1
审计信息1
编辑 事务T2
编辑好的 事务T2
...
更新 文件F2
审计信息2 ...
写入 审计 文件
编辑 事务Tn
编辑好的 事务Tn
更新 文件Fn
审计信息n
2.事务分析
2.事务分析
❖ 一般地,一个大型的软件系统是变换型和事 务型的混合结构。所以,在系统设计时,首 先利用变换分析方法把软件系统分为输入、 变换和输出三个部分,然后针对数据流图各 部分的特点,适当用变换分析和事务分析方 法,得到初始系统结构图。
mph
产生 mph 显示
发出 铃声
铃声
mph显示
mpg显示
数字仪表板 控制
接收传感器 信号
数据转换 控制
驱动仪表板
一般问题的 一级分解方 法:
M
I
P
O
第二步:映射
I :由边界向回溯,将 每个遇到的处理器映 成相应的层模块。
P :每个处理直接对应 一个下层模块。
O :由边界向外推,方 法与 I 类似
3.2.3 面向对象的设计方法
❖ 面向对象设计的主要目的则是将分析阶段得 到的需求分析模型转化为“怎么做”的设计 模型,从而为下一阶段的编码阶段提供坚实 的设计指南。
❖ 面向对象中常用的设计顺序:子系统设计、 对象设计、消息设计和方法设计。
1.子系统设计
❖ 在子系统设计中,可以对面向对象分析模型 从数据(对应于对象模型)、行为(对应于 行为模型)和功能(对应于功能模型)三个 方面结合起来进行问题分解,从而定义出若 干个一致的类与对象、关系、行为和功能的 集合,这里的每一个集合就是一个子系统。
第3章 软件设计
内容介绍
❖ 3.1 软件设计概述 ❖ 3.2 概要设计 ❖ 3.3 模块和模块化 ❖ 3.4 详细设计 ❖ 3.5 Jackson程序设计方法 ❖ 3.6 Warnier程序设计方法 ❖ 3.7 用户界面设计 ❖ 3.8 软件设计规格说明书 ❖ 3.9 案例分析 ❖ 3.10 小结
输入模块
变换模块
输出模块
输入转折点
输出转折点
2.事务分析
❖ 面向数据流图的另一种设计方法是事务分析 法。
❖ 对数据流图中存在一个或多个具有事务处理 特征的事务处理中心时(称为事务型数据流 图,形状呈辐射状),对该数据流图或者图 中的一部分应该采用事务分析的方法进行软 件结构设计,从而将代表事务处理特征的数 据流图映射成合适的模块化层次结构。
注:每个模块应附一简要说明描述 ① 进出该模块的信息(接口描述); ② 模块内部的信息; ③ 过程陈述,包括主要判定点及任务等; ④ 对约束和特殊特点的简短讨论。
… … …
… … …
⑵ 事务分析
I
II
S
A
B
C
M
II
S
I
ABC
3.软件结构的改进
❖ 模块的大小
通常,模块的大小以50~100行为宜,最多不超过500行,可以用 1~2页纸打印。
旋转信号
燃料流 传感器信号
读 旋转 信号
SPS
收集 和求 平均
确定 加/减

SPS
Hale Waihona Puke 箭头指示产生 加/减 速显示
上箭头 水平线
读和 校核
燃烧流
计算 gph
SPS
转换
成 转/分
rpm 计算
rpm
里程
计算 mph,超
速值
超速值
英里
下箭头
产生 里程 显示
显示
gph
计算 燃料 消耗
mph mpg
产生
mpg 显示
等。
3、数据库设计 (略)
4、测试计划 (详见第七章)
5、文档、审查
进行系统分析时需要遵循的策略
1. “简单-复杂-简单”。分析经常要经历“简单- 复杂-简单”的过程,前一个简单表现为分析人 员“认为简单”;随着分析的深入,原以为简单 的问题会越来越复杂;最后,经过概括、消化、 分解,使得需求简单明了。
细节,直至用程序设计语言描述的算法实现为止。
抽象(Abstraction):
忽略细节,分层理解问题,自顶向下层层加细。
例:开发一个CAD软件,实现一个二维绘图系统的全 部功能,供低级计算机辅助设计使用。
抽象层次I:用问题所处环境的术语来描述这个软件。 该软件包括一个计算机绘图界面,向绘图 员显示图形,以及一个数字化仪界面,用 以代替绘图板和丁字尺。所有直线、折线、 矩形、圆及曲线的描画、所有的几何计算、 所有的剖面图和辅助视图都可以用这个 CAD软件实现……。
END
抽象层次III:程序过程表示。以2-D绘图生成任务
为例:
terminates)
PROCEDURE 2-D drawing creation REPEAT UNTILE (drawing creation task
DO WHILE (digitizer interaction occurs) Digitizer interface task;
keyboard interaction task; PROCESS analysis/computation CASE
View: auxiliary view task; Section: cross sectioning task; …… END; …… END REPETITION;
END PROCEDURE.
4、模块独立性(Module independence) 好设计的关键:每个模块完成一个相对独立的 子功能,并且与其它模块间的接口简单。
3.2.2 面向数据流图的设计方法
❖ 面向数据流图的设计方法是基于抽象和功能 分解进行软件结构设计的一种结构化设计方 法。
❖ 有两种面向数据流图的设计方法:数据流分 析和事务分析。
❖ 模块的扇入与扇出
模块的扇入是指共有多少其他模块直接调用本模块。模块的扇出指 本模块直接调用了多少其他模块,也称为控制宽度。
①一个模块的扇出不要超过7个(7±2原则)。 ②良好的软件结构图往往上层有较高的扇出,底层有较高的扇入,呈清真
寺状。
❖ 模块的作用域与控制域
模块的作用域是指模块中判定的影响范围。 模块的控制域是指模块本身及其直接或间接调用的模块。
1.抽象与求精 2.模块化和信息隐藏 3.模块独立性
1.抽象与求精
❖ 抽象是一种思考和解决问题的形式,它集中注意事物某个一 般性级别上的问题,避开不必要的低层细节。抽象可以分成 若干级别,级别越高,细节就越少。
❖ 抽象过程是指具有特定功能的一个命令的指令序列。 ❖ 抽象数据则是描述数据对象的一个命名的数据集合。 ❖ 求精的主要思想是将某个宏观功能不断分解,逐步确立过程
3.1 软件设计概述
3.1.1 软件设计概念与重要性 3.1.2 软件设计的任务与策略 3.1.3 软件设计基本原则
3.1.1 软件设计概念与重要性
❖ 软件设计就是根据软件需求分析阶段产生的 数据和功能需求,采用某种设计方法进行概 要设计(体系结构设计、数据设计/数据库设 计)、详细设计(模块设计、过程设计、用 户界面设计),生成所要构造的实体过程, 是软件工程的技术核心。
❖ 概括地说,概要设计进行数据设计/数据库设计和系统体系 结构设计。
❖ 概要设计主要完成以下任务:
❖ 制定规范; ❖ 软件系统结构的总体设计; ❖ 数据设计; ❖ 概要设计评审。
开始考虑“How”,但仍属高层设计(确定黑盒关系) §1. 过程 1、确定最佳方案:
从DFD出发进行任务分解,不同的划分方法即对应
❖ 理论上,只要需求规格说明是用数据流图表 示,就可以使用数据流分析方法进行软件结 构设计。
1.数据流分析
❖ 数据流分析,又称变换分析,是一种将数据 流图转换成软件结构图的系统设计方法。
❖ 计算机系统都有一个从“输入”到“变换” 到“输出”的过程。
1.数据流分析
❖ 对数据流进行分析的关键问题是要找出从外 部信息转换成内部数据的转折点(称为输入 转折点)以及内部数据转换成外部信息的转 折点(称为输出转折点)。
DETERMINE drawing request CASE Line: line drawing task; Rectangle: rectangle drawing task; Circle: circle drawing task; ……
END; DO WHILE (keyboard interaction occurs)
在这个抽象层次上,给出了初步的过程表示, 所用的术语都已面向软件,而且模块化的工作已 经开始显露。
3、信息隐蔽(Information hiding)
The clients of a module know about its services only through its interface; the implementation is hidden from them (hence may change without affecting the clients).
相关文档
最新文档