第6章:结构化开发方法

第6章:结构化开发方法

系统设计基本原理

1、抽象 抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或者掩盖不是很重要或非本质的方面。

模块化

模块化是指将一个待开发的软件分解成若干个小的、简单的部分一模块,每个模块可独立地开发、测试,最后组装成完整的程序。模块化的目的是使程序的结构清晰,容易阅读、理解、测试和修改。

模块设计的原则是对修改封闭,对扩展开放。如果一个模块可以作为一个独立体被其它程序调用,则称模块具有封闭性。如果一个模块可以被扩充,则称模块具有开放性。一个模块直接调用其它模块的个数称为模块的扇出系数;反之,一个模块被其它模块调用时,直接调用它的模块个数称为模块的扇入系数。经验表明,一个设计成功的系统的平均扇入、扇出系数通常是3或4,一般不应超过7,否则出错的概率增大。

软件设计的主要任务是设计软件的结构、过程和模块,其中软件结构设计的主要任务是确定模块间的组成关系。

1、模块化设计要求高内聚、低耦合,模块独立体现的就是高内聚低耦合。 2、在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则: (1)模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。不是越小越好。 (2)模块的扇入和扇出要合理。模块的扇入指模块直接上级模块的个数。模块的直属下级模块个数即为模块的扇出。 (3) 深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。需要控制模块接口的复杂性。3、尽力使模块的作用域在其控制域之内。模块控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。模块作用域:指受该模块内一个判定所影响的所有模块的集合。

信息隐蔽

信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。

模块独立

模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单 衡量模块独立程度的标准有两个:耦合和内聚。

耦合是指模块之间联系的紧密程度。耦合度越高,则模块的独立性越差。

内聚是指模块内部各元素之间联系的紧密程度。内聚度越低,则模块的独立 性越差。因此,模块独立就是希望每个模块都是高内聚、低耦合的。

模块化的目的是使程序的结构清晰,容易阅读、理解、测试、修改。 模块的独立程序由两个定性标准度量:内聚和耦合。耦合衡量不同模块彼此 间相互依赖的紧密程度。内聚衡量一个模块内部各个元素彼此结合的紧密程度。 高内聚,低耦合是一个好的模块的标准,是模块设计的追求。

耦合

耦合按从强到弱的顺序分为以下几种: 1、内容耦合,一个模块直接修改或作为另一个模块的数据,或者直接转入 另一下模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模 块。 2、公共耦合,两个以上的模块共同引用一个全局数据项就称为公共耦合。 3、控制耦合,一个模块在界面上传递一个信号(如开关值、标志量等)控制 另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。 4、标记耦合,模块间通过参数传递复杂的内部数据结构,称为标记耦合。 此数据结构的变化将使相关的模块发生变化。 5、数据耦合,模块间通过参数传递基本类型的数据,称为数据耦合。 6、非直接耦合,模块间没有信息传递时,属于非直接耦合。 如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合。

内聚

内聚按强度由低到高有以下几种类型: 1、偶然内聚,如果一个模块的各成分之间毫无关系,则称为偶然内聚。 2、逻辑内聚,内个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。 3、时间内聚,如果一个模块完成的功能必须在同一时间内执行,但这些功 能只是因为时间因素关联在一直,则称为时间内聚。 4、过程内聚,如果一个模块内部的处理成分是相关的,而且这些处理必须 以待定的次序执行,则称为过程内聚。 5、通信内聚,如果一个模块的所有成分都作同一数据集或生成同一数据集, 则称为通信内聚。

6、顺序内聚,一个模块的各个成分和同一个功能密切相关,而且一个成分 的输出作为另一个成分的输入。 7、功能内聚,模块的所有成分对于完成单一的功能都是必须的,则称为功 能内聚。

模块内聚类型

模块间的耦合和模块的内聚是度量模块独立性的两个准则。内聚是模块功能强度的度量,即模块内部各个元素彼此结合的紧密程度。一个模块内部各个元素之间的紧密程度越高,则其内聚性越高,模块独立性越好。

