146

衡量软件体系结构设计优秀与否的4把尺子

 6 years ago
source link: https://mp.weixin.qq.com/s/LA9xCjGmiuKQsu34aeVOxA
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

衡量软件体系结构设计优秀与否的4把尺子

Original 王小双 软件工程之思 2017-10-17 23:00 Posted on

软件体系结构设计,对于软件开发有着至关重要的影响。在《软件工程与项目管理解析》一书中对此有精彩的阐述:

如果把软件比作人体,体系结构就如同人的骨架。如果某个家伙的骨架是猴子,那么无论怎样喂养和美容,这家伙始终都是猴子,不会成为人。人的身材大小取决于骨架大小,天生小个子的人基本上不可能成为威猛的大汉,后天再努力(例如锻炼和吃喝)也白搭。由此可见,体系结构乃是系统设计的重中之重。

既然软件体系结构设计如此重要,那么怎样的设计才能是优秀的设计呢?

在回答这个问题之前,先来看看软件的体系结构设计究竟要做些什么事情。软件体系结构设计主要完成3件事情:一是建立软件模块的静态关系;二是建立软件模块的动态关系;最后是软件的接口设计。

软件模块的静态关系,就是由根据软件需求,设计由一个或多个模块来实现它。拿人体的骨架来比喻,人要完成各种或简单或复杂的动作,需要多少块骨骼来支撑,每一块骨骼都有各自的名称,而且几块小的骨骼会组成较大的骨骼,几块较大的骨骼组成更大的骨骼……这些事情搞清楚了,软件模块的静态关系也就清楚了。

软件模块的动态关系,就是模块间的相互调用关系。比如,挥动羽毛球拍时,需要腕骨来调动手骨运动。

软件接口设计则包括内部接口和外部接口的设计,内部接口是软件模块间的接口关系,外部接口是软件系统和外部交互的接口关系。人体的一些关节部位,就好像是“内部接口”。

做好这3件事,软件的体系结构设计就算完成了。这样仅仅解决了软件需求都能实现,但是这样的设计是好是坏,要怎么衡量呢?谁也不想因为一个不良的设计,而制造出一个残次品吧?

要看软件体系结构设计是否优秀,就要看它有没有遵循以下4项基本原则。

一个软件系统由多个软件模块组成,软件体系结构设计就可能有多个排列组合。一个成年人的骨骼有204块,这要组合起来得有多少种设计方案呢?可是,真正适合人体的只有一种设计方案。软件体系结构也是一样的,具备“合适性”才有了优秀的潜质。

结构的稳定对于任何一种事物都非常重要。软件是要长期使用的,并且不断地与外部系统进行信息交互,结构的稳定性对于软件应付各种情况会有极大帮助。稳定的结构会使软件在出现问题时,即使有部分模块被破坏,也不至于引起整体的崩溃。优秀的软件体系结构也一定是稳定的。

PS:有一次骑车时,我整个人都飞了出来,摔的那叫一个痛,右手很长时间都不能用力,好在身体结构还是很稳定的,并没有散了架。

软件的应用需求可能会不断发生变化,这要求软件应当具备可扩展性,这样当需要软件满足新的需求时,只需要做很简单的处理就可满足。

我们人体,只要借助一些工具就可以完成很多更复杂的工作。

有时候,可扩展性也不是软件必须具备的,比如一些生命期很短的一次性的软件。

另外,稳定性和可扩展性之间的关系也比较有意思,表面上两者是互相矛盾的,可深层次上并没有那么简单。

如果系统不可扩展的话,那么就没有发展前途,所以不能只关心稳定性而忽视可扩展性;而软件系统“可扩展”的前提条件是“保持结构稳定”,否则软件难以按计划开发出来,稳定性是使系统能够持续发展的基础。所以稳定性和可扩展性都是体系结构设计的要素。

对于一个软件开发组织,软件的开发不是一次性的事情,每一个软件产品都是组织的有效资产。如果软件的体系结构是可复用的,那么会给下次开发工作带来极大的益处:

设计的成和风险将大大降低

PS:人体的复用,那是说的克隆吗?

总之,软件体系结构的设计不是随心所欲的,而是有章可循的。通过以上的4把尺子,就可以衡量出软件体系结构的好坏。

参考书目:《软件工程与项目管理解析》

微信赞赏专用通道

Image


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK