第4章 总体设计

news2024/11/22 22:44:12

文章目录

  • 第5章 总体设计
    • 5.1 设计过程
      • 例题
    • 5.2 设计原理
      • 5.2.1 模块化
        • 模块化的优势
      • 例题
      • 5.2.2 抽象
      • 5.2.3 逐步求精
        • 求精实际上是细化的过程
        • 与抽象的关系
      • 5.2.4 信息隐藏和局部化
      • 5.2.5 模块独立
        • 模块独立的重要性
        • 模块独立的定性标准度量
        • 耦合
          • ① 无直接耦合
          • ② 数据耦合
          • ③ 标记耦合
          • ④ 控制耦合
          • ⑤ 外部耦合
          • ⑥ 公共耦合
          • ⑦ 内容耦合
        • 例题
        • 内聚
          • ① 偶然性内聚
          • ② 逻辑性内聚
          • ③ 时间内聚
          • ④ 过程内聚
          • ⑤ 通信内聚
          • ⑥ 顺序内聚
          • ⑦ 功能性内聚
        • 例题
    • 5.3 启发规则
      • 例题

第5章 总体设计

总体设计是决定”怎样做”。也就是概括的说,系统应该如何实现,因此总体设计也被称作概要设计。

5.1 设计过程

在这里插入图片描述
在这里插入图片描述

例题

在这里插入图片描述

5.2 设计原理

5.2.1 模块化

模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。模块是构成程序的基本构件
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求
模块化是为了使一个复杂的大型程序能被人的智力所管理,是软件应该具备的唯一属性。
在这里插入图片描述

模块化的优势

• 模块化可以使软件结构清晰易于理解
• 模块化使软件易于测试和调试,有助于提高软件的可靠性加粗样式
• 模块化能提高软件的可修改性
• 模块化有助于软件开发工程的组织管理

例题

在这里插入图片描述

5.2.2 抽象

定义:抽出事物的本质特性而暂时不考虑它们的细节。
软件工程过程的每一步都是对软件解法的抽象层次的一次精化
在这里插入图片描述
逐步精细和模块化的概念,与抽象是紧密相关的。
在这里插入图片描述

5.2.3 逐步求精

为了能集中精力解决主要问题而尽量推迟对问题细节的考虑.

求精实际上是细化的过程

与抽象的关系

• 抽象与求精是一对互补的概念。抽象是的设计师能够说明过程和数据,同时却忽略了底层细节。
• 求精帮助设计者在设计过程中逐步揭示底层细节。
• 这两个概念有助于设计者在设计演化过程中创造出完整的设计模型。

5.2.4 信息隐藏和局部化

局部化 : 是把一些关系密切的软件元素物理地放的彼此靠近。显然局部化有助于实现信息隐藏。
信息隐藏 : 信息隐藏原则定义和隐藏了模块内的过程细节和模块内的本地数据结构。
使用信息隐藏原理作为模块化系统设计的标准可为软件测试和维护期间带来极大好处。

5.2.5 模块独立

模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。

模块独立的重要性

1)有效的模块化(即有独立的模块)的软件比较容易开发出来。
2)独立的模块比较容易测试和维护
模块独立是好设计的关键,而设计又是决定软件质量的关键环节

模块独立的定性标准度量

耦合衡量不同模块彼此之间互相依赖(连接)的紧密程度。
内聚衡量一个模块内部各个元素彼此结合的紧密程度。

耦合

在这里插入图片描述

① 无直接耦合

无直接耦合是指调用模块和被调用模块之间没有直接数据联系

② 数据耦合

数据耦合是指调用模块和被调用模块之间存在单变量之类的数据联系。
在这里插入图片描述

③ 标记耦合

标记耦合是指调用模块和被调用模块之间存在复杂结构变量(数组、结构、对象)之类的数据联系
在这里插入图片描述

④ 控制耦合

控制耦合是指调用模块和被调用模块之间存在控制关联
在这里插入图片描述

⑤ 外部耦合

外部耦合是指多个模块访问全局变量
在这里插入图片描述

⑥ 公共耦合

多个模块访问全局复杂结构变量。
公共环境在这里插入图片描述

⑦ 内容耦合

运行调用模块控制被调用模块的内部数据。
在这里插入图片描述

例题

在这里插入图片描述
在这里插入图片描述

内聚

