【软件工程】之结构化设计

2023-11-12

一、软件结构图

1、主要元素

模块:用带名字的方框表示,名称应该体现模块的功能
控制关系:用单向箭头或直线表示模块间的调用关系
信息传递:用带注释的短箭头表示模块调用过程中传递的信息
选择调用和循环调用:在上部模块底部加一个零星符号表示选择调用;在上部模块的下方加一个弧形箭头,表示循环调用。

2、形态特征指标

深度:指结构图控制的层次,即模块的层数
宽度:指一层中最大的模块个数
扇出:指一个模块直接下属模块的个数
扇入:指一个模块直接上属模块的个数

3、优化准则

1)模块独立性准则

划分模块时,尽量做到高内聚低耦合,保持模块相对独立性,以此原则优化初始的软件结构

2)软件结构的形态特征准则

软件结构的深度、宽度、扇出数和扇入数都要适当。

3)模块的大小准则

按模块的独立性,即根据模块的功能来决定模块的大小。过大的模块应该进行分解,过小的模块会增加模块间接口的复杂性,可以进行适当的合并,但是不应降低模块的独立性。

4)模块控制域与作用域的准则

模块控制域:模块本身以及其所有下属模块的集合
模块作用域:受该模块内一个判定影响的所有模块的集合
一个模块的作用域应在其控制范围之内,且调节判定所在的模块应与其受影响的模块在层次上尽量靠近。

5)模块的接口准则

模块的接口要简单、清晰,力求降低模块接口的复杂程度。

二、数据流模型

1、类型

1)变换流

整体看来: 输入流 | 变换中心 | 输出流
输入流:信息可以通过各种路径进入系统,信息在“流”入系统的过程中由外部形式变换成内部数据形式,这被标识为输入流。
变换流:在软件的核心,输入数据经过一系列加工处理,这被标识为变换流。
输出流:通过变换处理后的输出数据,沿各种路径转换为外部形式“流”出软件,这被标识为输出流。
整个数据流体现了以输入、变换、输出的顺序方式,沿一定路径前行的特征。

2)事务流

当数据经过一个具有“事务中心”特征的数据处理时,它可以根据事务类型从多条路径的数据流中选择一条活动通路。
这种具有根据条件选择处理不同事务的数据流,就是事务型数据流,简称事务流。

3)混合流

具有将事务流和变换流组合出现,就是混合流。

2、数据流设计方法

是一种结构化的软件体系结构设计方法。能与大多数需求规格说明技术配合,可以使模块达到高内聚性(顺序性内聚)。
是从数据流图分析模型映射为软件模块组成结构设计的描述。
过程如下:
①复查基本系统模型,并精化系统数据流图
②分析数据流类型,确定数据流具有变换流特征还是事务流特征
③采用自顶向下、逐步求精的方式完成模块分解,确定相应的软件组成结构
④根据软件结构优化准则,对导出的软件结构进行优化

3、变换设计方法

是变换特征数据流图到软件结构图的转换。
步骤如下:
①确定数据流图中的变换中心、逻辑输入和逻辑输出。
②设计软件结构的顶层和第一层。
③设计中、下层模块(输入、输出、变换模块的下属模块设计)
④设计的优化(输入、输出、变换部分的求精)

4、事务设计方法

是将事务数据流图到程序结构的变换。
步骤如下:
①确定数据流图中事务中心和加工路径。
②设计软件结构的顶层和第一层——事务结构。
接收分支:负责接收数据,它的设计与变换分析的输入部分设计方法相同。
发送分支:通常包含一个调度模块,它控制管理所有的下层的事务处理模板。
③进行事务结构中、下层模块的设计、优化等工作。

三、结构化详细设计

1、结构

顺序结构
选择结构
循环结构

2、工具

1)图形工具

把过程的细节表示成一个图的组成部分,在这个图上,逻辑构造用具体的图形来表示。如:流程图、盒图、PAD图

2)列表工具

用一个表来表示过程的细节,这个表列出了各种操作及其相应的条件,即描述了输入、处理和输出信息。如:判定表、判定树

3)语言工具

用伪代码来表示过程的细节,这种伪代码很接近于编程语言。如:PDL语言

思考题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【软件工程】之结构化设计 的相关文章

  • 类的成员函数

    类的成员函数 1 拷贝构造函数 1 1 定义 1 2 特征 1 3 implementation 2 赋值运算符重载 2 1 定义 2 2 特征 2 3 implementation 1 拷贝构造函数 1 1 定义 构造函数 特殊的成员函数

