笔趣阁
会员书架
首页 >其他小说 >软件工程思想 > 第34章

第34章(第1 / 2页)

上一章 章节目录 加入书签 下一页
推荐小说:

考上“举人”时已五十多岁了

复习报考“举人”用了几十年

图5.1(a)从小学读到博士存在的五个学习阶段图5.1(b)范进的知识结构

图5.2计算机网络的OSI参考模型

三、其它的层次结构

如果13亿中国人民每个人都要用特别的方式构造奇异的房子,那么960万平方公里的土地将会变得千疮百孔,终日不得安宁。

(2)体系结构在一定的时间内保持稳定。只有在稳定的环境下,人们才能干点事情,社会才能发展。科学告诉我们,宇宙间万物无时无刻不在运动、飞行。由于我们的生活环境在地球上保持相对稳定,以致于我们可以无忧无虑地吃饭和睡觉,压根就意识不到自己是活生生的导弹。软件开发最怕的就是需求变化,但“需求会发生变化”是个无法逃避的现实。人们希望在需求发生变化时,最好只对软件做些皮皮毛毛的修改,可千万别改动软件的体系结构。就如人们对住宿的需求也会变动,你可以经常改变房间的装璜和摆设,但不会在每次变动时都要去折墙、拆柱、挖地基。如果当需求发生变化时,程序员不得不去修改软件的体系结构,那么这个软件的系统设计是失败的。

良好的体系结构意味着普适、高效和稳定。本节将论述两种非常通用的软件体系结构:层次结构和客户机/服务器(Client/Server)结构。

5.1.1层次结构

层次结构表达了这么一种常识:有些事情比较复杂,我们没法一口气干完,就把事情分为好几层,一层一层地去做。高层的工作总是建立在低层的工作之上。层次关系主要有两种:上下级关系和顺序相邻关系。

目前在大型商业应用软件系统中还流行一种包含中间件(Middleware)的层次结构,如图5.3所示[Jacobson1997]。中间件支持与平台无关的分布式计算,可以用DCOM和CORBA对象来实现。

图5.3包含中间件的层次结构

5.1.2客户机/服务器结构

让我们先回顾一下早期的电话系统。贝尔(AlexanderGrahamBell)于1876年申请了电话专利。那时期的电话必须一对一对地卖,用户自己在两个电话之间拉一根线。如果一个电话用户想和其它几个电话用户通话,他必须拉n根单独的线到每个人的房子里。于是在很短的时间内,城市里到处都是穿过房屋和树木的混乱的电话线。很明显,企图把所有的电话完全互联(如图5.4(a)所示)是行不通的。

一、上下级关系的层次结构

我们从小学一直读到博士研究生毕业,要读20多年,可以分为五个层次。而范进的知识结构只有两层:“私塾”和“秀才”,但读了五十多年,如图5.1所示。一般地处于较高层次的学生应该懂得所有低层次的知识,而处于低层次学生无法懂得所有高层次的知识。图5.1的层次结构存在上下级关系,如同在军队中,上级可以命令下级,而下级不能命令上级。如果把图5.1的层次结构当成是一个软件系统的结构,那么上层子系统可以使用下层子系统的功能,而下层子系统不能够使用上层子系统的功能。

二、顺序相邻关系的层次结构

顺序相邻关系的层次结构表明通讯只能在相邻两层之间发生,信息只能被一层一层地顺序传递。这种层次结构的经典之作是计算机网络的OSI参考模型,如图5.2所示。为了减少设计的复杂性,大多数网络都按层(Layer)或级(Level)的方式组织。每一层的目的都是向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。一台机器上的第n层与另一台机器上的第n层进行对话。通话的规则就是第n层的协议。数据不是从一台机器的第n层直接传送到另一台机器的第n层。发送方把数据和控制信息逐层向下传递。最低层是物理介质,它进行实际的通讯。接收方则将数据和控制信息逐层向上传递。

每一对相邻层之间都有接口。接口定义了下层提供的原语操作和服务。当网络设计者在决定一个网络应包含多少层,每一层应当做什么的时候,其中很重要的工作是在相邻层之间定义清晰的接口。接口可以使得同一层能轻易地用某一种实现(Implementation)来替换另一种完全不同的实现(如用卫星信道来代替所有的电话线),只要新的实现能向上层提供同一组服务就可以了。[Tanenbaum1998]

点击切换 [繁体版]    [简体版]
上一章 章节目录 加入书签 下一页