软件体系结构 调用返回风格

Posted HoneyCat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件体系结构 调用返回风格相关的知识,希望对你有一定的参考价值。

请允许我在描述调用返回风格之前,先讲一个短小的故事。调用返回风格是在程序发展的道路上逐渐演变而来的。最初的程序设计风格,叫非结构化程序设计,是历史上最早的能够创造图灵完备算法的程序设计模式。

一个使用非结构化语言的程序中,按照顺序执行代码。它中间不存在过程,虽然可以在语句中调用子程序,但是和过程不同,这里的子程序甚至没有参数传递,还可能有好几个入口和出口,可以随意的直接跳入跳出。这些仅仅是为了反复调用一段程序提供方便,它在程序设计初期也确实提供了一些方便。然而,由于这个模式难以被编写者以外的人理解(被戏称为“意大利面条”)、需求变更可能涉及到多处代码修改并且非常难以修改(都是goto惹的祸)、难以进行部分测试,在创建大型工程方面就会存在很大的局限性。

            非结构化编程的样式

由是,结构化编程应运而生。它背后是由结构化程序定理来支持的,我们先来了解一下。

结构化程序定理:只要一种编程语言可以依三个方式组合其子程序及调整控制流程,则每个可计算函数都可以用此种编程语言来表示(实现任何算法)。三个调整控制流程的方式为:

  • 序列结构:按照顺序执行一个子程序,然后再执行另一个子程序
  • 选择结构:根据布尔表达式的值,执行两个子程序中的一个子程序(if, else if, else);
  • 迭代结构(for, while):执行子程序,直到一个布尔表达式为true

                        

                  序列结构                                          选择结构                                                   循环结构 

我们可以看出如下几点:

    • 该定理强调使用子程序、块状结构和for和while循环;而不是使用简单测试后再使用跳跃语句,例如goto语句;
    • 该定理保证了只要一种编程语言支持序列结构、选择结构、循环结构(而不必使用goto语句语句),则可以实现任何可计算函数;
    • 该定理是结构化编程的理论基础。

 

好了,现在开始进入正题。调用返回架构有几个典型的风格,分别是主程序-子程序风格和面向对象系统风格。下面我们来一一说明。

1、  主程序-子程序风格

顾名思义,它的内容就是在主程序中调用多个子程序,也就是我们常用的main函数。其中子程序还可以调用它自己的子程序,这样下来就构成一棵程序树。

    程序结构示意图(其中每个箭头代表一次调用)

显而易见,它的构成组件是主程序和子程序,连接件是调用-返回机制,而拓扑结构则是层次化结构。

那怎么在实际中运用这个架构呢?结果也是简单明晰的,对于这样一个自顶向下一次到位的庞然大物,我们首先要知道整个程序中各数据的走向,所以要先画出DFD图;然后根据数据流动设计子程序部分,这样可以画出程序结构示意图(如上图);接下来就是看一看这个图究竟画得合不合理,是不是有需要改进的地方,评估一下;最后万事俱备只欠东风,就要准备写代码啦!

 

举个栗子

以上是关于软件体系结构 调用返回风格的主要内容,如果未能解决你的问题,请参考以下文章

软件体系架构在工作中的总结

02.信息化和信息系统

2019 上半年信息系统项目管理师上午综合知识真题

软件体系结构的第二次实验(解释器风格与管道过滤器风格)

软件体系结构的第二次实验(解释器风格与管道过滤器风格

软件架构风格