内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。
在这里插入图片描述

① 偶然性内聚

模块由多个完成不同任务的语句段组成,各语句段之间的联系十分松散或根本没有任何联系
降低了可维护性,模块不可重用

② 逻辑性内聚

执行一系列相关的操作,执行哪个操作由调用者来选择。几个逻辑相关的功能放在同一模块中。
对文件记录执行插入、删除、修改的编辑模块
在这里插入图片描述

③ 时间内聚

执行一系列与时间相关的操作。如初始化把需要同时执行的动作组合在一起形成模块

模块内操作间关系很弱,但是与其他模块的操作却有很强的关联,重用性差。

④ 过程内聚

一组会依照特定顺序执行的程序放在同一模块中
操作间是弱连接,重用性差

⑤ 通信内聚

模块中所有元素都使用同一个数据结构上操作
缺乏重用性

⑥ 顺序内聚

如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据)

⑦ 功能性内聚

模块内所有元素执行同一功能,即只执行一个操作或只达到单一的目标。
易维护、重用性好、易扩充

例题

在这里插入图片描述

5.3 启发规则

  1. 改进软件结构提高模块独立性
  2. 模块规模应该适中
  3. 深度、宽度、扇出和扇入都应适当
  4. 模块的作用域应该在控制域之内
  5. 力争降低模块接口的复杂程度
  6. 设计单入口单出口的模块
  7. 模块功能应该可以预测

例题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/643281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库基础 11

第十一章 数据处理之增删改 1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中 2. 更新数据3. 删除数据4. MySQL8新特性:计算列 1. 插入数据 1.1 实际问题 解决方式:使用 INSERT 语句向表中插入…

8.1 正弦波振荡电路(2)