随机推荐

  • 怎么在gitLab代码拉到本地

    怎么在gitLab代码拉到本地 新手从gitLab下载代码到本地 首先在本地上面创建一个空文件 然后在cmd里边输入 命令 1 cd C Users l Desktop 帝测科技 dou 创建的空文件路径 2 git clone http
  • amd 虚拟化怎么开_虚拟化技术 - CPU虚拟化

    物理机器是由CPU 内存和I O设备等一组资源构成的实体 虚拟机也一样 由虚拟CPU 虚拟内存和虚拟I O设备等组成 VMM VM Monitor 按照与传统OS并发执行用户进程的相似方式 仲裁对所有共享资源的访问 前面的文章对虚拟化技术进
  • windows下:“activate” is not a conda command

    问题描述 在windows下安装了anaconda并安装虚拟环境后 打开Anaconda Prompt窗口 执行 conda activate virtual env 时出现以下错误 CommandNotFoundError Command
  • 神州路由器DHCPv6中继服务配置

    配置如下 R1 Router gt ena Router conf R1 config ipv6 unicast routing R1 config int g0 1 R1 config g0 1 ipv6 add 2001 1 2 64
  • 在WPF中将数据从数据库导出到Excel的快速解决方案

    Spire XLS一种专业且功能强大的Excel API 使开发人员 程序员可以使用其应用程序操作Excel文件 没有Microsoft Automation Spire XLS可使编程变得更加简单 免费下载 本文将介绍一种将数据从数据库导
  • python增删改查界面_必看!!!python列表( 增 删 改 查),超详细讲解!!

    列表类型特有方法 不同的类型有自己不同的操作方法 对列表的操作有增删改查四种操作 1 增加操作 方法描述append追加 在列表的尾部加入指定的元素 extend将指定序列的元素依次追加到列表的尾部 合并 不会去重复内容 insert将指定
  • 身份证性别判断

    性别判断 param value return 1 女 2 男 public String execute String value value value trim if value length 15 if Integer parseI
  • 加速度计和陀螺仪指南

    本帖翻译自IMU 加速度计和陀螺仪设备 在嵌入式应用中使用的指南 这篇文章主要介绍加速度计和陀螺仪的数学模型和基本算法 以及如何融合这两者 侧重算法 思想的讨论 介绍 本指南旨在向兴趣者介绍惯性MEMS 微机电系统 传感器 特别是加速度计和
  • ReentrantLock详解

    一 AQS 1 AbstractQueuedSynchronizer AbstractQueuedSynchronizer简称AQS 是一个用于构建锁和相关同步器的框架 它依赖于FIFO的等待队列实现 见AbstractQueuedSync
  • FS技术总结

    技术总结 1 单机FIO测试 1 1 配置FS环境 1 2 配置 Linux NVMe over Fabrics 主机 1 3 FIO通过配置文件运行 1 4 双机 双fio测试 1 5 fio测试 2 优化代码 2 1 程序运行细节 3
  • 【JavaEE】多线程CAS中的aba问题是什么?

    博主简介 想进大厂的打工人 博主主页 xyk 所属专栏 JavaEE初阶 什么是CAS问题 CAS 全称Compare and swap 字面意思 比较并交换 CAS中的aba问题是什么 请看本文讲解 目录 文章目录 一 CAS是什么 二
  • Qt 串口调试助手16进制收发显示

    就不废话了 直接贴源码 如果你看懂我的源码的画 我认为90 的概率能解决你16进制显示问题 注意 注意 注意 qt低版本可能不提供arr hex 这个函数 源码 QString str ui gt lineEdit gt text 从QLi
  • C++函数中返回引用和返回值的区别

    一 主要讨论下面两个函数的区别 int at return m data int at return m data 上面两个函数 第一个返回值是int的引用int 第二个返回值是int 二者的区别是什么呢 我们先用一个语句 const in
  • ElasticSearch 单机、集群安装

    文章目录 ElasticSearch 基本概念 安装启动 集群配置 快速启动一个集群节点实例 集群的状态 ElasticSearch 基本概念 索引 含有相同属性的文档集合 类型 索引可以定义一个或多个类型 文档必须属于一个类型 文档 文档
  • vue自定义tree树组件

    组件内容
  • java类和对象及python中的类似实现

    一 java类和对象 首先 我们简单说一下类和对象的理解 所有男的这相当于一个 类 而某个具体的人就是一个 对象 类 当做对象的模板 对象 根据类创建 在java中 使用关键词new创建新对象 java中定义一个类 public class
  • Node常用命令

    1 Node 使用淘宝镜像 npm install g mirror config china registry http registry npm taobao org 查询当前镜像 npm config get registry npm
  • [CVPR-21] Robust and Accurate Object Detection via Adversarial Learning

    代码 https github com google automl tree master efficientdet Det AdvProp md 目录 摘要 引言 方法 AdvProp Det AdvProp 实验 质量实验 消融实验 摘
  • Python每日一练第5天——将一组数尽可能均匀地分成两堆,使两个堆中的数的和尽可能相等

    每日一练 做题 麦克叔叔去世了 他在遗嘱中给他的两个孙子阿贝和鲍勃留下了一堆珍贵的口袋妖怪卡片 遗嘱中唯一的方向是 尽可能均匀地分配纸牌的价值 作为Mike遗嘱的执行人 你已经为每一张口袋妖怪卡片定价 以获得准确的货币价值 你要决定如何将口
  • 【软件工程】之结构化设计

    结构化设计思考题如下 一 软件结构图 1 主要元素 2 形态特征指标 3 优化准则 1 模块独立性准则 2 软件结构的形态特征准则 3 模块的大小准则 4 模块控制域与作用域的准则 5 模块的接口准则 二 数据流模型 1 类型 1 变换流