模块内聚类型主要有以下几类: 偶然内聚/巧合内聚:指一个模块内的各处理元素之间没有任何联系。 逻辑内聚:指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。时间内聚:把需要同时执行的动作组合在一起形成的模块。 过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程执行。 通信内聚:指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据。 顺序内聚:指一个模块中的各个处理元素都密切相关于同一个功能且必须顺序执行,前一个功能元素的输出就是下一功能元素的输入。 功能内聚:指模块内的所有元素共同作用完成一个功能,缺一不可。

结构化分析方法

结构化分析方法概述

数据流图

数据字典(DD)

结构化设计方法

结构化设计主要包括: ①体系结构设计:定义软件的主要结构元素及其关系。 ②数据设计:基于实体联系图确定软件涉及的文件系统的结构及数据库的表结构。 ③接口设计:描述用户界面,软件和其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。 ④过程设计:确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。

系统总体结构设计

系统结构设计应遵循以下原则: 分解一协调原则, 自顶向下原则。 信息隐蔽、抽象的原则 致性原则。 明确性原则。 模块之间的耦合度尽可能小,模块的内聚度尽可能高 模块的扇入系数和扇出系数要合理。 模块的规模适当

子系统划分要遵循以下原则 子系统要具有相对独立性。 子系统之间数据的依赖性尽量小。 子系统划分的结果应使数据冗余较小 子系统的设置应考虑今后管理发展的需要 子系统的划分应便于系统分阶段实现: 子系统的划分应考虑到各类资源的充分利用

模块是组成系统的基本单位,它的特点是可以组合、分解和更换。系统中任何个处理功能都可以看成是一个模块。根据模块功能具体化程度的不同,可以分为逻辑模块和物理模块。

一个模块要具备以下4个要素: 输入和输出:模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那里取得输入,进行加工后再把输出返回给调用者。 处理功能:指模块把输入转换成输出所做的工作 内部数据:指仅供该模块本身引用的数据。 程序代码:指用来实现模块功能的程序。

数据流图

数据流图一基本慨念

1)数据流图或称数据流程图,是一种便于用户理解、分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。

数据流图是一种图形化表示数据在系统内部或系统之间流动的图形工具。它展示了数据如何从一个地方流向另一个地方,在系统中传递、存储、处理和转换的过程。

数据流图通常包括以下几个主要元素:

  1. 实体(Entity):代表系统中存储或产生数据的源或目的地,如数据库、文件、传感器等。

  2. 过程(Process):代表对数据执行的操作或处理过程,如数据的转换、计算、过滤等。

  3. 数据流(Data Flow):代表数据在系统内部或系统之间流动的路径。

  4. 数据存储(Data Store):代表数据的持久化存储,通常用于存储和检索数据。

  5. 控制流(Control Flow):代表控制数据流的顺序和条件。

2)数据字典 数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典用于对数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。

数据字典有4类条目:数据流条目、数据存储条目、加工条目和数据项条目。数据字典管理主要是指把字典条目按照某种格式组织后存储在字典中并提供排序、查找、统计等功能。

数据字典(Data Dictionary)是一个结构化的文件或数据库,用于描述系统中使用到的数据项以及这些数据项之间的关系。数据字典通常包含了对数据项的定义、属性、数据类型、取值范围、关联关系等详细信息。

数据字典的作用包括但不限于以下几个方面:

  1. 数据定义和标准化:数据字典提供了对系统中各个数据项的准确定义,可以帮助确保数据的一致性和标准化。

  2. 数据管理和维护:数据字典记录了系统中所有使用到的数据项,以及它们的属性和关联关系,方便对数据进行管理和维护。

  3. 数据共享和交流:数据字典为不同团队或人员提供了一个统一的数据信息来源,促进数据的共享和交流。

  4. 数据分析和设计:数据字典可以作为系统分析和设计的基础,帮助分析人员理解系统中的数据结构和关系。

  5. 数据质量和准确性控制:数据字典可以帮助识别数据质量问题,提高数据的准确性和完整性。

在数据字典中,通常包含了以下信息:

  • 数据项的标识符和名称

  • 数据项的描述和定义

  • 数据项的数据类型和长度

  • 数据项的取值范围和约束条件

  • 数据项的关联关系和依赖关系

数据字典是系统分析和设计中重要的工具之一,它有助于帮助团队成员对系统中的数据有一个清晰的了解,促进项目的顺利进行和数据管理的规范化。

