软件体系结构设计,对于软件开发有着至关重要的影响。在《软件工程与项目管理解析》一书中对此有精彩的阐述:
如果把软件比作人体,体系结构就如同人的骨架。如果某个家伙的骨架是猴子,那么无论怎样喂养和美容,这家伙始终都是猴子,不会成为人。人的身材大小取决于骨架大小,天生小个子的人基本上不可能成为威猛的大汉,后天再努力(例如锻炼和吃喝)也白搭。由此可见,体系结构乃是系统设计的重中之重。
既然软件体系结构设计如此重要,那么怎样的设计才能是优秀的设计呢?
在回答这个问题之前,先来看看软件的体系结构设计究竟要做些什么事情。软件体系结构设计主要完成3件事情:一是建立软件模块的静态关系;二是建立软件模块的动态关系;最后是软件的接口设计。
软件模块的静态关系,就是由根据软件需求,设计由一个或多个模块来实现它。拿人体的骨架来比喻,人要完成各种或简单或复杂的动作,需要多少块骨骼来支撑,每一块骨骼都有各自的名称,而且几块小的骨骼会组成较大的骨骼,几块较大的骨骼组成更大的骨骼……这些事情搞清楚了,软件模块的静态关系也就清楚了。
软件模块的动态关系,就是模块间的相互调用关系。比如,挥动羽毛球拍时,需要腕骨来调动手骨运动。
软件接口设计则包括内部接口和外部接口的设计,内部接口是软件模块间的接口关系,外部接口是软件系统和外部交互的接口关系。人体的一些关节部位,就好像是“内部接口”。
做好这3件事,软件的体系结构设计就算完成了。这样仅仅解决了软件需求都能实现,但是这样的设计是好是坏,要怎么衡量呢?谁也不想因为一个不良的设计,而制造出一个残次品吧?
要看软件体系结构设计是否优秀,就要看它有没有遵循以下4项基本原则。
-
合适性
一个软件系统由多个软件模块组成,软件体系结构设计就可能有多个排列组合。一个成年人的骨骼有204块,这要组合起来得有多少种设计方案呢?可是,真正适合人体的只有一种设计方案。软件体系结构也是一样的,具备“合适性”才有了优秀的潜质。
-
稳定性
结构的稳定对于任何一种事物都非常重要。软件是要长期使用的,并且不断地与外部系统进行信息交互,结构的稳定性对于软件应付各种情况会有极大帮助。稳定的结构会使软件在出现问题时,即使有部分模块被破坏,也不至于引起整体的崩溃。优秀的软件体系结构也一定是稳定的。
PS:有一次骑车时,我整个人都飞了出来,摔的那叫一个痛,右手很长时间都不能用力,好在身体结构还是很稳定的,并没有散了架。
-
可扩展
软件的应用需求可能会不断发生变化,这要求软件应当具备可扩展性,这样当需要软件满足新的需求时,只需要做很简单的处理就可满足。
我们人体,只要借助一些工具就可以完成很多更复杂的工作。
有时候,可扩展性也不是软件必须具备的,比如一些生命期很短的一次性的软件。
另外,稳定性和可扩展性之间的关系也比较有意思,表面上两者是互相矛盾的,可深层次上并没有那么简单。
如果系统不可扩展的话,那么就没有发展前途,所以不能只关心稳定性而忽视可扩展性;而软件系统“可扩展”的前提条件是“保持结构稳定”,否则软件难以按计划开发出来,稳定性是使系统能够持续发展的基础。所以稳定性和可扩展性都是体系结构设计的要素。
-
可复用
对于一个软件开发组织,软件的开发不是一次性的事情,每一个软件产品都是组织的有效资产。如果软件的体系结构是可复用的,那么会给下次开发工作带来极大的益处:
设计的成和风险将大大降低
PS:人体的复用,那是说的克隆吗?
总之,软件体系结构的设计不是随心所欲的,而是有章可循的。通过以上的4把尺子,就可以衡量出软件体系结构的好坏。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!