四、石英晶体正弦波振荡电路 石英晶体谐振器,简称石英晶体,具有非常稳定的固有频率。对于振荡频率稳定性要求高的电路,应选用石英晶体作选频网络。 1、石英晶体的特点 将二氧化硅( SiO 2 \,\textrm {SiO}_2\, SiO2​&#xff0…

华为OD机试真题 JavaScript 实现【找终点】【2023 B卷 100分】,附详细解题思路

一、题目描述 给定一个正整数数组&#xff0c;设为nums&#xff0c;最大为100个成员&#xff0c;求从第一个成员开始&#xff0c;正好走到数组最后一个成员&#xff0c;所使用的最少步骤数。 要求&#xff1a; 第一步必须从第一元素开始&#xff0c;且1 < 第一步的步长 &…

测试 4 年,从外包 15K 跳槽去字节 38K+12,啃完这份笔记你也可以

粉丝小王转行做测试已经是第4个年头&#xff0c;一直是一个不温不火的小职员&#xff0c;本本分分做着自己的事情&#xff0c;觉得自己的工作已经遇到了瓶颈&#xff0c;一个偶然的机会&#xff0c;获得了一份软件测试全栈知识点学习笔记&#xff0c;通过几个月的学习&#xff…

虚拟机(VMware )部署

一、VMware 概述&#xff1a; VMware是一家提供虚拟化解决方案的领先公司&#xff0c;其产品被广泛应用于企业和个人用户的计算环境中。VMware的虚拟化技术可以将物理计算资源&#xff08;如服务器、存储和网络&#xff09;抽象成虚拟化的资源&#xff0c;从而提供更高的灵活性…

路径规划算法:基于黑猩猩优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于黑猩猩优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于黑猩猩优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法…

MySQL之流程控制,索引

一、条件语句 if 条件语句 delimiter // CREATE PROCEDURE proc_if () BEGINdeclare i int default 0;if i 1 THENSELECT 1;ELSEIF i 2 THENSELECT 2;ELSESELECT 7;END IF;END // delimiter ; 二、循环语句 while循环 delimiter // CREATE PROCEDURE proc_while () BEGI…

测试用例设计背后的底层逻辑你一定不知道

目录 前言 1、万物皆可测 2、用例的本质 3、业务建模 4、其他一些测试法 总结&#xff1a; 前言 测试用例是每位测试人员都绕不开的话题&#xff0c;也是大家习以为常的事情。几乎所有测试相关的公众号、博客、专栏&#xff0c;都会提及测试用例&#xff0c;由此可见它的…

华为OD机试真题 JavaScript 实现【矩阵稀疏扫描】【2023 B卷 100分】,附详细解题思路

一、题目描述 如果矩阵中的许多系数都为零&#xff0c;那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省&#xff0c;并且在许多大的实践中都会出现矩阵稀疏的问题。 给定一个矩阵&#xff0c;现在需要逐行和逐列地扫描矩阵&#xff0c;如果某一…

备战金九银十,互联网大厂最全“Java 面试宝典 +Java 核心知识集”汇总

搬砖也有好几年了&#xff0c;本想在金三银四跳槽来着&#xff0c;结果我想你们应该猜到了&#xff0c;于是计划着下半年跳槽试试&#xff0c;算是提前为金九银十做准备吧&#xff01; 现在着手准备着以防万一自己措手不及&#xff0c;这不&#xff0c;这几天刚整理出炉的两份…

强化学习笔记-11 Off-policy Methods with Approximation

前几章我们讨论了off-policy方式&#xff0c;其同on-policy方式最大的不同之处在于其在训练所采取的动作&#xff0c;是根据behavior policy进行决策的&#xff0c;而不是根据target policy。这种方式的好处在于兼顾了exploitation and exploration。本节将讨论如何通过模型近似…

Spring MVC 的创建连接和使用

目录 前言&#xff1a; MVC 是什么&#xff1f; 1. Spring MVC 项目的创建和连接&#xff1a; 1.1 创建 1.2 连接 2. RequestMapping 注解使用详析&#xff1a; 2.1 指定请求类型&#xff1a; 2.1.1 指定 GET 请求 2.1.2 指定 POST 请求 3. 参数的获取与传递&#xff1a; 3.1 传…

CTR预估之WideDeep系列模型:DeepFM/DCN

前言 在CTR预估中&#xff0c;FM系列模型使用浅层网络&#xff08;线性模型&#xff09;&#xff0c;让模型自己学习特征组合交互&#xff0c;为显式建模的方式&#xff1b;而DNN系列模型使用深层网络&#xff0c;隐式挖掘模型的高阶特征交互。 本文继续介绍结合这两者优点的…

在我电脑中待了很久的5款使用办公软件

你电脑中用的最久的软件是哪些&#xff1f;以下是否有你曾经使用过的软件呢&#xff1f;工欲善其事&#xff0c;必先利其器&#xff0c;今天继续分享五款实用的办公软件。 矢量图绘制——Inkscape Inkscape是一款用于绘制和编辑矢量图形的工具。它可以让你用简单的操作来创建…

AI学术交流——“人工智能”和“神经网络学习”

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.人工智能 1.“人工智能之父” 2.达特茅斯会议&#xff08;人工智能起源&a…

2023四大服装管理软件,第1款最受欢迎!

对于服装行业来说&#xff0c;依靠传统的方式管理服装门店或工厂&#xff0c;很难实现精准高效的管理&#xff0c;往往是耗费了大量的时间和精力&#xff0c;也没有挣到什么钱。 这就需要借助服装管理软件&#xff0c;来降低管理和运营的成本&#xff0c;减少工作量的同时&…

自带海量设计模板的网站 精准尺寸一键套用出图

现在大家通过手机去购物时都是通过查看商品的详情页&#xff0c;因为详情页会介绍产品的功能和产品的设计优势等&#xff0c;还有产品的基本信息。那么对于刚接触电商的商家来讲&#xff0c;制作详情页和商品主图是一件困难的事情&#xff0c;但如果套用模板或者是直接选择一个…

vue结合elementui表格el-table实现弹窗checkbox自定义列显示隐藏,刷新保持上次勾选不丢失,附完整代码

el-table实现自定义列显示隐藏 有时候表格太多列,要是默认全都显示就会很拥挤,又不能固定只显示某些列,这时候我们可以让用户自定义要显示隐藏哪些列。 网上很多教程都是用的v-if,但是v-if非常麻烦,每一列都要写判断条件,本篇文章将用动态渲染的方式来控制表格列的显示隐…

【Linux】perf使用和FrameGraph

本文主要说明perf和FrameGraph的使用&#xff0c;例如&#xff1a;火焰图的输出&#xff0c;系统性能状态查看等。 Author:mayimin perf version 3.10.0-1160.80.1.el7.x86_64.debug 参考资料&#xff1a;perf example&#xff1a; https://www.brendangregg.com/perf.html 一…