软件体系结构 调用返回风格
Posted HoneyCat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件体系结构 调用返回风格相关的知识,希望对你有一定的参考价值。
请允许我在描述调用返回风格之前,先讲一个短小的故事。调用返回风格是在程序发展的道路上逐渐演变而来的。最初的程序设计风格,叫非结构化程序设计,是历史上最早的能够创造图灵完备算法的程序设计模式。
非结构化编程的样式
由是,结构化编程应运而生。它背后是由结构化程序定理来支持的,我们先来了解一下。
结构化程序定理:只要一种编程语言可以依三个方式组合其子程序及调整控制流程,则每个可计算函数都可以用此种编程语言来表示(实现任何算法)。三个调整控制流程的方式为:
- 序列结构:按照顺序执行一个子程序,然后再执行另一个子程序
- 选择结构:根据布尔表达式的值,执行两个子程序中的一个子程序(if, else if, else);
- 迭代结构(for, while):执行子程序,直到一个布尔表达式为true
序列结构 选择结构 循环结构
我们可以看出如下几点:
- 该定理强调使用子程序、块状结构和for和while循环;而不是使用简单测试后再使用跳跃语句,例如goto语句;
- 该定理保证了只要一种编程语言支持序列结构、选择结构、循环结构(而不必使用goto语句语句),则可以实现任何可计算函数;
- 该定理是结构化编程的理论基础。
好了,现在开始进入正题。调用返回架构有几个典型的风格,分别是主程序-子程序风格和面向对象系统风格。下面我们来一一说明。
1、 主程序-子程序风格
顾名思义,它的内容就是在主程序中调用多个子程序,也就是我们常用的main函数。其中子程序还可以调用它自己的子程序,这样下来就构成一棵程序树。
程序结构示意图(其中每个箭头代表一次调用)
显而易见,它的构成组件是主程序和子程序,连接件是调用-返回机制,而拓扑结构则是层次化结构。
那怎么在实际中运用这个架构呢?结果也是简单明晰的,对于这样一个自顶向下一次到位的庞然大物,我们首先要知道整个程序中各数据的走向,所以要先画出DFD图;然后根据数据流动设计子程序部分,这样可以画出程序结构示意图(如上图);接下来就是看一看这个图究竟画得合不合理,是不是有需要改进的地方,评估一下;最后万事俱备只欠东风,就要准备写代码啦!
举个栗子
以上是关于软件体系结构 调用返回风格的主要内容,如果未能解决你的问题,请参考以下文章