第五章 结构化设计

news/2024/10/25 13:22:52/

结构化设计的概念

1. 设计的定义

一种软件开发活动,定义实现需求规约所需的软件结构。
结构化设计分为:
(1)总体设计:确定系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系。
(2)详细设计:详细描述模块。

2. 整体框架

在这里插入图片描述

体系结构设计(MSD)

在这里插入图片描述

接口设计

在这里插入图片描述

数据设计

在这里插入图片描述

3. 对设计方法的需求

实现软件设计的目标对结构化设计方法的需求
(1) 提供可体现**“原理/原则”的一组术语(符号),形 一个特定的抽象层,用于表达设计中所使用的部件。
(2)依据术语所形成的“空间”, 给出
表达软件模型工具**。
(3)给出设计的过程指导

4. 总体设计层概述

(1)在总体设计层

① 引入了两个术语/符号

在这里插入图片描述

② 引入了模块结构图 (MSD)

在这里插入图片描述

③ 过程指导

将DFD转化为MSD
第一步:如何将DFD转化为初始的MSD
分类:变换型数据流图、事务型数据流图、变换设计、事务设计
第二步:如何将初始的MSD 转化为最终可供详细设计使用的MSD

总体设计三个阶段

第一阶段:初始设计。在对给定的数据流图进行复审和精化的基础上,将其转化为初始的模块结构图。 根据穿越系 统边界的数据流初步确定系统与外部的接口。

第二阶段:精化设计。依据模块"高内聚低耦合"的原则, 精化初始的模块结构图, 并设计其中的全局数据结构和每一模块的接口。

第三阶段:设计复审阶段,对前两个阶段得到的高层软件 结构进行复审,必要时还可能需要对软件结构做一些精化 工作。

初始模块结构图的设计

1. 数据流图的分类

变换型DFD

具有较明显的输入部分和变换部分之间的界面、变换部分和输出部分之间界面的数据流图。
在这里插入图片描述
在这里插入图片描述

事务型DFD

数据到达一个加工,该加工根据输入数据的值,在其后的若干动作序列(称为一个事务)中选出一个来执行,这类数据流 图称为事务型数据流图。
在这里插入图片描述
1)接受输入数据
2)分析并确定对应的事务
3)选取与该事务对应的一条活动路径

事务型DFD和变换型DFD的区别

  1. 原则上所有DFD都可以看成是变换型DFD
  2. 一般而言,接受1个输入数据,分成多条路径

变换设计的基本步骤

①第1步:设计准备—复审并精化系统模型
②第2步:确定输入、变换、输出这三部分之间的边界
在这里插入图片描述

③第3步:第一级分解—系统模块结构图顶层和第一层的设计
S
④ 第4步:第二级分解— 自顶向下,逐步求精
在这里插入图片描述

事务设计的基本步骤

① 第1步:设计准备— 复审并精化系统模型
②第2步:确定事务处理中心
③第3步:第一级分解—系统模块结构图顶层和第一层的设计
在这里插入图片描述
④ 第4步:第二级分解一自顶向下,逐步求精
在这里插入图片描述

模块和模块化

常见的启发式规则

模块:执行一个特殊任务的一组例程和数据结构
接口:给出可由其他模块和例程访问的对象
实现:接口的实现(模块功能的执行机制)
模块化:把系统分解成若干模块的过程

切记:高内聚低耦合

启发式规则

从长期的软件开发实践中,总结出来的规则。

常见的启发式规则

改进软件结构,提高模块独立性;
模块规模适中-每页60行语句;
深度、宽度、扇入和扇出适中;
模块的作用域力争在控制域之内;
降低模块接口的复杂性;
模块功能应该可以预测。

输入部分的精化

在这里插入图片描述

输出部分的精化

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

变换部分的精化

在这里插入图片描述

接口设计

(1)模块或软件构件间的接口设计;
(2)软件与其他软硬件系统之间的接口设计;
(3)软件与人(用户)之间的交互设计。


http://www.ppmy.cn/news/315273.html

相关文章

LCHub 6 月低代码平台排行榜发布

LCHub低代码平台排行榜 2023 国产低代码名录和产品信息一览 2023国产低代码平台排行榜 低代码最新视频课程 最新解读报告:2023年6月低代码平台排行榜:维格表 伙伴云上升最快 共有120个低代码平台参与排名, 点击查看排名规则更新 TOP 10 低代码平台 6月 LCHub 指数走势

shell linux中shell脚本编写俄罗斯方块

#!/bin/bash# Tetris Game#APP declaration APP_NAME"${0##*[\\/]}" APP_VERSION"1.0"#颜色定义 cRed1 cGreen2 cYellow3 cBlue4 cFuchsia5 cCyan6 cWhite7 colorTable($cRed $cGreen $cYellow $cBlue $cFuchsia $cCyan $cWhite)#位置和大小 iLeft3 iTop2 …

shell脚本之俄罗斯方块

#!/bin/bashAPP_NAME"${0##*[\\/]}" APP_VERSION"1.0"#颜色定义 iSumColor7 #颜色总数 cRed1 #红色 cGreen2 #绿色 cYellow3 # cBlue4 #蓝色 cFuchsia5 #紫红色 cCyan6 #青色(蓝绿色) cWhite7 #白色#位置与大小 marginLeft3 #边框左边…

用shell写俄罗斯方块

#!/bin/bash#APP declaration APP_NAME"${0##*[\\/]}" APP_VERSION"1.0"#颜色定义 cRed1 cGreen2 cYellow3 cBlue4 cFuchsia5 cCyan6 cWhite7 colorTable($cRed $cGreen $cYellow $cBlue $cFuchsia $cCyan $cWhite)#位置和大小 iLeft3 iTop2 ((iTrayLeft …

十字链表矩阵相乘代码实现--C语言

十字链表矩阵相乘 两个十字链表的矩阵相乘。 矩阵的输入 先需要输入矩阵的行数、列数、非0个数在输入非零数的坐标和数值 第一个矩阵:矩阵的显示比较粗糙,自己有需求自己改一下吧。 第二个矩阵: 结果: 结果输出不是矩阵,自己需要可以自…

POJ1009:Edge Detection

问题 描述 IONU Satellite Imaging, Inc. records and stores very large images using run length encoding. You are to write a program that reads a compressed image, finds the edges in the image, as described below, and outputs another compressed image of the…

湖北师范大学计信学院C语言学期实训

目录 1.进制转换 1.1二进制转十进制 1.2十进制整数转二进制 1.3十进制小数转二进制

一个很牛的 linux shell脚本编写的俄罗斯方块游戏实例代码,非常牛逼

本文转载&#xff1a;https://www.qiansw.com/shell-tetris-game.html 可以将下面代码直接保存为sh文件。 #!/bin/bash # Tetris Game # 10.21.2003 xhchen< [email]xhchenwinbond.com.tw[/email]> #APP declaration APP_NAME"${0##*[\\/]}" APP_VERSIO…