当前位置: 首页 > news >正文

软工——模块设计(爱啦爱啦)

过程设计的工具

一、程序流程图

程序流程图又称为程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法。

它的主要优点是对控制流程的描绘很直观,便于初学者掌握。

程序流程图历史悠久,至今仍在广泛使用着。

程序流程图的主要缺点:

1、程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。

2、程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。

3、程序流程图不易表示数据结构。 

二、盒图(N-S图)

盒图具有下述特点:

1、功能域明确。

2、不可能任意转移控制。

3、很容易确定局部和全程数据的作用域。

4、很容易表现嵌套关系,也可以表示模块的层次结构。

三、PAD图

PAD是问题分析图(problem analysis diagram)的英文缩写,自1973年由日本日立公司发明以后,已得到一定程度的推广。

它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。 

PAD图的主要优点如下:

■使用表示结构化控制结构的PAD符号设计出来的程序必然是结构化程序。

■PAD图所描绘的程序结构十分清晰。

■PAD图表现程序逻辑易读、易懂、易记。 

■容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成。

■即可表示程序逻辑,也可描绘数据结构。

■PAD图的符号支持自顶向下、逐步求精方法的使用。

例题:某程序流程图如下图所示,请分别用N-S图和PAD图表示。 

流程图:

PAD图:

N-S图:

四、判定表

当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或后面即将介绍的过程设计语言(PDL)都不易清楚地描述。

判定表却能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。 

一张判定表由4部分组成:

1、左上部列出所有条件;

2、左下部是所有可能做的动作;

3、右上部是表示各种条件组合的一个矩阵;

4、右下部是和每种条件组合相对应的动作。 

判定表的优点:

能清晰地表示复杂的条件组合与应做的动作之间的对应关系。

判定表的缺点:          

判定表的含义不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程。

当数据元素的值多于两个时,判定表的简洁程度也将下降。

五、判定树

判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。

多年来判定树一直受到人们的重视,是一种比较常用的系统分析和设计的工具。

判定树的优点:

它的形式简单,一眼就可以看出其含义,因此易于掌握和使用。

判定树的缺点:

简洁性不如判定表,数据元素的同一个值往往要重复写多遍,而且越接近树的叶端重复次数越多。

画判定树时分枝的次序可能对最终画出的判定树的简洁程度有较大影响。 

六、过程设计语言

过程设计语言(PDL)也称为伪码,它是用正文形式表示数据和处理过程的设计工具。

PDL具有严格的关键字外部语法,用于定义控制结构和数据结构;另一方面,PDL表示实际操作和条件的内部语法通常又是灵活自由的,可以适应各种工程项目的需要。

PDL是一种“混杂”语言,它使用一种语言的词汇,同时却使用另一种语言的语法。 

伪代码的基本控制结构:

■简单陈述句结构:避免复合语句。

■判定结构:IF_THEN_ELSE或CASE_OF结构。

■选择结构:WHILE_DO或REPEAT_UNTIL结构。

PDL的特点:

■关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。

■自然语言的自由语法,它描述处理特点。

■数据说明的手段。应该既包括简单的数据结构,又包括复杂的数据结构。

■模块定义和调用的技术,应该提供各种接口描述模式。 

PDL的优点:

可以作为注释直接插在源程序中间。有助于保持文档和程序的一致性,提高了文档的质量。

可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。

已经有自动处理程序存在,而且可以自动由PDL生成程序代码。

PDL的缺点:

不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。

http://www.lryc.cn/news/466350.html

相关文章:

  • Xmind一款极简思维导图和头脑风暴软件,支持PC和移动端,Xmind 2024.10.01101版本如何升级到Pro版?简单操作,最新可用!
  • 自动化工具:Ansible
  • 我是类(最终版)
  • 详解ip route
  • OpenGL进阶系列04 - OpenGL 点精灵
  • VSCode按ctrl与鼠标左键无法实现跳转的解决办法
  • U盘数据丢失不用慌,这4个工具可以帮你恢复。
  • 如何在Ubuntu上挂载一块硬盘:详解方案与实操步骤【小白无坑版】
  • 【JAVA】第三张_Eclipse下载、安装、汉化
  • go-zero系列-限流(并发控制)及hey压测
  • Electron-(三)网页报错处理与请求监听
  • 银河麒麟(debian)下安装postgresql、postgis
  • 【已解决】【Hadoop】 Shell命令易错点及解决方法
  • ST7789读取ID错误新思路(以STC32G为例)
  • 【MySQL】入门篇—基本数据类型:使用ORDER BY进行排序
  • java线程池bug的一些思考
  • 深入解析浮动布局及其在现代Web开发中的应用与替代(浮动的概念及应用、如何清除浮动、使用Flex布局和Grid布局的区别、使用`float`布局的历史和现状)
  • WPF基础权限系统
  • 【Java函数篇】Java 8 Predicate函数接口的用法详解
  • C++ 一个反射的例子
  • vue3 解决背景图与窗口留有间隙的问题
  • Cesium for UE-04-一些说明
  • AIGC:开启智能创造的璀璨新篇章
  • 计算机组成原理与系统结构——外部存储器
  • 如何使用 Browserless 抓取动态网站?
  • 第21~22周Java主流框架入门-Spring 2.SpringAOP面向切面编程
  • Flutter不常用组件----InteractiveViewer
  • 【LeetCode HOT 100】详细题解之二分查找篇
  • 管理篇(顶级思维模型(31个))(待做)
  • 十一、数据库配置