外部实体与系统的数据交互是不变。系统更加的细化。大的加工细分成小的加工

数据流图一应注意的问题

(1)适当地为数据流、加工、数据存储、外部实体命名,名字应反映该成分的实际含义,避免空洞的名字。 (2)画数据流而不要画控制流。 (3)每条数据流的输入或者输出都是加工 (4)一个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。 (5)允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工

(6)保持父图与子图平衡。也就是说,父图中某加工的输入/输出数据流必须在它的子图的输入输出数据流在数量和名字上相同。值得注意的是,如果父图的一个输入(或输出)数据流对应子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是 平衡的。 (7)在自顶向下的分解过程中,若一个数据存储首次出现时只与一个加工有关,那么这个数据存储应作为这个加工的内部文件而不必画出。

(8)保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工产生的数据中获得。

(9)每个加工必须既有输入数据流,又有输出数据流。

(10)在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某一张子图中,可能是只有读没有写,或者是只有写没有读。

找缺失的数据流: 1、父图与子图之间的平衡 2、子图内平衡

特别注意加工要有输入输出

通过顶层图与0层图对比,在顶层图外部实体与系统的数据交互,有几个输入几个输出,在0层图中是对应的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

尝试修改苍穹外卖为”李小罗餐厅“

学习苍穹外卖后,将其修改为自己所需要的项目,也是对苍穹外卖项目的加深理解 对项目之间的连接等关系进一步清晰,那么便开始吧 d1_开始修改 修改名字为”李小罗餐厅“ src\views\login\index.vue src\router.ts 结果展示 修改进来之后的展示…

从0到1手写vue源码

模版引擎 数组join法(字符串) es6反引号法(模版字符串换行) mustache (小胡子) 引入mustache 模版引擎的使用 mustache.render(templatestr,data)

【linux学习---1】点亮一个LED---驱动一个GPIO

文章目录 1、原理图找对应引脚2、IO复用3、IO配置4、GPIO配置5、GPIO时钟使能6、总结 1、原理图找对应引脚 从上图 可以看出, 蜂鸣器 接到了 BEEP 上, BEEP 就是 GPIO5_IO05 2、IO复用 查找IMX6UL参考手册 和 STM32一样,如果某个 IO 要作为…

ctfshow sql注入

开启其他注入 web221 limit注入 给出查询语句 以及过滤逻辑为空 获取数据库名即可 limit 用于控制返回结果行数 limit后面似乎只能跟PROCEDURE ANALYSE( ) 函数了 PROCEDURE ANALYSE( ) 函数用于分析查询结果的函数 参数是用来控制函数的 这个参数的位置 可以放入报错函数 原…

centos7.9 python3环境(virtualenv)搭建及所遇错误

人望山,鱼窥荷,真正喜欢想要的,没有一样可以轻易得到。 目录 # 1. 解决版本冲突问题--建议不要跳过(一定要查看软链接是否链接正确) # 2. python3(virtualenv)环境搭建 # 3. virtualenv常用命令 # 4. 所遇错误解析 ## 4.1 遇到 No modul…

关于python编程从入门到实践书中的外星人项目的 if event.key == pygame.K_q: sys.exit()失败问题

按q没有退出程序。原因是输入法中英文问题。 本人默认输入法是搜狗,其他的输入法如微软拼音等都行,但是注意运行的时候切换为英文。千万记得运行时不是中,而是英,按q才能退出

【数据结构】堆栈

目录 一、堆栈的基本概念 1.1 堆栈定义 1.2 堆栈操作 1.3 堆栈应用 二、顺序栈 2.1 定义 2.2 操作 2.3 C语言实现 三、共享栈 3.1 定义 3.2 操作 3.3 C语言实现 四、链式栈 4.1 定义 4.2 操作 4.3 C语言实现 五、总结 堆栈(Stack)重要的数据结构,它…

Python--线程基础

