第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.mzph.cn/bicheng/40276.shtml

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

相关文章

出海创新 | 璞华国际参加全球数字经济大会,助力出海创新生态合作

7月3日,2024全球数字经济大会“数字生态出海发展论坛”在国家会议中心(北京)隆重召开。本次论坛以“数字蓝海,扬帆远航”为主题,隆重启动“北京数字经济企业出海创新服务基地”,正式发布数字经济企业细分领…

模型情景制作-如何制作棕榈树

夏天,沙滩,海景,棕榈树,外加美女,想象下热带海滨的样子吧 可是口年的上班族没有多少机会去到海滩,肿么办?我们自己DIY一个海滨情景摆在办公桌上吧~~~ 什么什么?棕榈树不会做&#xf…

股指期货价格与股指现货价格是什么关系?

股指期货价格和股指现货价格之间的关系,可以想象成两个好朋友,他们总是想要保持一致的步伐,但有时候因为各种原因,他们的步伐会出现一些差异。 1. 正向市场 在这种情况下,股指期货的价格通常比现货价格要高一些。这就…

UE5 修改项目名称 类的名称

修改类的名称 这里推荐使用Rider编辑器修改,它会给你遍历所有的引用,然后一次性修改,并自动添加DefaultEngine.ini。接下来,我将给大家演示如何实现。 我们在一个类的文件上面选择重构此 然后选择重命名 在弹框内修改为新的名称…

Element中的选择器组件Select (一级选择组件el-select)

简述&#xff1a;在 Element UI 中&#xff0c;ElSelect&#xff08;或简称为 Select&#xff09;是一个非常常用的选择器组件&#xff0c;它提供了丰富的功能来帮助用户从一组预定义的选项中选择一个或多个值。这里来简单记录一下 一. 组件和属性配置 <el-selectv-model&q…

layui在表格中嵌入上传按钮,并修改上传进度条

当需要在表格中添加上传文件按钮&#xff0c;并不需要弹出填写表单的框的时候&#xff0c;需要在layui中&#xff0c;用按钮触发文件选择 有一点需要说明的是&#xff0c;layui定义table并不是在定义的标签中渲染&#xff0c;而是在紧接着的标签中渲染&#xff0c;所以要获取实…

【保姆级教学】Stable Diffusion提示词书写攻略!

前言 Stable Diffusion是一种深度学习模型&#xff0c;它能够根据提示词生成高质量的图像。在Stable Diffusion模型中&#xff0c;提示词起着至关重要的作用&#xff0c;因为它们为模型提供了关于所需输出的指导。本文将探讨Stable Diffusion关于提示词的原理&#xff0c;包括…

JAVA+SSM+VUE《教学视频点播系统》

1管理员登录 管理员登录&#xff0c;通过填写用户名、密码、角色等信息&#xff0c;输入完成后选择登录即可进入视频点播系统&#xff0c;如图1所示。 图1管理员登录界面图 2管理员功能实现 2.1 修改密码 管理员对修改密码进行填写原密码、新密码、确认密码并进行删除、修改…

MobileDiffusion:移动设备上亚秒级文本到图像生成

文本到图像扩散模型在生成高质量图像方面具有卓越的能力&#xff0c;这些模型是多种应用的基础&#xff0c;包括图像编辑、控制生成、个性化内容生成、视频合成和低级视觉任务等。然而&#xff0c;这些大规模模型通常需要在具有强大神经计算单元的服务器上运行&#xff0c;在移…

设备维护管理系统的主要内容有哪些

设备维护管理系统是一个综合的管理工具&#xff0c;旨在提高设备维修的效率和效果&#xff0c;优化资源利用&#xff0c;并确保设备的稳定运行。以下是设备维护管理系统的主要内容&#xff1a; 设备台账信息管理&#xff1a; 设备台账&#xff1a;记录设备的基本信息&#xff0…

【小沐学AI】Python实现语音识别(whisper+HuggingFace)

文章目录 1、简介1.1 whisper 2、HuggingFace2.1 安装transformers2.2 Pipeline 简介2.3 Tasks 简介2.3.1 sentiment-analysis2.3.2 zero-shot-classification2.3.3 text-generation2.3.4 fill-mask2.3.5 ner2.3.6 question-answering2.3.7 summarization2.3.8 translation 3、…

surfer做等值线图笔记

surfer等值线图及其白化 **grd文件的制作****白化的边界文件的制作****白化****绘图****逆转坐标轴** grd文件的制作 单击格网&#xff0c;选择x,y,z的数据&#xff0c;选择克里金插值方法&#xff0c;让后确定&#xff0c;保存grd文件 白化的边界文件的制作 surfer新建表&am…

J-Flash刷机的步骤

1、Keil编译代码&#xff0c;生成文件&#xff1a;E:\automotive\xxx.axf 2、打开"SEGGER J-Flash V7.88k"&#xff0c;配置Project information 3、点击菜单栏中的"File"&#xff0c;open data file&#xff0c;找到所需的xxx.axf文件 4、按快捷键F7进…

Ubuntu24.04(22.04+版本通用)Miniconda与Isaacgym

1. ubuntu24.04安装minicondda mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh解释下这段代码 bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3~/miniconda3/miniconda.sh: 指向Mi…

前端笔记-day12

文章目录 01-视口02-宽度适配方案03-rem体验04-rem基本使用05-媒体查询06-rem适配07-rem布局08-less-体验09-less-注释10-less-运算11-less-嵌套12-less-变量13-less-导入14-less-导出15-less-禁止导出16-急速问诊&#xff08;不准确写法&#xff09;index.htmlindex.css 17-急…

mmdetection3增加12种注意力机制

在mmdetection/mmdet/models/layers/目录下增加attention_layers.py import torch.nn as nn from mmdet.registry import MODELS #自定义注意力机制算法 from .attention.CBAM import CBAMBlock as _CBAMBlock from .attention.BAM import BAMBlock as _BAMBlock from .attent…

使用表单系统快速搭建邀请和签到系统

在组织活动时&#xff0c;邀请和签到环节往往是活动成败的关键之一。传统的纸质邀请和签到方式不仅费时费力&#xff0c;还容易出现各种问题&#xff0c;例如名单遗漏、签到混乱等。而使用TDuckX“搭建邀请和签到系统”将彻底改变这一现状&#xff0c;为活动组织者提供了一种高…

STM32蓝牙HID实战:打造低功耗、高性能的客制化键盘

一、项目概述 本项目旨在使用STM32单片机打造一款功能强大的蓝牙客制化键盘&#xff0c;它拥有以下特点&#xff1a; 九键布局&#xff0c;小巧便携: 满足日常使用需求&#xff0c;方便携带。全键可编程: 所有按键和旋钮均可通过电脑软件自定义快捷键&#xff0c;实现个性化功…

如何用java语言+若依开源框架开发一套数字化产科系统 数字化产科管理平台源码

如何用java语言若依开源框架开发一套数字化产科系统 数字化产科管理平台源码 要使用Java语言和若依&#xff08;RuoYi&#xff09;开源框架来开发一个数字化产科系统&#xff0c;你需要遵循一系列步骤&#xff0c;从环境搭建到系统设计与开发&#xff0c;再到测试与部署。 以下…

2023年问界M9 EV 问界M9增程维修手册和电路图线路图资料更新

此次更新了2023年问界M9 EV及问界M9增程维修手册和电路图资料&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表位置等等&#…