相关概念 线程是"轻量级进程",是计算机中CPU进行任务调度的最小单位。 线程属于进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,且至少有一个线程。 每个进程开始的创建的时候,都会随之创建一个主线程。 进程负责分配和隔离资源(CPU, 内存…

机器学习辅助的乙醇浓度检测

目录 1.为什么要机器学习 2. 神经网络一般组成 3.BP神经网络工作过程 4.评价指标 5.实操代码 1.为什么要用机器学习 人工分析大量的谐振模式,建立各种WGM的响应与未知目标之间的关系,是一个很大的挑战。机器学习(ML)能够自行识别全谱的全部特征。作为…

【Python】Python中的常量与变量

常量与变量 导读一、新建项目二、常量2.1 字面常量2.2 特殊常量 三、变量3.1 变量的定义3.2 变量的命名3.2.1 关键字 结语 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我们详细介绍了Python环境的搭建过程,…

《代号鸢》国服,能否推动国乙市场重新洗牌?

灵犀互娱《如鸢》顺利拿到版号,再次搅浑了国乙市场这潭水。 六月份游戏版号审批公布后,灵犀互娱运营的《如鸢》引起了关注,这个与《代号鸢》原名《三国志如鸢》雷同的名字,竟然让《代号鸢》玩家大面积破防了。 其实目前关于《如…

游戏冻结工具 -- 雪藏HsFreezer v1.78

软件简介 HsFreezer是一款多功能游戏冻结工具,它允许用户随意暂停和继续游戏,同时具备系统优化和进程管理的功能。这款软件特别适合希望在游戏加载时间节省或在游戏与其他任务之间快速切换的用户。其主要特点包括快捷键操作、单锁模式的丝滑切换&#x…

湖北建筑安全员A证跨省调出审核不通过?可能是这些原因

湖北建筑安全员A证跨省调出审核不通过?可能是这些原因 湖北建筑安全员A证跨省调出审核不通过怎么办? 湖北建筑安全员ABC正常情况下都是可以跨省调出的,现在建筑三类人员安全员ABC在全国工程质量安全监管信息平台都是可以查询的,在…

《中国化工贸易》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《中国化工贸易》是不是核心期刊? 答:不是,是知网收录的第一批认定学术期刊。 问:《中国化工贸易》级别? 答:国家级。主管单位:中国石油和化学工业联合会 主办单…

据阿谱尔统计,全球mRNA原料酶市场预计2024年达到11.98亿美元

Codexis 宣布与 Aldevron 达成协议,授予 Aldevron Codexis 的 Codex HiCap RNA 聚合酶的全球制造和商业化权利。 Applied DNA、Maravai LifeSciences (MRVI) 和 Alphazyme 达成协议,Alphazyme 将扩大 Applied DNA 专有 Linea™ RNA 聚合酶 (RNAP) 的生产…

图书管理系统(含登录验证码操作)

文章目录 登录需求分析登录界面注册功能:登录功能:忘记密码:验证码规则: 图书管理系统需求Book包Book类BookList类 IOperation包IOperation接口查找图书新增图书删除图书显示图书借阅图书归还图书退出系统 User包user类Users类adm…

干货分享|如何将前端代理服务器(BFF)接入身份认证(3完结篇)

续集3 前篇文章在前面发布,同学们可以自行找一下。 本篇文章将继续通过实例来详细讲解如何将前端代理服务器(BFF)接入身份认证。我们将使用一个示例应用来演示 BFF 与身份认证的集成过程。 3 在 Full BFF 中接入认证平台 本小节将介绍如何…

矢量绘图设计Sketch中文 Sketch直装安装包

Sketch是一款专为UI设计师和UX专家打造的矢量图形设计软件,以其简洁的界面、强大的功能和高效的协作能力而闻名。Sketch支持快速创建高质量的UI界面、图标、图形和插画,其矢量绘图工具让设计细节更加精准。同时,Sketch内置丰富的插件和组件库…

设计模式-结构型-08-组合模式

文章目录 1、学校院系展示需求2、组合模式基本介绍3、组合模式示例3.1、 解决学校院系展示(透明模式1)3.2、高考的科目(透明模式2)3.3、高考的科目(安全组合模式) 4、JDK 源码分析5、注意事项和细节 1、学校…

MySQL之应用层优化(二)

应用层优化 Web服务器问题 寻找最优并发度 每个Web服务器都有一个最佳并发度——就是说,让进程处理请求尽可能快,并且不超过系统负载的最优的并发连接数。这就是前面说的最大系统容量。进行一个简单的测量和建模,或者只是反复试验&#xf…